更多ruoyi-nbcio功能请看演示系统
gitee源代码地址
演示地址:RuoYi-Nbcio后台管理系统
1、下面提供给前端待办提醒消息的接口SysNoticeController,增加如下:
- /**
- * 补充用户数据,并返回系统消息
- * @return
- */
- @Log(title = "系统消息")
- @GetMapping("/listByUser")
- public R
- LoginUser loginUser = commonService.getLoginUser();
- Long userId = loginUser.getUserId();
- // 1.将系统消息补充到用户通告阅读标记表中
- LambdaQueryWrapper
querySaWrapper = new LambdaQueryWrapper(); - querySaWrapper.eq(SysNotice::getMsgType,Constants.MSG_TYPE_ALL); // 全部人员
- querySaWrapper.eq(SysNotice::getStatus,Constants.CLOSE_FLAG_0.toString()); // 未关闭
- querySaWrapper.eq(SysNotice::getSendStatus, Constants.HAS_SEND); //已发布
- //querySaWrapper.ge(SysNotice::getEndTime, loginUser.getCreateTime()); //新注册用户不看结束通知
- querySaWrapper.notInSql(SysNotice::getNoticeId,"select notice_id from sys_notice_send where user_id='"+userId+"'");
- List
notices = noticeService.list(querySaWrapper); - if(notices.size()>0) {
- for(int i=0;i
- //因为websocket没有判断是否存在这个用户,要是判断会出现问题,故在此判断逻辑
- LambdaQueryWrapper
query = new LambdaQueryWrapper<>(); - query.eq(SysNoticeSend::getNoticeId,notices.get(i).getNoticeId());
- query.eq(SysNoticeSend::getUserId,userId);
- SysNoticeSend one = noticeSendService.getOne(query);
- if(null==one){
- SysNoticeSend noticeSend = new SysNoticeSend();
- noticeSend.setNoticeId(notices.get(i).getNoticeId());
- noticeSend.setUserId(userId);
- noticeSend.setReadFlag(Constants.NO_READ_FLAG);
- noticeSendService.save(noticeSend);
- }
- }
- }
- // 2.查询用户未读的系统消息
- Page
anntMsgList = new Page(0, pageSize); - anntMsgList = noticeService.querySysNoticePageByUserId(anntMsgList,userId,"1");//通知公告消息
- Page
sysMsgList = new Page(0, pageSize); - sysMsgList = noticeService.querySysNoticePageByUserId(sysMsgList,userId,"2");//系统消息
- Page
todealMsgList = new Page(0, pageSize); - todealMsgList = noticeService.querySysNoticePageByUserId(todealMsgList,userId,"3");//待办消息
- Map
sysMsgMap = new HashMap(); - sysMsgMap.put("sysMsgList", sysMsgList.getRecords());
- sysMsgMap.put("sysMsgTotal", sysMsgList.getTotal());
- sysMsgMap.put("anntMsgList", anntMsgList.getRecords());
- sysMsgMap.put("anntMsgTotal", anntMsgList.getTotal());
- sysMsgMap.put("todealMsgList", todealMsgList.getRecords());
- sysMsgMap.put("todealMsgTotal", todealMsgList.getTotal());
- return R.ok(sysMsgMap);
- }
2、其中这里用到了querySysNoticePageByUserId方法
- @Override
- public Page
querySysNoticePageByUserId(Page page, Long userId, String msgCategory) { - if (page.getSize() == -1) {
- return page.setRecords(baseMapper.querySysNoticeListByUserId(null, userId.toString(), msgCategory));
- } else {
- return page.setRecords(baseMapper.querySysNoticeListByUserId(page, userId.toString(), msgCategory));
- }
- }
3、上面又用到了sql 在SysNoticeMapper.xml里
- "1.0" encoding="UTF-8" ?>
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
"com.ruoyi.system.mapper.SysNoticeMapper"> -
-
"com.ruoyi.system.domain.SysNotice" id="SysNoticeResult"> -
"noticeId" column="notice_id"/> -
"noticeTitle" column="notice_title"/> -
"noticeType" column="notice_type"/> -
"noticeContent" column="notice_content"/> -
"status" column="status"/> -
"sender" column="sender"/> -
"priority" column="priority"/> -
"msgType" column="msg_type"/> -
"sendStatus" column="send_status"/> -
"sendTime" column="send_time"/> -
"cancelTime" column="cancel_time"/> -
"createBy" column="create_by"/> -
"createTime" column="create_time"/> -
"updateBy" column="update_by"/> -
"updateTime" column="update_time"/> -
"remark" column="remark"/> -
-
-
- select * from sys_notice
- where send_status = '1'
- and status = '0'
- and notice_type = #{msgCategory}
- and notice_id IN ( select notice_id from sys_notice_send where user_id = CAST(#{userId} AS SIGNED INTEGER) and read_flag = '0')
- order by create_time DESC
-
-
至此,后端的代码基本上就这些了,下一节开始讲一下前端。
-
相关阅读:
Tomcat的安装和配置
异步编程-线程池实现异步编程
yolov5的口罩识别系统+GUI界面 (附代码)
Linux系统之安装ServerBee服务器监控工具
IT新人如何在职场弯道超车?强推荐考取当下最有价值的云计算认证证书!
领导都在用的Python有多厉害
HTML案例-1.标签练习
李开复:我家的AI是坠吼的
Android 笔记: 字符串截取操作方法
编码技巧 --- 谨防闭包陷阱
-
原文地址:https://blog.csdn.net/qq_40032778/article/details/133196669