# 聊天软件 **Repository Path**: bingbingyihao/chat-software ## Basic Information - **Project Name**: 聊天软件 - **Description**: 使用SpringBoot和vue实现的聊天软件 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-24 - **Last Updated**: 2026-04-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 聊天软件 (Chat Software) 一个基于 Spring Boot + Vue 3 的实时聊天软件 MVP 产品,支持私聊、群聊、语通话等核心功能。 ## 技术栈 **后端** - Spring Boot 2.3.4 - MyBatis-Plus 3.5.3 - WebSocket (实时通信) - MySQL 5.7 + Redis - Spring Security (密码加密) - Spring Mail (邮箱验证码) **前端** - Vue 3 + Vue Router - Axios (HTTP 请求) - WebRTC (语音通话) - Element Plus (管理后台 UI) **部署** - Nginx (反向代理 + 静态资源) - Shell 脚本 (自动化部署/备份/维护) ## 功能特性 ### 用户系统 - 邮箱验证码注册 / 登录 / 退出 - 用户搜索 - 好友申请与管理(待确认/已同意/已拒绝/已拉黑) ### 消息系统 - **私聊** - 一对一实时消息推送 - **群聊** - 群组消息广播 - **消息类型** - 文本、图片、文件、表情包 - **消息状态** - 已发送/已送达/已读 - **未读消息计数** ### 群组管理 - 创建群组 / 解散群组 - 邀请成员 / 踢出成员 / 退出群组 - 群公告 / 群昵称 - 角色权限(群主/管理员/普通成员) ### 语音通话 - 基于 WebRTC 的点对点语音通话 - 通话邀请/接听/拒绝/挂断 - 通话时长记录 - ICE 穿透 (STUN Server) ### 文件管理 - 图片上传与预览(支持 JPG/PNG/GIF/WebP/BMP,最大 5MB) - 文件上传与下载(最大 50MB) - 表情包管理(后台配置,前端展示) ### 管理后台 - 表情包管理(增删改查、启用/停用) ## 项目结构 ``` chat-software/ ├── code/ │ ├── User_SpringBoot/ # 用户端后端服务 │ ├── Admin_SpringBoot/ # 管理端后端服务 │ ├── user/ # 用户端前端 (Vue 3) │ └── admin/ # 管理端前端 (Vue 3 + Element Plus) ├── config/ # 配置文件 │ ├── user/application.properties │ └── admin/application.properties ├── bash/ # 部署脚本 │ ├── install.sh # 环境安装 │ ├── start_backend.sh # 启动后端 │ ├── start_front.sh # 启动前端 │ ├── stop.sh # 停止服务 │ ├── backup.sh # 定时备份 │ ├── enable_maintenance.sh # 启用维护模式 │ └── disable_maintenance.sh # 关闭维护模式 ├── db/ │ └── test.sql # 数据库初始化脚本 └── html/ └── maintenance.html # 维护页面 ``` ## 数据库设计 | 表名 | 说明 | |------|------| | `users` | 用户基本信息 | | `user_contacts` | 好友关系表 | | `groups` | 群组信息 | | `user_groups` | 用户群组关系 | | `messages` | 消息记录(支持私聊/群聊) | | `images` | 图片存储 | | `files` | 文件存储 | | `stickers` | 表情包配置 | ## 快速开始 ### 环境要求 - JDK 8+ - Maven - Node.js - MySQL 5.7+ - Redis ### 1. 初始化数据库 ```bash mysql -u root -p < db/test.sql ``` ### 2. 配置后端 编辑 `config/user/application.properties` 和 `config/admin/application.properties`,修改数据库、邮箱、Redis 等配置。 ### 3. 启动后端服务 ```bash # 用户端后端 cd code/User_SpringBoot mvn spring-boot:run # 管理端后端 cd code/Admin_SpringBoot mvn spring-boot:run ``` ### 4. 启动前端服务 ```bash # 用户端前端 cd code/user npm install npm run serve # 管理端前端 cd code/admin npm install npm run serve ``` ## 部署 使用项目提供的 Shell 脚本进行一键部署: ```bash # 1. 初始化环境 bash bash/init.sh # 2. 安装依赖 bash bash/install.sh # 3. 启动服务 bash bash/start_backend.sh bash bash/start_front.sh # 4. 配置 Nginx bash bash/nginx_mod.sh # HTTP bash bash/nginx_mod_https.sh # HTTPS ``` 其他运维命令: ```bash bash bash/stop.sh # 停止所有服务 bash bash/backup.sh # 手动备份 bash bash/enable_maintenance.sh # 启用维护模式 bash bash/disable_maintenance.sh # 关闭维护模式 ``` ## 实时通信架构 ``` ┌──────────┐ WebSocket ┌──────────────────┐ │ Vue 3 │ ◄────────────────► │ Spring Boot │ │ Client │ HTTP/REST │ Backend │ └──────────┘ └────────┬─────────┘ │ │ │ WebRTC (语音通话) │ │ ◄──────────────────────────────►│ │ (信令通过 WebSocket) │ └─────────────────────────────────────────┘ ``` - **WebSocket** - 实时消息推送、心跳保活、自动重连 - **WebRTC** - P2P 语音通话,通过 WebSocket 交换 SDP 和 ICE 候选 ## License Apache