工作中遇到了这个需求,原来对这个需求不是很理解,后面经过了解和开发,对这个功能有了一些心得,记录一下,分享给需要参考的伙伴们,经验有限,仅针对自己遇到的需求做总结: 技术栈: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等等,还可以考虑缓存的加入,同时也可以使用消息推送的方式发送站内信,具体方式看需要的体量,体量越大引入的方式也越复杂,设计也更需要下功夫,博主设计仅在百万量级的用户量级;
?
|