From 3a740faa161ec976986c0735ba18837f570a525f Mon Sep 17 00:00:00 2001 From: hyingbo <1363390067@qq.com> Date: 星期二, 27 五月 2025 19:04:07 +0800 Subject: [PATCH] 消息类型拆分并按类型推送至不同角色 --- lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java | 67 +++++++++++++++++++++++++++++++++ 1 files changed, 66 insertions(+), 1 deletions(-) diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java index 79de6f4..fe2ecce 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java @@ -7,7 +7,9 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.base.Joiner; import lombok.extern.slf4j.Slf4j; @@ -18,6 +20,7 @@ import org.jeecg.common.api.dto.message.*; import org.jeecg.common.aspect.UrlMatchEnum; import org.jeecg.common.constant.*; +import org.jeecg.common.constant.enums.MessageSplitTypeEnum; import org.jeecg.common.constant.enums.MessageTypeEnum; import org.jeecg.common.desensitization.util.SensitiveInfoUtil; import org.jeecg.common.exception.JeecgBootException; @@ -59,6 +62,7 @@ import java.sql.DatabaseMetaData; import java.sql.SQLException; import java.util.*; +import java.util.stream.Collectors; /** * @Description: 搴曞眰鍏遍�氫笟鍔PI锛屾彁渚涘叾浠栫嫭绔嬫ā鍧楄皟鐢� @@ -134,6 +138,8 @@ @Autowired private IQuartzJobService quartzJobService; + @Autowired + private ISysDictItemService sysDictItemService; @Override //@SensitiveDecode @@ -355,6 +361,22 @@ @Override public void sendSysAnnouncement(MessageDTO message) { + + if (StringUtils.isNotBlank(message.getMessageType())) { + //鑾峰彇娑堟伅绫诲瀷瀵瑰簲瑙掕壊鐢ㄦ埛 + MessageSplitTypeEnum messageSplitTypeEnum = MessageSplitTypeEnum.valueOfType(message.getMessageType()); + SysDict sysDict = sysDictService.getOne(new LambdaQueryWrapper<SysDict>().eq(SysDict::getDictCode, messageSplitTypeEnum.getDictCode())); + List<SysDictItem> sysDictItemList = sysDictItemService.list(new QueryWrapper<SysDictItem>().eq("dict_id",sysDict.getId())); + if (CollectionUtils.isNotEmpty(sysDictItemList)) { + List<SysUser> sysUserList = sysUserService.getUserByRoleCodeList(sysDictItemList.stream().map(SysDictItem::getItemValue).collect(Collectors.toList())); + if (CollectionUtils.isNotEmpty(sysUserList)) { + Set<String> userIdList = new HashSet<>(Arrays.asList(message.getToUser().split(StringPool.COMMA))); + userIdList.addAll(sysUserList.stream().map(SysUser::getUsername).collect(Collectors.toList())); + message.setToUser(StringUtils.join(userIdList, StringPool.COMMA)); + } + } + } + this.sendSysAnnouncement(message.getFromUser(), message.getToUser(), message.getTitle(), message.getContent(), message.getCategory()); try { // 鍚屾鍙戦�佺涓夋柟APP娑堟伅 @@ -1384,7 +1406,10 @@ @Override public String getUnitNameById(String unitId) { Unit unit = unitService.getById(unitId); - String unitName = unit.getName(); + String unitName = ""; + if(unit != null){ + unitName = unit.getName(); + } return unitName; } @@ -1456,4 +1481,44 @@ quartzJobService.deleteAndStopJob(quartzJob); } } + + @Override + public void sendAnnouncement(String fromUser, String toUser, String title, String msgContent) { + SysAnnouncement announcement = new SysAnnouncement(); + announcement.setTitile(title); + announcement.setMsgContent(msgContent); + announcement.setSender(fromUser); + announcement.setPriority(CommonConstant.PRIORITY_M); + announcement.setMsgType(CommonConstant.MSG_TYPE_UESR); + announcement.setSendStatus(CommonConstant.HAS_SEND); + announcement.setSendTime(new Date()); + announcement.setMsgCategory(CommonConstant.MSG_CATEGORY_2); + announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0)); + sysAnnouncementMapper.insert(announcement); + // 2.鎻掑叆鐢ㄦ埛閫氬憡闃呰鏍囪琛ㄨ褰� + String userId = toUser; + String[] userIds = userId.split(","); + String anntId = announcement.getId(); + for (int i = 0; i < userIds.length; i++) { + if (oConvertUtils.isNotEmpty(userIds[i])) { + SysUser sysUser = userMapper.getUserByName(userIds[i]); + if (sysUser == null) { + continue; + } + SysAnnouncementSend announcementSend = new SysAnnouncementSend(); + announcementSend.setAnntId(anntId); + announcementSend.setUserId(sysUser.getId()); + announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); + sysAnnouncementSendMapper.insert(announcementSend); + JSONObject obj = new JSONObject(); + obj.put("cmd", "user"); + obj.put("userId", sysUser.getId()); + obj.put("msgId", announcement.getId()); + obj.put("msgTxt", announcement.getTitile()); + webSocket.sendOneMessage(sysUser.getId(), obj.toJSONString()); + } + } + + } + } \ No newline at end of file -- Gitblit v1.9.3