记录工作中一次站内信设计需求

工作中遇到了这个需求,原来对这个需求不是很理解,后面经过了解和开发,对这个功能有了一些心得,记录一下,分享给需要参考的伙伴们,经验有限,仅针对自己遇到的需求做总结:
技术栈:java 、spring boot 、mybatis、MySQL

需求:后台发送站内信,用户能看到发送的站内信,站内信需能看到7天以内的记录
解析:

1.什么是站内信
站内信本次需求的含义就是后台发送信息,用户能在指定时间内看到这条消息,并且这条消息的有效期是7天;(仅针对本需求)
2.站内信对于用户是什么
站内信对于用户就是一条通知,一条记录,只是这个记录是以主动拉取的方式展现(推送方式暂未考虑,正常应该是做消息推送的方式,这里针对该需求)
3.站内信有何意义
站内信是针对用户的平台通知,不同于系统展示的推送信息

开展设计

1.表设计
简单描述:这里设计三张表,1为消息记录,2为消息内容记录,3为消息发送记录表(记录用户发送情况)
表一字段:
message_id--content_id--status--creat_date--send_type--send_time--send_name--is_show
消息ID--内容ID--状态--创建时间--发送类型--发送时间--发送者--是否展示

表二字段:
content_id--message_title--content--is_show--creat_date--update_date
内容id--消息标题--内容--是否展示--创建时间-更新时间

表三字段:

id--message_id--content_id--user_id--send_status--is_frist_show--creat_date--is_delete
--消息id--内容id--用户id--发送状态--是否首次展示--创建时间--是否删除

2.代码结构
step1.
      后台发送站内信-发送类型分为手动输入、全部用户、excel导入三种方式,

     其中针对全部发送的记录仅在表三中生成一条记录,其他发送方式单独针对用户生成记录;


step2.
      发送记录生成:发送一条站内信----》表一生成一条记录----》表二生成一条关联表一的记录---》表三生成一条关联表一表二的记录,并且针对发送全部站内信的仅生成一条记录,可以用自己定义的方式去标记,方便定性查询;


step3.

       客户端接收站内信,客户端用户登录后就能获取到发送的站内信信息,其中针对全部用户的信息的消息获取需要针对自己的设计去获取,PS:是否首次展示可以在用户获取到改消息时异步去处理,根据需求自定义是否需要回调,不需要回调如博主这样仅展示一次也可,需根据需求来设计;


 step4.

       发送状态管理,根据发送时间来执行状态管理,状态主要是针对后台使用,让管理者知道消息是否成功处理,其中注意发送时间的维护管理;

PS:当数据量上去后可以考虑非关系型数据,如ES和MongoDB等等,还可以考虑缓存的加入,同时也可以使用消息推送的方式发送站内信,具体方式看需要的体量,体量越大引入的方式也越复杂,设计也更需要下功夫,博主设计仅在百万量级的用户量级;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值