# xinhe **Repository Path**: hongzyh/xinhe ## Basic Information - **Project Name**: xinhe - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 2 - **Created**: 2026-03-15 - **Last Updated**: 2026-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # StarVid 星河 > 一款全功能的即时通讯社交应用 ## 📱 项目简介 StarVid 是一款采用前后端分离架构的即时通讯社交应用,支持实时聊天、好友管理、群组聊天、朋友圈、文件上传等功能。 ### ✨ 主要功能 - 💬 **实时聊天** - 文本、图片、语音、视频、文件消息 - 👥 **好友管理** - 添加好友、好友申请、备注、拉黑 - 🌐 **群组聊天** - 群聊、群管理、@功能 - 📸 **朋友圈** - 发布动态、点赞、评论 - 📁 **文件上传** - 支持多种文件类型(100MB 以内) - 🟢 **在线状态** - 实时显示用户在线/离线状态 - 🚀 **消息推送** - WebSocket 实时消息推送 ## 🏗️ 技术架构 ### 前端技术栈 - **框架**: Flutter 3.11.0+ - **状态管理**: GetX 4.6.5 - **HTTP 客户端**: Dio 5.4.0 - **WebSocket**: web_socket_channel 2.4.0 - **本地存储**: shared_preferences 2.2.2 - **JSON 序列化**: json_annotation 4.8.1 ### 后端技术栈 - **框架**: Spring Boot 3.2.4 - **Java 版本**: 17 - **ORM**: MyBatis-Plus 3.5.5 - **数据库**: MySQL 8.0+ - **缓存**: Redis 7.0+ - **认证**: JWT 0.12.5 - **实时通信**: Spring WebSocket ## 📁 项目结构 ``` XingheProject/ ├── starvid/ # Flutter 前端项目 │ ├── lib/ │ │ ├── api/ # API 接口层 │ │ ├── components/ # UI 组件 │ │ ├── views/ # 页面视图 │ │ └── main.dart # 应用入口 │ └── pubspec.yaml # 项目配置 │ ├── starvidBackend/ # Spring Boot 后端项目 │ ├── src/main/java/ │ │ └── com/starvid/ │ │ ├── common/ # 通用模块 │ │ ├── module/ # 业务模块 │ │ └── websocket/ # WebSocket 模块 │ └── pom.xml # Maven 配置 │ └── PROJECT_OVERVIEW.md # 详细项目文档 ``` ## 🚀 快速开始 ### 环境要求 - **前端**: Flutter SDK 3.11.0+ - **后端**: JDK 17+, Maven 3.6+ - **数据库**: MySQL 8.0+, Redis 7.0+ ### 后端启动 ```bash # 1. 创建数据库 mysql -u root -p CREATE DATABASE starvid_dev CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 2. 导入数据库脚本 use starvid_dev; source starvidBackend/docs/database/init.sql; # 3. 配置环境变量(或修改 application.yaml) export MYSQL_HOST=localhost export MYSQL_USERNAME=root export MYSQL_PASSWORD=your_password export REDIS_HOST=localhost export REDIS_PORT=6379 export JWT_SECRET=your-secret-key # 4. 启动后端 cd starvidBackend mvn spring-boot:run # 访问 Swagger 文档:http://localhost:8080/swagger-ui.html ``` ### 前端启动 ```bash # 1. 安装依赖 cd starvid flutter pub get # 2. 修改 API 配置(lib/api/config/api_config.dart) # 将 baseUrl 改为后端地址 # 3. 启动应用 flutter run # 4. 构建 APK flutter build apk --release ``` ## 📖 文档 - [**详细项目文档**](PROJECT_OVERVIEW.md) - 完整的项目说明、数据库设计、API 接口等 - [**后端架构规范**](starvidBackend/docs/后端架构规范文档.md) - 后端开发规范 - [**API 接口文档**](http://localhost:8080/swagger-ui.html) - Swagger UI(后端启动后访问) ## 🎯 核心功能模块 ### 1. 用户认证 - 手机号注册/登录 - JWT 双令牌机制(Token + Refresh Token) - 密码加密(BCrypt) ### 2. 聊天模块 - 单聊/群聊 - 多种消息类型(文本、图片、语音、视频、文件) - 消息撤回(2 分钟内) - 消息已读状态 ### 3. 联系人模块 - 好友列表(按字母排序) - 好友申请/审批 - 备注/拉黑/星标 ### 4. 群组模块 - 创建/加入/退出群组 - 群聊消息 - @功能(@所有人 / @指定用户) - 群角色管理 ### 5. 朋友圈模块 - 发布动态(文字/图片/视频) - 点赞/评论 - 可见范围控制 ### 6. 文件上传模块 - 支持多种文件类型 - 文件大小限制(100MB) - 多种存储方式(本地/OSS/S3) ## 📸 功能预览 ### 前端界面 - **消息页面**: 聊天会话列表,显示最后一条消息和未读数 - **联系人页面**: 好友列表,支持搜索和分组 - **发现页面**: 朋友圈 + 功能广场(狗日记、汇率、天气等) - **我的页面**: 个人信息 + 设置 ### 聊天功能 - 实时消息气泡(左右布局) - 输入框 + 发送按钮 - 消息发送状态(发送中/成功/失败) - 下拉加载更多历史消息 ## 🔧 配置说明 ### 后端配置 (application.yaml) ```yaml # 服务端口 server: port: 8080 # 数据库配置 spring: datasource: url: jdbc:mysql://localhost:3306/starvid_dev username: root password: your_password # Redis 配置 data: redis: host: localhost port: 6379 # JWT 配置 jwt: secret-key: your-secret-key-at-least-256-bits expiration: 604800000 # 7 天 ``` ### 前端配置 (lib/api/config/api_config.dart) ```dart class ApiConfig { static const String baseUrl = 'http://localhost:8080'; static const String apiVersion = '/api/v1'; static const String wsUrl = 'ws://localhost:8080/ws'; } ``` ## 🛠️ 开发工具推荐 ### IDE - **前端**: VS Code / Android Studio - 推荐插件:Flutter, Dart - **后端**: IntelliJ IDEA / Eclipse - 推荐插件:Lombok, MyBatisX ### API 测试 - Postman - Swagger UI () ### 数据库管理 - MySQL Workbench - Navicat - Redis Desktop Manager ## 📊 数据库设计 项目共包含 14 张核心表: ### 用户模块 - `t_user` - 用户表 - `t_user_token` - 用户令牌表 ### 聊天模块 - `t_chat_session` - 聊天会话表 - `t_message` - 消息主表 - `t_message_single` - 单聊消息扩展表 - `t_message_group` - 群聊消息扩展表 - `t_message_read` - 消息已读表 ### 联系人模块 - `t_friend` - 好友表 - `t_friend_request` - 好友申请表 ### 群组模块 - `t_group` - 群组表 - `t_group_member` - 群成员表 ### 朋友圈模块 - `t_moment` - 动态表 - `t_moment_like` - 动态点赞表 - `t_moment_comment` - 动态评论表 ### 文件上传模块 - `t_file` - 文件上传表 详细表结构请查看 [PROJECT_OVERVIEW.md](PROJECT_OVERVIEW.md#数据库设计) ## 🔒 安全规范 - ✅ BCrypt 密码加密 - ✅ JWT 双令牌机制 - ✅ 接口鉴权拦截 - ✅ SQL 注入防护(MyBatis 预编译) - ✅ 跨域配置 - ✅ 全局异常处理 ## 📈 性能优化 ### 数据库优化 - 完善的索引设计 - 支持分表策略(消息表按月分表) - 读写分离(主从复制) ### Redis 缓存 - 用户 Token(7 天) - 用户信息(30 分钟) - 在线状态(5 分钟心跳) - 离线消息队列(7 天) ### WebSocket 优化 - 心跳间隔:30 秒 - 最大连接数:10000 - 离线消息 TTL:168 小时 ## 🚀 部署 ### Docker 部署(后端) ```bash # 构建镜像 docker build -t starvid-backend:1.0.0 . # 运行容器 docker run -d \ -p 8080:8080 \ -e MYSQL_HOST=xxx \ -e MYSQL_PASSWORD=xxx \ -e REDIS_HOST=xxx \ -e JWT_SECRET=xxx \ --name starvid-backend \ starvid-backend:1.0.0 ``` ### Web 部署(前端) ```bash # 构建 Web 版本 flutter build web # 部署到 Nginx # 将 build/web/ 目录复制到 Nginx 服务器 ``` 详细部署说明请查看 [PROJECT_OVERVIEW.md](PROJECT_OVERVIEW.md#部署说明) ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request! ## 📄 开源协议 MIT License ## 📞 联系方式 如有问题,请通过以下方式联系: - Email: - GitHub Issues: [提交 Issue](https://github.com/your-repo/starvid/issues) ## 🙏 致谢 感谢以下开源项目: - [Flutter](https://flutter.dev) - [Spring Boot](https://spring.io/projects/spring-boot) - [MyBatis-Plus](https://baomidou.com) - [GetX](https://pub.dev/packages/get) --- **StarVid** - 让沟通更简单 ✨