项目架构分析报告
📋 项目概述
项目名称: XINxiangqin(新相亲)
项目类型: 婚恋社交平台
架构模式: 微服务架构(Spring Cloud Gateway + 多服务模块)
开发时间: 2024-2025
🏗️ 技术架构
后端技术栈
核心框架
- Spring Boot: 2.7.15
- Spring Cloud: 2021.0.8
- Spring Cloud Alibaba: 2021.0.5.0
- Java版本: JDK 8
- 构建工具: Maven
数据层
- ORM框架: MyBatis-Plus 3.5.3
- 数据库: MySQL 8.0.33
- 缓存: Redis (Spring Data Redis)
- 对象存储: MinIO 7.1.0
其他技术
- WebSocket: 实时聊天功能
- 腾讯云IM SDK: tim-wx-sdk 2.27.6 (用于小程序聊天)
- 工具库: Lombok 1.18.30
前端技术栈
小程序端 (LiangZhiYUMao)
- 框架: uni-app (Vue 2)
- HTTP客户端: Axios 1.12.2
- UI组件: uni-ui组件库
- 聊天SDK: tim-wx-sdk 2.27.6
管理后台 (marriageAdmin-vue)
- 框架: Vue 3.5.22
- UI组件库: Element Plus 2.11.5
- 状态管理: Pinia 3.0.3
- 路由: Vue Router 4.5.1
- 构建工具: Vite 7.1.7
- 图表库: ECharts 6.0.0
🎯 系统架构设计
微服务模块划分
XINxiangqin/
├── gateway/ # API网关服务 (端口: 8083)
├── common/ # 公共模块(实体类、工具类)
└── service/ # 业务服务模块
├── login/ # 登录服务
├── homePage/ # 首页服务 (端口: 8081)
├── dynamic/ # 动态服务 (端口: 8086)
├── websocket/ # WebSocket聊天服务 (端口: 1004)
├── randomMatch/ # 随机匹配服务 (端口: 1003)
├── Essential/ # 基础服务(用户信息等)(端口: 1005)
├── Recommend/ # 推荐服务
└── admin/ # 管理端服务 (端口: 8088)
网关路由配置
网关统一入口:http://localhost:8083
| 路由路径 |
目标服务 |
端口 |
说明 |
/admin/** |
admin服务 |
8088 |
管理端页面和API |
/api/admin/** |
admin服务 |
8088 |
管理端API |
/ws/chat/** |
websocket服务 |
1004 |
WebSocket聊天 |
/api/chat/** |
websocket服务 |
1004 |
聊天REST API |
/match/** |
randomMatch服务 |
1003 |
匹配服务 |
/api/announcement/** |
homePage服务 |
8081 |
公告服务 |
/api/dynamic/** |
dynamic服务 |
8086 |
动态服务 |
/media/** |
dynamic服务 |
8086 |
媒体文件 |
/api/message/** |
dynamic服务 |
8086 |
系统消息 |
/api/user/** |
Essential服务 |
1005 |
用户基础服务 |
/api/** |
homePage服务 |
8081 |
首页服务(兜底路由) |
📱 功能模块分析
小程序端功能 (LiangZhiYUMao)
核心功能模块
用户认证模块
- 微信授权登录
- 手机号绑定
- 身份证验证
- 用户资料管理
匹配推荐模块
- 今日推荐
- 智能推荐
- 在线匹配
- 随机匹配
- 对象要求设置
社交功能模块
- 动态广场(发布、浏览、点赞、评论)
- 消息系统(聊天、系统消息)
- 黑名单管理
- 举报功能
星命运算模块 ⭐
- 属相测算
- 星座卡片
- 星座配对
- 八字测算
- 八字配对
- MBTI测试
服务模块
- 红娘服务(列表、详情)
- 活动管理(列表、详情、报名)
- 精品课程(列表、详情)
- 成功案例(列表、详情)
- 兼职红娘申请
会员功能
个人中心
第三方API集成
- 天行数据API: 星座、生肖配对、八字查询
- 极速数据API: 专业八字排盘
- 腾讯云IM: 实时聊天功能
管理后台功能 (marriageAdmin-vue)
管理功能模块
数据面板
- 用户统计
- 活动统计
- 收入趋势
- ECharts图表展示
内容管理
- 轮播图管理
- 小喇叭公告管理
- 活动管理(含报名统计)
- 红娘管理
- 课程管理
- 成功案例管理
用户管理
审核管理
🗄️ 数据库设计
核心数据表
用户相关
users: 用户主表
- 字段:userId, phone, email, nickname, password, gender, birthDate, avatarUrl, status等
- 安全:手机号AES-256加密,密码bcrypt加密
user_profile: 用户扩展信息表
- 字段:房产、车辆、身高、体重、星座、生肖、学历、工作、薪资等
- 认证:实名认证、学历认证、工作认证、婚姻状态认证
vip: VIP会员表
blacklist: 黑名单表
checkin: 签到表
社交相关
user_dynamics: 用户动态表
dynamic_comments: 动态评论表
dynamic_likes: 动态点赞表
dynamic_reports: 动态举报表
聊天相关
chat_messages: 聊天消息表
chat_sessions: 聊天会话表
业务相关
activities: 活动表
activity_registrations: 活动报名表
matchmakers: 红娘表
courses: 课程表
success_cases: 成功案例表
announcements: 公告表
banners: 轮播图表
管理相关
🔐 安全机制
数据安全
- 手机号加密: AES-256加密存储
- 密码加密: bcrypt哈希加密
- Token认证: JWT Token + Redis存储
- CORS配置: 网关统一处理跨域
认证流程
- 小程序:微信授权登录 → 获取openid/unionid → 生成Token
- 管理后台:用户名密码登录 → 验证 → 生成Token
- Token存储在Redis中,设置过期时间
📡 API接口设计
接口规范
- 统一响应格式:
{code, message, data}
- 统一错误处理: 网关层统一处理
- RESTful风格: 遵循REST规范
主要接口分类
用户相关
动态相关
/api/dynamic/** - 动态CRUD、点赞、评论
/api/message/** - 系统消息
匹配相关
聊天相关
/api/chat/** - 聊天消息REST API
/ws/chat/** - WebSocket实时聊天
管理相关
/admin/** - 管理端页面和API
/api/admin/** - 管理端API
🚀 部署架构
服务端口分配
| 服务 |
端口 |
说明 |
| Gateway |
8083 |
API网关(统一入口) |
| HomePage |
8081 |
首页服务 |
| Dynamic |
8086 |
动态服务 |
| WebSocket |
1004 |
聊天服务 |
| RandomMatch |
1003 |
匹配服务 |
| Essential |
1005 |
基础服务 |
| Admin |
8088 |
管理端服务 |
依赖服务
- MySQL: 主数据库
- Redis: 缓存和Token存储
- MinIO: 对象存储(图片、文件)
🔧 开发环境配置
小程序端配置
- API地址:
config/api-config.js 中配置
- 第三方API: 天行数据、极速数据API Key配置
- 开发工具: HBuilderX / 微信开发者工具
管理后台配置
- API地址:
src/config/api.js
- 开发服务器: Vite Dev Server (端口: 5173)
- 代理配置: Vite代理到网关
后端配置
- 数据库: 各服务
application.yml中配置
- Redis: 各服务独立配置
- MinIO: 文件上传服务配置
📊 项目特点
优势
- 微服务架构: 模块化设计,易于扩展和维护
- 前后端分离: 小程序和管理后台独立开发
- 功能完整: 涵盖婚恋平台核心功能
- 第三方集成: 丰富的API集成(星座、八字、聊天等)
- 安全机制: 完善的数据加密和认证体系
技术亮点
- 网关统一管理: Spring Cloud Gateway统一路由和CORS
- 实时通信: WebSocket + 腾讯云IM双重保障
- 智能推荐: 推荐算法服务独立
- 内容审核: 动态审核机制
- 数据可视化: ECharts图表展示
待优化点
- 服务发现: 当前使用硬编码URI,可引入Nacos/Eureka
- 配置中心: 可引入配置中心统一管理配置
- 监控体系: 可添加服务监控和链路追踪
- API文档: 可集成Swagger/Knife4j
- 测试覆盖: 单元测试和集成测试
🎯 后续修改建议
代码层面
- 统一异常处理: 各服务统一异常处理机制
- API版本控制: 引入版本号管理API
- 参数校验: 统一使用Bean Validation
- 日志规范: 统一日志格式和级别
- 代码规范: 统一代码风格和命名规范
架构层面
- 服务注册发现: 引入Nacos或Eureka
- 配置中心: 使用Nacos Config或Spring Cloud Config
- API网关增强: 添加限流、熔断、降级
- 分布式事务: 引入Seata处理分布式事务
- 消息队列: 引入RabbitMQ/Kafka处理异步任务
功能层面
- 搜索功能: 用户搜索、动态搜索
- 推荐算法优化: 基于机器学习的推荐
- 数据分析: 用户行为分析、匹配成功率分析
- 消息推送: 集成推送服务(极光推送等)
- 支付功能: 集成支付功能(微信支付、支付宝)
📝 关键文件位置
配置文件
- 网关配置:
gateway/src/main/resources/application.yml
- 小程序API配置:
LiangZhiYUMao/config/api-config.js
- 管理后台API配置:
marriageAdmin-vue/src/config/api.js
- 小程序路由:
LiangZhiYUMao/pages.json
- 管理后台路由:
marriageAdmin-vue/src/router/index.js
核心代码
- 公共实体:
common/src/main/java/com/zhentao/pojo/
- 小程序工具:
LiangZhiYUMao/utils/
- 管理后台组件:
marriageAdmin-vue/src/components/
- 管理后台页面:
marriageAdmin-vue/src/views/
数据库脚本
- 各服务SQL脚本:
service/*/src/main/resources/sql/
🔍 问题诊断指南
常见问题
- 跨域问题: 检查网关CORS配置
- 路由404: 检查网关路由配置顺序
- Token失效: 检查Redis连接和Token过期时间
- API调用失败: 检查服务端口和网关路由
- 文件上传失败: 检查MinIO配置和权限
调试建议
- 开启网关DEBUG日志查看路由转发
- 检查各服务日志文件
- 使用Postman测试API接口
- 检查Redis和MySQL连接状态
- 查看小程序网络请求日志
📚 相关文档
项目包含丰富的文档:
- API接口说明文档
- 第三方API集成指南
- 功能说明文档
- 问题诊断文档
- 样式优化文档
报告生成时间: 2025-01-27
分析范围: 项目整体架构、技术栈、功能模块、数据库设计