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()