feat: 🎸 通知中心接口
This commit is contained in:
parent
7fca0228fd
commit
8b45b63bbe
@ -0,0 +1,116 @@
|
||||
package org.jeecg.modules.aiol.controller;
|
||||
|
||||
import org.jeecg.common.api.dto.message.MessageDTO;
|
||||
import org.jeecg.common.constant.enums.MessageTypeEnum;
|
||||
import org.jeecg.common.system.api.ISysBaseAPI;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.jeecg.modules.system.model.AnnouncementSendModel;
|
||||
import org.jeecg.modules.system.service.ISysAnnouncementSendService;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/aiol/message")
|
||||
public class AiolMessageController {
|
||||
@Autowired
|
||||
private ISysBaseAPI sysBaseApi;
|
||||
|
||||
@Autowired
|
||||
private ISysAnnouncementSendService sysAnnouncementSendService;
|
||||
|
||||
@GetMapping("/test")
|
||||
public void test() {
|
||||
// //推送消息
|
||||
// MessageDTO messageDTO = new MessageDTO();
|
||||
// messageDTO.setToAll(false);
|
||||
// messageDTO.setToUser("202121200873");
|
||||
// messageDTO.setTitle("评论和@");
|
||||
// messageDTO.setCategory("3");
|
||||
// //推送消息类型
|
||||
// messageDTO.setType(MessageTypeEnum.XT.getType());
|
||||
// messageDTO.setIsMarkdown(false);
|
||||
// messageDTO.setFromUser("202121200874");
|
||||
// messageDTO.setContent("{\"sender\":{\"id\":\"1966804797404344321\",\"username\":\"小明\"},\"comment\":{\"id\":456,\"content\":\"老师讲得真棒![user:789:李四] 快来看这个课程!\"},\"entity\":{\"type\":\"course\",\"id\":\"1954463468539371522\",\"title\":\"python语言基础与应用\"},\"actionTime\":\"2025-09-16T15:30:00Z\"}");
|
||||
// sysBaseApi.sendTemplateMessage(messageDTO);
|
||||
|
||||
//推送消息
|
||||
MessageDTO messageDTO = new MessageDTO();
|
||||
messageDTO.setToAll(false);
|
||||
messageDTO.setToUser("202121200873");
|
||||
messageDTO.setTitle("赞和收藏");
|
||||
messageDTO.setCategory("4");
|
||||
//推送消息类型
|
||||
messageDTO.setType(MessageTypeEnum.XT.getType());
|
||||
messageDTO.setIsMarkdown(false);
|
||||
messageDTO.setFromUser("202121200874");
|
||||
messageDTO.setContent("{\"sender\":{\"id\":\"202121200874\",\"username\":\"202121200874\"},\"entity\":{\"type\":\"course\",\"id\":\"1954463468539371522\",\"title\":\"python语言基础与应用\"},\"action\":\"like\",\"actionTime\":\"2025-09-16T15:35:00Z\"}");
|
||||
sysBaseApi.sendTemplateMessage(messageDTO);
|
||||
}
|
||||
|
||||
@GetMapping("/comments_at")
|
||||
public Result<IPage<AnnouncementSendModel>> queryCommentsAndAt(
|
||||
AnnouncementSendModel model,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
try {
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String userId = sysUser.getId();
|
||||
model.setUserId(userId);
|
||||
model.setPageNo((pageNo - 1) * pageSize);
|
||||
model.setPageSize(pageSize);
|
||||
// 处理时间范围与SysAnnouncementSendController一致
|
||||
if (StringUtils.isNotEmpty(model.getSendTimeBegin())) {
|
||||
model.setSendTimeBegin(model.getSendTimeBegin() + " 00:00:00");
|
||||
}
|
||||
if (StringUtils.isNotEmpty(model.getSendTimeEnd())) {
|
||||
model.setSendTimeEnd(model.getSendTimeEnd() + " 23:59:59");
|
||||
}
|
||||
// 评论和@ 消息类别 = 3
|
||||
model.setMsgCategory("3");
|
||||
|
||||
Page<AnnouncementSendModel> page = new Page<>(pageNo, pageSize);
|
||||
IPage<AnnouncementSendModel> pageList = sysAnnouncementSendService.getMyAnnouncementSendPage(page, model);
|
||||
return Result.OK(pageList);
|
||||
} catch (Exception e) {
|
||||
return Result.error("查询评论/@消息失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@GetMapping("/likes")
|
||||
public Result<IPage<AnnouncementSendModel>> queryLikes(
|
||||
AnnouncementSendModel model,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
try {
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String userId = sysUser.getId();
|
||||
model.setUserId(userId);
|
||||
model.setPageNo((pageNo - 1) * pageSize);
|
||||
model.setPageSize(pageSize);
|
||||
if (StringUtils.isNotEmpty(model.getSendTimeBegin())) {
|
||||
model.setSendTimeBegin(model.getSendTimeBegin() + " 00:00:00");
|
||||
}
|
||||
if (StringUtils.isNotEmpty(model.getSendTimeEnd())) {
|
||||
model.setSendTimeEnd(model.getSendTimeEnd() + " 23:59:59");
|
||||
}
|
||||
// 点赞 消息类别 = 4
|
||||
model.setMsgCategory("4");
|
||||
|
||||
Page<AnnouncementSendModel> page = new Page<>(pageNo, pageSize);
|
||||
IPage<AnnouncementSendModel> pageList = sysAnnouncementSendService.getMyAnnouncementSendPage(page, model);
|
||||
return Result.OK(pageList);
|
||||
} catch (Exception e) {
|
||||
return Result.error("查询点赞消息失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
@ -76,7 +76,7 @@ public class SystemSendMsgHandle implements ISendMsgHandle {
|
||||
String[] arr = messageDTO.getToUser().split(",");
|
||||
for(String username: arr){
|
||||
//update-begin---author:wangshuai---date:2025-06-26---for:【QQYUN-12162】OA项目改造,系统重消息拆分,目前消息都在一起 需按分类进行拆分---
|
||||
doSend(title, content, fromUser, username, data, messageDTO.getNoticeType());
|
||||
doSend(title, content, fromUser, username, data, messageDTO.getNoticeType(), messageDTO.getCategory());
|
||||
//update-end---author:wangshuai---date:2025-06-26---for:【QQYUN-12162】OA项目改造,系统重消息拆分,目前消息都在一起 需按分类进行拆分---
|
||||
}
|
||||
}
|
||||
@ -145,4 +145,70 @@ public class SystemSendMsgHandle implements ISendMsgHandle {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 扩展msgCategory
|
||||
private void doSend(String title, String msgContent, String fromUser, String toUser, Map<String, Object> data, String noticeType, String msgCategory){
|
||||
SysAnnouncement announcement = new SysAnnouncement();
|
||||
if(data!=null){
|
||||
//摘要信息
|
||||
Object msgAbstract = data.get(CommonConstant.NOTICE_MSG_SUMMARY);
|
||||
if(msgAbstract!=null){
|
||||
announcement.setMsgAbstract(msgAbstract.toString());
|
||||
}
|
||||
// 任务节点ID
|
||||
Object taskId = data.get(CommonConstant.NOTICE_MSG_BUS_ID);
|
||||
if(taskId!=null){
|
||||
announcement.setBusId(taskId.toString());
|
||||
announcement.setBusType(Vue3MessageHrefEnum.BPM_TASK.getBusType());
|
||||
noticeType = NoticeTypeEnum.NOTICE_TYPE_FLOW.getValue();
|
||||
}
|
||||
|
||||
// 流程内消息节点 发消息会传一个busType
|
||||
Object busType = data.get(CommonConstant.NOTICE_MSG_BUS_TYPE);
|
||||
if(busType!=null){
|
||||
announcement.setBusType(busType.toString());
|
||||
noticeType = NoticeTypeEnum.NOTICE_TYPE_FLOW.getValue();
|
||||
}
|
||||
}
|
||||
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(msgCategory);
|
||||
announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0));
|
||||
if(oConvertUtils.isEmpty(noticeType)){
|
||||
noticeType = NoticeTypeEnum.NOTICE_TYPE_SYSTEM.getValue();
|
||||
}
|
||||
announcement.setNoticeType(noticeType);
|
||||
announcement.setIzTop(CommonConstant.IZ_TOP_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(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER);
|
||||
obj.put(WebsocketConst.MSG_USER_ID, sysUser.getId());
|
||||
obj.put(WebsocketConst.MSG_ID, announcement.getId());
|
||||
obj.put(WebsocketConst.MSG_TXT, announcement.getTitile());
|
||||
obj.put(CommonConstant.NOTICE_TYPE,noticeType);
|
||||
webSocket.sendMessage(sysUser.getId(), obj.toJSONString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user