背景:当我们登录注册过的网站时,右上角一般有个“消息”和小红点的提示,表示我们有新的未读消息,我们可以点击小红点接下来详细聊聊它的实现。
常见的功能也就如下几种:
针对用户:未读消息提醒、查看消息、删除消息,标记为已读
针对系统管理员:新增消息、修改消息内容、删除消息、给用户发送消息
简单的说就是围绕数据库表的一系列操作--CRUD,因此只要设计好底层的消息表,就成功了一大半。
由于该功能在大部分项目中都有涉及,因此需要根据实际的业务需求来设计。通常消息可分为两种类型:系统消息(给所有用户发送的,例如:系统更新xxx),用户消息(跟用户相关的,比如私信、评论等)。由于系统消息一般是给所有用户发送,其实这一点在实际业务中是没有必要的,很多系统用户注册后再也没有登录,其实是没有必要的,如果这样的用户数量很大的情况下,是非常耗内存的,比较好的做法是只给登录的用户发系统消息。而对于用户消息,应该是动态的,例如csdn 上有用户评论、私信时就要往数据表添加一条记录,在相应的查询窗口显示出来。
在我的项目实现中设计了两张数据库表:用户消息表、系统消息表
用户消息表记录所有用户的消息(包括用户收到的系统消息);系统消息表记录管理员添加的系统消息(该表相比用户消息表记录非常少)。
1.当用户登录时,需要给其发送新的系统消息;可以根据系统消息表和用户消息表做差集,将新的系统消息添加进用户消息表中。
2. 针对不同的用户消息类型,可以设计不用的消息模板,在触发时只需要传入相应的参数即可。
实现效果: