前言:spa
最近設計了一套聊天功能,此功能支持人對人聊天、發送圖片、查看聊天記錄、按時間展現聊天列表、最後一條聊天數據及未讀消息數設計
下面分享一下表結構及實現邏輯:code
表結構:blog
一、聊天主表圖片
id(主鍵id) user_id(用戶id) another_id(對方用戶id)
二、聊天列表表class
id(自增id) chat_id (聊天主表id) user_id (用戶id) another_id (對方用戶id) is_online (是否在線) unread (未讀數) status (是否刪除)
三、聊天詳情表test
id (自增id) chat_id (主表聊天id) user_id (消息全部者id) content (聊天內容) time (發送時間) type (消息類型) is_latest (是否是最後一條消息(默認1))
聊天邏輯:im
一、點擊聊天數據
判斷是否是第一次聊天,若是是會在主表生成一條記錄返回聊天主表id,並在聊天列表表分別插入兩條記錄,若是不是第一次聊天進入下一步分享
二、進入聊天對話框
獲取上一次聊天聊天記錄,將用戶在此對話的在線狀態改成在線
三、發送聊天信息
3.一、先判斷對方是否在線,不在線的話對方未讀數+1
3.二、將上一條最後一條消息狀態改成否
3.三、往聊天詳情表插入聊天信息數據
四、刪除聊天列表
將該用戶的聊天列表刪除狀態改成刪除