消息提醒系统:设计模式与实现方案 (公告(通告)、消息、提醒等基本功能数据库表设计与实现) 您所在的位置:网站首页 特别消息通知表情包怎么做 消息提醒系统:设计模式与实现方案 (公告(通告)、消息、提醒等基本功能数据库表设计与实现)

消息提醒系统:设计模式与实现方案 (公告(通告)、消息、提醒等基本功能数据库表设计与实现)

#消息提醒系统:设计模式与实现方案 (公告(通告)、消息、提醒等基本功能数据库表设计与实现)| 来源: 网络整理| 查看: 265

参考地址:

公告(通告),消息,提醒等基本功能数据库表设计_DamonREN的博客-CSDN博客

多种消息提醒系统的设计模式、实现方案(附功能截图+表结构)_黑夜的风的博客-CSDN博客_消息提醒

设计一个百万级的消息推送系统 - crossoverJie - 博客园

案例一: 多种消息提醒系统的设计模式、实现方案(附功能截图+表结构)

2018-09-25 08:28:59 黑夜的风 阅读数 9826

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:多种消息提醒系统的设计模式、实现方案(附功能截图+表结构)_黑夜的风的博客-CSDN博客_消息提醒

V站需要增加3种消息提醒系统。需要实现的功能如下:在这里插入图片描述

1.评论提醒。 实现功能

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

思路

这个是最简单的。在数据库查询:

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

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

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

然后,前端把消息清空。

2.系统消息。 实现功能

系统消息与“评论”类似。只不过增加了一点。

用户收到的消息分2种。 一种是管理员发送给全体成员的消息。(如活动通知)在这里插入图片描述 另一种是针对某个用户的通知。(举报反馈、登录异地提醒)在这里插入图片描述

数据库设计

数据库字段如下:

id(自增主键),发送时间,消息标题,消息内容,receive_uid消息接收对象(0是给全体人的消息,其他是针对某个用户UID),had_read(用户是否阅读过这条消息),评论是否被删除

思路

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

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

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

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

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

3.授权消息 实现功能

数据中心(后台)实现如下。在这里插入图片描述 授权消息分2大类:

当前用户是作者。他人向自己申请授权。当前用户申请了他人的授权,被同意/被拒绝。 数据库设计

数据库字段如下:

申请人UID,申请人是否阅读“作者回复的结果”,申请的贴子ID,申请时间,申请内容, 作者UID,作者是否阅读“这条申请”,申请回复结果(1等待作者回复,2作者同意/3作者拒绝),回复时间,回复内容。 是否被申请人取消申请,是否被申请人删除…

思路

授权消息需要注意2点:

一条消息对应2个UID(申请人,作者)。新授权发起时,作者得到提醒。作者回复后(agree/disagree),申请人得到提醒。

当前用户作为“作者身份”得到的提醒数:

select count(id) from comment where 作者UID = $当前用户UID and 作者是否阅读 = 1 and 是否被申请者取消 = 2 and 申请回复结果 = 1(等待作者回复) 12

加上,当前用户作为“申请人身份”得到的提醒数:

select count(id) from comment where 申请人UID = $当前用户UID and 申请人是否阅读 = 1 and 是否被申请者取消 = 2 and (申请回复结果 = 2同意 or 申请回复结果 = 3拒绝) 12

前端显示2者的和即可。 清空消息就省略了。

需要注意的地方

我这种实现方式,是在“用户刷新页面时”。 在初始化方法里请求AJAX,所以不能实时提醒消息。 想实现的话可以用websocket。用户评论时、发送系统消息时,检测用户是否在线。再具体操作就可以了。

说明

本文用于:

整理思路希望作为其他人的参考欢迎大佬给出优化建议

文章最后发布于: 2018-09-25 08:28:59

有 0 个人打赏

消息系统设计与实现

阅读数 966

http://blog.csdn.net/moshenglv/article/details/51943545博文来自: fengzhaoyang的专栏

海中灯塔1个月前#2楼发送全体消息的时候怎么判断用户是否阅读啊收起回复

黑夜的风回复 海中灯塔1个月前你可以参考上一个评论,跟删除是一样的

南川玉2个月前#1楼按照作者的第2种方法进行,系统发布了一条消息,作为个人用户觉得这条消息没用想要删除,该怎么写收起回复

南川玉回复 黑夜的风2个月前了解了,谢谢。

黑夜的风回复 南川玉2个月前我的场景没有【用户删除消息】的需求,所以没有考虑。 如果是发给每个人的消息,那建个字段就OK。 如果是发给所有人的公共消息,可以给消息加个字段【删除这条信息的UserId的数组,用逗号分隔开UserId】,删除时判断下当前用户是否在数组里。 同理也可以在用户表建一个字段(记录删除的信息的ID),遍历下数组即可。 =============== 有更好的思路 / 方法,欢迎留言。

案例二: 公告(通告)、消息、提醒等基本功能数据库表设计

公告(通告),消息,提醒等基本功能数据库设计1.公告announcement: 平台发,用户收.分实时公告和非实时公告.优先级:紧急,高,普通. 平台可以向单个用户发,可以向多个用户发,可以向某一用户类型发,可以向全部用户发. 公告的相关操作: (1).平台发布公告 (2).平台撤销公告 (3).平台删除公告 (4).平台查询公告 (5).用户查看公告 (6).用户查询公告 公告数据库的特点:一般不做修改,每个用户一份或者每个群体一份表设计:   (1. 公告表 announcement 字段:         编号 id_         标题 title_         内容 content_         发布时间 publish_time         是否撤销 if_cancel         撤销时间 cancel_time         是否删除 del_flag         删除时间 delete_time         优先级 priority_         (用户类型) user_type   (2. 公告用户表字段:         编号 id_         公告编号 announcement_id         用户编号 user_id         是否阅读 if_read         阅读时间 read_time         (用户类型) user_type

2.消息message(站内短信):用户之间互相发送消息.可以针对一个消息进行回复.分为实时消息和非实时消息. 发送消息:个人向个人发消息;个人向群体发消息;群体向个人发消息;群体向群体发消息;个人向多个用户发消息. 消息的相关操作: (1).个人发送消息 (2).用户查看消息 (3).用户回复消息 (4).用户标记消息已读 (5).用户查询消息 消息数据库的特点:一般不做修改,每个用户一份,或者每个群体一份,或者多个用户一份.

3.提醒remind 一般情况下,提醒对于被提醒者来说是被动的.主要是由于外界直接或者间接更新自己相关的信息,对自己产生了影响,自己又不知道的情况下,需要系统主动提醒自己. 统计性的提醒:相关内容的个数变化,统计相关内容的个数.又分为实时统计和登录统计. 弹窗性的提醒:弹出一个窗口,提醒用户发生变化的内容,或者点击可以跳转到相应的窗口显示结果.又可以分为登录之后提醒距离上次登录之间发生的影响;和实时的提醒. 提醒数据库的特点:统计性的提醒,记录需要提醒的个数,以及个数代表的意义. 弹出窗口提醒,提醒的格式是统一的;格式例如:提醒的对象,提醒的内容,提醒的优先级(紧急,高,普通,不同优先级有不同的颜色)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有