springboot项目实现站内信功能记实

springboot项目实现站内信功能

- 功能介绍:
(一)站内信肯定大家都不陌生,是指在系统现有的人员架构的基础上,进行一对一或一对多发送邮件的功能。
(二)站内信的目的是为了消息通知的更为便捷,只在内部流转,且系统中留有存底的消息信息。
(三)站内信的信息以明码的方式留存到数据库中,不做真删除。
- 数据库设计:
(一)设计前提:
明确了需求,下一步对于后台开发来说就是数据库表的设计。对于用户量大的系统,设计一个好的数据库表结构可以为系统节省性能,提高查询效率的同时用户体验也会更好。
(二)设计思路:
1、发送站内信,在数据库中冗余最多的信息便是站内信的消息内容,内容多且繁杂,若要一对百或千或万发送那么数据库中就要存入成千上万条重复的消息内容;
2、如果系统使用用户多(上千上万级别),但是又有许多废弃或常年不登录的僵尸号,此时群发站内信也会造成没必要的数据录入。后台也需要设计过时消息功能,对数据库表定时处理,防止常年不登录的账户突然登录站内信过多的问题。
3、站内信的删除,接收者和发送者都有该条站内信的数据,一方删除另一方仍然可以查到该条站内信,就需要做好单向删除。
(三)数据库表结构:
我在此设计了三张表,用于站内信功能的使用。基于实现,表可能会更多或更少。也欢迎各位大佬提出意见建议。

站内信发送表:off_mail
该表记录站内信发送人以及接收人的信息,通过发送时间和收信人信息状态判定是否为过时消息,对接收人进行删除处理。

字段名说明
id唯一主键
receive_user_id接收人id
send_out_name发送人姓名
send_time发送时间
mail_id站内信id
send_state发信人信息状态 /0已发送/1删除
receive_state收信人信息状态 /0已接收/1删除

站内信信息表:off_message
该表记录站内信的消息内容,状态是做草稿箱处理的。关联id是站内信的id

字段名说明
mail_id关联站内信mail_id
mail_title站内信标题
mail_content站内信内容
receive_name收信人列表
maile_state状态/0已发送/1草稿箱

站内信接收表:off_receive
该表记录站内信的接收人的信息,当用户登录时去查询站内信发送表是否有该用户且未过时的站内信,进行写入。

字段名说明
id主键
send_out_name发送人姓名
mail_id站内信id
receive_id接收人id
state状态/0未读/1已读

- 功能实现:
(一)代码生成:
代码生成使用mybatis-plus代码生成器生成。是在本地部署的,线上那版过期了😭若有小伙伴需要欢迎私信或下载。
在这里插入图片描述
(二)逻辑思路:
代码就不贴了,因为各个系统的都不一样。以上功能完成后我把我开发流程梳理一下吧
1.前端页面写好站内信并选好发送人后提交后台进行数据录入,录入两个表,站内信发送表以及站内信信息表。
如果是一对多站内信发送表将所有收件人挨个录入,站内信信息表只存一条信息。
在这里插入图片描述
点击发送,此时发送者已经可以看到发送的消息(表头应为收信人),但是接收表为空,因为该用户还未登录或为不在线状态
在这里插入图片描述
在这里插入图片描述
登录水煮鱼用户,可以看到该条站内信,此时receive表中只有该用户的信息在这里插入图片描述
在这里插入图片描述
测试单向删除功能,是对站内信发送表中的接收和发送人状态进行更改
将发件箱中发送至水煮鱼的站内信删除,登录水煮鱼账户可见站内信仍在收件箱中。
在这里插入图片描述
至此功能结束。
欢迎大家留言交流。

  • 10
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爪哇Bubble

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值