設計思路-已讀未讀設計

需求

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章