前言: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.三、往聊天详情表插入聊天信息数据
四、删除聊天列表
将该用户的聊天列表删除状态改成删除