时间:2021-07-01 10:21:17 帮助过:4人阅读
请问如何设计站内消息提示功能,比如segmentfault这样的功能,我发布一个问题,有人回答以后,我会收到一个未读消息数目提醒,数据表怎么设计比较合适?
notice_code是在代码中定义的,同时也定义的通知信息的模板
public static $notice_type = [
'answer' => [
'is_agreed' => [500, '[who] 赞了你的回答!'],
'is_modified' => [501, '[who] 修改了你的回答!'],
'is_fold' => [502, '[who] 折叠了你的回答!'],
'has_new_comment' => [503, '[who] 评论了你的回答!'],
],
];
比如图中的503是代表评论通知,某人评论了某个回答,需要的参数就是:谁
通知列表中,先判断通知代码是什么,找到对应的模板,根据相应参数,转换里面的变量[who]
刚才考虑一下,有一个初步的方案,请大家喷:
主要有2个表:
question:问题信息的表
id(autoincrement) user_id(发表问题的用户ID) question_id(问题ID(系统内唯一)) question_desc(问题表述) like_user_list(赞的用户列表,user_id使用‘,’进行分割)
reply:
id(autoincrement) user_id(对问题进行回答的用户ID) question_id(与question中的question_id为外键)reply_content(评论内容) like_user_list(赞的用户列表,user_id使用‘,’进行分割) unlike_user_list(反对的用户的ID list)
具体操作如下:
1、用户发布一个问题的时候,向question中插入一条记录;
2、别人对用户的这个问题进行评论的时候,向reply中插入一条记录
3、别人认为这个问题很好,对这个问题或者回复进行点赞,追加对应的like_user_list
需要进一步完善的地方:
(1)、对评论者的回复的记录
数据库表怎么设计我就不多说了 我想说的是提醒类的并不适合存表 一般考虑走缓存 不可能我每刷新一次都去表里count一遍 这种数据直接走缓存更高效