实现类似微信聊天功能的mysql表设计

时间:2024-11-07 08:14:19

前言:

最近设计了一套聊天功能,此功能支持人对人聊天、发送图片、查看聊天记录、按时间展示聊天列表、最后一条聊天数据及未读消息数

下面分享一下表结构及实现逻辑:

 

表结构:

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、删除聊天列表

将该用户的聊天列表删除状态改为删除

出处:/lamp01/