實現類似微信聊天功能的mysql表設計
阿新 • • 發佈:2018-11-05
前言:
最近設計了一套聊天功能,此功能支援人對人聊天、傳送圖片、檢視聊天記錄、按時間展示聊天列表、最後一條聊天資料及未讀訊息數
下面分享一下表結構及實現邏輯:
表結構:
1、聊天主表
id(主鍵id)
user_id(使用者id)
another_id(對方使用者id)
2、聊天列表表
id(自增id) chat_id (聊天主表id) user_id (使用者id) another_id (對方使用者id) is_online (是否線上) unread (未讀數) status (是否刪除)
3、聊天詳情表
id (自增id)
chat_id (主表聊天id)
user_id (訊息所有者id)
content (聊天內容)
time (傳送時間)
type (訊息型別)
is_latest (是不是最後一條訊息(預設1))
聊天邏輯:
1、點選聊天
判斷是不是第一次聊天,如果是會在主表生成一條記錄返回聊天主表id,並在聊天列表表分別插入兩條記錄,如果不是第一次聊天進入下一步
2、進入聊天對話方塊
獲取上一次聊天聊天記錄,將使用者在此對話的線上狀態改為線上
3、傳送聊天資訊
3.1、先判斷對方是否線上,不線上的話對方未讀數+1
3.2、將上一條最後一條訊息狀態改為否
3.3、往聊天詳情表插入聊天資訊資料
4、刪除聊天列表
將該使用者的聊天列表刪除狀態改為刪除