• 基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(五)


     更多ruoyi-nbcio功能请看演示系统

    gitee源代码地址

    前后端代码: ruoyi-nbcio: nbcio-boot的若依版本,基于ruoyi-flowable-plus和flowable6.7.2,目前处于移植功能阶段,目标是打造一个最好的若依平台上flowable流程管理系统开源版本,希望有需要的同仁一起打造。如果觉得这个项目对你有帮助,麻烦点个star。

    演示地址:RuoYi-Nbcio后台管理系统

    1、下面提供给前端待办提醒消息的接口SysNoticeController,增加如下:

    1. /**
    2. * 补充用户数据,并返回系统消息
    3. * @return
    4. */
    5. @Log(title = "系统消息")
    6. @GetMapping("/listByUser")
    7. public R> listByUser(@RequestParam(required = false, defaultValue = "5") Integer pageSize) {
    8. LoginUser loginUser = commonService.getLoginUser();
    9. Long userId = loginUser.getUserId();
    10. // 1.将系统消息补充到用户通告阅读标记表中
    11. LambdaQueryWrapper querySaWrapper = new LambdaQueryWrapper();
    12. querySaWrapper.eq(SysNotice::getMsgType,Constants.MSG_TYPE_ALL); // 全部人员
    13. querySaWrapper.eq(SysNotice::getStatus,Constants.CLOSE_FLAG_0.toString()); // 未关闭
    14. querySaWrapper.eq(SysNotice::getSendStatus, Constants.HAS_SEND); //已发布
    15. //querySaWrapper.ge(SysNotice::getEndTime, loginUser.getCreateTime()); //新注册用户不看结束通知
    16. querySaWrapper.notInSql(SysNotice::getNoticeId,"select notice_id from sys_notice_send where user_id='"+userId+"'");
    17. List notices = noticeService.list(querySaWrapper);
    18. if(notices.size()>0) {
    19. for(int i=0;i
    20. //因为websocket没有判断是否存在这个用户,要是判断会出现问题,故在此判断逻辑
    21. LambdaQueryWrapper query = new LambdaQueryWrapper<>();
    22. query.eq(SysNoticeSend::getNoticeId,notices.get(i).getNoticeId());
    23. query.eq(SysNoticeSend::getUserId,userId);
    24. SysNoticeSend one = noticeSendService.getOne(query);
    25. if(null==one){
    26. SysNoticeSend noticeSend = new SysNoticeSend();
    27. noticeSend.setNoticeId(notices.get(i).getNoticeId());
    28. noticeSend.setUserId(userId);
    29. noticeSend.setReadFlag(Constants.NO_READ_FLAG);
    30. noticeSendService.save(noticeSend);
    31. }
    32. }
    33. }
    34. // 2.查询用户未读的系统消息
    35. Page anntMsgList = new Page(0, pageSize);
    36. anntMsgList = noticeService.querySysNoticePageByUserId(anntMsgList,userId,"1");//通知公告消息
    37. Page sysMsgList = new Page(0, pageSize);
    38. sysMsgList = noticeService.querySysNoticePageByUserId(sysMsgList,userId,"2");//系统消息
    39. Page todealMsgList = new Page(0, pageSize);
    40. todealMsgList = noticeService.querySysNoticePageByUserId(todealMsgList,userId,"3");//待办消息
    41. Map sysMsgMap = new HashMap();
    42. sysMsgMap.put("sysMsgList", sysMsgList.getRecords());
    43. sysMsgMap.put("sysMsgTotal", sysMsgList.getTotal());
    44. sysMsgMap.put("anntMsgList", anntMsgList.getRecords());
    45. sysMsgMap.put("anntMsgTotal", anntMsgList.getTotal());
    46. sysMsgMap.put("todealMsgList", todealMsgList.getRecords());
    47. sysMsgMap.put("todealMsgTotal", todealMsgList.getTotal());
    48. return R.ok(sysMsgMap);
    49. }

    2、其中这里用到了querySysNoticePageByUserId方法

    1. @Override
    2. public Page querySysNoticePageByUserId(Page page, Long userId, String msgCategory) {
    3. if (page.getSize() == -1) {
    4. return page.setRecords(baseMapper.querySysNoticeListByUserId(null, userId.toString(), msgCategory));
    5. } else {
    6. return page.setRecords(baseMapper.querySysNoticeListByUserId(page, userId.toString(), msgCategory));
    7. }
    8. }

    3、上面又用到了sql 在SysNoticeMapper.xml里

    1. "1.0" encoding="UTF-8" ?>
    2. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    4. "com.ruoyi.system.mapper.SysNoticeMapper">
    5. "com.ruoyi.system.domain.SysNotice" id="SysNoticeResult">
    6. "noticeId" column="notice_id"/>
    7. "noticeTitle" column="notice_title"/>
    8. "noticeType" column="notice_type"/>
    9. "noticeContent" column="notice_content"/>
    10. "status" column="status"/>
    11. "sender" column="sender"/>
    12. "priority" column="priority"/>
    13. "msgType" column="msg_type"/>
    14. "sendStatus" column="send_status"/>
    15. "sendTime" column="send_time"/>
    16. "cancelTime" column="cancel_time"/>
    17. "createBy" column="create_by"/>
    18. "createTime" column="create_time"/>
    19. "updateBy" column="update_by"/>
    20. "updateTime" column="update_time"/>
    21. "remark" column="remark"/>

    至此,后端的代码基本上就这些了,下一节开始讲一下前端。

  • 相关阅读:
    Tomcat的安装和配置
    异步编程-线程池实现异步编程
    yolov5的口罩识别系统+GUI界面 (附代码)
    Linux系统之安装ServerBee服务器监控工具
    IT新人如何在职场弯道超车?强推荐考取当下最有价值的云计算认证证书!
    领导都在用的Python有多厉害
    HTML案例-1.标签练习
    李开复:我家的AI是坠吼的
    Android 笔记: 字符串截取操作方法
    编码技巧 --- 谨防闭包陷阱
  • 原文地址:https://blog.csdn.net/qq_40032778/article/details/133196669