【后端开发】阅读状态公共消息功能的数据库设计

最近对管理有了另一个看法,在小团队里面,你要花多点时间去检查每个任务的完成情况,很多时候即使一个任务完成了,在开发过程中还有很多细节没有处理,也可能有Bug的存在。例如安排了前端做几个接口的接入,完成了之后我去检查一下实际情况,发现有些地方没有处理好,例如输入的参数没有做校验,有些界面从另一个界面跳进去的时候会崩溃。

因此:

1. 开发管理要把控每个任务的完成情况,每个任务完成之后要去检查落实。

2. 开发管理要提醒开发人员要注意的细节,让每个成员在开发中进行落实。

回归正题,在后端开发中遇到一个公共消息功能的需求:

1. 系统公告发布后每个用户都能收到提醒(下拉刷新的公告分类列表的时候,对应分类会有红点),点击分类进去查看公告后红点消失。

2. 用户可以删除该分类的公告(清空),删除后再次拉取该分类下的公告列表为空,不能有删除之前的公告。

其实问题在于,用户查看某个分类的公告之后,要标记用户已经读取过该分类下的公告,而且有第二条规则限制,所以简单用是否已读的字段是不行的。

所以自己想到了利用最后读取分类时间来做标识,每个公告有发布时间,而且公告是属于分类的,分类也有最近一次发布时间。利用最后读取分类时间、公告发布时间、分类最后一次发布时间这三个参数就可以做到规则一的需求。重点就是公告发布的时候,对应公告分类表的最后发布时间字段也会更新。

然后规则二,增加一个最后删除分类时间做标识,小于该时间的该分类下的公告都不会被拉取回去。

总结一下数据库表设计:

公告分类表:classify(id, name, last_publish_time)

公告表:notice(id, title, content, publish_time, classify_id)

读取记录表:readStatus(user_id, classify_id, last_read_time, last_delete_time)

流程:

发布公告:插入公告表  ->  更新公告分类表对应分类的最后发布时间

拉取分类列表:根据读取记录表的最后读取时间,判定是否该分类是否应该显示红点

拉取分类下的公告:更新读取记录表的最后读取时间,同时根据最后删除时间,筛选发布时间大于删除时间的公告。

删除分类下的公告(情况):直接更新读取记录表下的最后删除时间

猜你喜欢

转载自www.cnblogs.com/nicojerry/p/11026831.html