数据库设计参考
MySql 数据库参见 https://github.com/easysoft/xuanxuan/blob/master/ranzhi/db/xuanxuan.sql
Chat 表
存储会话数据。
名称 | 类型 | 必须/可选 | 说明 |
---|---|---|---|
id | number | 必须 | 存储在远程数据库的id,客户端根据此id值是否设置来判定是否为远程保存的对象 |
gid | string | 必须 | 当客户端向系统提交新的会话时,会创建全局唯一的id |
name | string | 可选 | 会话名称,当为空时,客户端会自动生成会话名称 |
type | string | 可选 | 表明会话类型:system(系统), one2one(一对一), gourp(多人讨论组), project, product等 |
admins | string | 可选 | 会话管理员用户列表 |
committers | string | 可选 | 会话允许发言用户清单 |
subject | int | 可选 | 主题会话关联的主题(product, project等)ID |
public | bool | 可选 | 是否公共会话 |
createdBy | string | 必须 | 创建者的账号 |
createdDate | datetime | 必须 | 创建会话时服务器的时间戳 |
editedBy | string | 可选 | 编辑者的账号 |
editedDate | datetime | 可选 | 编辑会话时服务器的时间戳 |
lastActiveTime | datetime | 可选 | 会话最后一次发送消息时服务器的时间戳 |
[users] | 关联数据集 | 必须 | 包含此会话的所有成员,和每个成员加入此会话的时间 |
[messages] | 关联数据集 | 必须 | 包含此会话的所有消息 |
Message 表
存储会话消息数据。
名称 | 类型 | 必须/可选 | 说明 |
---|---|---|---|
id | number | 必须 | 存储在远程数据库的id,客户端根据此id值是否设置来判定是否为远程保存的对象 |
gid | string | 必须 | 当客户端向系统提交新的消息时,会创建全局唯一的id |
cgid | string | 必须 | 此消息所属于的会话的gid属性,会话根据此值来查询包含的消息 |
user | string | 可选 | 此消息发送者的用户名,广播类的消息没有此值 |
date | number | 必须 | 消息发送的时间戳 |
type | string | 可选 | 消息的类型,为"normal"(默认), "broadcast" |
content | string | 必须 | 消息的内容,如果消息内容类型不是文本,则已此值为json格式的对象 |
contentType | string | 必须 | 消息内容的类型,为"text"(默认), "emoticon", "image", "file" |
UserMessageStatus
记录消息状态。
名称 | 类型 | 必须/可选 | 说明 |
---|---|---|---|
user | number | 必须 | 离线消息的目标用户id,对应用户表的id |
gid | string | 必须 | 当客户端向系统提交新的消息时,会创建全局唯一的id |
status | string | 必须 | 消息状态 |
ChatsOfUser 表
存储参与会话的成员数据。
名称 | 类型 | 必须/可选 | 说明 |
---|---|---|---|
id | number | 必须 | 存储在远程数据库的id |
cgid | string | 必须 | 会话的gid属性 |
user | number | 必须 | 用户id,对应用户表的id |
order | number | 可选 | 会话显示顺序 |
star | bool | 可选 | 用户是否收藏会话 |
hide | bool | 可选 | 用户是否隐藏会话 |
mute | bool | 可选 | 用户是否开启免打扰 |
quit | datetime | 可选 | 用户退出会话时服务器的时间戳 |
join | datetime | 必须 | 用户加入会话时服务器的时间戳 |