博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现类似微信聊天功能的mysql表设计
阅读量:6920 次
发布时间:2019-06-27

本文共 816 字,大约阅读时间需要 2 分钟。

前言:

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

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

 

表结构:

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

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

 

转载于:https://www.cnblogs.com/lamp01/p/9529783.html

你可能感兴趣的文章
ESXi链接EMC VNXe3300问题
查看>>
IE9打开就弹出下载窗口
查看>>
初识 java NIO
查看>>
Java操作Redis
查看>>
java.lang.UnsupportedOperationException
查看>>
java 多字段排序
查看>>
我的友情链接
查看>>
XCode快捷键
查看>>
zookeeper错误:KeeperErrorCode = NoChildrenForEphemerals的原因
查看>>
istio-0.8 路由权重设置
查看>>
springmvc数据绑定
查看>>
安装yii2
查看>>
LVS负载均衡之session解决方案 持久连接
查看>>
在商业计算中我们要用java.math.BigDecimal
查看>>
Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连
查看>>
网络瘫痪分析处理(午饭的一个例子)
查看>>
cisco3750交换机物理端口配置IP地址
查看>>
数据库查询性能需注意几点
查看>>
6 个重构方法可帮你提升 80% 的代码质量
查看>>
[转载]JQUERY的父,子,兄弟节点查找方法
查看>>