支付、钱包--支付方式,卖家、买家账户
聊天室表
id | INT | 聊天室id,主键 |
name | VARCHAR(20) | 聊天室名称 |
owner_id | INT | 创建者id |
created_time | DATETIME | 创建时间 |
updated_time | DATETIME | 更新时间 |
is_deleted | TINYINT | 删除标志,0-未删除,1-已删除 |
用户角色--用户功能分配
3社区市场接口设计
1 | 创建市场 | POST | /community_markets | 无 | 无 | 市场信息 |
2 | 删除市场 | DELETE | /community_markets/{id} | {id} - 市场ID | 无 | 无 |
3 | 修改市场 | PUT | /community_markets/{id} | {id} - 市场ID | 无 | 修改的市场信息 |
4 | 修改状态 | PATCH | /community_markets/{id}/status | {id} - 市场ID | 无 | 新状态 |
5 | 查询最近的一个市场 | GET | /community_markets/nearest | 无 | longitude, latitude | 无 |
6 | 查询附近的市场列表 | GET | /community_markets/nearby | 无 | longitude, latitude, radius(可选) | 无 |
7 | 根据关键字查询市场列表 | GET | /community_markets/search | 无 | keyword | 无 |
2即时消息功能
基于Netty框架,我们可以设计以下方案实现即时消息:
all ——> 违规停业
商品管理--卖家、买家角色可使用的功能
2数据库设计
3聊天相关的接口设计
创建一对一聊天室接口 | POST | {"buyer_id": "买家用户ID","seller_id": "卖家用户ID"} | {"chatroom_id": "聊天室ID"} | 创建一对一聊天室,返回聊天室ID |
发送消息接口 | POST | {"chatroom_id": "聊天室ID","sender_id": "发送者用户ID","receiver_id": "接收者用户ID","message": "消息内容"} | {"message_id": "消息ID"} | 发送消息到指定聊天室,返回消息ID |
获取聊天记录接口 | GET | chatroom_id:聊天室ID<br>start_time:开始时间(可选)<br>end_time:结束时间(可选) | {"messages": [{"message_id": "消息ID","chatroom_id": "聊天室ID","sender_id": "发送者用户ID","receiver_id": "接收者用户ID","message": "消息内容","create_time": "创建时间"},...]} | 获取指定聊天室的聊天记录,支持按时间区间查询 |
接收新消息通知接口 | POST | {"receiver_id": "接收者用户ID"} | {"messages": [{"message_id": "消息ID","chatroom_id": "聊天室ID","sender_id": "发送者用户ID","receiver_id": "接收者用户ID","message": "消息内容","create_time": "创建时间"},...]} | 接收新消息通知,返回未读的消息列表 |
客服--售后、投诉等问题处理
修改状态:
登录功能--用户选择使用微信授权登录、手机号验证码登录
营业 ——> 停业
社区市场--社区二手交易场所,承载买卖交易活动
平台协议签署--用户与平台签署相关协议
即时聊天--买家、卖家沟通方式
审核通过 ——> 营业
停业 ——> 营业
用户表
id | INT | 用户id,主键 |
username | VARCHAR(20) | 用户名 |
password | VARCHAR(20) | 用户密码 |
nickname | VARCHAR(20) | 用户昵称 |
avatar | VARCHAR(50) | 用户头像 |
created_time | DATETIME | 创建时间 |
updated_time | DATETIME | 更新时间 |
is_deleted | TINYINT | 删除标志,0-未删除,1-已删除 |
消息表
id | INT | 消息id,主键 |
sender_id | INT | 发送者id |
receiver_id | INT | 接收者id,如果是群聊则为聊天室id |
chat_room_id | INT | 聊天室id,如果是私聊则为null |
content | TEXT | 消息内容 |
send_time | DATETIME | 发送时间 |
receive_time | DATETIME | 接收时间 |
is_received | TINYINT | 是否已接收,0-未接收,1-已接收 |
is_deleted | TINYINT | 删除标志,0-未删除,1-已删除 |
is_persistent | TINYINT | 是否持久化,0-不持久化,1-持久化 |
persistent_key | VARCHAR(50) | 持久化key,用于查询聊天记录 |
CREATE TABLE `user` (
`id` varchar(36) NOT NULL COMMENT "用户ID",
`username` varchar(50) NOT NULL COMMENT "用户名",
`password` varchar(100) NOT NULL COMMENT "密码",
`nickname` varchar(50) DEFAULT NULL COMMENT "昵称",
`avatar` varchar(255) DEFAULT NULL COMMENT "头像URL",
`created_time` datetime NOT NULL COMMENT "创建时间",
`updated_time` datetime NOT NULL COMMENT "更新时间",
`is_deleted` tinyint(1) NOT NULL DEFAULT "0" COMMENT "删除标记",
PRIMARY KEY (`id`),
UNIQUE KEY `username_UNIQUE` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT="用户表";
CREATE TABLE `chat_room` (
`id` varchar(36) NOT NULL COMMENT "聊天室ID",
`name` varchar(50) NOT NULL COMMENT "聊天室名称",
`owner_id` varchar(36) NOT NULL COMMENT "创建者ID",
`created_time` datetime NOT NULL COMMENT "创建时间",
`updated_time` datetime NOT NULL COMMENT "更新时间",
`is_deleted` tinyint(1) NOT NULL DEFAULT "0" COMMENT "删除标记",
PRIMARY KEY (`id`),
KEY `fk_chat_room_owner` (`owner_id`),
CONSTRAINT `fk_chat_room_owner` FOREIGN KEY (`owner_id`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT="聊天室表";
CREATE TABLE `message` (
`id` varchar(36) NOT NULL COMMENT "消息ID",
`sender_id` varchar(36) NOT NULL COMMENT "发送者ID",
`receiver_id` varchar(36) NOT NULL COMMENT "接收者ID",
`chat_room_id` varchar(36) DEFAULT NULL COMMENT "聊天室ID",
`content` varchar(1024) NOT NULL COMMENT "消息内容",
`send_time` datetime NOT NULL COMMENT "发送时间",
`receive_time` datetime DEFAULT NULL COMMENT "接收时间",
`is_received` tinyint(1) NOT NULL DEFAULT "0" COMMENT "是否已接收",
`is_deleted` tinyint(1) NOT NULL DEFAULT "0" COMMENT "删除标记",
`is_persistent` tinyint(1) NOT NULL DEFAULT "0" COMMENT "是否已持久化",
`persistent_key` varchar(36) DEFAULT NULL COMMENT "持久化Key",
PRIMARY KEY (`id`),
KEY `fk_message_sender` (`sender_id`),
KEY `fk_message_receiver` (`receiver_id`),
KEY `fk_message_chat_room` (`chat_room_id`),
CONSTRAINT `fk_message_chat_room` FOREIGN KEY (`chat_room_id`) REFERENCES `chat_room` (`id`),
CONSTRAINT `fk_message_receiver` FOREIGN KEY (`receiver_id`) REFERENCES `user` (`id`),
CONSTRAINT `fk_message_sender` FOREIGN KEY (`sender_id`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT="消息表";
CREATE TABLE `chat_room_member` (
`id` varchar(36) NOT NULL COMMENT "ID",
`user_id` varchar(36) NOT NULL COMMENT "用户ID",
`chat_room_id` varchar(36) NOT NULL COMMENT "聊天室ID",
`created_time` datetime NOT NULL COMMENT "创建时间",
`updated_time` datetime NOT NULL COMMENT "更新时间",
`is_deleted
2社区市场功能接口
社区市场 | 功能描述 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
创建市场 | 新增 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
删除市场 | 删除 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
修改市场 | 修改基础信息 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
聊天室成员表
1数据库表结构
CREATE TABLE `community_markets` (
`id` BIGINT PRIMARY KEY, -- 使用BIGINT来存储18位数字ID
`name` VARCHAR(255) NOT NULL,
`description` TEXT,
`address` VARCHAR(255) NOT NULL, -- 使用address字段代替原location字段
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间默认值为当前时间戳
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间默认值为当前时间戳,记录更新时自动更新为当前时间
`admin_uid` BIGINT NOT NULL,
`admin_name` VARCHAR(255) NOT NULL,
`admin_phone` VARCHAR(20) NOT NULL,
`lon` DECIMAL(10, 7) NOT NULL,
`lat` DECIMAL(10, 7) NOT NULL,
`status` INT NOT NULL DEFAULT 0, -- 状态字段,数字类型,默认值为0 1表示待审核 2 未营业 3表示营业 4表示违规停业
`is_delete` TINYINT NOT NULL DEFAULT 0 -- 新增删除标识字段,数字类型,默认值为0
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="社区市场表"; -- 指定InnoDB引擎、UTF-8字符集和表备注信息
1功能列表
0 1社区市场 系统功能设计 违规停业 ——> 营业 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
市场查询 | 根据当前位置查询最近的一个市场 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
查询附近的市场列表 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
根据关键字查询市场列表 |
需要注意的是,Netty的聊天框架可能涉及到更加复杂的功能和技术实现,如消息撤回、加密解密、消息的防篡改等安全性能优化等,具体实现方案需要根据需求进行设计和优化。
文章为作者独立观点,不代表股票交易接口观点