| | |
| | | package org.jeecg.modules.system.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.jeecg.common.constant.CommonConstant; |
| | | import org.jeecg.common.constant.CommonSendStatus; |
| | | import org.jeecg.common.constant.WebsocketConst; |
| | | import org.jeecg.common.system.vo.LoginUser; |
| | | import org.jeecg.common.util.oConvertUtils; |
| | | import org.jeecg.modules.message.websocket.WebSocket; |
| | | import org.jeecg.modules.system.entity.SysAnnouncement; |
| | | import org.jeecg.modules.system.entity.SysAnnouncementSend; |
| | | import org.jeecg.modules.system.mapper.SysAnnouncementMapper; |
| | | import org.jeecg.modules.system.mapper.SysAnnouncementSendMapper; |
| | | import org.jeecg.modules.system.service.ISysAnnouncementService; |
| | | import org.jeecg.modules.system.service.ISysDictService; |
| | | import org.jeecg.modules.system.service.ISysUserService; |
| | | import org.jeecg.modules.system.util.XssUtils; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | |
| | | |
| | | @Resource |
| | | private SysAnnouncementSendMapper sysAnnouncementSendMapper; |
| | | |
| | | @Resource |
| | | private ISysDictService sysDictService; |
| | | |
| | | @Resource |
| | | private ISysUserService sysUserService; |
| | | |
| | | @Resource |
| | | private WebSocket webSocket; |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | |
| | | sysAnnouncementSendMapper.updateReaded(sysUser.getId(), annoceIdList); |
| | | } |
| | | |
| | | @Override |
| | | public void jobSendMessage(String jobDescription, String exceptionDetail) { |
| | | SysAnnouncement sysAnnouncement = new SysAnnouncement(); |
| | | String title = XssUtils.scriptXss(jobDescription + "失败!"); |
| | | // 标题 |
| | | sysAnnouncement.setTitile(title); |
| | | // 消息类型 |
| | | sysAnnouncement.setMsgCategory(CommonConstant.MSG_CATEGORY_2); |
| | | // 优先级 |
| | | sysAnnouncement.setPriority(CommonConstant.PRIORITY_H); |
| | | // 通告对象类型 |
| | | sysAnnouncement.setMsgType(CommonConstant.MSG_TYPE_UESR); |
| | | // 删除状态 |
| | | sysAnnouncement.setDelFlag(CommonConstant.DEL_FLAG_0.toString()); |
| | | // 发布状态 |
| | | sysAnnouncement.setSendStatus(CommonSendStatus.PUBLISHED_STATUS_1); |
| | | // 发布时间 |
| | | sysAnnouncement.setSendTime(new Date()); |
| | | // 发布人 |
| | | sysAnnouncement.setSender("admin"); |
| | | // 消息内容 |
| | | sysAnnouncement.setMsgContent(exceptionDetail); |
| | | // 获取用户 |
| | | // step1. 从字典数据中查询需要发送的角色编码 |
| | | String roleCode = sysDictService.queryDictTextByKey(CommonConstant.JOB_SEND_MSG, CommonConstant.STATUS_NORMAL.toString()); |
| | | // step2. 根据角色编码查询用户id集合 |
| | | List<String> userIds = sysUserService.getUserByRoleCode(roleCode); |
| | | if (userIds != null && !userIds.isEmpty()) { |
| | | sysAnnouncement.setUserIds(String.join(",", userIds)); |
| | | sysAnnouncementMapper.insert(sysAnnouncement); |
| | | String anntId = sysAnnouncement.getId(); |
| | | Date refDate = new Date(); |
| | | for (String userId : userIds) { |
| | | SysAnnouncementSend announcementSend = new SysAnnouncementSend(); |
| | | announcementSend.setAnntId(anntId); |
| | | announcementSend.setUserId(userId); |
| | | announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); |
| | | announcementSend.setReadTime(refDate); |
| | | sysAnnouncementSendMapper.insert(announcementSend); |
| | | } |
| | | // 发送消息 |
| | | JSONObject obj = new JSONObject(); |
| | | obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER); |
| | | obj.put(WebsocketConst.MSG_ID, sysAnnouncement.getId()); |
| | | obj.put(WebsocketConst.MSG_TXT, sysAnnouncement.getTitile()); |
| | | webSocket.sendMessage(sysAnnouncement.getUserIds().split(","), obj.toJSONString()); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |