站内信

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消息发送时间

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