# 聊天软件 **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-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 聊天软件 ## 项目介绍 基于 Spring Boot 和 Vue 3 实现的实时聊天软件,支持用户注册登录、好友管理、实时消息推送等核心功能。采用 WebSocket 实现实时通信,提供流畅的即时通讯体验。 ## 功能特性 ### 用户模块 - 用户注册(邮箱验证码验证) - 用户登录/登出 - 用户信息查看 - 用户搜索(支持用户名/邮箱搜索) ### 好友模块 - 发送好友申请 - 接收/拒绝好友申请 - 查看好友列表 - 查看已发送/已接收的好友申请 - 删除好友 - 好友状态查询 ### 消息模块 - 实时文字消息发送与接收 - 图片消息发送与接收(支持 JPG、PNG、GIF、WebP、BMP,最大 5MB) - 文件消息发送与接收(支持所有文件类型,最大 50MB) - 表情包消息发送与接收 - 消息历史记录查看 - 未读消息统计 - 消息已读标记 - 实时消息推送(WebSocket) - 图片预览与加载优化 - 文件下载功能 ### 实时通信 - WebSocket 实时连接 - 心跳保活机制(30 秒间隔) - 自动重连机制(断线 3 秒后重连) - 在线状态检测 ### 管理端 - 表情包管理(增删改查、分类、排序) ## 技术栈 ### 后端 - **框架**: Spring Boot 2.3.4 - **ORM**: MyBatis-Plus 3.5.3 - **数据库**: MySQL 5.7+ - **缓存**: Redis - **WebSocket**: Spring WebSocket - **安全**: Spring Security Crypto (BCrypt 密码加密) - **邮件**: Spring Mail (邮箱验证码) - **工具库**: Hutool 5.8.15 - **Java 版本**: JDK 8 ### 前端 - **框架**: Vue 3 (Composition API) - **路由**: Vue Router 4 - **HTTP 客户端**: Axios 1.3 - **UI 组件库**: Element Plus(管理端) - **构建工具**: Vue CLI 5 ### 项目模块 - **User-SpringBoot**: 用户端后端服务(端口 8080) - **Admin_SpringBoot**: 管理端后端服务 - **user**: 用户端 Vue 前端(聊天界面) - **admin**: 管理端 Vue 前端(表情包管理) ## 项目结构 ``` chat-software/ ├── code/ │ ├── User-SpringBoot/ # 用户端后端服务 │ │ ├── src/main/java/com/boot/ │ │ │ ├── config/ # 配置类(WebSocket、安全、文件上传) │ │ │ ├── controller/ # 控制器(用户、消息、联系人、文件、图片、表情包) │ │ │ ├── entity/ # 实体类 │ │ │ ├── mapper/ # MyBatis-Plus Mapper │ │ │ ├── service/ # 服务层接口 │ │ │ │ └── impl/ # 服务层实现 │ │ │ └── utils/ # 工具类 │ │ └── src/main/resources/ │ │ └── application.properties # 应用配置 │ ├── Admin_SpringBoot/ # 管理端后端服务 │ │ ├── src/main/java/com/boot/ │ │ │ ├── entity/ # 实体类 │ │ │ ├── mapper/ # Mapper │ │ │ ├── service/ # 服务层 │ │ │ │ └── impl/ # 服务层实现 │ │ │ └── utils/ # 工具类 │ │ └── src/main/resources/ │ │ └── application.properties # 应用配置 │ ├── user/ # 用户端 Vue 前端 │ │ ├── src/ │ │ │ ├── views/ # 页面(登录、注册、首页、联系人) │ │ │ ├── components/ # 组件(消息、对话框、表情包选择器) │ │ │ ├── utils/ # 工具(WebSocket、请求、消息提示) │ │ │ └── router/ # 路由配置 │ │ └── package.json │ └── admin/ # 管理端 Vue 前端 │ ├── src/ │ │ ├── views/ # 页面(首页、错误页) │ │ ├── api/ # API 请求封装 │ │ └── router/ # 路由配置 │ └── package.json ├── db/ │ └── test.sql # 数据库建表脚本 ├── README.md # 项目文档 ├── API.md # API 接口文档 └── LICENSE # Apache 2.0 许可证 ``` ## 快速开始 ### 环境要求 - JDK 8+ - Maven 3.6+ - Node.js 14+ - MySQL 5.7+ - Redis 5+ ### 1. 数据库配置 ```bash # 创建数据库并导入表结构 mysql -u root -p < db/test.sql ``` ### 2. 后端服务启动 ```bash # 进入用户端后端目录 cd code/User-SpringBoot # 修改配置文件中的数据库、邮箱、Redis 连接信息 # 编辑 src/main/resources/application.properties # 编译并启动 mvn clean install mvn spring-boot:run ``` **配置说明**(`application.properties`): ```properties # 数据库配置 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test spring.datasource.username=root spring.datasource.password=你的密码 # 邮箱配置(用于发送注册验证码) spring.mail.host=smtp.qq.com spring.mail.username=你的邮箱 spring.mail.password=你的授权码 # Redis 配置 spring.redis.host=localhost spring.redis.port=6379 # 文件上传路径 image.upload.path=C:/static/uploads/images file.upload.path=C:/static/uploads/files ``` ### 3. 前端启动 ```bash # 用户端 cd code/user npm install npm run serve # 管理端(可选) cd code/admin npm install npm run serve ``` ### 4. 访问应用 - 用户端: `http://localhost:8081`(或 Vue CLI 显示的端口) - 管理端: `http://localhost:10010`(或 Vue CLI 显示的端口) - 后端 API: `http://localhost:8080/api` - WebSocket: `ws://localhost:8080/ws/chat` ## 数据库设计 ### 用户表 (users) | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 主键,自增 | | username | varchar(64) | 用户名,唯一 | | password_hash | varchar(255) | 密码哈希(BCrypt) | | email | varchar(255) | 邮箱,唯一 | | avatar_url | varchar(512) | 头像 URL | | status | tinyint | 状态:1-正常,0-禁用,2-待验证,3-已注销 | | created_at | datetime | 创建时间 | | updated_at | datetime | 更新时间 | ### 消息表 (messages) | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 主键,自增 | | sender_id | bigint | 发送方用户 ID | | receiver_id | bigint | 接收方用户 ID | | content | text | 消息内容 | | type | tinyint | 消息类型:1-文本,2-图片,3-语音,4-视频,5-文件,6-系统通知,7-表情包 | | image_id | bigint | 图片 ID(type=2 时关联 images 表) | | file_id | bigint | 文件 ID(type=5 时关联 files 表) | | sticker_id | bigint | 表情包 ID(type=7 时关联 stickers 表) | | status | tinyint | 消息状态:1-已发送,2-已送达,3-已读,4-撤回,5-删除 | | sent_at | datetime | 发送时间 | | created_at | datetime | 创建时间 | | updated_at | datetime | 更新时间 | ### 图片表 (images) | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 主键,自增 | | user_id | bigint | 上传用户 ID | | original_name | varchar(255) | 原始文件名 | | stored_name | varchar(255) | 存储文件名(UUID) | | file_path | varchar(512) | 文件存储路径 | | file_size | bigint | 文件大小(字节) | | mime_type | varchar(128) | MIME 类型 | | width | int | 图片宽度(像素) | | height | int | 图片高度(像素) | | created_at | datetime | 创建时间 | ### 文件表 (files) | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 主键,自增 | | user_id | bigint | 上传用户 ID | | original_name | varchar(255) | 原始文件名 | | stored_name | varchar(255) | 存储文件名(UUID) | | file_path | varchar(512) | 文件存储路径 | | file_size | bigint | 文件大小(字节) | | mime_type | varchar(128) | MIME 类型 | | file_extension | varchar(32) | 文件扩展名 | | created_at | datetime | 创建时间 | ### 表情包表 (stickers) | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 主键,自增 | | name | varchar(128) | 表情包名称 | | category | varchar(64) | 表情包分类 | | image_url | varchar(512) | 表情包图片 URL | | thumbnail_url | varchar(512) | 表情包缩略图 URL | | width | int | 图片宽度(像素) | | height | int | 图片高度(像素) | | sort_order | int | 排序顺序 | | is_active | tinyint | 是否启用:1-启用,0-停用 | | created_at | datetime | 创建时间 | | updated_at | datetime | 更新时间 | ### 好友关系表 (user_contacts) | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 主键,自增 | | sender_id | bigint | 发起方用户 ID | | receiver_id | bigint | 接收方用户 ID | | status | tinyint | 状态:1-待确认,2-已同意(好友),3-已拒绝,4-已拉黑,5-已取消 | | created_at | datetime | 创建时间 | | confirmed_at | datetime | 确认时间 | | updated_at | datetime | 更新时间 | ## API 文档 详细的 API 接口文档请查看 [API Documentation](./API.md) ## 后续规划 以下功能将在后续版本中陆续实现: ### 消息增强 - [ ] 语音消息 - [ ] 视频消息 - [ ] 消息撤回 - [ ] 消息编辑 ### 实时通信增强 - [ ] 语音聊天 - [ ] 视频聊天 - [ ] 屏幕共享 ### 社交功能 - [ ] 群聊功能 - [ ] 群组管理 - [ ] @提及功能 - [ ] 群公告 ### 用户体验 - [ ] 消息已读回执 - [ ] 输入状态提示 - [ ] 在线状态显示 - [ ] 消息通知设置 - [ ] 深色模式 ### 其他 - [ ] 用户资料编辑 - [ ] 头像上传 - [ ] 聊天记录搜索 - [ ] 聊天记录导出 - [ ] 黑名单管理 ## 许可证 本项目采用 Apache 2.0 许可证 - 查看 [LICENSE](./LICENSE) 文件了解详情。