实现类似微信聊天功能的mysql表设计
前言:
最近设计了一套聊天功能,此功能支持人对人聊天、发送图片、查看聊天记录、按时间展示聊天列表、最后一条聊天数据及未读消息数
下面分享一下表结构及实现逻辑:
表结构:
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、删除聊天列表
将该用户的聊天列表删除状态改为删除