多语言展示
当前在线:1959今日阅读:27今日分享:41

站内信怎么搭建

先说说站内信的场景和需求吧,后台管理员要给某用户或多个用户推送一条站内信,用户可以对该站内信进行标记已查看状态。怎么设计,才是最符合逻辑的?我这里就大概说一下我个人的思路吧,答主的项目有用户自定义分组和多种用户类型,这里就说一下最简单也是最常用的情况吧。
工具/原料

电脑

方法/步骤
1

逻辑简单最容易理解操作的,用户在几十到上百的时候,可以使用。站内信表letter id,manager_id(管理员id), user_id(为0则是全部用户),content(站内信内容),status(状态查看状态),create_at(发送时间)

2

管理员插入的时候需要遍历用户表,查询出所有的用户id,如果用户有30个,则插入30条站内信到letter表。

3

当用户量有几百上千的时候,第一种方法就可以不用考虑了。此时我们可以把letter表拆分为两张。

4

表名:letterid,manager_id(管理员id),content(站内信内容),create_at(发送时间)表名:letter_statusid,user_id(用户id),status(状态查看状态)

5

把站内信的主题内容放到letter表里面,把用户的查收状态放到letter_status表里面,可以避免大量的数据的重复插入,比如content字段,管理员如果给所有用户推送一条300汉字的站内信,假设有用户10000个,一个汉字两个字节,300个汉字有600个字节,600字节x10000=6000000字节,约5.7M数据,一个站内信瞬间就要插入几M的数据,实在是有点过分吧。。

6

当用户量很大的时候,第二种方法也不行了,因为但凡每个系统,都有大量无效用户,即长期不在线之类的这种的。那我们每次还要给他插入一条状态数据,是不是很没有必要?

7

表名:letterid,manager_id(管理员id),user_id(用户id,为0则是全部用户),content(站内信内容),create_at(发送时间)表名:letter_statusid,user_id(用户id),letter_id(站内信的id),status(状态查看状态) letter表的user_id字段,需要存储为id,id,id的格式,例如3,15,23,45,把用户的id已逗号分隔的形式存储。letter_status表不操作。

推荐信息