From 440b77e33bc49ed0342d5f44c4635eb4f6a0a6d6 Mon Sep 17 00:00:00 2001 From: JyuHsin <729757837@qq.com> Date: Fri, 19 Sep 2025 15:02:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TrainSignUpActivityApplyController.java | 5 ++- .../MTrainSignUpActivityController.java | 16 ++++--- .../views/mobile/train/trainInfo.html | 7 +++- .../platform/trainSingUp/manage/apply.html | 42 ++++++++++++++++++- 4 files changed, 60 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/v/nutz/zhgh/trainSignUp/controller/manage/TrainSignUpActivityApplyController.java b/src/main/java/io/v/nutz/zhgh/trainSignUp/controller/manage/TrainSignUpActivityApplyController.java index d1eb505..21bdffb 100644 --- a/src/main/java/io/v/nutz/zhgh/trainSignUp/controller/manage/TrainSignUpActivityApplyController.java +++ b/src/main/java/io/v/nutz/zhgh/trainSignUp/controller/manage/TrainSignUpActivityApplyController.java @@ -101,7 +101,8 @@ public class TrainSignUpActivityApplyController { tsuc.isReceiveGift, tsuc.giftType, tsuc.reserveMode, - type.lxname + type.lxname, + tsuc.courseIsLimitApply FROM `train_sign_up_course` tsuc LEFT JOIN train_sign_up_type type ON type.id = tsuc.courseType @@ -116,7 +117,7 @@ public class TrainSignUpActivityApplyController { Pagination pagination = trainSignUpActivityService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); List courseList = pagination.getList(); - List activityCourseList = trainSignUpActivityService.dao().query(TrainSignUpActivityCourse.class, Cnd.where("activityId", "=", activityId)); + List activityCourseList = trainSignUpActivityService.dao().query(TrainSignUpActivityCourse.class, Cnd.where("activityId", "=", activityId).asc("courseStartTime")); Map> map = activityCourseList.stream().collect(Collectors.groupingBy(TrainSignUpActivityCourse::getCourseId)); diff --git a/src/main/java/io/v/nutz/zhgh/trainSignUp/controller/mobile/MTrainSignUpActivityController.java b/src/main/java/io/v/nutz/zhgh/trainSignUp/controller/mobile/MTrainSignUpActivityController.java index 013ecb4..d6ea1ae 100644 --- a/src/main/java/io/v/nutz/zhgh/trainSignUp/controller/mobile/MTrainSignUpActivityController.java +++ b/src/main/java/io/v/nutz/zhgh/trainSignUp/controller/mobile/MTrainSignUpActivityController.java @@ -114,7 +114,7 @@ public class MTrainSignUpActivityController { @RequiresAuthentication public Object getCourseTimeSelectList(String courseId) { // 查课程的时间段 - List courseList = dao.query(TrainSignUpActivityCourse.class, Cnd.where("courseId", "=", courseId)); + List courseList = dao.query(TrainSignUpActivityCourse.class, Cnd.where("courseId", "=", courseId).asc("courseStartTime")); // 查课程的报名人数 List applyUserList = dao.query(TrainSignUpUserCourse.class, Cnd.where("courseId", "=", courseId)); @@ -131,8 +131,9 @@ public class MTrainSignUpActivityController { nutMap.put("remainingNum", remainingNum); nutMap.put("text", DateUtil.format(v.getCourseStartTime(), "HH:mm") + "至" + DateUtil.format(v.getCourseEndTime(), "HH:mm") + "段(剩" + remainingNum + ")"); nutMap.put("value", id); + nutMap.put("disabled", remainingNum == 0); return nutMap; - }).filter(v-> v.getInt("remainingNum") != 0).collect(Collectors.toList()); + }).collect(Collectors.toList()); } @@ -298,12 +299,17 @@ public class MTrainSignUpActivityController { @At @Ok("json:full") @RequiresAuthentication - public Object validateSourceSignUp(String activityCourseId) { + public Object validateSourceSignUp(String activityCourseId, String courseId) { try { lock.lock(); + + List userList = dao.query(TrainSignUpUser.class, Cnd.where("courseId", "=", courseId).and("state", "=", 1)); + List isList = userList.stream().map(TrainSignUpUser::getUserId).toList(); + // 该时间段下已报名的人数 - int count = dao.count(TrainSignUpUserCourse.class, Cnd.where("activityCourseId", "=", activityCourseId)); - // 获取改时间段下的活动课程限制报名人数 + int count = dao.count(TrainSignUpUserCourse.class, Cnd.where("activityCourseId", "=", activityCourseId) + .and("courseId", "=", courseId).and("userId", "in", isList)); + // 获取该时间段下的活动课程限制报名人数 TrainSignUpActivityCourse course = dao.fetch(TrainSignUpActivityCourse.class, activityCourseId); Integer courseLimitNum = course.getCourseLimitNum(); // 报名加上自己,如果大于了限制人数,那就无法报名 diff --git a/src/main/resources/views/mobile/train/trainInfo.html b/src/main/resources/views/mobile/train/trainInfo.html index f1a44dc..147613d 100644 --- a/src/main/resources/views/mobile/train/trainInfo.html +++ b/src/main/resources/views/mobile/train/trainInfo.html @@ -319,6 +319,8 @@ layout("/mobile/platform.html"){ + +
基础信息
@@ -674,7 +676,10 @@ layout("/mobile/platform.html"){ let flag = this.choose.courseIsLimitApply if (flag) { - const resp = await $.post('/platform/mobile/trainSignUpActivity/validateSourceSignUp',{activityCourseId: this.formData.activityCourseId}) + const resp = await $.post('/platform/mobile/trainSignUpActivity/validateSourceSignUp',{ + activityCourseId: this.formData.activityCourseId, + courseId: this.choose.id + }) if (resp.code !== 0) { vant.Dialog.alert({ title: '温馨提示', diff --git a/src/main/resources/views/platform/trainSingUp/manage/apply.html b/src/main/resources/views/platform/trainSingUp/manage/apply.html index e94448b..753cd59 100644 --- a/src/main/resources/views/platform/trainSingUp/manage/apply.html +++ b/src/main/resources/views/platform/trainSingUp/manage/apply.html @@ -386,6 +386,21 @@ layout("/layouts/platform.html"){ + + + + + + + + + + 余" + lave +"/" + o.coursePeopleNumber + "人)" } }, + async validateCourseTime() { + const res = await $.post('/platform/mobile/trainSignUpActivity/validateSourceSignUp', { + activityCourseId: this.formData.activityCourseId, + courseId: this.choose.id + }) + if(res.code !== 0) { + this.$message.warning(res.msg) + } + return res.code === 0 + }, async doSubmit() { //获取家属是多少人 let per = 0 @@ -543,8 +577,9 @@ layout("/layouts/platform.html"){ this.$message.warning(res.msg) return } - this.$refs['form'].validate(valid => { + this.$refs['form'].validate(async valid => { if (valid) { + if(this.choose.courseIsLimitApply && !await this.validateCourseTime()) return const msg = '您确认要提交' + this.choose.courseName + '的报名吗?' this.$confirm(msg, '提示', { confirmButtonText: '确定', @@ -560,7 +595,7 @@ layout("/layouts/platform.html"){ } }) this.formData.mobileColumnsValue = JSON.stringify(mobileColumnsValue) - const resp = await $.post('/platform/mobile/trainSignUpActivity/doSignUp',this.formData) + const resp = await $.post('/platform/mobile/trainSignUpActivity/doSignUp', this.formData) if (resp.code === 0) { await this.pageData() this.$message.success(resp.msg) @@ -592,6 +627,9 @@ layout("/layouts/platform.html"){ this.$message.warning('您不在报名人员范围内') return } + if (row.courseIsLimitApply) { + await this.getCourseTimeSelectList(row) + } const res = await $.post('/platform/mobile/trainSignUpActivity/validateSignUp', { cndId: row.conditionStructureId, courseId: row.id,