实现类似微信聊天功能的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、删除聊天列表

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

出处:http://www.cnblogs.com/lamp01/

  • 8
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值