随笔 - 195  文章 - 0  评论 - 5  阅读 - 20万

关于手机端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);
}
复制代码

 

posted on   大山008  阅读(372)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
历史上的今天:
2019-09-30 Mysql中对字符串类型的字段进行数字值排序
2019-09-30 bootstrap动态table中添加数据时数据保存不了的问题
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示