diff --git a/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsApplyUserController.java b/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsApplyUserController.java index fb9ee0ba..a18add0c 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsApplyUserController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsApplyUserController.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil; import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; +import com.budwk.app.sys.models.Sys_user; import com.budwk.app.zhgh.activity.sports.models.ActivitySchoolApply; import com.budwk.app.zhgh.activity.sports.param.ActivitySportsApplyUserPageParam; import com.budwk.app.zhgh.activity.sports.service.ActivitySportsApplyUserService; @@ -13,6 +14,7 @@ import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.SqlExpressionGroup; import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; @@ -222,4 +224,23 @@ public class ActivitySportsApplyUserController { return Result.success(applyList); } + + @At + @SaCheckPermission("activity.apply") + public Result getSysUser(String queryString,String[] loginnames){ + Cnd cnd = Cnd.NEW(); + cnd.andEX("loginname", "not in", loginnames); + if (StrUtil.isNotBlank(queryString)) { + SqlExpressionGroup group = new SqlExpressionGroup(); + group.andLike("username", queryString).orLike("loginname", queryString); + cnd.and(group); + } + + Sql sql = Sqls.create("select id,loginname,username,sex,mobile,unitId,birthday,idcard from `vw_user` $condition LIMIT 30"); + sql.setCondition(cnd); + sql.setCallback(Sqls.callback.entities()); + sql.setEntity(activitySportsApplyUserService.getEntity()); + List list = dao.execute(sql).getList(Sys_user.class); + return Result.success(list); + } } diff --git a/src/main/java/com/budwk/app/zhgh/activity/sports/h5Controller/H5ActivitySportsApplyUserController.java b/src/main/java/com/budwk/app/zhgh/activity/sports/h5Controller/H5ActivitySportsApplyUserController.java index fcda3420..2122d1d4 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/sports/h5Controller/H5ActivitySportsApplyUserController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/sports/h5Controller/H5ActivitySportsApplyUserController.java @@ -1,17 +1,34 @@ package com.budwk.app.zhgh.activity.sports.h5Controller; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.budwk.app.base.result.Result; +import com.budwk.app.sys.views.View_user; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.activity.basic.models.ActivityBasicUnion; +import com.budwk.app.zhgh.activity.basic.models.ActivityBasicUnit; +import com.budwk.app.zhgh.activity.basic.models.ActivityEvent; +import com.budwk.app.zhgh.activity.basic.models.ActivityUserScope; import com.budwk.app.zhgh.activity.sports.models.ActivitySchool; +import com.budwk.app.zhgh.activity.sports.models.ActivitySchoolApply; +import com.budwk.app.zhgh.activity.sports.models.ActivitySchoolEvent; +import com.budwk.app.zhgh.activity.sports.models.ActivitySchoolTeam; import com.budwk.app.zhgh.activity.sports.param.ActivitySportsApplyUserPageParam; import com.budwk.app.zhgh.activity.sports.service.ActivitySportsApplyUserService; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; import javax.validation.Valid; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; /** * @ClassName H5ActivitySportsApplyUserController @@ -21,12 +38,15 @@ import javax.validation.Valid; */ @IocBean @Ok("json:full") -@At("/platform/h5/activity/apply") +@At("/platform/activity/apply/h5") public class H5ActivitySportsApplyUserController { @Inject private ActivitySportsApplyUserService activitySportsApplyUserService; - @At("/applyUser") + @Inject + private Dao dao; + + @At("/index") @Ok("beetl:platform/zhghh5/activity/sports/applyUser.html") @SaCheckPermission("h5.activity.sports.applyUser") public void applyUserIndex() { @@ -60,5 +80,142 @@ public class H5ActivitySportsApplyUserController { } + @At + @SaCheckPermission("h5.activity.sports.applyUser") + public Result signUpUser(@Valid String activityId, @Valid String eventId, @Valid String schoolEventId, @Valid String teamId) { + View_user user = dao.fetch(View_user.class, Cnd.where(View_user::getId, "=", SecurityUtil.getUserId())); + ActivitySchoolEvent schoolEvent = dao.fetch(ActivitySchoolEvent.class, schoolEventId); + ActivityEvent activityEvent = dao.fetch(ActivityEvent.class, eventId); + ActivitySchool activitySchool = dao.fetch(ActivitySchool.class, activityId); + ActivitySchoolTeam schoolTeam = dao.fetch(ActivitySchoolTeam.class, teamId); + + ActivityBasicUnit basicUnit = dao.fetch(ActivityBasicUnit.class, Cnd.where("id", "=", SecurityUtil.getUnitId())); + ActivityBasicUnion basicUnion = dao.fetch(ActivityBasicUnion.class, Cnd.where("id", "=", basicUnit.getUnionId())); + if (Lang.isEmpty(basicUnion)) { + return Result.error("请先设置活动工会"); + } + + + //判断是否在活动组别内 + int count = dao.count(ActivityUserScope.class, + Cnd.where(ActivityUserScope::getGroupId, "=", activitySchool.getActivityGroupId()) + .and(ActivityUserScope::getUserId, "=", SecurityUtil.getUserId())); + if (count == 0) { + return Result.error("您没有权限参与该活动"); + } + //如果不等于空代表是个人项目 + if (ObjectUtil.isNotEmpty(activityEvent.getIsMenWomen())) { + if (activityEvent.getIsMenWomen() == 1 && !user.getSex().equals("男")) { + return Result.error("当前项目只能男性能报名!"); + } + if (activityEvent.getIsMenWomen() == 2 && !user.getSex().equals("女")) { + return Result.error("当前项目只能女性能报名!"); + } + } + List schoolApplyList = dao.query(ActivitySchoolApply.class, + Cnd.where(ActivitySchoolApply::getActivityId, "=", activityId) + .and(ActivitySchoolApply::getEventId, "=", eventId) + .and(ActivitySchoolApply::getActivityUnionId, "=", basicUnit.getId()) + .and(ActivitySchoolApply::getApplyUser, "!=", SecurityUtil.getUserId())); + + + if (ObjectUtil.isNotEmpty(schoolEvent.getRestrictGirlNum()) && user.getSex().equals("女")) { + if (schoolEvent.getRestrictGirlNum() == 0) { + return Result.error("当前项目女性没有报名名额!"); + } + //找出当前工会女性报名的数量 + int size = schoolApplyList.stream().filter(girl -> girl.getSex().equals("女")).toList().size(); + //数量加上自己如果大于配置的 + if (size + 1 > schoolEvent.getRestrictGirlNum()) { + return Result.error("当前项目女性只能报名" + schoolEvent.getRestrictGirlNum() + "人!"); + } + } + + if (ObjectUtil.isNotEmpty(schoolEvent.getRestrictBoyNum()) && user.getSex().equals("男")) { + if (schoolEvent.getRestrictBoyNum() == 0) { + return Result.error("当前项目男性没有报名名额!"); + } + //找出当前工会男性报名的数量 + int size = schoolApplyList.stream().filter(girl -> girl.getSex().equals("男")).toList().size(); + //数量加上自己如果大于配置的 + if (size + 1 > schoolEvent.getRestrictBoyNum()) { + return Result.error("当前项目男性只能报名" + schoolEvent.getRestrictGirlNum() + "人!"); + } + } + + + if (ObjectUtil.isNotEmpty(schoolEvent.getStartAgeDate()) && ObjectUtil.isNotEmpty(schoolEvent.getEndAgeDate())) { + //如果年龄做了判断 + try { + if (ObjectUtil.isEmpty(user.getBirthday())) { + return Result.error("请先完善您的出生日期"); + } + // 需要先将字符串转换为日期进行比较 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date startAgeDate = sdf.parse(schoolEvent.getStartAgeDate()); + Date endAgeDate = sdf.parse(schoolEvent.getEndAgeDate()); + if (user.getBirthday().getTime() < startAgeDate.getTime() || user.getBirthday().getTime() > endAgeDate.getTime()) { + return Result.error("您年龄不在报名时间段内"); + } + } catch (Exception e) { + return Result.error("年龄格式解析错误"); + } + } + + ActivitySchoolApply schoolApply = new ActivitySchoolApply(); + schoolApply.setActivityId(activityId); + schoolApply.setEventId(eventId); + schoolApply.setUnionname(user.getUnionName()); + schoolApply.setAwardsMode(activityEvent.getProjectType()); + schoolApply.setUnitId(user.getUnitId()); + schoolApply.setUnionId(user.getUnionId()); + schoolApply.setActivityUnionId(basicUnion.getId()); + schoolApply.setActivityUnionName(basicUnion.getName()); + schoolApply.setUserId(SecurityUtil.getUserId()); + schoolApply.setApplyUser(SecurityUtil.getUserId()); + schoolApply.setBirthday(ObjectUtil.isNotEmpty(user.getBirthday()) ? String.valueOf(user.getBirthday()) : null); + schoolApply.setApplyDate(DateUtil.now()); + schoolApply.setIdentity(List.of("1")); + if (activitySchool.getApplyWay().size() == 2 && activitySchool.getApplyWay().contains(1)) { + schoolApply.setStatus(0); + } else if (activitySchool.getApplyWay().size() == 1 && activitySchool.getApplyWay().contains(1)) { + schoolApply.setStatus(2); + } + schoolApply.setUnitname(user.getUnitName()); + schoolApply.setTeamId(schoolTeam.getId()); + schoolApply.setTeam(schoolTeam.getName()); + schoolApply.setLoginname(user.getLoginname()); + schoolApply.setUsername(user.getUsername()); + schoolApply.setMobile(user.getMobile()); + schoolApply.setSex(user.getSex()); + dao.insert(schoolApply); + return Result.success(); + } + + + @At + @SaCheckPermission("h5.activity.sports.applyUser") + public Result cancelApply(@Valid String activityId, @Valid String eventId, @Valid String schoolEventId) { + int count = dao.count(ActivitySchoolApply.class, + Cnd.where(ActivitySchoolApply::getUserId, "=", SecurityUtil.getUserId()) + .and(ActivitySchoolApply::getActivityId, "=", activityId) + .and(ActivitySchoolApply::getEventId, "=", eventId).and(ActivitySchoolApply::getStatus, "=", 2)); + if (count > 0) { + return Result.error("您已报名成功无法取消,请联系管理员取消!"); + } + + dao.clear(ActivitySchoolApply.class, Cnd.where(ActivitySchoolApply::getUserId, "=", SecurityUtil.getUserId()) + .and(ActivitySchoolApply::getActivityId, "=", activityId).and(ActivitySchoolApply::getEventId, "=", eventId)); + return Result.success(); + } + + + @At + @SaCheckPermission("h5.activity.sports.applyUser") + public Result listTeamList(@Valid String activityId, @Valid String eventId) { + return Result.success(dao.query(ActivitySchoolTeam.class, Cnd.where(ActivitySchoolTeam::getActivityId, "=", activityId) + .and(ActivitySchoolTeam::getEventId, "=", eventId).asc(ActivitySchoolTeam::getLocation))); + } + } diff --git a/src/main/java/com/budwk/app/zhgh/activity/sports/service/impl/ActivitySportsApplyUserServiceImpl.java b/src/main/java/com/budwk/app/zhgh/activity/sports/service/impl/ActivitySportsApplyUserServiceImpl.java index fab9b64d..27eff985 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/sports/service/impl/ActivitySportsApplyUserServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/activity/sports/service/impl/ActivitySportsApplyUserServiceImpl.java @@ -77,8 +77,10 @@ public class ActivitySportsApplyUserServiceImpl extends BaseServiceImpl planList = baseService.dao().query(AssetStocktakingPlan.class, Cnd.NEW().andEX(AssetStocktakingPlan::getYear, "=", year)); return Result.success(planList); diff --git a/src/main/resources/views/platform/zhgh/activity/sports/applyUser/applyUser.js b/src/main/resources/views/platform/zhgh/activity/sports/applyUser/applyUser.js index 1cb7b6d5..ba37d725 100644 --- a/src/main/resources/views/platform/zhgh/activity/sports/applyUser/applyUser.js +++ b/src/main/resources/views/platform/zhgh/activity/sports/applyUser/applyUser.js @@ -12,225 +12,324 @@ const groupBy = (list, fn) => { }) } var ACTIVITY_SPORTS_APPLY_USER = { - template: ` -
- - - - - - + template: /*language=HTML*/ ` +
+ + + + + + - - - - diff --git a/src/main/resources/views/platform/zhghh5/activity/culture/signUp.html b/src/main/resources/views/platform/zhghh5/activity/culture/signUp.html index dab7902c..f534f24a 100644 --- a/src/main/resources/views/platform/zhghh5/activity/culture/signUp.html +++ b/src/main/resources/views/platform/zhghh5/activity/culture/signUp.html @@ -191,8 +191,8 @@ layout("/layouts/platform_h5.html"){ 报名方式: 个人报名 - 分工会报名 - 组队报名 + 组队报名 + 分工会报名
@@ -277,6 +277,51 @@ layout("/layouts/platform_h5.html"){
+ +
+
选择报名人员 + + ,报名人数 + {{viewData.unionTeamNum}}人 + +
+ + + + + 添加 + + + + + + + + + + + + + +
+
填写报名信息
取消报名 {{viewData.applyEndTime}}截止报名
+
活动已结束
@@ -361,11 +407,22 @@ layout("/layouts/platform_h5.html"){ this.$axios.post("/platform/activity/culture/infoManage/activityInfo", {id: this.id}).then((res) => { if (res.code === 0) { this.viewData = res.data + //总人数限制 + if (this.viewData.userNumberLimit === 1) { + } else if (this.viewData.userNumberLimit === 2) { + //分工会人数限制 + const union = this.viewData.unionUserNumberLimit.find(v => v.id === this.$store.state.user.union.id) + this.viewData.unionTeamNum = union.limitNum + } + if (this.viewData.signUpMethod === 3) { + this.listTeamUserUnion() + } else { + this.listTeamUser() + } if (this.viewData.formConfig) { this.formCreateRule = formCreate.parseJson(this.viewData.formConfig.rule) this.formCreateOption = formCreate.parseJson(this.viewData.formConfig.options) } - this.listTeamUser() } }) } @@ -381,6 +438,17 @@ layout("/layouts/platform_h5.html"){ } }) }, + //查询报名人员 + listTeamUserUnion() { + this.$axios.post("/platform/activity/culture/applyUser/listTeamUserUnion", {activityId: this.id}).then((res) => { + if (res.code === 0) { + this.isSignUp = res.data.length > 0 + this.teamUsers = res.data + this.defaultAddSelf() + this.customFormInit() + } + }) + }, //表单回显 customFormInit() { if (this.teamUsers && this.teamUsers.length > 0) { @@ -466,7 +534,7 @@ layout("/layouts/platform_h5.html"){ }) return } - if (this.teamUsers.length > this.viewData.teamNum) { + if (this.viewData.teamNum && this.teamUsers.length > this.viewData.teamNum) { this.$dialog .alert({ title: "提示", @@ -498,7 +566,11 @@ layout("/layouts/platform_h5.html"){ this.$axios.post("/platform/activity/culture/applyUser/signUp", formData).then((res) => { if (res.code === 0) { this.$toast.success(res.msg) - this.listTeamUser() + if (this.viewData.signUpMethod === 3) { + this.listTeamUserUnion() + } else { + this.listTeamUser() + } } }) }) @@ -567,7 +639,7 @@ layout("/layouts/platform_h5.html"){ }) return } - if (this.teamUsers.length > this.viewData.teamNum) { + if (this.viewData.teamNum && this.teamUsers.length > this.viewData.teamNum) { this.$dialog .alert({ title: "提示", @@ -600,7 +672,11 @@ layout("/layouts/platform_h5.html"){ this.$axios.post("/platform/activity/culture/applyUser/signUp", formData).then((res) => { if (res.code === 0) { this.$toast.success(res.msg) - this.listTeamUser() + if (this.viewData.signUpMethod === 3) { + this.listTeamUserUnion() + } else { + this.listTeamUser() + } } }) }) @@ -617,7 +693,11 @@ layout("/layouts/platform_h5.html"){ this.$axios.post("/platform/activity/culture/applyUser/cancelSignUp", {activityId: this.id}).then((res) => { if (res.code === 0) { this.$toast.success(res.msg) - this.listTeamUser() + if (this.viewData.signUpMethod === 3) { + this.listTeamUserUnion() + } else { + this.listTeamUser() + } this.fapi.resetFields() } }) @@ -627,7 +707,10 @@ layout("/layouts/platform_h5.html"){ //查询队友信息 queryTeammate(val) { if (val) { - this.$axios.post("/platform/activity/culture/applyUser/queryTeammate", {keyword: val}).then((res) => { + this.$axios.post("/platform/activity/culture/applyUser/queryTeammate", { + keyword: val, + signUpMethod: this.viewData.signUpMethod + }).then((res) => { if (res.code === 0) { res.data.map(v => { v.applyUserId = this.$store.state.user.id @@ -662,7 +745,7 @@ layout("/layouts/platform_h5.html"){ }) return } - if (this.teamUsers.length >= this.viewData.teamNum) { + if (this.viewData.teamNum && this.teamUsers.length >= this.viewData.teamNum) { this.$dialog .alert({ title: "提示", diff --git a/src/main/resources/views/platform/zhghh5/activity/sports/applyUser.html b/src/main/resources/views/platform/zhghh5/activity/sports/applyUser.html index 70c89fb7..c886bbf6 100644 --- a/src/main/resources/views/platform/zhghh5/activity/sports/applyUser.html +++ b/src/main/resources/views/platform/zhghh5/activity/sports/applyUser.html @@ -90,7 +90,7 @@ layout("/layouts/platform_h5.html"){ loading: false, pageForm: { isActivity: 2, - applyStatus: 2, + applyStatus: 1, year: new Date().getFullYear(), pageNumber: 1, pageSize: 5, @@ -121,7 +121,7 @@ layout("/layouts/platform_h5.html"){ }, pageData() { this.loading = true - this.$axios.post("/platform/h5/activity/apply/activityData", this.pageForm).then((res) => { + this.$axios.post("/platform/activity/apply/h5/activityData", this.pageForm).then((res) => { this.tableData = res.data this.finished = true diff --git a/src/main/resources/views/platform/zhghh5/activity/sports/eventList.html b/src/main/resources/views/platform/zhghh5/activity/sports/eventList.html index ede8c400..ab38f62a 100644 --- a/src/main/resources/views/platform/zhghh5/activity/sports/eventList.html +++ b/src/main/resources/views/platform/zhghh5/activity/sports/eventList.html @@ -5,16 +5,17 @@ layout("/layouts/platform_h5.html"){
- +
@@ -25,11 +26,17 @@ layout("/layouts/platform_h5.html"){
@@ -60,25 +67,46 @@ layout("/layouts/platform_h5.html"){ 暂无 - + + 取消报名 + +
+
+ + 报 名 + + + 取消报名 + +
+
- +