消息提醒系统的相关设计01

一、评论提醒

实现功能:他人回复自己后,右上角自动提醒“未阅读的新消息”的数量。
     点击后,清空新消息的提示。

思路:
  在数据库查询   

select count(id) from 评论表 where 贴子作者 = $当前用户UID and 是否被阅读 = 1 and 是否被删除 = 1

  前端判断,后端返回的json数据是否>0,若大于则显示具体数量。然后,给消息提示绑定一个方法。点击后AJAX:

UPDATE comment SET 是否被阅读 = 2 where 贴子作者 = $当前用户UID;

  然后,前端把消息清空。

二、系统消息
实现功能:系统消息与“评论”类似。只不过增加了一点。

  用户收到的消息分2种。
    一种是管理员发送给全体成员的消息。(如活动通知)

    另一种是针对某个用户的通知。(举报反馈、登录异地提醒)

数据库设计:
数据库字段如下

  id(自增主键),发送时间,消息标题,消息内容,receive_uid消息接收对象(0是给全体人的消息,其他是针对某个用户UID),

  had_read(用户是否阅读过这条消息),评论是否被删除

思路:
全体消息有2种解决方案:
  1、是给遍历用户,给每个用户发消息。这种方法在设计、实现上很简单,类似上面的评论。但消耗资源比较大(看你用户多不多)。
  2、是发送给0,也就是说发送公共消息。每个人都可以接收,却只需要发送一条消息。
但也有缺点。若用户是在你“发送全体消息”之后,注册的账号。查询消息表时,也会加载历史消息。
不过这很容易解决。加载消息时判断“用户注册的时间戳”>“发送消息的时间戳”就可以。

 

下面我根据方法2实现一下:

首先,判断特定用户的消息是否被阅读。(同上)

select count(id) from 系统消息表 where 接收消息的UID = $当前用户UID and 是否被阅读 = 1 and 是否被删除 = 1

然后,给用户表新增字段。new_system_msg_count(新消息的数量)。

每次发送全体消息,给全体成员的new_system_msg_count字段+1。
用户刷新页面时,查询两个结果的和。显示在前端即可。
如何清空消息就不写了。

posted on 2019-12-18 09:17  闪亮的金子  阅读(624)  评论(0编辑  收藏  举报