java web 站内信
网站站内信设计
- 针对网站:
用户数量中等(少于w) 针对场景:
一对一
一对多数据库设计:
分为两张表,一张表为message,一张表为群发GroupMessage- Message:
字段 备注 id 主键 senderId 发送方id recId 接收方id content 内容 messageTitle 消息标题 status 消息状态;0表示未读,1表示已读,2表示删除 recRoleId 接收方角色,若为空,则表示一对一 timing 固定时间发送,若为空,则表示非定时 sendTime 发送时间 - GroupMessage
字段 备注 id 主键 userId 具体接收方id messageId 消息详情id messageTitle 消息标题 groupMessageStatus 个人针对群发消息的状态 逻辑操作:
一对多
针对发送者:
创建一条Message数据,recId为空,recRoleId为具体值,timing为空,非定时
根据Message自动创建一条GroupMessage数据,groupMessageStatus默认为0
(若定时,则到指定时间再根据Message创建GroupMessage)针对接收者:
接收者登录
获得GroupMessage表中所有groupMessageStatus为0且userId为该用户id的消息
获得Message表中所有status为0且userId为该用户id的消息
此时已获得所有未读消息
点开群发未读消息,groupMessageStatus置1并保存
点击删除群发已读消息,groupMessageStatus置2并保存一对一
针对发送者:
创建一条Message数据,recRoleId为空,timing为空,非定时针对接收者:
接收者登录
获得GroupMessage表中所有groupMessageStatus为0且userId为该用户id的消息(无新消息)
获得Message表中所有status为0且userId为该用户id的消息
此时已获得所有未读消息
点开未读消息,status置1并保存
点击删除已读消息,status置2并保存调用表的顺序:
用户登录 - 查找groupMessage表(获得messageId)- 查找Message表获得message (群信息)- 查找Message表获得message(个人信息)
第二种设计:
- 一张表为消息表Message,一张表为消息内容表MessageContent
Message
字段 备注 id 主键 senderId 发送者id messageId 消息内容id recId 接收者id status 消息状态 timing 是否定时(在规定时间将内容显示出来) MessageContent
字段 备注 id 主键 messageContent 消息内容 messageTitle 消息标题 date 消息发送时间