需求
1.针对工单,或者会话已读未读设计。
2.未读数量
方案一
首先想到的可能是在消息表的每个字段上设计一个已读未读字段,但是消息维护成本和频率高,比如整个sass大量的发送消息
方案二
如工单
设计阅读记录表
@MappedSuperclass public class AbstractTicketViewRecord extends Entity { private static final long serialVersionUID = 8794872508619902240L; @Id @Column(name = "uid") private String uid; /** * 工单Id */ @Column(name = "ticket_id") private Integer ticketId; /** * 用户Id */ @Column(name = "user_id") private Integer userId; /** * 企业Id */ @Column(name = "provider_id") private Integer providerId; /** * 最后一次阅读时间 */ @Column(name = "view_at") private Timestamp viewAt; }
实现需求一消息的已读未读表示
当用户获得web页面焦点 则更新最后一次阅读时间,然后服务端发送websocket给其他用户更新这个用户的最后一次阅读时间,通过时间判断此消息已读未读
实现需求二未读消息总数
表连接消息表就行了
select count(1) from `ticket_view_record` r join `ticket_comment` c where r.`ticket_id` =c.`ticket_id` and r.`view_at` <c.`created_at` and c.`user_id` !=1885141 and r.`user_id`=1885141
标签:name,未读,Column,private,已读,设计,ticket From: https://www.cnblogs.com/LQBlog/p/16706884.html