# mychatBackend **Repository Path**: ChanYeeSum/mychat-backend ## Basic Information - **Project Name**: mychatBackend - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-03-23 - **Last Updated**: 2026-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: mychat ## README # MyChat - 社交电商平台 > 一个集即时通讯与电商购物于一体的企业级社交电商系统,采用互联网大厂技术架构,实现"聊天+购物"无缝融合的创新业务场景。 ## 项目背景 随着社交电商的兴起,传统电商与即时通讯的边界日益模糊。本项目以此为切入点,构建一个既能购物又能聊天的综合性平台,用户可以在聊天中分享商品、讨论购物心得,实现社交与消费的有机结合。 ## 技术架构 ### 技术选型 | 分类 | 技术 | 版本 | 说明 | |------|------|------|------| | 核心框架 | Spring Boot | 2.6.7 | 基础框架 | | 持久层 | MyBatis-Plus | 3.4.0 | ORM框架 | | 数据库 | MySQL | 8.0 | 关系型数据库 | | 缓存 | Redis | 6.x | 分布式缓存 | | 消息队列 | RocketMQ | 4.9 | 异步消息处理 | | 搜索引擎 | Elasticsearch | 7.x | 全文检索 | | 对象存储 | MinIO | 8.4.5 | 文件存储 | | 分布式锁 | Redisson | 3.17.1 | 分布式协调 | | 即时通讯 | Netty | 4.1.76 | WebSocket服务 | | API文档 | Knife4j | 2.0.9 | 接口文档 | ### 系统架构图 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 客户端层 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ App │ │ 小程序 │ │ Web端 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 网关层 │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ Nginx → 负载均衡、反向代理、静态资源 │ │ │ └──────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 服务层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌───────────┐ │ │ │ 用户服务 │ │ 聊天服务 │ │ 商品服务 │ │ 订单服务 │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ └───────────┘ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌───────────┐ │ │ │ 支付服务 │ │ 搜索服务 │ │ 推荐服务 │ │ 客服服务 │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ └───────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 中间件层 │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌──────────┐ │ │ │ Redis │ │RocketMQ │ │ ES │ │ MinIO │ │ Redisson │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 数据层 │ │ ┌─────────────────────┐ ┌─────────────────────┐ │ │ │ MySQL │ │ MySQL │ │ │ │ (主库 - 写入) │───▶│ (从库 - 读取) │ │ │ └─────────────────────┘ └─────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ``` ## 功能模块 ### 一、即时通讯模块 实现用户之间的实时通讯,支持多种消息类型。 | 功能 | 描述 | |------|------| | 单聊 | 一对一私聊,支持文字、图片、语音、视频、文件 | | 群聊 | 多人群组聊天,支持群成员管理、群公告 | | 消息已读 | 显示消息已读状态,未读消息数统计 | | 消息撤回 | 2分钟内可撤回消息 | | 消息标记 | 支持消息置顶、收藏、点赞 | | 聊天记录 | 支持聊天记录漫游,多端同步 | | 好友管理 | 添加好友、好友列表、黑名单 | ### 二、电商模块 完整的电商交易闭环,覆盖购物全流程。 | 功能 | 描述 | |------|------| | 商品展示 | 商品列表、详情页、分类导航 | | 购物车 | 添加商品、数量修改、批量结算 | | 订单管理 | 创建订单、订单列表、订单详情、取消订单 | | 支付集成 | 支付宝、微信支付接入 | | 物流跟踪 | 物流信息查询、配送状态更新 | | 搜索功能 | 商品搜索、搜索推荐、搜索历史 | | 个性化推荐 | 基于用户行为的商品推荐 | ### 三、营销模块 用户增长与活跃度提升的核心手段。 | 功能 | 描述 | |------|------| | 拉新活动 | 新人红包、邀请奖励、首单优惠 | | 促活机制 | 签到奖励、每日任务、积分系统 | | 优惠券 | 满减券、折扣券、无门槛券 | | 秒杀活动 | 限时秒杀、库存扣减、防超卖 | | 拼团功能 | 发起拼团、参团、拼团成功通知 | ### 四、消息推送模块 多场景消息触达,提升用户粘性。 | 功能 | 描述 | |------|------| | 系统通知 | 订单状态变更、支付结果、物流更新 | | 活动推送 | 促销活动、优惠券到期提醒 | | 客服消息 | 在线客服咨询、智能机器人 | | 消息中心 | 站内信、通知列表 | ### 五、用户模块 完善的用户体系与权限管理。 | 功能 | 描述 | |------|------| | 微信登录 | 微信公众号授权登录 | | 用户信息 | 个人资料编辑、头像上传 | | 收货地址 | 地址管理、默认地址设置 | | 会员体系 | 会员等级、权益管理 | | 表情包 | 自定义表情包管理 | ## 核心技术亮点 ### 1. WebSocket 即时通讯 基于 Netty 实现高性能 WebSocket 服务,支持水平扩展。 ``` 客户端连接 → Netty Server → 消息编解码 → 业务处理 → 消息分发 ↓ RocketMQ 异步消费 ``` **特性:** - 心跳检测与断线重连 - 消息ACK确认机制 - 连接池管理 - 分布式会话支持 ### 2. 分布式锁与幂等性 使用 Redisson 实现分布式锁,保障并发场景下的数据一致性。 ```java @RedissonLock(key = "#uid") public void placeOrder(Long uid, OrderRequest request) { // 订单创建逻辑,防止重复下单 } ``` **应用场景:** - 秒杀抢购 - 库存扣减 - 订单创建 - 支付处理 ### 3. 消息队列异步处理 RocketMQ 实现业务解耦与异步处理。 | Topic | 用途 | |-------|------| | SEND_MSG_TOPIC | 消息发送异步处理 | | PUSH_TOPIC | 消息推送异步分发 | | LOGIN_MSG_TOPIC | 登录消息处理 | | SCAN_MSG_TOPIC | 扫码登录处理 | ### 4. 多级缓存架构 ``` 请求 → 本地缓存(Caffeine) → Redis缓存 → MySQL (热点数据) (分布式) (持久化) ``` **缓存策略:** - 热点数据本地缓存 - 缓存穿透防护(布隆过滤器) - 缓存雪崩防护(随机过期时间) - 缓存与数据库一致性(延迟双删) ### 5. 敏感词过滤 基于 AC 自动机算法实现高效敏感词过滤。 ```java // 敏感词替换 String filtered = ACFilter.filter(content, '*'); ``` **特性:** - 支持动态添加敏感词 - O(n) 时间复杂度 - 支持白名单机制 ### 6. 接口幂等性设计 ```java @Idempotent(key = "#request.orderId", type = IdempotentEnum.SPEL) public ApiResult createOrder(OrderRequest request) { // 创建订单 } ``` ### 7. 接口限流 基于注解的接口限流,支持多种策略。 ```java @FrequencyControl(key = "send_msg", time = 1, count = 5) public void sendMessage(Long uid, String content) { // 每秒最多发送5条消息 } ``` ## 数据库设计 ### 核心表结构 ``` ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ user │ │ room │ │ message │ ├─────────────┤ ├─────────────┤ ├─────────────┤ │ id │ │ id │ │ id │ │ name │ │ type │ │ room_id │ │ avatar │ │ hot_flag │ │ from_uid │ │ status │ │ create_time │ │ content │ │ create_time │ └─────────────┘ │ type │ └─────────────┘ └─────────────┘ │ │ ┌─────────────┐ ┌─────────────┐ │ │ contact │ │group_member │ │ ├─────────────┤ ├─────────────┤ └───────▶│ uid │ │ room_id │ │ room_id │ │ uid │ │ last_msg_id │ │ role │ └─────────────┘ └─────────────┘ ``` ## 项目结构 ``` mychatdemo/ ├── mychat-chat-server/ # 核心服务模块 │ └── src/main/java/ │ └── com/cwnu/sw/cys/core/ │ ├── chat/ # 聊天模块 │ │ ├── controller/ # 控制器 │ │ ├── service/ # 业务逻辑 │ │ ├── dao/ # 数据访问 │ │ ├── consumer/ # 消息消费者 │ │ └── event/ # 事件驱动 │ ├── user/ # 用户模块 │ ├── common/ # 公共组件 │ │ ├── config/ # 配置类 │ │ ├── exception/ # 异常处理 │ │ ├── utils/ # 工具类 │ │ └── aspect/ # 切面 │ ├── sensitive/ # 敏感词过滤 │ ├── gpt/ # AI服务 │ └── websocket/ # WebSocket │ ├── mychat-framework/ # 框架模块 │ ├── mychat-common-starter/ # 公共启动器 │ ├── mychat-redis/ # Redis封装 │ ├── mychat-oss-starter/ # 对象存储 │ ├── mychat-transcation/ # 分布式事务 │ └── mychat-frequency-control/ # 限流组件 │ └── pom.xml # 父工程配置 ``` ## 快速开始 ### 环境要求 - JDK 1.8+ - MySQL 8.0+ - Redis 6.0+ - RocketMQ 4.9+ - Maven 3.6+ ### 启动步骤 1. **克隆项目** ```bash git clone https://gitee.com/ChanYeeSum/mychat-backend.git cd mychat-backend ``` 2. **创建数据库** ```sql CREATE DATABASE mychat CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 3. **修改配置** 编辑 `application-test.properties`,配置数据库、Redis、RocketMQ 连接信息。 4. **启动服务** ```bash mvn clean install -DskipTests java -jar mychat-chat-server/target/mychat-chat-server-1.0-SNAPSHOT.jar --spring.profiles.active=test ``` 5. **访问接口文档** 浏览器访问:http://localhost/doc.html ### Docker 部署 ```bash # 启动依赖服务 docker-compose -f docker-compose-rocketmq.yml up -d ``` ## 接口文档 启动项目后访问 Knife4j 接口文档:http://localhost/doc.html 主要接口分类: | 模块 | 接口前缀 | 说明 | |------|----------|------| | 用户 | `/api/user` | 用户登录、信息管理 | | 聊天 | `/api/chat` | 消息发送、聊天记录 | | 联系人 | `/api/contact` | 好友列表、会话列表 | | 房间 | `/api/room` | 群组管理、房间信息 | ## 性能优化 ### 已实现 - Redis 多级缓存 - 异步消息处理 - 数据库连接池优化 - 接口响应压缩 - CDN 静态资源加速 ### 规划中 - MySQL 读写分离 - 分库分表 - Elasticsearch 商品搜索 - 商品推荐算法 - 分布式链路追踪 ## 测试覆盖 - 单元测试:核心业务逻辑 - 集成测试:API 接口测试 - 压力测试:JMeter 模拟高并发 ## 安全防护 - JWT Token 认证 - 接口签名验证 - XSS 攻击防护 - SQL 注入防护 - 敏感信息加密存储 - 接口限流防刷 ## 作者信息 - 作者:ChanYeeSum - 邮箱:jisamchan@outlook.com - 项目地址:https://gitee.com/ChanYeeSum/mychat-backend ## 许可证 本项目采用 [Apache 2.0](LICENSE) 许可证,基于开源项目抹茶mallchat。