From b83c287b6ab55828bcae6db29146edd3894e9c5d Mon Sep 17 00:00:00 2001 From: "@jyuhsin" <729757837@qq.com> Date: Thu, 5 Mar 2026 14:33:44 +0800 Subject: [PATCH 1/8] commit --- .../controller/mobile/TrainScanCodeController.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/mobile/TrainScanCodeController.java b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/mobile/TrainScanCodeController.java index d5abd3c..1b0ca2c 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/mobile/TrainScanCodeController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/mobile/TrainScanCodeController.java @@ -7,6 +7,7 @@ import com.aspose.slides.internal.og.add; import com.budwk.app.base.result.Result; import com.budwk.app.sys.models.Sys_user; import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.activity.trainSignUp.models.TrainSignUpActivity; import com.budwk.app.zhgh.activity.trainSignUp.models.TrainSignUpCourse; import com.budwk.app.zhgh.activity.trainSignUp.models.TrainSignUpUser; import com.budwk.app.zhgh.activity.trainSignUp.models.TrainSignUpUserCourse; @@ -54,6 +55,12 @@ public class TrainScanCodeController { } TrainSignUpCourse course = dao.fetch(TrainSignUpCourse.class, courseId); + TrainSignUpActivity activity = dao.fetch(TrainSignUpActivity.class, course.getActivityId()); + + if(!(DateUtil.date().isAfter(activity.getActivityStartTime()) && DateUtil.date().isBefore(activity.getActivityEndTime()))) { + return Result.error(99, "不在活动时间范围内"); + } + int count = dao.count(TrainSignUpUserCourse.class, Cnd.where("activityId", "=", course.getActivityId()) .and("userId", "=", SecurityUtil.getUserId()) From 4670470cb8f401209543683f190ee42a3da87a54 Mon Sep 17 00:00:00 2001 From: server Date: Mon, 9 Mar 2026 17:55:48 +0800 Subject: [PATCH 2/8] commit --- .../views/platform/zhgh/club/register/apply/clubRegisterForm.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/views/platform/zhgh/club/register/apply/clubRegisterForm.js b/src/main/resources/views/platform/zhgh/club/register/apply/clubRegisterForm.js index 542a11f..d273ed6 100644 --- a/src/main/resources/views/platform/zhgh/club/register/apply/clubRegisterForm.js +++ b/src/main/resources/views/platform/zhgh/club/register/apply/clubRegisterForm.js @@ -163,7 +163,7 @@ const CLUB_FORM_TEMPLATE = { clubType: [{ required: true, message: "请选择协会类型", trigger: ["blur", "change"] }], concatPerson: [{ required: true, message: "请选择协会联系人", trigger: ["blur", "change"] }], foundTime: [{ required: true, message: "请选择成立时间", trigger: ["blur", "change"] }], - due: [{ required: true, message: "请输入会费标准", trigger: ["blur", "change"] }], + // due: [{ required: true, message: "请输入会费标准", trigger: ["blur", "change"] }], // establishReport: [{ required: true, message: "请上传申请成立报告", trigger: ["blur", "change"] }] rulesFile: [{ required: true, message: "请上传章程", trigger: ["blur", "change"] }], //manageFile: [{ required: true, message: "请上传经费来源及管理办法", trigger: ["blur", "change"] }], From 68f2e0e9066ca63843405771735bce52dadb691a Mon Sep 17 00:00:00 2001 From: = <=> Date: Wed, 11 Mar 2026 11:27:52 +0800 Subject: [PATCH 3/8] commit --- .../sys/services/impl/SysMsgServiceImpl.java | 252 +++++++++--------- .../apply/ClubUserJoinApplyController.java | 15 +- .../apply/ClubUserJoinApprovalController.java | 43 ++- .../apply/ClubUserJoinMineController.java | 5 +- .../statistics/ClubStatisticsController.java | 82 ++++++ .../zhgh/club/applyJoin/apply/index.html | 2 + .../platform/zhgh/club/join/mine/index.html | 9 +- .../platform/zhgh/club/statistics/index.html | 13 +- 8 files changed, 284 insertions(+), 137 deletions(-) diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysMsgServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysMsgServiceImpl.java index 5e502c4..6e203e4 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysMsgServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysMsgServiceImpl.java @@ -67,60 +67,60 @@ public class SysMsgServiceImpl extends BaseServiceImpl implements SysMs @Override @Aop(TransAop.READ_COMMITTED) public Sys_msg saveMsg(Sys_msg sysMsg, String[] users, boolean isExternal) { - this.insert(sysMsg); - - Cnd cnd = Cnd.NEW(); - cnd.groupBy("loginname"); - FieldFilter fieldFilter = FieldFilter.create(View_user.class, "loginname|username|unitId|unitName|unionId|unionName"); - if ("user".equals(sysMsg.getType())) { - cnd.and(View_user::getLoginname, "in", users); - } - List viewUsers = Daos.ext(dao(), fieldFilter).query(View_user.class, cnd); - List list = new CopyOnWriteArrayList<>(); - for (View_user viewUser : viewUsers) { - Sys_msg_user sys_msg_user = new Sys_msg_user(); - sys_msg_user.setId(R.UU32()); - sys_msg_user.setMsgId(sysMsg.getId()); - sys_msg_user.setStatus(0); - sys_msg_user.setLoginname(viewUser.getLoginname()); - sys_msg_user.setUserName(viewUser.getUsername()); - sys_msg_user.setUnitId(viewUser.getUnitId()); - sys_msg_user.setUnitName(viewUser.getUnitName()); - sys_msg_user.setUnionId(viewUser.getUnionId()); - sys_msg_user.setUnionName(viewUser.getUnionName()); - list.add(sys_msg_user); - } - dao().fastInsert(list); - sysMsgUserService.clearCache(); - - List loginNames = viewUsers.stream().map(View_user::getLoginname).distinct().toList(); - //发送站内消息 - ThreadUtil.execute(() -> { - for (String loginName : loginNames) { - getMsg(loginName); - } - }); - - //发送学校平台消息 -// for (String loginName : loginNames) { -// smsService.send(loginName, sysMsg.getTitle(), sysMsg.getNote()); +// this.insert(sysMsg); +// +// Cnd cnd = Cnd.NEW(); +// cnd.groupBy("loginname"); +// FieldFilter fieldFilter = FieldFilter.create(View_user.class, "loginname|username|unitId|unitName|unionId|unionName"); +// if ("user".equals(sysMsg.getType())) { +// cnd.and(View_user::getLoginname, "in", users); // } - ThreadUtil.execute(() -> { - smsService.massSend(loginNames, sysMsg.getTitle(), HtmlUtil.cleanHtmlTag(StrUtil.blankToDefault(sysMsg.getNote(),"")), sysMsg.getUrl()); - }); +// List viewUsers = Daos.ext(dao(), fieldFilter).query(View_user.class, cnd); +// List list = new CopyOnWriteArrayList<>(); +// for (View_user viewUser : viewUsers) { +// Sys_msg_user sys_msg_user = new Sys_msg_user(); +// sys_msg_user.setId(R.UU32()); +// sys_msg_user.setMsgId(sysMsg.getId()); +// sys_msg_user.setStatus(0); +// sys_msg_user.setLoginname(viewUser.getLoginname()); +// sys_msg_user.setUserName(viewUser.getUsername()); +// sys_msg_user.setUnitId(viewUser.getUnitId()); +// sys_msg_user.setUnitName(viewUser.getUnitName()); +// sys_msg_user.setUnionId(viewUser.getUnionId()); +// sys_msg_user.setUnionName(viewUser.getUnionName()); +// list.add(sys_msg_user); +// } +// dao().fastInsert(list); +// sysMsgUserService.clearCache(); +// +// List loginNames = viewUsers.stream().map(View_user::getLoginname).distinct().toList(); +// //发送站内消息 +// ThreadUtil.execute(() -> { +// for (String loginName : loginNames) { +// getMsg(loginName); +// } +// }); +// +// //发送学校平台消息 +//// for (String loginName : loginNames) { +//// smsService.send(loginName, sysMsg.getTitle(), sysMsg.getNote()); +//// } +// ThreadUtil.execute(() -> { +// smsService.massSend(loginNames, sysMsg.getTitle(), HtmlUtil.cleanHtmlTag(StrUtil.blankToDefault(sysMsg.getNote(),"")), sysMsg.getUrl()); +// }); return sysMsg; } @Aop(TransAop.READ_COMMITTED) public void deleteMsg(String id) { - this.delete(id); - List msgUsers = sysMsgUserService.query(Cnd.where(Sys_msg_user::getMsgId, "=", id)); - sysMsgUserService.clear(Cnd.where("msgId", "=", id)); - sysMsgUserService.clearCache(); - for (Sys_msg_user msgUser : msgUsers) { - getMsg(msgUser.getLoginname()); - } +// this.delete(id); +// List msgUsers = sysMsgUserService.query(Cnd.where(Sys_msg_user::getMsgId, "=", id)); +// sysMsgUserService.clear(Cnd.where("msgId", "=", id)); +// sysMsgUserService.clearCache(); +// for (Sys_msg_user msgUser : msgUsers) { +// getMsg(msgUser.getLoginname()); +// } } @Override @@ -206,36 +206,36 @@ public class SysMsgServiceImpl extends BaseServiceImpl implements SysMs @Override @Async public void innerMsg(String room, int size, List list) { - NutMap map = new NutMap(); - map.put("action", "innerMsg"); - map.put("size", size);//未读消息数 - map.put("list", list);//最新5条消息列表 type--系统消息/用户消息 title--标题 time--时间戳 - String msg = Json.toJson(map, JsonFormat.compact()); - log.debug("msg::::" + msg); - if (jedisAgent.isClusterMode()) { - JedisCluster jedisCluster = jedisAgent.getJedisClusterWrapper().getJedisCluster(); - for (JedisPool pool : jedisCluster.getClusterNodes().values()) { - try (Jedis jedis = pool.getResource()) { - ScanParams match = new ScanParams().match(RedisConstant.REDIS_KEY_WSROOM + room + ":*"); - ScanResult scan = null; - do { - scan = jedis.scan(scan == null ? ScanParams.SCAN_POINTER_START : scan.getStringCursor(), match); - for (String key : scan.getResult()) { - pubSubService.fire(key, msg); - } - } while (!scan.isCompleteIteration()); - } - } - } else { - ScanParams match = new ScanParams().match(RedisConstant.REDIS_KEY_WSROOM + room + ":*"); - ScanResult scan = null; - do { - scan = redisService.scan(scan == null ? ScanParams.SCAN_POINTER_START : scan.getStringCursor(), match); - for (String key : scan.getResult()) { - pubSubService.fire(key, msg); - } - } while (!scan.isCompleteIteration()); - } +// NutMap map = new NutMap(); +// map.put("action", "innerMsg"); +// map.put("size", size);//未读消息数 +// map.put("list", list);//最新5条消息列表 type--系统消息/用户消息 title--标题 time--时间戳 +// String msg = Json.toJson(map, JsonFormat.compact()); +// log.debug("msg::::" + msg); +// if (jedisAgent.isClusterMode()) { +// JedisCluster jedisCluster = jedisAgent.getJedisClusterWrapper().getJedisCluster(); +// for (JedisPool pool : jedisCluster.getClusterNodes().values()) { +// try (Jedis jedis = pool.getResource()) { +// ScanParams match = new ScanParams().match(RedisConstant.REDIS_KEY_WSROOM + room + ":*"); +// ScanResult scan = null; +// do { +// scan = jedis.scan(scan == null ? ScanParams.SCAN_POINTER_START : scan.getStringCursor(), match); +// for (String key : scan.getResult()) { +// pubSubService.fire(key, msg); +// } +// } while (!scan.isCompleteIteration()); +// } +// } +// } else { +// ScanParams match = new ScanParams().match(RedisConstant.REDIS_KEY_WSROOM + room + ":*"); +// ScanResult scan = null; +// do { +// scan = redisService.scan(scan == null ? ScanParams.SCAN_POINTER_START : scan.getStringCursor(), match); +// for (String key : scan.getResult()) { +// pubSubService.fire(key, msg); +// } +// } while (!scan.isCompleteIteration()); +// } } @@ -247,71 +247,71 @@ public class SysMsgServiceImpl extends BaseServiceImpl implements SysMs @Override // @Async public void getMsg(String loginname) { - try { - //通过用户名查询未读消息 - int size = sysMsgUserService.getUnreadNum(loginname); - List list = sysMsgUserService.getUnreadList(loginname, 1, 5); - List mapList = new ArrayList<>(); - for (Sys_msg_user msgUser : list) { - String url = "/platform/sys/msg/user/all/detail/" + msgUser.getMsgId(); - if (Strings.isNotBlank(msgUser.getMsg().getUrl())) { - url = msgUser.getMsg().getUrl(); - } - mapList.add(NutMap.NEW() - .addv("msgId", msgUser.getMsgId()) - .addv("type", typeMap.getString(msgUser.getMsg().getType())) - .addv("title", msgUser.getMsg().getTitle()) - .addv("url", url) - .addv("time", Times.format("yyyy-MM-dd HH:mm", Times.D(1000 * msgUser.getMsg().getSendAt())))); - } - innerMsg(loginname, size, mapList); - } catch (Exception e) { - log.error(e.getMessage(), e); - } +// try { +// //通过用户名查询未读消息 +// int size = sysMsgUserService.getUnreadNum(loginname); +// List list = sysMsgUserService.getUnreadList(loginname, 1, 5); +// List mapList = new ArrayList<>(); +// for (Sys_msg_user msgUser : list) { +// String url = "/platform/sys/msg/user/all/detail/" + msgUser.getMsgId(); +// if (Strings.isNotBlank(msgUser.getMsg().getUrl())) { +// url = msgUser.getMsg().getUrl(); +// } +// mapList.add(NutMap.NEW() +// .addv("msgId", msgUser.getMsgId()) +// .addv("type", typeMap.getString(msgUser.getMsg().getType())) +// .addv("title", msgUser.getMsg().getTitle()) +// .addv("url", url) +// .addv("time", Times.format("yyyy-MM-dd HH:mm", Times.D(1000 * msgUser.getMsg().getSendAt())))); +// } +// innerMsg(loginname, size, mapList); +// } catch (Exception e) { +// log.error(e.getMessage(), e); +// } } @Override @Async public void offline(String room, String userToken) { - NutMap map = new NutMap(); - map.put("action", "offline"); - String msg = Json.toJson(map, JsonFormat.compact()); - try { - room = RedisConstant.REDIS_KEY_WSROOM + room + ":" + userToken; - log.debugf("offline room(name=%s)", room); - pubSubService.fire(room, msg); - redisService.expire(room, 60 * 3); - } catch (Exception e) { - log.error(e.getMessage(), e); - } +// NutMap map = new NutMap(); +// map.put("action", "offline"); +// String msg = Json.toJson(map, JsonFormat.compact()); +// try { +// room = RedisConstant.REDIS_KEY_WSROOM + room + ":" + userToken; +// log.debugf("offline room(name=%s)", room); +// pubSubService.fire(room, msg); +// redisService.expire(room, 60 * 3); +// } catch (Exception e) { +// log.error(e.getMessage(), e); +// } } @Override public void sendMsg(String loginname, String title, String body, String sender) { - sendMsg(List.of(loginname), title, body, SecurityUtil.getUserId()); +// sendMsg(List.of(loginname), title, body, SecurityUtil.getUserId()); } @Override public void sendMsg(List loginNames, String title, String body, String sender) { - Sys_msg sysMsg = new Sys_msg(); - sysMsg.setTitle(title); - sysMsg.setNote(body); - sysMsg.setSendType("hide"); - sysMsg.setType("user"); - sysMsg.setSendAt(Times.getTS()); - sysMsg.setCreatedBy(sender); - this.saveMsg(sysMsg, loginNames.toArray(new String[]{}), true); +// Sys_msg sysMsg = new Sys_msg(); +// sysMsg.setTitle(title); +// sysMsg.setNote(body); +// sysMsg.setSendType("hide"); +// sysMsg.setType("user"); +// sysMsg.setSendAt(Times.getTS()); +// sysMsg.setCreatedBy(sender); +// this.saveMsg(sysMsg, loginNames.toArray(new String[]{}), true); } @Override public void sendMsgInSys(List loginNames, String title, String body, String sender) { - Sys_msg sysMsg = new Sys_msg(); - sysMsg.setTitle(title); - sysMsg.setNote(body); - sysMsg.setSendType("hide"); - sysMsg.setType("user"); - sysMsg.setSendAt(Times.getTS()); - sysMsg.setCreatedBy(sender); - this.saveMsg(sysMsg, loginNames.toArray(new String[]{}), false); +// Sys_msg sysMsg = new Sys_msg(); +// sysMsg.setTitle(title); +// sysMsg.setNote(body); +// sysMsg.setSendType("hide"); +// sysMsg.setType("user"); +// sysMsg.setSendAt(Times.getTS()); +// sysMsg.setCreatedBy(sender); +// this.saveMsg(sysMsg, loginNames.toArray(new String[]{}), false); } } diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/apply/ClubUserJoinApplyController.java b/src/main/java/com/budwk/app/zhgh/club/controller/apply/ClubUserJoinApplyController.java index f9af27a..0b72999 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/apply/ClubUserJoinApplyController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/apply/ClubUserJoinApplyController.java @@ -87,14 +87,23 @@ public class ClubUserJoinApplyController { @SaCheckPermission("club.join.apply") @Aop(TransAop.READ_COMMITTED) public Result submit(ClubUserApply clubUserApply) { + Sys_user user = dao.fetch(Sys_user.class, Cnd.where("id", "=", clubUserApply.getUserId())); + if (!user.getMember() && !("劳务派遣一类".equals(user.getPreparedBy()) || "劳务派遣二类".equals(user.getPreparedBy()))) return Result.error("暂无申请加入协会资格!"); + ClubUserApply userApply = dao.fetch(ClubUserApply.class, Cnd.where("userId", "=", clubUserApply.getUserId()).and("clubId", "=", clubUserApply.getClubId()).and("mode", "=", 1).desc(ClubUserApply::getApplyDate)); - if (ObjectUtil.isNotEmpty(userApply) && StrUtil.isBlank(userApply.getId())) { + if (ObjectUtil.isNotEmpty(userApply) && StrUtil.isNotBlank(userApply.getId())) { BpmProcessInstance processInstance = dao.fetch(BpmProcessInstance.class, Cnd.where(BpmProcessInstance::getProcessInstanceBusinessId, "=", userApply.getId())); if (!processInstance.getProcessInstanceStatus().equals(BpmProcessInstanceStatusEnum.COMPLETED.name())) { return Result.error("您有该协会的申请记录尚未完成,请到我的申请里查看!"); } } + ClubUser clubUser = dao.fetch(ClubUser.class, Cnd.where("userId", "=", clubUserApply.getUserId()) + .and("clubId", "=", clubUserApply.getClubId())); + if (ObjectUtil.isNotEmpty(clubUser)) { + return Result.error("您已经是该协会成员,无需重复申请!"); + } + //查询协会操作员 String operatorLoginName = commonService.findUserLoginNameByRoleCode(RoleConstant.CLUB_OPERATOR, Cnd.where(Sys_user_role::getClubId, "=", clubUserApply.getClubId())); String presidentLoginName = commonService.findUserLoginNameByRoleCode(RoleConstant.CLUB_PRESIDENT, Cnd.where(Sys_user_role::getClubId, "=", clubUserApply.getClubId())); @@ -112,11 +121,11 @@ public class ClubUserJoinApplyController { if (StrUtil.isNotBlank(operatorLoginName)) { bpmService.startSubmitProcessInstance(BpmProcessConstant.CLUB_JOIN.name(), applyUser.getUsername() + "的申请", clubUserApply.getId(), List.of(operatorLoginName), null); // 发送消息 - sysMsgService.sendMsg(operatorLoginName, "协会入会审核", "您有一条新的协会入会申请待处理,请登录暖心工会进行审批。", SecurityUtil.getUserId()); +// sysMsgService.sendMsg(operatorLoginName, "协会入会审核", "您有一条新的协会入会申请待处理,请登录暖心工会进行审批。", SecurityUtil.getUserId()); }else{ bpmService.startSubmitProcessInstance(BpmProcessConstant.CLUB_JOIN.name(), applyUser.getUsername() + "的申请", clubUserApply.getId(), List.of(presidentLoginName), null); // 发送消息 - sysMsgService.sendMsg(presidentLoginName, "协会入会审核", "您有一条新的协会入会申请待处理,请登录暖心工会进行审批。", SecurityUtil.getUserId()); +// sysMsgService.sendMsg(presidentLoginName, "协会入会审核", "您有一条新的协会入会申请待处理,请登录暖心工会进行审批。", SecurityUtil.getUserId()); } return Result.success(); } diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/apply/ClubUserJoinApprovalController.java b/src/main/java/com/budwk/app/zhgh/club/controller/apply/ClubUserJoinApprovalController.java index 54735e6..f83f343 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/apply/ClubUserJoinApprovalController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/apply/ClubUserJoinApprovalController.java @@ -7,17 +7,22 @@ import com.budwk.app.base.page.Pagination; import com.budwk.app.base.result.Result; import com.budwk.app.bpm.enums.BpmProcessTaskStatusEnum; import com.budwk.app.bpm.enums.BpmTaskApprovalTypeEnum; +import com.budwk.app.bpm.models.BpmProcessInstance; +import com.budwk.app.bpm.models.BpmProcessTask; import com.budwk.app.bpm.param.BpmTaskApprovalParam; import com.budwk.app.bpm.service.BpmService; import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.web.controllers.open.commons.service.CommonService; +import com.budwk.app.zhgh.club.model.ClubUser; +import com.budwk.app.zhgh.club.model.ClubUserApply; import com.budwk.app.zhgh.club.param.ClubUserJoinPageForm; import com.budwk.app.zhgh.club.service.ClubUserJoinService; import com.budwk.app.zhgh.club.vo.ClubUserJoinPageVo; import io.swagger.annotations.ApiOperation; import org.nutz.aop.interceptor.ioc.TransAop; 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.Static; @@ -44,6 +49,8 @@ public class ClubUserJoinApprovalController { private BpmService bpmService; @Inject private ClubUserJoinService clubUserJoinService; + @Inject + private Dao dao; @At("") @SaCheckPermission("club.join.clubApproval") @@ -111,14 +118,31 @@ public class ClubUserJoinApprovalController { @ApiOperation("审核") @Aop(TransAop.READ_COMMITTED) public Result approval(@Valid @Param("approval") BpmTaskApprovalParam approvalParam){ - approvalParam.getBpmTaskApprovalTypeEnum(); +// approvalParam.getBpmTaskApprovalTypeEnum(); +// Map variables = BeanUtil.beanToMap(approvalParam); +// List assignments = new ArrayList<>(); +// if(approvalParam.getBpmTaskApprovalTypeEnum().equals(BpmTaskApprovalTypeEnum.PASS)){ +// String approvalLoginName = commonService.findUserLoginNameByRoleCode(RoleConstant.SCHOOL_UNION_CLUB_ADMIN); +// assignments.add(approvalLoginName); +// } +// bpmService.completeTask(approvalParam.getProcessInstanceTaskId(), approvalParam.getBpmTaskApprovalTypeEnum(), variables, assignments); + + Map variables = BeanUtil.beanToMap(approvalParam); List assignments = new ArrayList<>(); - if(approvalParam.getBpmTaskApprovalTypeEnum().equals(BpmTaskApprovalTypeEnum.PASS)){ - String approvalLoginName = commonService.findUserLoginNameByRoleCode(RoleConstant.SCHOOL_UNION_CLUB_ADMIN); - assignments.add(approvalLoginName); - } bpmService.completeTask(approvalParam.getProcessInstanceTaskId(), approvalParam.getBpmTaskApprovalTypeEnum(), variables, assignments); + + if (approvalParam.getBpmTaskApprovalTypeEnum() == BpmTaskApprovalTypeEnum.PASS) { + String processInstanceBusinessId = approvalParam.getProcessInstanceBusinessId(); + ClubUserApply clubUserApply = dao.fetch(ClubUserApply.class, processInstanceBusinessId); + if (clubUserApply != null) { + ClubUser existUser = dao.fetch(ClubUser.class, Cnd.where("userId", "=", clubUserApply.getUserId()).and("clubId", "=", clubUserApply.getClubId())); + if (existUser == null) { + ClubUser clubUser = BeanUtil.copyProperties(clubUserApply, ClubUser.class); + dao.insert(clubUser); + } + } + } return Result.success(); } @@ -128,6 +152,15 @@ public class ClubUserJoinApprovalController { @Aop(TransAop.READ_COMMITTED) public Result revoke(@Valid String taskId){ bpmService.revokeTask(taskId); + + BpmProcessTask task = dao.fetch(BpmProcessTask.class, taskId); + String processInstanceId = task.getProcessInstanceId(); + BpmProcessInstance processInstance = dao.fetch(BpmProcessInstance.class, processInstanceId); + String businessId = processInstance.getProcessInstanceBusinessId(); + + ClubUserApply clubUserApply = dao.fetch(ClubUserApply.class, businessId); + dao.clear(ClubUser.class, Cnd.where(ClubUser::getUserId, "=", clubUserApply.getUserId()) + .and(ClubUser::getClubId, "=", clubUserApply.getClubId())); return Result.success(); } diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/apply/ClubUserJoinMineController.java b/src/main/java/com/budwk/app/zhgh/club/controller/apply/ClubUserJoinMineController.java index bddb7fd..98b7be9 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/apply/ClubUserJoinMineController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/apply/ClubUserJoinMineController.java @@ -11,6 +11,7 @@ import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.zhgh.club.model.ClubUser; import com.budwk.app.zhgh.club.model.ClubUserApply; +import com.budwk.app.zhgh.club.param.ClubUserJoinPageForm; import io.swagger.annotations.ApiOperation; import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Cnd; @@ -47,7 +48,7 @@ public class ClubUserJoinMineController { @At @SaCheckPermission("club.join.mine") - public Result pageData(@Valid PageForm pageForm, + public Result pageData(@Valid ClubUserJoinPageForm pageForm, @Param("year") Integer year){ Sql sql = Sqls.create(""" SELECT @@ -81,6 +82,8 @@ public class ClubUserJoinMineController { cnd.and("inst.processInstanceInitiatorLoginName", "=", SecurityUtil.getUserLoginname()); } cnd.andEX("year(info.applyDate)", "=", year); + cnd.and(Cnd.likeEX("u.userName", pageForm.getUserName())); + cnd.and(Cnd.likeEX("u.loginName", pageForm.getLoginName())); cnd.groupBy("info.id"); sql.setCondition(cnd); Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/statistics/ClubStatisticsController.java b/src/main/java/com/budwk/app/zhgh/club/controller/statistics/ClubStatisticsController.java index abecf08..69a3553 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/statistics/ClubStatisticsController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/statistics/ClubStatisticsController.java @@ -6,8 +6,10 @@ import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.URLUtil; import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.param.PageForm; @@ -45,6 +47,7 @@ import javax.validation.Valid; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.InputStream; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; @@ -227,6 +230,85 @@ public class ClubStatisticsController { zipOutputStream.close(); } + @At + @Ok("void") + @SaCheckPermission("club.statistics") + public void exportExcel(String clubId, + String userState, + String sex, + HttpServletResponse response) throws IOException { + Sql sql = Sqls.create(""" + SELECT + u.username as userName, + u.loginname as loginName, + u.sex, + u.mobile, + u.unitname as unitName, + u.userstate as userState, + c.*, + sc.clubName as clubName + FROM + club_user c + INNER JOIN `vw_user` u ON u.id = c.userId + LEFT JOIN sys_club sc ON c.clubId = sc.id + $condition + ORDER BY + sc.clubName, + CASE + WHEN JSON_CONTAINS(c.roleCode, '"CLUB_PRESIDENT"') THEN 1 + WHEN JSON_CONTAINS(c.roleCode, '"CLUB_VICE_PRESIDENT"') THEN 2 + WHEN JSON_CONTAINS(c.roleCode, '"CLUB_SECRETARY"') THEN 3 + WHEN JSON_CONTAINS(c.roleCode, '"CLUB_VICE_SECRETARY"') THEN 4 + WHEN JSON_CONTAINS(c.roleCode, '"CLUB_MEMBER"') THEN 5 + ELSE 99 + END + """); + + Cnd cnd = Cnd.NEW(); + if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), + RoleConstant.SCHOOL_UNION_ADMIN.name(), + RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name())) { + Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_PRESIDENT); + List userRoles = sysClubService.dao().query(Sys_user_role.class, + Cnd.where("userId", "=", SecurityUtil.getUserId()) + .and("roleId", "=", sysRole.getId())); + List myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList(); + cnd.and("c.clubId", "in", myClubId); + } + + if (StrUtil.isNotBlank(clubId)) { + cnd.andEX("c.clubId", "=", clubId); + } + cnd.andEX("u.userState", "=", userState); + cnd.andEX("u.sex", "=", sex); + + sql.setCondition(cnd); + + List listMap = sysClubService.listMap(sql); + for (NutMap nutMap : listMap) { + List list = JSONUtil.toList(nutMap.getString("roleCode"), String.class); + String roleName = SysClubUserServiceImpl.convertRoleName(list); + nutMap.put("roleName", roleName); + nutMap.put("roleCode", list); + + } + + List exportEntities = new ArrayList<>(); + exportEntities.add(new ExcelExportEntity("协会名称", "clubName", 20)); + exportEntities.add(new ExcelExportEntity("姓名", "userName", 20)); + exportEntities.add(new ExcelExportEntity("工号", "loginName", 20)); + exportEntities.add(new ExcelExportEntity("性别", "sex", 20)); + exportEntities.add(new ExcelExportEntity("联系方式", "mobile", 20)); + exportEntities.add(new ExcelExportEntity("所在单位", "unitName", 20)); + exportEntities.add(new ExcelExportEntity("在职状态", "userState", 20)); + exportEntities.add(new ExcelExportEntity("职务", "roleName", 20)); + + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, listMap); + CommonDownloadUtil.download("社团人员明细.xlsx", workbook, response); + } + @At @Ok("void") @SaCheckPermission("club.statistics") diff --git a/src/main/resources/views/platform/zhgh/club/applyJoin/apply/index.html b/src/main/resources/views/platform/zhgh/club/applyJoin/apply/index.html index ebb5eaa..3fa2abb 100644 --- a/src/main/resources/views/platform/zhgh/club/applyJoin/apply/index.html +++ b/src/main/resources/views/platform/zhgh/club/applyJoin/apply/index.html @@ -153,6 +153,8 @@ layout("/layouts/platform.html"){ this.$axios.post("/platform/club/join/apply/checkApplyClub", { clubId: row.id }).then((res) => { if (res.code === 0) { this.$store.dispatch("pjaxRoute", "/platform/club/join/apply?clubId=" + row.id) + } else { + this.$message.warning(res.msg || "网络请求失败,请稍后重试!"); } }) diff --git a/src/main/resources/views/platform/zhgh/club/join/mine/index.html b/src/main/resources/views/platform/zhgh/club/join/mine/index.html index e18ba08..3cabe49 100644 --- a/src/main/resources/views/platform/zhgh/club/join/mine/index.html +++ b/src/main/resources/views/platform/zhgh/club/join/mine/index.html @@ -15,6 +15,12 @@ layout("/layouts/platform.html"){ style="width: 100%" > + + + + + + @@ -46,7 +52,8 @@ layout("/layouts/platform.html"){ > 撤销 - 删除 + 删除 + diff --git a/src/main/resources/views/platform/zhgh/club/statistics/index.html b/src/main/resources/views/platform/zhgh/club/statistics/index.html index a4c55f0..3c9c359 100644 --- a/src/main/resources/views/platform/zhgh/club/statistics/index.html +++ b/src/main/resources/views/platform/zhgh/club/statistics/index.html @@ -35,7 +35,10 @@ layout("/layouts/platform.html"){ 导出全部统计数据 - 导出全部人员明细 + 导出全部人员明细(zip) + + + 导出全部人员明细(EXCEL) 导出全部上传资料 @@ -159,6 +162,14 @@ layout("/layouts/platform.html"){ const id = row === null ? "" : row.id this.$downLoad("/platform/club/statistics/exportFiles", { clubId: id }) }, + exportExcel(){ + let params = { + clubId: this.pageForm.clubId, + userState: this.pageForm.userState, + sex: this.pageForm.sex + } + this.$downLoad("/platform/club/statistics/exportExcel", params) + }, async openView(row) { this.clickRow = row await this.userPageData() From d85094b2f2480e48eb46b0a8012c0e31932211dc Mon Sep 17 00:00:00 2001 From: = <=> Date: Fri, 13 Mar 2026 11:25:13 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E5=8D=8F=E4=BC=9A=E6=89=8B=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=E6=9F=A5=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugins/sysFilePreview/H5Index.vue | 201 ++++++++++++++++++ .../resources/views/layouts/platform_h5.html | 2 + .../platform/zhghh5/club/apply/index.html | 31 ++- .../platform/zhghh5/club/common/clubInfo.js | 62 ++++++ 4 files changed, 295 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/static/components/plugins/sysFilePreview/H5Index.vue create mode 100644 src/main/resources/views/platform/zhghh5/club/common/clubInfo.js diff --git a/src/main/resources/static/components/plugins/sysFilePreview/H5Index.vue b/src/main/resources/static/components/plugins/sysFilePreview/H5Index.vue new file mode 100644 index 0000000..da51d70 --- /dev/null +++ b/src/main/resources/static/components/plugins/sysFilePreview/H5Index.vue @@ -0,0 +1,201 @@ + + + + + diff --git a/src/main/resources/views/layouts/platform_h5.html b/src/main/resources/views/layouts/platform_h5.html index 8345ce2..4de2c44 100644 --- a/src/main/resources/views/layouts/platform_h5.html +++ b/src/main/resources/views/layouts/platform_h5.html @@ -258,6 +258,7 @@ //挂载 Vue.prototype.$moment = moment Vue.prototype.$businessTool = businessTool + Vue.prototype.$commonUtil = commonUtil Vue.prototype.$auth = commonUtil.authService() Vue.prototype.$axios = commonUtil.axiosService() Vue.prototype.$downLoad = commonUtil.downLoadService.bind(commonUtil) @@ -277,6 +278,7 @@ Vue.component("enum-tag", httpVueLoader("/components/plugins/sysEnum/EnumTag.vue?v=" + new Date().getTime())) Vue.component("table-list", httpVueLoader("/components/plugins/h5/TableList.vue?v=" + new Date().getTime())) Vue.component("table-column", httpVueLoader("/components/plugins/h5/TableColumn.vue?v=" + new Date().getTime())) + Vue.component("file-preview", httpVueLoader("/components/plugins/sysFilePreview/H5Index.vue?v=" + new Date().getTime())) diff --git a/src/main/resources/views/platform/zhghh5/club/apply/index.html b/src/main/resources/views/platform/zhghh5/club/apply/index.html index 9e39ed4..c1fc316 100644 --- a/src/main/resources/views/platform/zhghh5/club/apply/index.html +++ b/src/main/resources/views/platform/zhghh5/club/apply/index.html @@ -113,6 +113,17 @@ layout("/layouts/platform_h5.html"){ class="picker-style" > + +
+ 查看 + +
+
@@ -195,15 +206,27 @@ layout("/layouts/platform_h5.html"){ 提交申请 + + + + +
+ +
+