文章目录

  • 1 摘要
  • 2 解决方案
    • 方案一
    • 方案二
    • 方案三
  • 3 结论

1 摘要

关于公告这一系列的博客:
具有用户已读状态功能的公告(1):数据库设计

具有用户已读状态功能的公告(2):用户查询公告列表,同时包含读取状态

在现阶段各种手机通知消息漫天飞的情况下,很多APP已经设计了一键标记所有消息为已读的功能,那么按照上边的系统设计,如何实现某个用户一键已读所有公告?

2 解决方案

方案一

这还不简单,将所有的公告 id 查询出来,然后配合用户标识(id),批量插入到公告用户关联表中不就可以了吗?
什么?如果公告太多怎么办?那就分页查询公告 id,然后分批进行批量插入就可以了

这样做看起来好像可以,但是总感觉很 low
太 low 的方案就不展示代码实现了

方案二

就一条SQL,将公告表的查询数据直接插入到公告用户关联表中
SQL 展示:

-- 用户一键已读所有公告
INSERT INTO `notice_user`(`notice_id`, `user_account_id`)SELECT n.id notice_id, 2 AS user_account_id FROM `notice` nWHERE n.del_sign = 0 AND n.publish_flag = 1

解释: id 为 2 的用户一键已读所有公告

这个方案看起来方便多了,直接甩开方案一好几条街。
但,好像哪里不对劲?
这样的SQL,如果执行两次,那公告用户关联表中岂不是要插入两次?这就产生了重复的垃圾数据,方案一 也有这个问题。不行,火候还是不够

方案三

还是一条 SQL,将公告表的查询数据直接插入到公告用户关联表中,同时过滤掉用户已读过的公告

SQL 展示:

-- 用户一键已读所有公告
INSERT INTO `notice_user`(`notice_id`, `user_account_id`)SELECT n.id notice_id, 2 AS user_account_id FROM `notice` nWHERE n.del_sign = 0 AND n.publish_flag = 1AND n.id NOT IN (SELECT `notice_id` FROM `notice_user` WHERE `user_account_id` = 2)

嗯,现在好像没问题了

这个方案符合要求

3 结论

经测试,方案三可行,

个人公众号:404Code,记录半个互联网人的技术与思考,感兴趣的可以关注.

具有用户已读状态功能的公告(3):一键已读所有公告相关推荐

  1. QQ 调查用户是否希望推 「已读」功能,如何评价「已读」功能?QQ是否要加这个功能?...

    12月14日上午,腾讯QQ在官方微博发起投票,"你希望QQ出已读功能吗?" 截止发稿,共有近500人参与投票,其中一半人选择"你出我就卸载QQ",另有1/4的网 ...

  2. 使用 Python 实现微信消息的一键已读

    文章目录 使用 Python 实现微信消息的一键已读 1.实现思路 2.安装依赖 3.编写代码 4.运行效果 使用 Python 实现微信消息的一键已读 关键词 微信消息一键已读 微信消息批量已读 微 ...

  3. 管理员发送系统公告,每个用户登陆可查看自己的已读和未读状态的公告

    文章目录 准备工作 数据库表 Qo部分 实体类部分 显示公告的控制器部分(list) 查询公告的业务层方法 点击查看按钮,则将未读设为已读 所对应的控制器 所用到的sql语句 如何新增公告,并在中间表 ...

  4. IM消息重试机制Java实现_IM群聊消息的已读回执功能该怎么实现?

    本文引用了架构师之路公众号作者沈剑的文章,内容有改动,感谢原作者. 1.前言我们平时在使用即时通讯应用时候,每当发出一条聊天消息,都希望对方尽快看到,并尽快回复,但对方到底有没有真的看到?我却并不知道 ...

  5. android 项目学习随笔十三(ListView实现ITEM点击事件,将已读状态持久化到本地)...

    1.因为给LISTVIEW增加了两个头布局,所以在点击事件ITEM索引会增加2,比如原来第一条数据的索引应该为0,增加两个头布局后,它的索引变为        2,为了使LISTVIEW的ITEM在点 ...

  6. java 邮件跟踪_如何跟踪邮件已读状态(Java)

    >图片的展示形式: html中图片元素表示: 其中src部分是比较好玩的,我们可以用图片服务器链接地址,例如: 我们也可以使用base64的图片字符串,例如: >利用图片加载来跟踪用户打开 ...

  7. mysql消息已读未读_Redis实现信息已读未读状态提示

    本文为大家分享了Redis实现信息已读未读状态提示的关键代码,希望可以给大家一些启发,具体内容如下 前提: 假如现在有2个模块需要提示消息:只要存在用户在上个时间点之后没有看过的信息就提示用户有新的信 ...

  8. #即时通讯#实现消息已读回执功能的思路与实现

    最近项目的聊天模块中增加了一个消息已读回执的功能,从技术上不是很难实现,但还是在这里记录一下,以便以后查阅. 所谓的消息已读回执,就是双方聊天时,如果对方看到了你新发的信息,这条消息在你这端就会标为& ...

  9. 注册申请企业邮箱后如何使用,企业邮箱有已读回执功能吗?

    外贸公司的邮件使用量大,而且还有时差,所以大家已读回执功能可以很好的解决这一问题,了解到对方有没有查看自己发出的邮件.下面以TOM企业邮箱为例,介绍下已读回执怎么操作呢? 第一步:从企业邮箱用户入口登 ...

最新文章

  1. PHP代码审计中你不知道的牛叉技术点
  2. [深度学习] 自然语言处理---Transformer原理(一)
  3. react全局状态管理_rxv: 在React中用Vue3的reactivity包实现状态管理。
  4. C++描述杭电OJ 2016. 数据的交换输出 ||
  5. 争议?MySQL存储过程与函数,封装,体,完整详细可收藏
  6. jquery中的 jquery.contains(a,b)
  7. 还被python收智商税?做大数据的朋友告诉我月薪2w的方法
  8. 马斯克:2020 年底将完成 L5 级别自动驾驶功能
  9. 基于jquery.fixedheadertable 表格插件左侧固定 对齐
  10. 25年面试官首次揭秘——世界500强面试题
  11. 100个句子直刷7000单词
  12. 能解方程的计算机在线计算,解方程计算器在线计算
  13. 前端安全沙箱技术如何解决开源安全问题?
  14. CANoe软件使用(一)——软件界面介绍
  15. 钉钉自定义机器人提示报警信息
  16. python如何给某列数据打标签_Python map, apply, transform 打标签方法汇总(初阶到高阶)...
  17. ArGIS Engine专题(6)之利用GP水文分析工具实现基于DEM的山脊线提取
  18. 智能运维之告警聚合技术介绍
  19. ES索引恢复流程解析
  20. 【定语从句练习题】 which 修饰句子

热门文章

  1. java Date 和 Calendar类 万字详解(通俗易懂)
  2. 22.9.18——论坛
  3. 关于量子力学的我们胡思乱想(二)维度、一杯水、真空和以太(1)
  4. 【热门课后习题答案】数学分析、微积分、物理等
  5. TIA Portal V17正式来临,官方链接\ 百度网盘同步下载~
  6. 1324: 小周的烦恼
  7. 1193 -- 小周的种田梦
  8. 04 创建第一个Qt程序
  9. 探讨使网面越来越臃肿的原因
  10. 如何在Java中创建临时文件?