聊天模块和分享模块分享

近来用mpvue做了一个小程序,当初选择mpvue的时候,类似vue的语法,吸引了我。现在在让我选,就不会在选mpvue了(可以在github上看相关的坑),所幸项目不太复杂,mpvue还是满足需求的,不满足的就以曲线救国的方式解决了。

这个小程序,有个互聊的模块和分享的模块可以分享下,方便后人

聊天模块

  • 可屏蔽。屏蔽者,可主动取消屏蔽。
  • 在屏蔽期间,被屏蔽一方可发送信息,但屏蔽者收不到,被屏蔽一方,在信息流中,可看到被屏蔽信息。
  • 屏蔽情况下,可相互举报,记录举报内容

假设不考虑屏蔽,只是记录两个人的聊天记录,数据库,结构可以这样设计就可以满足需求

messages table

  • id
  • user_id
  • to_user_id
  • content

现在要对聊天记录做一个限制

message_state table

  • id
  • user_id
  • to_user_id
  • state (0 正常1 屏蔽2举报)
  • operate_screen_id (记录屏蔽者的id)
  • operate_report_id (记录举报者id,可选)

相应的messages table被 message_state table 管理 messages table

  • id
  • user_id
  • to_user_id
  • content
  • message_state_id

相应的需要一个举报表,和messages 数据表结构类似,只不过记录的是两个人的屏蔽及举报记录

report table

  • id
  • user_id
  • to_user_id
  • content
  • state (1 或2 )

现在还差个屏蔽后屏蔽者看不到被屏蔽者发送的信息,解决办法是在messages table添加记录屏蔽状态下 screen_user_id字段,查询的时候,where('screen_user_id ','<>','屏蔽者id')

messages table

  • id
  • user_id
  • to_user_id
  • content
  • message_state_id
  • screen_user_id

最终表结构 messages table

  • id
  • user_id
  • to_user_id
  • content
  • message_state_id
  • screen_user_id

message_state table

  • id
  • user_id
  • to_user_id
  • state (0 正常1 屏蔽2举报)
  • operate_screen_id (记录屏蔽者的id)
  • operate_report_id (记录举报者id,可选)

report table

  • id
  • user_id
  • to_user_id
  • content
  • state (1 或2 )

    分享模块

    两种场景

  • 自己分享自己 自己奖励+1 不能重复+1
  • 他人分享自己 他人奖励+1 不能重复+1

自己分享他人和他人分享自己是一种情况,只不过是参照物不同,上面是以自己为参照物。

users table

  • share_key
  • 其他字段

需要一个分享记录表,保存已经点击过的用户

share_record table

  • id
  • share_base
  • share_click
  • share_plus

    share_base表示参照物的share_key share_click 表示点击者的share_key share_plus 表示要奖励的share_key(可能是自己,也可能是他人)

每当用户点击进来后,去查询是否已经点击过,然后去给相应的奖励

end

Posted in 后端 on Sep 24, 2018


评论:

请登录 登录 评论!