消息提醒系统的相关设计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。
用户刷新页面时,查询两个结果的和。显示在前端即可。
如何清空消息就不写了。