diff --git a/src/main/java/io/v/nutz/base/model/msgUser.java b/src/main/java/io/v/nutz/base/model/msgUser.java new file mode 100644 index 0000000..4a47e98 --- /dev/null +++ b/src/main/java/io/v/nutz/base/model/msgUser.java @@ -0,0 +1,15 @@ +package io.v.nutz.base.model; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +@Data +public class msgUser implements Serializable { + + private String type; + private String userId; + private String name; + +} diff --git a/src/main/java/io/v/nutz/base/utils/MsgApi.java b/src/main/java/io/v/nutz/base/utils/MsgApi.java index a883d8c..e22cf25 100644 --- a/src/main/java/io/v/nutz/base/utils/MsgApi.java +++ b/src/main/java/io/v/nutz/base/utils/MsgApi.java @@ -6,6 +6,7 @@ import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import io.v.nutz.base.enums.Env; +import io.v.nutz.base.model.msgUser; import io.v.nutz.web.commons.base.Globals; import lombok.extern.slf4j.Slf4j; import org.nutz.integration.jedis.RedisService; @@ -34,83 +35,90 @@ public class MsgApi { /** - * @param channels 推送渠道 (INNER:站内消息; SMS:短信; Mail:邮件; WeChat:微信; DingTalk:钉钉;同时推送多个渠道用英文逗号分隔 ) - * @param loginNameStr 字符串,多个工号用英文逗号分隔 "," - * @param mtype 消息类型; 0: 图文 1: 文字 2: 外链 - * @param title 标题 - * @param content 内容 - * @param imageUrl 图片URL - * @author zhf + * @param msgTitle 消息标题 + * @param msgContent 消息内容 + * @param msgType 消息类型(0:图文,1:文字,2:外链) + * @param sendStatus 发送状态,1:实时发送 2:定时消息 + * @param sendChannel 发送渠道Mail:邮件,WeChat:微信, IntelligenceMode:智能渠道 多个渠道用英文逗号隔开(如果选择智能模式则不可再选其他模式) + * @param receivers 接收人,Json格式(当sendMode为普通模式normal 时必填) 接收人格式:type为接收人类型,默认为User; usreId可以填写工号或手机号;name为接收人姓名 + * @param waitLink 页面的跳转地址,当消息是待办消息时(必填)。 + * @author hpf * @description */ - public void sendMsg(List channels, String loginNameStr, Integer mtype, String title, String content, String imageUrl,String link) { -// try { -// if (!Globals.MyConfig.getBoolean("SendMsg")) { -// log.info("发送失败,消息暂未开启!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); -// return; -// } -// -// if (Globals.isEnv(Env.dev)) { -// log.info("开发模式不允许发送短信!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); -// return; -// } -// -// if (StrUtil.isBlank(title)||StrUtil.isBlank(content) ||Lang.isEmpty(channels) || Lang.isEmpty(loginNameStr)) { -// log.info("发送失败,缺少需要参数请检查!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); -// return; -// } -// -// String msgToken = getMsgToken(); -// NutMap map = new NutMap(); -// map.put("channel", String.join(",", channels)); -// //推送范围(1:普通模式;2:全体教师;3:全体学生;4:全体人员) -// map.put("objScope", 1); -// map.put("objIds", loginNameStr); -// map.put("mtype", mtype); -// map.put("sendStatus", 1); -// map.put("title", title); -// map.put("content", content); -// map.put("imageUrl", imageUrl); -// map.put("link", link); -// -// HttpRequest request = HttpUtil.createPost(MSG_API) -// .header("token", msgToken) -// .body(Json.toJson(map)); -// JSONObject jsonObject = JSON.parseObject(request.execute().body()); -// int status = jsonObject.getInteger("code"); -// -// if (status == 200) { -// log.info("发送成功>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); -// } else { -// log.info("发送失败>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); -// throw new RuntimeException("Message sending failed with status code: " + status + ", Message: " + jsonObject.getString("message")); -// } -// } catch (Exception e) { -// e.printStackTrace(); -// } + public void sendMsg(String msgTitle, String msgContent, Integer msgType, Integer sendStatus, String sendChannel, List receivers, String waitLink) { + try { + if (!Globals.MyConfig.getBoolean("SendMsg")) { + log.info("发送失败,消息暂未开启!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + return; + } + + if (Globals.isEnv(Env.dev)) { + log.info("开发模式不允许发送短信!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + return; + } + + if (StrUtil.isBlank(msgTitle)||StrUtil.isBlank(msgContent) ||StrUtil.isEmpty(sendChannel)||receivers.size()==0) { + log.info("发送失败,缺少需要参数请检查!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + return; + } + + String msgToken = getMsgToken(); + NutMap map = new NutMap(); + + map.put("token", msgToken); + map.put("msgtitle", msgTitle); + map.put("msgContent", msgContent); + map.put("msgType", msgType); + map.put("sendStatus", sendStatus); + map.put("sendChannel", sendChannel); + map.put("sendMode", "normal"); + map.put("receivers", receivers); + map.put("waitLink", waitLink); + //发送 + map.put("sendMsgType", 1); + + HttpRequest request = HttpUtil.createPost(MSG_API) + .body(Json.toJson(map)); + JSONObject jsonObject = JSON.parseObject(request.execute().body()); + int status = jsonObject.getInteger("rspCode"); + + if (status == 000000) { + log.info("发送成功>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); + } else { + log.info("发送失败>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); + throw new RuntimeException("Message sending failed with status code: " + status + ", Message: " + jsonObject.getString("rspMsg")); + } + } catch (Exception e) { + e.printStackTrace(); + } } + private static final String TOKEN_API = "https://mc.zjitc.edu.cn/msg/getThirdAPIToken"; + private static final String APP_Id = "MSG10029935"; + private static final String APP_PASSWORD = "N2NkOTI3NDVmZjY0ZTkwYTI0OGVjYjQzYjZhNDIyMzE"; + private static final String MSG_TOKEN_NAME = "msgToken"; + private static final String MSG_API = "https://mc.zjitc.edu.cn/message/sendMessageApi"; + /** * 获取token * * @return */ private String getMsgToken() { -// String token = redisService.get(MSG_TOKEN_NAME); -// if (StrUtil.isBlank(token)) { -// String body = HttpRequest.post(TOKEN_API + "?appKey=" + APP_KEY + "&appSecret=" + APP_SECRET).execute().body(); -// NutMap map = Json.fromJson(NutMap.class, body); -// if (map.getInt("code") == 200) { -// NutMap data = Json.fromJson(NutMap.class, map.getString("data")); -// token = data.getString("accessToken"); -// redisService.setex(MSG_TOKEN_NAME, 3600, token); -// } else { -// token = ""; -// } -// } -// return token; - return null; + String token = redisService.get(MSG_TOKEN_NAME); + if (StrUtil.isBlank(token)) { + String body = HttpRequest.post(TOKEN_API + "?appId=" + APP_Id + "&appPassword=" + APP_PASSWORD).execute().body(); + NutMap map = Json.fromJson(NutMap.class, body); + if (map.getInt("rspCode") == 000000) { + NutMap data = Json.fromJson(NutMap.class, map.getString("resultData")); + token = data.getString("token"); + redisService.setex(MSG_TOKEN_NAME, 3600, token); + } else { + token = ""; + } + } + return token; } diff --git a/src/main/java/io/v/nutz/sys/controllers/platform/sys/SysHomeController.java b/src/main/java/io/v/nutz/sys/controllers/platform/sys/SysHomeController.java index 0e5c903..5c32de2 100644 --- a/src/main/java/io/v/nutz/sys/controllers/platform/sys/SysHomeController.java +++ b/src/main/java/io/v/nutz/sys/controllers/platform/sys/SysHomeController.java @@ -332,8 +332,8 @@ public class SysHomeController { String time1 = liElement.selectFirst("div.cal-date-day").text(); String time2 = liElement.selectFirst("div.cal-date-month").text(); String title = liElement.selectFirst("a.cal-title").text(); - row.put("href", href); - row.put("time", time1 + "-" + time2); + row.put("href", url+href); + row.put("time", time2 + "-" + time1); row.put("text", title); return row; }).collect(Collectors.toList()); @@ -354,7 +354,7 @@ public class SysHomeController { String href = liElement.selectFirst("a.flex-box").attr("href"); String time = liElement.selectFirst("div.date-line").text(); String title = liElement.selectFirst("div.flex-1").text(); - row.put("href", href); + row.put("href",url+href); row.put("time", time); row.put("text", title); return row; diff --git a/src/main/java/io/v/nutz/sys/controllers/platform/sys/club/regist/ClubMyApplyController.java b/src/main/java/io/v/nutz/sys/controllers/platform/sys/club/regist/ClubMyApplyController.java index 2e8d6e3..3be47dc 100644 --- a/src/main/java/io/v/nutz/sys/controllers/platform/sys/club/regist/ClubMyApplyController.java +++ b/src/main/java/io/v/nutz/sys/controllers/platform/sys/club/regist/ClubMyApplyController.java @@ -2,7 +2,9 @@ package io.v.nutz.sys.controllers.platform.sys.club.regist; import cn.hutool.core.util.StrUtil; import cn.wizzer.framework.base.Result; +import com.alibaba.fastjson.JSON; import io.v.nutz.base.annontation.ViReturn; +import io.v.nutz.base.model.msgUser; import io.v.nutz.base.page.Pagination; import io.v.nutz.base.service.BaseService; import io.v.nutz.base.dao.CndPlus; @@ -30,6 +32,7 @@ import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; import org.nutz.trans.Trans; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -214,10 +217,16 @@ public class ClubMyApplyController { Map userMap = sysUsers.stream().collect(Collectors.toMap(Sys_user::getLoginname, o -> o)); for (String user : userList) { Sys_user sysUser = userMap.get(user); + msgUser msgUser=new msgUser(); + msgUser.setName("User"); + msgUser.setUserId(sysUser.getLoginname()); + msgUser.setName(sysUser.getUsername()); + List users = new ArrayList<>(); + users.add(msgUser); String content = "%s老师您好,欢迎加入%s,请进入入会申请进行确认!".formatted(sysUser.getUsername(), sysClub.getName()); String link = Globals.AppDomain + "/platform/sys/club/sq/mobile"; - msgApi.sendMsg(List.of("DingTalk"), user, 2, "协会入会邀请", content, "", link); - + //msgApi.sendMsg(List.of("DingTalk"), user, 2, "协会入会邀请", content, "", link); + msgApi.sendMsg("协会入会邀请", content, 1, 1, "SMS", users,""); dao.update( Sys_club_user.class, Chain.make("sendMsg", true), diff --git a/src/main/java/io/v/nutz/sys/controllers/platform/sys/club/regist/ClubXghReplyController.java b/src/main/java/io/v/nutz/sys/controllers/platform/sys/club/regist/ClubXghReplyController.java index 584efc3..cd17e9f 100644 --- a/src/main/java/io/v/nutz/sys/controllers/platform/sys/club/regist/ClubXghReplyController.java +++ b/src/main/java/io/v/nutz/sys/controllers/platform/sys/club/regist/ClubXghReplyController.java @@ -3,7 +3,9 @@ package io.v.nutz.sys.controllers.platform.sys.club.regist; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import cn.wizzer.framework.page.Pagination; +import com.alibaba.fastjson.JSON; import io.v.nutz.base.annontation.ViReturn; +import io.v.nutz.base.model.msgUser; import io.v.nutz.base.utils.MsgApi; import io.v.nutz.base.utils.Roles; import io.v.nutz.base.model.Audit; @@ -17,12 +19,15 @@ import io.v.nutz.sys.services.SysUserService; import io.v.nutz.web.commons.utils.ShiroUtil; import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.nutz.Nutz; import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; +import org.nutz.dao.impl.entity.NutEntity; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.Lang; +import org.nutz.lang.util.NutBean; import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; @@ -125,9 +130,16 @@ public class ClubXghReplyController { Sys_club_user sysClubUser = sysClubUsers.stream().filter(o -> o.getSf() == 1).findFirst().orElse(null); if(sysClubUser != null) { Sys_user sysUser = dao.fetch(Sys_user.class, sysClubUser.getUserid()); + msgUser msgUser = new msgUser(); + msgUser.setName("User"); + msgUser.setUserId(sysUser.getLoginname()); + msgUser.setName(sysUser.getUsername()); + List users = new ArrayList<>(); + users.add(msgUser); String content = "%s老师您好,您申请注册的%s已经审核通过。".formatted(sysUser.getUsername(), club.getName()); String link = ""; - msgApi.sendMsg(List.of("DingTalk"), sysUser.getLoginname(), 2, "协会注册", content, "", link); + //msgApi.sendMsg(List.of("DingTalk"), sysUser.getLoginname(), 2, "协会注册", content, "", link); + msgApi.sendMsg("协会注册", content, 1, 1, "SMS",users ,""); } } club.setXghAuditId(audit.getId()); diff --git a/src/main/java/io/v/nutz/task/job/trainSingUp/SendMsgBeforeClassJob.java b/src/main/java/io/v/nutz/task/job/trainSingUp/SendMsgBeforeClassJob.java index 49e2798..10c88a7 100644 --- a/src/main/java/io/v/nutz/task/job/trainSingUp/SendMsgBeforeClassJob.java +++ b/src/main/java/io/v/nutz/task/job/trainSingUp/SendMsgBeforeClassJob.java @@ -1,6 +1,8 @@ package io.v.nutz.task.job.trainSingUp; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import io.v.nutz.base.model.msgUser; import io.v.nutz.base.utils.MsgApi; import io.v.nutz.zhgh.trainSignUp.service.TrainSignUpActivityService; import org.nutz.dao.Cnd; @@ -14,6 +16,7 @@ import org.quartz.Job; import org.quartz.JobExecutionContext; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.List; @IocBean @@ -90,7 +93,14 @@ public class SendMsgBeforeClassJob implements Job { item.getString("courseLocation") ); } - msgApi.sendMsg(List.of("DingTalk"), item.getString("loginname"), 1, "活动开始通知", content, "", ""); + msgUser user=new msgUser(); + user.setName("User"); + user.setUserId(item.getString("loginname")); + user.setName(item.getString("username")); + List users = new ArrayList<>(); + users.add(user); + msgApi.sendMsg("活动开始通知", content, 1, 1, "SMS", users,""); + //msgApi.sendMsg(List.of("DingTalk"), item.getString("loginname"), 1, "活动开始通知", content, "", ""); // msgApi.sendWxMsg("温馨提醒","","text",content,List.of(item.getString("loginname")),""); // sendMsg.pushWeChatMsg("温馨提醒", content, item.getString("loginname")); }); diff --git a/src/main/java/io/v/nutz/web/commons/base/Globals.java b/src/main/java/io/v/nutz/web/commons/base/Globals.java index 6c834f0..928b9a4 100644 --- a/src/main/java/io/v/nutz/web/commons/base/Globals.java +++ b/src/main/java/io/v/nutz/web/commons/base/Globals.java @@ -53,9 +53,9 @@ public class Globals { //项目短名称 public static String AppShrotName = ""; //项目域名 (设置一个默认的 为优先级考虑) - public static String AppDomain = "https://zhgh.zjitc.edu.cn"; + public static String AppDomain = "http://zhgh.zjitc.edu.cn"; //cas地址 - public static String CasAddress = "https://sso.zjitc.edu.cn/"; + public static String CasAddress = "http://sso.zjitc.edu.cn/"; //文件访问域名 public static String AppFileDomain = ""; //文件上传路径 diff --git a/src/main/java/io/v/nutz/zhgh/data/controller/SourceUserController.java b/src/main/java/io/v/nutz/zhgh/data/controller/SourceUserController.java index a84ea15..ec70f38 100644 --- a/src/main/java/io/v/nutz/zhgh/data/controller/SourceUserController.java +++ b/src/main/java/io/v/nutz/zhgh/data/controller/SourceUserController.java @@ -61,7 +61,7 @@ public class SourceUserController { un.DWMC unitname, un.DWMCDM unitcode FROM - `user_db` u + `v_user_db` u LEFT JOIN dep_db un ON u.DWDM = un.DWMCDM $condition """); diff --git a/src/main/java/io/v/nutz/zhgh/data/service/impl/SourceUserServiceImpl.java b/src/main/java/io/v/nutz/zhgh/data/service/impl/SourceUserServiceImpl.java index 5bbde3f..20503ea 100644 --- a/src/main/java/io/v/nutz/zhgh/data/service/impl/SourceUserServiceImpl.java +++ b/src/main/java/io/v/nutz/zhgh/data/service/impl/SourceUserServiceImpl.java @@ -202,7 +202,7 @@ public class SourceUserServiceImpl extends ViServiceImpl implements //不更新会员和福利会员字段 source.setMember(null); source.setWelfareMember(null); - Sys_user user = userMap.get(source.getLoginname().toLowerCase()); + Sys_user user = userMap.get(source.getLoginname()); if (isAuto) { checkMemberOrWelfareMember(changeConfig, source, user, addMemberUserIds, deleteMemberUserIds, @@ -524,6 +524,9 @@ public class SourceUserServiceImpl extends ViServiceImpl implements NutMap newMap = Lang.obj2nutmap(source); // 原数据 NutMap sourceMap = Lang.obj2nutmap(user); + if (StrUtil.isBlank(newMap.getString("member"))) { + sourceMap.put("member", null); + } // 变更记录 List changeList = new ArrayList<>(); for (String fieldName : allowChangeFieldNames) { @@ -570,6 +573,9 @@ public class SourceUserServiceImpl extends ViServiceImpl implements // 获取变更记录 NutMap newMap = Lang.obj2nutmap(source); NutMap sourceMap = Lang.obj2nutmap(user); + if (StrUtil.isBlank(newMap.getString("member"))) { + sourceMap.put("member", null); + } List changeList = new ArrayList<>(); for (String fieldName : allowChangeFieldNames) { memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList); @@ -607,7 +613,7 @@ public class SourceUserServiceImpl extends ViServiceImpl implements } } - if (!ObjectUtil.equals(user.getMember(), source.getMember())){ + if (source.getMember() != null && !ObjectUtil.equals(user.getMember(), source.getMember())){ if (source.getMember() == 1) { changeTypes.add(MemberChangeType.RESTORE.getType()); } else { diff --git a/src/main/java/io/v/nutz/zhgh/staffmanage/member/controller/apply/MemberApplyBranchUnionAuditController.java b/src/main/java/io/v/nutz/zhgh/staffmanage/member/controller/apply/MemberApplyBranchUnionAuditController.java index e1f4697..492a17a 100644 --- a/src/main/java/io/v/nutz/zhgh/staffmanage/member/controller/apply/MemberApplyBranchUnionAuditController.java +++ b/src/main/java/io/v/nutz/zhgh/staffmanage/member/controller/apply/MemberApplyBranchUnionAuditController.java @@ -5,8 +5,10 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.wizzer.framework.base.Result; import cn.wizzer.framework.page.Pagination; +import com.alibaba.fastjson.JSON; import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.model.Audit; +import io.v.nutz.base.model.msgUser; import io.v.nutz.base.utils.MsgApi; import io.v.nutz.base.utils.Vi; import io.v.nutz.sys.models.Sys_union; @@ -38,6 +40,7 @@ import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; +import java.util.ArrayList; import java.util.List; /** @@ -171,7 +174,14 @@ public class MemberApplyBranchUnionAuditController { .formatted(user.getUsername(), union.getUnionname()); System.out.println(content); sysUserService.deleteCacheAndUpdate(record.getUserId()); - msgApi.sendMsg(List.of("DingTalk"), record.getLoginname(), 1, "入会结果通知", content, "", ""); + msgUser msgUser=new msgUser(); + msgUser.setName("User"); + msgUser.setUserId(sysUser.getLoginname()); + msgUser.setName(sysUser.getUsername()); + List users = new ArrayList<>(); + users.add(msgUser); + msgApi.sendMsg("入会结果通知", content, 1, 1, "SMS", users,""); + //msgApi.sendMsg(List.of("DingTalk"), record.getLoginname(), 1, "入会结果通知", content, "", ""); } else { // 杭州医学院,分工会拒绝接收,还要去创建校工会的审核任务 MemberApplyToDoHandler.REFUSE_UNION_TASK.exec(record, NutMap.NEW().addv("nodeName", "分工会拒绝接收")); @@ -180,7 +190,14 @@ public class MemberApplyBranchUnionAuditController { .formatted(union.getUnionname(), record.getUsername(), audit.getAuditOpinion()); String linkUrl = Globals.AppDomain + "/platform/member/apply/schoolUnion/audit/h5"; System.out.println(content); - msgApi.sendMsg(List.of("DingTalk"), record.getLoginname(), 2, "入会结果通知", content, "", linkUrl); + //msgApi.sendMsg(List.of("DingTalk"), record.getLoginname(), 2, "入会结果通知", content, "", linkUrl); + msgUser user=new msgUser(); + user.setName("User"); + user.setUserId(record.getLoginname()); + user.setName(record.getUsername()); + List users = new ArrayList<>(); + users.add(user); + msgApi.sendMsg("入会结果通知", content, 1, 1, "SMS", users,linkUrl); } return null; } diff --git a/src/main/java/io/v/nutz/zhgh/staffmanage/member/controller/apply/MemberApplyController.java b/src/main/java/io/v/nutz/zhgh/staffmanage/member/controller/apply/MemberApplyController.java index ee5600f..38abd2e 100644 --- a/src/main/java/io/v/nutz/zhgh/staffmanage/member/controller/apply/MemberApplyController.java +++ b/src/main/java/io/v/nutz/zhgh/staffmanage/member/controller/apply/MemberApplyController.java @@ -2,6 +2,7 @@ package io.v.nutz.zhgh.staffmanage.member.controller.apply; import cn.wizzer.framework.base.Result; import io.v.nutz.base.annontation.ViReturn; +import io.v.nutz.base.model.msgUser; import io.v.nutz.base.utils.MsgApi; import io.v.nutz.base.utils.Roles; import io.v.nutz.sys.models.Sys_user_role; @@ -129,11 +130,19 @@ public class MemberApplyController { // 短信通知 List schoolLoginNameList = commonService.getSchoolOrBranchUnionMemberAdminLoginNames("school", null); - String schoolLoginNameListStr = schoolLoginNameList.stream().distinct().collect(Collectors.joining(",")); + List users = schoolLoginNameList.stream().map(item -> { + msgUser user = new msgUser(); + user.setType("User"); + user.setUserId(item); + return user; + }).collect(Collectors.toList()); + //String schoolLoginNameListStr = schoolLoginNameList.stream().distinct().collect(Collectors.joining(",")); String content = "%s老师正申请加入工会,请您点击此条消息或登录“智慧工会”进行审核".formatted(record.getUsername()); String linkUrl = Globals.AppDomain + "/platform/member/apply/schoolUnion/audit/h5"; - msgApi.sendMsg(List.of("DingTalk"), schoolLoginNameListStr, 2, "入会审核通知", content, "", linkUrl); + + //msgApi.sendMsg(List.of("DingTalk"), schoolLoginNameListStr, 2, "入会审核通知", content, "", linkUrl); + msgApi.sendMsg("入会审核通知", content, 1, 1, "SMS", users,linkUrl); return null; } diff --git a/src/main/java/io/v/nutz/zhgh/staffmanage/member/controller/apply/MemberApplySchoolUnionAuditController.java b/src/main/java/io/v/nutz/zhgh/staffmanage/member/controller/apply/MemberApplySchoolUnionAuditController.java index d90fac9..a07dece 100644 --- a/src/main/java/io/v/nutz/zhgh/staffmanage/member/controller/apply/MemberApplySchoolUnionAuditController.java +++ b/src/main/java/io/v/nutz/zhgh/staffmanage/member/controller/apply/MemberApplySchoolUnionAuditController.java @@ -3,8 +3,10 @@ package io.v.nutz.zhgh.staffmanage.member.controller.apply; import cn.hutool.core.date.DateUtil; import cn.wizzer.framework.base.Result; import cn.wizzer.framework.page.Pagination; +import com.alibaba.fastjson.JSON; import io.v.nutz.base.annontation.ViReturn; import io.v.nutz.base.model.Audit; +import io.v.nutz.base.model.msgUser; import io.v.nutz.base.utils.MsgApi; import io.v.nutz.sys.services.SysLocalProcessService; import io.v.nutz.web.commons.base.Globals; @@ -30,6 +32,7 @@ import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; +import java.util.ArrayList; import java.util.List; /** @@ -156,15 +159,30 @@ public class MemberApplySchoolUnionAuditController { String content = "%s,%s老师的入会申请已经通过校工会审核,现将工会关系转入您处,请点击此消息或登录“智慧工会”办理新会员接收手续。" .formatted(unionname, record.getUsername()); System.out.println(content); - msgApi.sendMsg(List.of("DingTalk"), map.getString("loginname"), 2, "会员入会审核通知", content, "", linkUrl); + msgUser user=new msgUser(); + user.setName("User"); + user.setUserId(map.getString("loginname")); + user.setName(map.getString("username")); + List users = new ArrayList<>(); + users.add(user); + //msgApi.sendMsg(List.of("DingTalk"), map.getString("loginname"), 2, "会员入会审核通知", content, "", linkUrl); + msgApi.sendMsg("会员入会审核通知", content, 1, 1, "SMS", users,linkUrl); + } } } else { MemberApplyToDoHandler.REFUSE_UNION_TASK.exec(record, NutMap.NEW().addv("nodeName", "校工会审核拒绝")); + msgUser user=new msgUser(); + user.setName("User"); + user.setUserId(record.getLoginname()); + user.setName(record.getUsername()); + List users = new ArrayList<>(); + users.add(user); // 短信通知 String content = "尊敬的%s老师,您的入会申请未被通过,若有疑问请联系校工会,联系电话87692636".formatted(record.getUsername()); System.out.println(content); - msgApi.sendMsg(List.of("DingTalk"), record.getLoginname(), 1, "会员入会结果通知", content, "", ""); + //msgApi.sendMsg(List.of("DingTalk"), record.getLoginname(), 1, "会员入会结果通知", content, "", ""); + msgApi.sendMsg("会员入会结果通知", content, 1, 1, "SMS", users,""); } return null; } diff --git a/src/main/java/io/v/nutz/zhgh/staffmanage/member/controller/inquire/MemberAnalysisController.java b/src/main/java/io/v/nutz/zhgh/staffmanage/member/controller/inquire/MemberAnalysisController.java index 727fb20..1f418b1 100644 --- a/src/main/java/io/v/nutz/zhgh/staffmanage/member/controller/inquire/MemberAnalysisController.java +++ b/src/main/java/io/v/nutz/zhgh/staffmanage/member/controller/inquire/MemberAnalysisController.java @@ -52,8 +52,8 @@ public class MemberAnalysisController { gh.unioncode as unionCode, gh.unionname as unionName, ( SELECT count( 1 ) FROM member_his WHERE `year` = @lastYear AND unionid = gh.id ) AS '往年会员人数', - ( SELECT count( 1 ) FROM member_change_record WHERE currentUnionId = gh.id AND currentUnitId != originUnitId AND YEAR ( applyTime ) = @currentYear ) AS '校内异动变动到我工会人数', - ( SELECT count( 1 ) FROM member_change_record WHERE originUnionId = gh.id AND currentUnitId != originUnitId AND YEAR ( applyTime ) = @currentYear ) AS '校内异动我工会减少人数', + ( SELECT count( 1 ) FROM member_change_record WHERE unitId = gh.id AND unitId != changeOrigin AND YEAR ( applyDateTime ) = @currentYear ) AS '校内异动变动到我工会人数', + ( SELECT count( 1 ) FROM member_change_record WHERE changeOrigin = gh.id AND unitId != changeOrigin AND YEAR ( applyDateTime ) = @currentYear ) AS '校内异动我工会减少人数', ( SELECT count( 1 ) @@ -61,9 +61,9 @@ public class MemberAnalysisController { member_change_record mcr LEFT JOIN `user` u ON u.id = mcr.userId WHERE - mcr.`type` IN ( 2, 7 ) + mcr.`changeType` IN ( 2, 7 ) AND u.unionid = gh.id - AND YEAR ( mcr.applyTime ) = @currentYear + AND YEAR ( mcr.applyDateTime ) = @currentYear ) AS '新入职、恢复人数', ( SELECT @@ -72,9 +72,9 @@ public class MemberAnalysisController { member_change_record mcr LEFT JOIN `user` u ON u.id = mcr.userId WHERE - mcr.`type` IN ( 3, 4, 5, 6, 8 ) + mcr.`changeType` IN ( 3, 4, 5, 6, 8 ) AND u.unionid = gh.id - AND YEAR ( mcr.applyTime ) = @currentYear + AND YEAR ( mcr.applyDateTime ) = @currentYear ) AS '离职、去世、退休、开除、退会人数', (select count(1) from `user` where member = 1 and unionid = gh.id) as currentYearMemberNum FROM @@ -123,8 +123,8 @@ public class MemberAnalysisController { dw.unitcode as unitCode, dw.`name` as unitName, ( SELECT count( 1 ) FROM member_his WHERE `year` = @lastYear AND unitid = dw.id ) AS '往年会员人数', - ( SELECT count( 1 ) FROM member_change_record WHERE currentUnitId = dw.id AND currentUnitId != originUnitId AND YEAR ( applyTime ) = @currentYear ) AS '校内异动变动到我单位人数', - ( SELECT count( 1 ) FROM member_change_record WHERE originUnitId = dw.id AND currentUnitId != originUnitId AND YEAR ( applyTime ) = @currentYear ) AS '校内异动我单位减少人数', + ( SELECT count( 1 ) FROM member_change_record WHERE unitId = dw.id AND unitId != changeOrigin AND YEAR ( applyDateTime ) = @currentYear ) AS '校内异动变动到我单位人数', + ( SELECT count( 1 ) FROM member_change_record WHERE changeOrigin = dw.id AND unitId != changeOrigin AND YEAR ( applyDateTime ) = @currentYear ) AS '校内异动我单位减少人数', ( SELECT count( 1 ) @@ -132,9 +132,9 @@ public class MemberAnalysisController { member_change_record mcr LEFT JOIN `user` u ON u.id = mcr.userId WHERE - mcr.`type` IN ( 2, 7 ) + mcr.`changeType` IN ( 2, 7 ) AND u.unitid = dw.id - AND YEAR ( mcr.applyTime ) = @currentYear + AND YEAR ( mcr.applyDateTime ) = @currentYear ) AS '新入职、恢复人数', ( SELECT @@ -143,9 +143,9 @@ public class MemberAnalysisController { member_change_record mcr LEFT JOIN `user` u ON u.id = mcr.userId WHERE - mcr.`type` IN ( 3, 4, 5, 6, 8 ) + mcr.`changeType` IN ( 3, 4, 5, 6, 8 ) AND u.unitid = dw.id - AND YEAR ( mcr.applyTime ) = @currentYear + AND YEAR ( mcr.applyDateTime ) = @currentYear ) AS '离职、去世、退休、开除、退会人数', (select count(1) from `user` where member = 1 and unitid = dw.id) as currentYearMemberNum FROM @@ -192,8 +192,8 @@ public class MemberAnalysisController { dw.unitcode as unitCode, dw.`name` as unitName, ( SELECT count( 1 ) FROM member_his WHERE `year` = @lastYear AND unitid = dw.id ) AS '往年会员人数', - ( SELECT count( 1 ) FROM member_change_record WHERE currentUnitId = dw.id AND currentUnitId != originUnitId AND YEAR ( applyTime ) = @currentYear ) AS '校内异动变动到我单位人数', - ( SELECT count( 1 ) FROM member_change_record WHERE originUnitId = dw.id AND currentUnitId != originUnitId AND YEAR ( applyTime ) = @currentYear ) AS '校内异动我单位减少人数', + ( SELECT count( 1 ) FROM member_change_record WHERE unitId = dw.id AND unitId != changeOrigin AND YEAR ( applyDateTime ) = @currentYear ) AS '校内异动变动到我单位人数', + ( SELECT count( 1 ) FROM member_change_record WHERE changeOrigin = dw.id AND unitId != changeOrigin AND YEAR ( applyDateTime ) = @currentYear ) AS '校内异动我单位减少人数', ( SELECT count( 1 ) @@ -201,9 +201,9 @@ public class MemberAnalysisController { member_change_record mcr LEFT JOIN `user` u ON u.id = mcr.userId WHERE - mcr.`type` IN ( 2, 7 ) + mcr.`changeType` IN ( 2, 7 ) AND u.unitid = dw.id - AND YEAR ( mcr.applyTime ) = @currentYear + AND YEAR ( mcr.applyDateTime ) = @currentYear ) AS '新入职、恢复人数', ( SELECT @@ -212,9 +212,9 @@ public class MemberAnalysisController { member_change_record mcr LEFT JOIN `user` u ON u.id = mcr.userId WHERE - mcr.`type` IN ( 3, 4, 5, 6, 8 ) + mcr.`changeType` IN ( 3, 4, 5, 6, 8 ) AND u.unitid = dw.id - AND YEAR ( mcr.applyTime ) = @currentYear + AND YEAR ( mcr.applyDateTime ) = @currentYear ) AS '离职、去世、退休、开除、退会人数', (select count(1) from `user` where member = 1 and unitid = dw.id) as currentYearMemberNum FROM @@ -228,8 +228,8 @@ public class MemberAnalysisController { gh.unioncode as unionCode, gh.unionname as unionName, ( SELECT count( 1 ) FROM member_his WHERE `year` = @lastYear AND unionid = gh.id ) AS '往年会员人数', - ( SELECT count( 1 ) FROM member_change_record WHERE currentUnionId = gh.id AND currentUnitId != originUnitId AND YEAR ( applyTime ) = @currentYear ) AS '校内异动变动到我单位人数', - ( SELECT count( 1 ) FROM member_change_record WHERE originUnionId = gh.id AND currentUnitId != originUnitId AND YEAR ( applyTime ) = @currentYear ) AS '校内异动我单位减少人数', + ( SELECT count( 1 ) FROM member_change_record WHERE unitId = gh.id AND unitId != changeOrigin AND YEAR ( applyDateTime ) = @currentYear ) AS '校内异动变动到我单位人数', + ( SELECT count( 1 ) FROM member_change_record WHERE changeOrigin = gh.id AND unitId != changeOrigin AND YEAR ( applyDateTime ) = @currentYear ) AS '校内异动我单位减少人数', ( SELECT count( 1 ) @@ -237,9 +237,9 @@ public class MemberAnalysisController { member_change_record mcr LEFT JOIN `user` u ON u.id = mcr.userId WHERE - mcr.`type` IN ( 2, 7 ) + mcr.`changeType` IN ( 2, 7 ) AND u.unionid = gh.id - AND YEAR ( mcr.applyTime ) = @currentYear + AND YEAR ( mcr.applyDateTime ) = @currentYear ) AS '新入职、恢复人数', ( SELECT @@ -248,9 +248,9 @@ public class MemberAnalysisController { member_change_record mcr LEFT JOIN `user` u ON u.id = mcr.userId WHERE - mcr.`type` IN ( 3, 4, 5, 6, 8 ) + mcr.`changeType` IN ( 3, 4, 5, 6, 8 ) AND u.unionid = gh.id - AND YEAR ( mcr.applyTime ) = @currentYear + AND YEAR ( mcr.applyDateTime ) = @currentYear ) AS '离职、去世、退休、开除、退会人数', (select count(1) from `user` where member = 1 and unionid = gh.id) as currentYearMemberNum FROM diff --git a/src/main/java/io/v/nutz/zhgh/staffmanage/sourcechange/controller/SourceChangeManageController.java b/src/main/java/io/v/nutz/zhgh/staffmanage/sourcechange/controller/SourceChangeManageController.java index e48dde9..4cc3886 100644 --- a/src/main/java/io/v/nutz/zhgh/staffmanage/sourcechange/controller/SourceChangeManageController.java +++ b/src/main/java/io/v/nutz/zhgh/staffmanage/sourcechange/controller/SourceChangeManageController.java @@ -88,8 +88,8 @@ public class SourceChangeManageController { Cnd cnd = Cnd.NEW(); if(StrUtil.isNotBlank(pageForm.getSearchKeyword())) { SqlExpressionGroup seg = new SqlExpressionGroup(); - seg.orLike("username",pageForm.getSearchKeyword()); - seg.orLike("loginname",pageForm.getSearchKeyword()); + seg.orLike("scmt.username",pageForm.getSearchKeyword()); + seg.orLike("scmt.loginname",pageForm.getSearchKeyword()); cnd.and(seg); } if (StrUtil.isAllNotBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { diff --git a/src/main/java/io/v/nutz/zhgh/staffmanage/sourcechange/service/impl/SourceChangeManageServiceImpl.java b/src/main/java/io/v/nutz/zhgh/staffmanage/sourcechange/service/impl/SourceChangeManageServiceImpl.java index 46b0b53..406ab83 100644 --- a/src/main/java/io/v/nutz/zhgh/staffmanage/sourcechange/service/impl/SourceChangeManageServiceImpl.java +++ b/src/main/java/io/v/nutz/zhgh/staffmanage/sourcechange/service/impl/SourceChangeManageServiceImpl.java @@ -107,7 +107,7 @@ public class SourceChangeManageServiceImpl extends BaseServiceImpl userList = listService.listMap(sql); - Set loginNameList = userList.stream().map(user -> user.getString("loginname")).collect(Collectors.toSet()); - String loginNames = loginNameList.stream().collect(Collectors.joining(",")); + List list = userList.stream().map(user -> { + msgUser msgUser = new msgUser(); + msgUser.setName("User"); + msgUser.setUserId(user.getString("loginname")); + msgUser.setName(user.getString("username")); + return msgUser; + }).collect(Collectors.toList()); + //String loginNames = loginNameList.stream().collect(Collectors.joining(",")); WelfareProject project = dao.fetch(WelfareProject.class, projectId); String link = Globals.AppDomain + "/mobile/welfare/list/receive?projectId=%s".formatted(projectId); + + msgApi.sendMsg("职工福利", sendMsgValue, 1, 1, "SMS", list,link); // String imageUrl = Globals.AppDomain + "/file_server/fileStreamPreview?id=" + project.getCover(); - msgApi.sendMsg(List.of("DingTalk"), loginNames, 2, "职工福利", sendMsgValue, "", link); + //msgApi.sendMsg(List.of("DingTalk"), loginNames, 2, "职工福利", sendMsgValue, "", link); return null; } diff --git a/src/main/resources/views/platform/sys/home/userInfo.js b/src/main/resources/views/platform/sys/home/userInfo.js index 6096d02..f96642a 100644 --- a/src/main/resources/views/platform/sys/home/userInfo.js +++ b/src/main/resources/views/platform/sys/home/userInfo.js @@ -8,7 +8,7 @@ const userInfo = {
🆔我的工号:${@shiro.getPrincipalProperty('loginname')}
⭕我的性别:${@shiro.getPrincipalProperty('sex')}
🟢我的单位:${@shiro.getPrincipalProperty('unit').getName()}
- +
🟤我的工会:${@shiro.getPrincipalProperty('union').getUnionname()}
📕系统角色: ${@role.getName()}