关于手机端H5通知已读未读的一个简单demo
情景:系统发通知给每一个员工,每个员工有一个系统系统,点击提示,通知列表有已读和未读
主要通过redis来实现,大致思路:将通知和员工绑定作为key,如果员工点进链接证明已读则将key存入redis中,那么通知列表中每一条通知如果有这个key,则是已读,反之则是未读。
接口部分代码:
实现:
public boolean getRead(String userId,String loginName){ boolean flag = false; Notice notice = new Notice(); notice.setStatus("0"); List<Notice> notices = noticeMapper.selectNoticeList(notice); for (Notice n : notices){ Long noticeId = n.getNoticeId(); String key = "TO_READ" + noticeId + userId + loginName; //检查缓存中是否有已读标识 if (!redisCache.hasKey(key)){ flag = true; break; } } return flag; }
通知列表已读未读:
public List<Notice> read(String userId, String loginName) { Notice notice = new Notice(); notice.setStatus("0"); List<Notice> notices = noticeMapper.selectNoticeList(notice); for (Notice n : notices){ Long noticeId = n.getNoticeId(); String key = "TO_READ" + noticeId + userId + loginName; //检查缓存中是否有已读标识, if (!redisCache.hasKey(key)){ //设置未读标识 n.setRead(true); } } return notices; }
点击公告详情触发已读
public AjaxResult getNoticeDetail(Long noticeId,String userId,String loginName){ log.info("查看系统公告详情"); Notice notice = noticeService.selectNoticeById(noticeId); String key = "TO_READ" + notice.getNoticeId() + userId + loginName; if (!redisCache.hasKey(key)){ redisCache.setCacheObject(key,"0"); } return AjaxResult.success(notice); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
2019-09-30 Mysql中对字符串类型的字段进行数字值排序
2019-09-30 bootstrap动态table中添加数据时数据保存不了的问题