diff --git a/src/main/java/com/budwk/app/sys/controller/SysUnionController.java b/src/main/java/com/budwk/app/sys/controller/SysUnionController.java index ff963fb3..ef076aeb 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysUnionController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysUnionController.java @@ -457,7 +457,7 @@ public class SysUnionController { @Ok("json:{ignoreNull:true}") @SaCheckPermission("sys.manager.union") public Result listUnion(@Valid String unionId, @Valid String keyWord) { - Sql sql = Sqls.create("select id,loginname,username,unitName from vw_user $condition"); + Sql sql = Sqls.create("select id,loginname,username,unitName,unionName,sex from vw_user $condition"); Cnd cnd = Cnd.NEW(); cnd.and(View_user::getUnionId, "=", unionId); SqlExpressionGroup seg = new SqlExpressionGroup(); diff --git a/src/main/java/com/budwk/app/web/controllers/open/commons/CommonController.java b/src/main/java/com/budwk/app/web/controllers/open/commons/CommonController.java index 4535fdd2..f8b54d2d 100644 --- a/src/main/java/com/budwk/app/web/controllers/open/commons/CommonController.java +++ b/src/main/java/com/budwk/app/web/controllers/open/commons/CommonController.java @@ -158,4 +158,10 @@ public class CommonController { return Result.success(count > 0); } + @At + @SaCheckLogin + @ApiOperation("系统配置") + public Result getConfigKeyObj(String key) { + return Result.success().addData(sysDictService.dao().fetch(Sys_config.class, Cnd.where("configKey", "=", key))); + } } diff --git a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/manage/TrainSignUpApplyController.java b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/manage/TrainSignUpApplyController.java index 24220887..2aaa3d90 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/manage/TrainSignUpApplyController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/manage/TrainSignUpApplyController.java @@ -7,6 +7,7 @@ import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; @@ -22,6 +23,7 @@ import com.budwk.app.zhgh.activity.trainSignUp.service.TrainSignUpActivityStatis import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; @@ -215,7 +217,7 @@ public class TrainSignUpApplyController { @ApiOperation("验证是否能报名") @SaCheckPermission(value = {"trainSignUp.apply", "h5.trainSignUp.apply"}, mode = SaMode.OR) public Result validateSignUp(String courseId, - @Param(value = "currentFamilyNumber") Integer currentFamilyNumber) { + @Param(value = "currentFamilyNumber") Integer currentFamilyNumber,String IsVerifyUserApply) { try { lock.lock(); if (StrUtil.isBlank(courseId)) { @@ -241,10 +243,12 @@ public class TrainSignUpApplyController { } //判断是否报名 - boolean courseByUser = trainSignUpActivityService.isSignCourseByUser(courseId, SecurityUtil.getUserId()); - if (courseByUser) { - return Result.error("抱歉,您已经报名"); - } + if(StringUtils.defaultString(IsVerifyUserApply,"0").equals("0")){ + boolean courseByUser = trainSignUpActivityService.isSignCourseByUser(courseId, SecurityUtil.getUserId()); + if (courseByUser) { + return Result.error("抱歉,您已经报名"); + } + } //判断活动人数 boolean signFull = trainSignUpActivityService.isSignFull(course, currentFamilyNumber); @@ -454,4 +458,47 @@ public class TrainSignUpApplyController { } return Result.success(); } + + @At + @ApiOperation("活动代人报名") + @SaCheckPermission(value = {"h5.trainSignUp.apply"}, mode = SaMode.OR) + public Result doSignUpInsteadApply(TrainSignUpUser trainSignUpUser) { + try { + lock.lock(); + if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name())) { + return Result.error("您没有操作此按钮的权限"); + } + boolean courseByUser = trainSignUpActivityService.isSignCourseByUser(trainSignUpUser.getCourseId(), trainSignUpUser.getUserId()); + if (courseByUser) { + return Result.error("该用户已报过该活动"); + } + //判断人数 + int number = 0; + TrainSignUpCourse course = trainSignUpActivityService.dao().fetch(TrainSignUpCourse.class, trainSignUpUser.getCourseId()); + TrainSignUpType type = trainSignUpActivityService.dao().fetch(TrainSignUpType.class, course.getCourseType()); + if (type != null) { + if (type.getIsBringFamily() && type.getIsAddFamily()) { + List mobileColumnsValue = trainSignUpUser.getMobileColumnsValue(); + NutMap map = mobileColumnsValue.stream().filter(o -> "xdqsrs".equals(o.getString("columnCode"))).findAny().orElse(null); + number = map != null ? map.getInt("columnValue") : 0; + } + } + boolean signFull = trainSignUpActivityService.isSignFull(course, number); + if (signFull) { + return Result.error("当前报名人数已满"); + } + boolean signFullByUnionId = trainSignUpActivityService.isSignFullByUnionId(course, number); + if (signFullByUnionId) { + return Result.error("该活动您所在的分工会名额不足"); + } + trainSignUpActivityService.doSignUpInsteadApply(trainSignUpUser); + return Result.success("报名成功"); + } catch (Exception e) { + e.printStackTrace(); + return Result.success("报名失败"); + } finally { + lock.unlock(); + } + } + } diff --git a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/models/TrainSignUpUser.java b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/models/TrainSignUpUser.java index af3d7473..13c61a8c 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/models/TrainSignUpUser.java +++ b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/models/TrainSignUpUser.java @@ -83,4 +83,9 @@ public class TrainSignUpUser implements Serializable { @Comment("用户报名状态(1.正常 2.待报名成功 3.也是正常,但是是从2变为1的 4.废弃[就是没签到的意思])") private Integer state; + @Column + @ColDefine(type = ColType.VARCHAR, width = 32) + @Comment("操作人(代人报表)") + private String operatorUserId; + } diff --git a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/service/TrainSignUpActivityService.java b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/service/TrainSignUpActivityService.java index 85999dcd..173a355f 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/service/TrainSignUpActivityService.java +++ b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/service/TrainSignUpActivityService.java @@ -126,4 +126,10 @@ public interface TrainSignUpActivityService extends BaseService qdInfoByUserId(String userId, String activityId); List filterCourseByHostUnion(List courseList); + + /** + * 活动代人报名 + * @param trainSignUpUser + */ + void doSignUpInsteadApply(TrainSignUpUser trainSignUpUser); } diff --git a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/service/impl/TrainSignUpActivityServiceImpl.java b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/service/impl/TrainSignUpActivityServiceImpl.java index 13d4616c..97bb8edb 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/service/impl/TrainSignUpActivityServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/service/impl/TrainSignUpActivityServiceImpl.java @@ -537,4 +537,47 @@ public class TrainSignUpActivityServiceImpl extends BaseServiceImpl course.getCoursePeopleNumber() ? 2 : 1); + } else { + trainSignUpUser.setState(1); + } + + View_user user = dao().fetch(View_user.class, Cnd.where("id", "=", trainSignUpUser.getUserId())); + trainSignUpUser.setUnionId(user.getUnionId()); + trainSignUpUser.setUnionName(user.getUnionName()); + trainSignUpUser.setUnitId(user.getUnitId()); + trainSignUpUser.setUnitName(user.getUnitName()); + trainSignUpUser.setUserId(trainSignUpUser.getUserId()); + trainSignUpUser.setSignUpTime(new Date()); + trainSignUpUser.setOperatorUserId(SecurityUtil.getUserId()); + dao().insert(trainSignUpUser); + + if (StrUtil.isNotBlank(trainSignUpUser.getActivityCourseId())) { + TrainSignUpActivityCourse fetch = dao().fetch(TrainSignUpActivityCourse.class, trainSignUpUser.getActivityCourseId()); + TrainSignUpUserCourse userCourse = new TrainSignUpUserCourse(); + userCourse.setActivityId(trainSignUpUser.getActivityId()); + userCourse.setCourseId(trainSignUpUser.getCourseId()); + userCourse.setUserId(trainSignUpUser.getUserId()); + userCourse.setCourseStartTime(fetch.getCourseStartTime()); + userCourse.setCourseEndTime(fetch.getCourseEndTime()); + userCourse.setAttend(false); + userCourse.setAttendTime(null); + userCourse.setActivityCourseId(fetch.getId()); + dao().insert(userCourse); + } else { + asyncInsertUserCourse(trainSignUpUser.getActivityId(), trainSignUpUser.getCourseId(), trainSignUpUser.getUserId()); + } + } } diff --git a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/service/impl/TrainSignUpActivityStatisticsServiceImpl.java b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/service/impl/TrainSignUpActivityStatisticsServiceImpl.java index 84e8ba08..ab0f712f 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/service/impl/TrainSignUpActivityStatisticsServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/service/impl/TrainSignUpActivityStatisticsServiceImpl.java @@ -46,6 +46,7 @@ public class TrainSignUpActivityStatisticsServiceImpl extends BaseServiceImpl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取 消 + 提 交 + + + + `, + store, + dicts: ["TRAIN_SIGNUP_TYPE"], + data() { + return { + signDialog: false, + formData: {}, + courseRow: {}, + courseTimeSelectList: [], + } + }, + methods: { + async getCourseTimeSelectList(o) { + const resp = await $.post('/platform/trainSignUp/apply/getCourseTimeSelectList',{ courseId: o.id }) + if (resp.code === 0) { + this.courseTimeSelectList = resp.data + } else { + this.$message.warning('获取时段信息失败,请联系管理员') + } + }, + async onOpen(row, course) { + this.initData(row, course) + if (row.courseIsLimitApply) { + await this.getCourseTimeSelectList(row) + } + this.courseRow = row + this.signDialog = true + this.$nextTick(() => { + this.$refs.form.clearValidate() + }) + }, + async validateSignUp() { + // 获取家属人数 + let familyCount = this.formData.trainMobileSignColumnList.filter(o => o.columnCode === 'xdqsrs').reduce((sum, item) => { + return sum + (Number(item.columnValue) || 0) + }, 0) + const res = await this.$axios.post("/platform/trainSignUp/apply/validateSignUp", { + courseId: this.formData.courseId, + currentFamilyNumber: familyCount, + IsVerifyUserApply: "1" + }) + return res.code === 0 + }, + async validateCourseTime() { + const res = await this.$axios.post('/platform/trainSignUp/apply/validateSourceSignUp', { + activityCourseId: this.formData.activityCourseId, + courseId: this.courseRow.id + }) + return res.code === 0 + }, + async onSubmit() { + if(!await this.validateSignUp()) return + + if(!this.formData.username) { + this.$message.warning("请选择参加人员") + return ; + } + + this.$refs["form"].validate(async (valid) => { + if (valid) { + if(this.courseRow.courseIsLimitApply && !await this.validateCourseTime()) return + this.$confirm("您确定要提交吗?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }).then(async () => { + const mobileColumnsValue = this.formData.trainMobileSignColumnList.map((v) => { + return { + columnName: v.columnName, + columnValue: v.columnValue, + columnCode: v.columnCode, + columnFormType: v.columnFormType + } + }) + this.formData.mobileColumnsValue = JSON.stringify(mobileColumnsValue) + const resp = await this.$axios.post("/platform/trainSignUp/apply/doSignUpInsteadApply", this.formData) + if (resp.code === 0) { + this.signDialog = false + this.$message.success(resp.msg) + this.$emit('refresh') + this.formData.userId = ''; + this.formData.username = ''; + this.formData.loginname = ''; + this.formData.unionName = ''; + this.formData.unitName = ''; + this.formData.sex = ''; + } else { + this.$message.warning(resp.msg) + } + }) + } + }) + }, + initData(row, course) { + + this.$set(this.formData, 'activityId', row.activityId) + this.$set(this.formData, 'courseId', row.id) + this.$set(this.formData, 'trainMobileSignColumnList', course.trainMobileSignColumnList) + + this.formData.trainMobileSignColumnList.forEach((item) => { + item.columnValue = this.$store.state.user[item.columnCode] || "" + }) + }, + selectUserFun() { + if(this.$refs.useRef.options){ + let event = this.$refs.useRef.options.find(item => item.id === this.formData.userId); + if(event){ + this.$set(this.formData, 'username', event.username) + this.$set(this.formData, 'loginname', event.loginname) + this.$set(this.formData, 'unionName', event.unionName) + this.$set(this.formData, 'unitName', event.unitName) + this.$set(this.formData, 'sex', event.sex) + } + } + } + }, + style: /*language=CSS*/ ` + + ` +} diff --git a/src/main/resources/views/platform/zhgh/activity/trainSignUp/userAdjust/index.html b/src/main/resources/views/platform/zhgh/activity/trainSignUp/userAdjust/index.html index ae3702a5..97faa068 100644 --- a/src/main/resources/views/platform/zhgh/activity/trainSignUp/userAdjust/index.html +++ b/src/main/resources/views/platform/zhgh/activity/trainSignUp/userAdjust/index.html @@ -60,9 +60,11 @@ layout("/layouts/platform.html"){ - + @@ -72,18 +74,21 @@ layout("/layouts/platform.html"){ +