项目全面分析报告.md 23 KB

XINxiangqin 项目全面分析报告

生成时间: 2025-01-27
项目类型: 婚恋社交平台(微服务架构)
分析范围: 项目结构、技术栈、代码组织、功能模块、配置管理


📋 一、项目整体架构

1.1 项目结构概览

XINxiangqin/
├── gateway/                    # API网关服务 (Spring Cloud Gateway)
│   ├── src/main/java/         # 网关核心代码
│   └── src/main/resources/    # 网关配置(路由、CORS等)
│
├── common/                     # 公共模块
│   └── src/main/java/         # 公共实体类、Mapper、Service
│       ├── pojo/              # 实体类(Users, PartnerRequirement等)
│       ├── mapper/            # 数据访问层
│       └── service/           # 公共服务接口
│
├── service/                    # 业务服务模块(Maven聚合模块)
│   ├── login/                 # 登录服务
│   ├── homePage/              # 首页服务 (端口: 8081)
│   ├── dynamic/               # 动态服务 (端口: 8086)
│   ├── websocket/             # WebSocket聊天服务 (端口: 1004)
│   ├── randomMatch/           # 随机匹配服务 (端口: 1003)
│   ├── Essential/             # 基础服务 (端口: 1005)
│   ├── Recommend/            # 推荐服务 (端口: 8089)
│   └── admin/                 # 管理端服务 (端口: 8088)
│
├── LiangZhiYUMao/             # 小程序前端 (uni-app)
│   ├── pages/                 # 页面文件
│   ├── components/            # 组件
│   ├── utils/                 # 工具函数(API封装、认证等)
│   ├── config/                # 配置文件(API配置、匹配配置)
│   └── store/                 # 状态管理
│
└── marriageAdmin-vue/         # 管理后台 (Vue 3)
    ├── src/
    │   ├── views/             # 页面组件
    │   ├── components/        # 通用组件
    │   ├── router/            # 路由配置
    │   ├── stores/            # Pinia状态管理
    │   ├── utils/             # 工具函数
    │   └── config/            # 配置文件
    └── vite.config.js         # Vite构建配置

1.2 微服务架构设计

架构模式: Spring Cloud Gateway + 多服务模块

  • 网关层: 统一入口,路由转发,CORS处理
  • 服务层: 按业务领域划分的独立服务
  • 公共层: 共享实体类和工具类
  • 前端层: 小程序端 + 管理后台

🔧 二、技术栈详细分析

2.1 后端技术栈

技术 版本 用途 位置
Java 8 开发语言 所有后端服务
Spring Boot 2.7.15 核心框架 所有服务
Spring Cloud 2021.0.8 微服务框架 Gateway
Spring Cloud Alibaba 2021.0.5.0 阿里云组件 Gateway
MyBatis-Plus 3.5.3 ORM框架 所有服务
MySQL 8.0.33 数据库 所有服务
Redis - 缓存/Token存储 所有服务
MinIO 7.1.0 对象存储 文件上传服务
Lombok 1.18.30 代码简化 所有服务
Maven - 构建工具 所有后端模块

特殊依赖:

  • 腾讯云IM SDK (tim-wx-sdk 2.27.6): 用于小程序聊天功能
  • WebSocket: 实时聊天服务

2.2 前端技术栈

小程序端 (LiangZhiYUMao)

技术 版本 用途
uni-app - 跨平台框架
Vue 2 前端框架
Axios 1.12.2 HTTP客户端
tim-wx-sdk 2.27.6 腾讯云IM SDK

管理后台 (marriageAdmin-vue)

技术 版本 用途
Vue 3.5.22 前端框架
Element Plus 2.11.5 UI组件库
Pinia 3.0.3 状态管理
Vue Router 4.5.1 路由管理
Vite 7.1.7 构建工具
ECharts 6.0.0 图表库
Axios 1.12.2 HTTP客户端

🌐 三、服务端口与路由配置

3.1 服务端口分配

服务名称 端口 说明
Gateway 8083 API网关(统一入口)
HomePage 8081 首页服务
Dynamic 8086 动态服务
WebSocket 1004 聊天服务
RandomMatch 1003 匹配服务
Essential 1005 基础服务(用户信息等)
Recommend 8089 推荐服务
Admin 8088 管理端服务

3.2 网关路由配置(关键路由)

路由路径 目标服务 端口 说明
/admin/** admin服务 8088 管理端页面和API
/api/admin/** admin服务 8088 管理端API
/ws/chat/** websocket服务 1004 WebSocket聊天
/api/chat/** websocket服务 1004 聊天REST API
/api/online/** websocket服务 1004 在线状态API
/api/im/** websocket服务 1004 IM服务(腾讯云IM)
/match/** randomMatch服务 1003 匹配服务
/api/dynamic/** dynamic服务 8086 动态服务
/media/** dynamic服务 8086 媒体文件
/api/message/** dynamic服务 8086 系统消息
/api/user/** Essential服务 1005 用户基础服务
/api/checkin/** Essential服务 1005 签到服务
/api/feedback/** Essential服务 1005 反馈服务
/api/partner-requirement/** Essential服务 1005 择偶要求
/api/announcement/** homePage服务 8081 公告服务
/api/course/** homePage服务 8081 课程服务
/api/matchmaker-course/** homePage服务 8081 红娘课程
/api/recommend/** Recommend服务 8089 推荐服务
/api/course-order/** Essential服务 1005 课程订单(微信支付)
/api/my-resource/** homePage服务 8081 我的资源(线索管理)
/api/points/** admin服务 8088 积分商城
/api/success-case-upload/** websocket服务 1004 成功案例上传
/api/** homePage服务 8081 首页服务(兜底路由)

路由优先级: 路由配置顺序很重要,更具体的路由必须在通用路由之前。


📱 四、功能模块详细分析

4.1 小程序端功能 (LiangZhiYUMao)

核心功能模块

1. 用户认证模块

  • 微信授权登录
  • 手机号绑定
  • 身份证验证
  • 用户资料管理
  • 位置: pages/settings/, utils/userAuth.js

2. 匹配推荐模块

  • 今日推荐 (pages/today-recommend/)
  • 智能推荐 (pages/recommend/)
  • 在线匹配 (pages/match/)
  • 随机匹配
  • 对象要求设置 (pages/partner-requirement/)
  • 位置: pages/recommend/, pages/match/, config/match-config.js

3. 社交功能模块

  • 动态广场 (pages/plaza/)
    • 发布动态
    • 浏览动态
    • 点赞、评论
    • 举报功能
  • 消息系统 (pages/message/)
    • 聊天 (pages/message/chat.vue)
    • 系统消息 (pages/message/system.vue)
  • 黑名单管理 (pages/blacklist/)
  • 位置: pages/plaza/, pages/message/, utils/chat-api.js

4. 星命运算模块

  • 属相测算 (pages/astrology/zodiac.vue)
  • 星座卡片 (pages/astrology/constellation.vue)
  • 星座配对 (pages/astrology/constellation-match.vue)
  • 八字测算 (pages/astrology/bazi.vue)
  • 八字配对 (pages/astrology/bazi-match.vue)
  • MBTI测试 (pages/astrology/mbti.vue)
  • 位置: pages/astrology/, utils/bazi.js, utils/constellation.js, utils/mbti.js
  • 第三方API: 天行数据、极速数据

5. 服务模块

  • 红娘服务 (pages/matchmakers/)
  • 活动管理 (pages/activities/)
  • 精品课程 (pages/courses/)
  • 成功案例 (pages/success-case/)
  • 兼职红娘申请 (pages/part-time-matchmaker/)
  • 位置: pages/matchmakers/, pages/activities/, pages/courses/

6. 会员功能

  • VIP会员 (pages/vip/)
  • 私人定制 (pages/customize/)
  • 位置: pages/vip/, pages/customize/

7. 红娘工作台 (pages/matchmaker-workbench/)

  • 我的资源
  • 信息录入
  • 精准匹配
  • 优质资源
  • 积分商城
  • 培训课程
  • 红娘排行榜
  • 消息管理
  • 审核记录

8. 个人中心

  • 我的资料 (pages/profile/)
  • 我的活动 (pages/mine/my-activities.vue)
  • 我的动态 (pages/mine/my-dynamics.vue)
  • 设置中心 (pages/settings/)

4.2 管理后台功能 (marriageAdmin-vue)

管理功能模块

1. 数据面板 (views/Dashboard.vue)

  • 用户统计
  • 活动统计
  • 收入趋势
  • ECharts图表展示
  • 权限: 仅超级管理员可访问

2. 内容管理

  • 轮播图管理 (views/banner/)
  • 小喇叭公告管理 (views/announcement/)
  • 活动管理 (views/activity/)
    • 活动列表
    • 创建/编辑活动
    • 报名统计
  • 红娘管理 (views/matchmaker/)
    • 红娘列表
    • 红娘审核
    • 案例审核
    • 积分商城订单
    • 线索管理
  • 课程管理 (views/course/)
  • 成功案例管理 (views/success-case/)

3. 用户管理

  • 用户列表 (views/user/UserList.vue)
  • VIP用户管理 (views/user/UserVipList.vue)
  • VIP套餐管理 (views/vip/VipPackageList.vue)

4. 审核管理

  • 动态审核 (views/dynamic/)
  • 举报处理 (views/report/)

5. 管理员管理

  • 管理员列表 (views/admin/AdminUserList.vue)
  • 角色权限管理

🗄️ 五、数据库设计分析

5.1 核心数据表

用户相关

  • users: 用户主表
    • 字段: userId, phone(加密), email, nickname, password(bcrypt), 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: 轮播图表
  • my_resource: 线索表(红娘资源)
  • my_resource_tag: 线索标签表

管理相关

  • admin_users: 管理员用户表
  • roles: 角色表
  • permissions: 权限表
  • user_roles: 用户角色关联表
  • role_permissions: 角色权限关联表

5.2 数据库脚本位置

  • service/admin/src/main/resources/sql/ - 管理端相关表
  • service/dynamic/src/main/resources/sql/ - 动态相关表
  • service/Essential/src/main/resources/sql/ - 用户相关表
  • service/websocket/src/main/resources/sql/ - 聊天相关表
  • service/homePage/src/main/resources/sql/ - 首页相关表

🔐 六、安全机制分析

6.1 数据安全

安全措施 实现方式 位置
手机号加密 AES-256加密 Essential服务
密码加密 bcrypt哈希 Login服务
Token认证 JWT Token + Redis存储 所有服务
CORS配置 网关统一处理 Gateway配置
跨域 网关配置 Gateway配置

6.2 认证流程

小程序端:

  1. 微信授权登录 → 获取openid/unionid
  2. 后端验证 → 生成Token
  3. Token存储在Redis中,设置过期时间
  4. 后续请求携带Token

管理后台:

  1. 用户名密码登录
  2. 后端验证 → 生成Token
  3. Token存储在Redis中
  4. 路由守卫验证Token

📡 七、API接口设计

7.1 接口规范

  • 统一响应格式: {code, message, data}
  • 统一错误处理: 网关层统一处理
  • RESTful风格: 遵循REST规范

7.2 主要接口分类

用户相关 (/api/user/**)

  • 用户信息查询
  • 用户资料管理
  • 签到功能

动态相关 (/api/dynamic/**)

  • 动态CRUD
  • 点赞、评论
  • 举报功能

匹配相关 (/match/**)

  • 匹配算法
  • 推荐服务

聊天相关

  • /api/chat/** - 聊天消息REST API
  • /ws/chat/** - WebSocket实时聊天
  • /api/im/** - 腾讯云IM相关

管理相关

  • /admin/** - 管理端页面和API
  • /api/admin/** - 管理端API

🔧 八、关键配置文件位置

8.1 后端配置

配置文件 位置 说明
网关配置 gateway/src/main/resources/application.yml 路由规则、CORS配置
服务配置 service/*/src/main/resources/application.yml 各服务独立配置
Maven父POM pom.xml 依赖版本管理
服务聚合POM service/pom.xml 服务模块聚合

8.2 前端配置

配置文件 位置 说明
小程序API配置 LiangZhiYUMao/config/api-config.js 天行数据、极速数据API Key
小程序路由 LiangZhiYUMao/pages.json 页面路由配置
小程序匹配配置 LiangZhiYUMao/config/match-config.js 匹配算法配置
管理后台API配置 marriageAdmin-vue/src/config/api.js API端点定义
管理后台路由 marriageAdmin-vue/src/router/index.js 路由配置和守卫
Vite配置 marriageAdmin-vue/vite.config.js 构建配置

📂 九、核心代码文件索引

9.1 后端核心代码

公共模块

  • 实体类: common/src/main/java/com/zhentao/pojo/
    • Users.java - 用户实体
    • PartnerRequirement.java - 择偶要求实体
    • MatchmakerApply.java - 红娘申请实体

各服务核心代码结构

service/{module}/src/main/java/com/zhentao/
├── controller/          # 控制器层(REST API)
├── service/             # 服务层(业务逻辑)
├── mapper/              # 数据访问层(MyBatis)
├── pojo/                # 实体类
└── config/              # 配置类

9.2 前端核心代码

小程序端

  • API封装: LiangZhiYUMao/utils/api.js
  • 聊天API: LiangZhiYUMao/utils/chat-api.js
  • 用户认证: LiangZhiYUMao/utils/userAuth.js
  • 腾讯云IM: LiangZhiYUMao/utils/tim-manager.js
  • 工具函数: LiangZhiYUMao/utils/util.js

管理后台

  • API请求: marriageAdmin-vue/src/utils/request.js
  • 状态管理: marriageAdmin-vue/src/stores/user.js
  • 路由配置: marriageAdmin-vue/src/router/index.js

🎯 十、第三方服务集成

10.1 第三方API

服务 用途 配置位置 API Key位置
天行数据API 星座、生肖配对、八字查询 LiangZhiYUMao/config/api-config.js TIANAPI_CONFIG.API_KEY
极速数据API 专业八字排盘 LiangZhiYUMao/config/api-config.js BAZI_API_CONFIG.JISU_API.API_KEY
腾讯云IM 实时聊天功能 LiangZhiYUMao/utils/tim-manager.js 需配置SDKAppID和密钥

10.2 第三方服务配置

天行数据API配置:

// LiangZhiYUMao/config/api-config.js
export const TIANAPI_CONFIG = {
  API_KEY: '23e38be1fddb7c6aee4ea3e4294c6b4a', // ⚠️ 需要替换为真实Key
  BASE_URL: 'https://apis.tianapi.com',
  ENDPOINTS: {
    zodiacMatch: '/zodiac/index',      // 生肖配对
    constellation: '/star/index',       // 星座运势
    constellationMatch: '/xingzuo/index', // 星座配对
    bazi: '/bazi/index'                 // 八字查询
  }
}

极速数据API配置:

// LiangZhiYUMao/config/api-config.js
export const BAZI_API_CONFIG = {
  JISU_API: {
    BASE_URL: 'https://api.jisuapi.com',
    API_KEY: '34bf028ce1b089a9', // ⚠️ 需要替换为真实Key
    ENDPOINTS: {
      bazi: '/bazi/paipan'  // 八字排盘
    }
  }
}

⚠️ 十一、潜在问题与改进建议

11.1 架构层面

当前问题:

  1. ❌ 服务发现: 使用硬编码URI,未引入服务注册中心
  2. ❌ 配置中心: 配置分散在各服务,未统一管理
  3. ❌ 监控体系: 缺少服务监控和链路追踪
  4. ❌ API文档: 未集成Swagger/Knife4j
  5. ❌ 测试覆盖: 缺少单元测试和集成测试

改进建议:

  1. ✅ 引入Nacos或Eureka作为服务注册中心
  2. ✅ 使用Nacos Config或Spring Cloud Config统一管理配置
  3. ✅ 集成Spring Boot Admin或Prometheus监控
  4. ✅ 集成Swagger/Knife4j生成API文档
  5. ✅ 添加单元测试和集成测试

11.2 代码层面

当前问题:

  1. ❌ 异常处理: 各服务异常处理不统一
  2. ❌ API版本控制: 未引入版本号管理
  3. ❌ 参数校验: 未统一使用Bean Validation
  4. ❌ 日志规范: 日志格式和级别不统一

改进建议:

  1. ✅ 统一异常处理机制(全局异常处理器)
  2. ✅ 引入API版本号(如 /api/v1/user/**
  3. ✅ 统一使用Bean Validation进行参数校验
  4. ✅ 统一日志格式和级别(使用Logback或Log4j2)

11.3 功能层面

待优化功能:

  1. 🔍 搜索功能: 用户搜索、动态搜索
  2. 🤖 推荐算法优化: 基于机器学习的推荐
  3. 📊 数据分析: 用户行为分析、匹配成功率分析
  4. 📱 消息推送: 集成推送服务(极光推送等)
  5. 💰 支付功能: 集成支付功能(微信支付、支付宝)

11.4 安全层面

待加强:

  1. 🔒 API限流: 防止接口被恶意调用
  2. 🔒 熔断降级: 服务异常时的降级策略
  3. 🔒 数据脱敏: 敏感数据展示时脱敏
  4. 🔒 操作日志: 记录关键操作日志

🚀 十二、启动与部署指南

12.1 启动顺序

1. 基础服务

  • MySQL数据库
  • Redis缓存
  • MinIO对象存储

2. 后端服务(按依赖顺序)

  1. common模块(公共模块)
  2. Essential服务(基础服务)
  3. HomePage服务
  4. Dynamic服务
  5. WebSocket服务
  6. RandomMatch服务
  7. Recommend服务
  8. Admin服务
  9. Gateway网关(最后启动)

3. 前端服务

  • 管理后台: cd marriageAdmin-vue && npm run dev (端口: 5173)
  • 小程序: 使用HBuilderX或微信开发者工具

12.2 环境配置检查清单

  • MySQL数据库连接配置
  • Redis连接配置
  • MinIO配置(文件上传)
  • 网关路由配置
  • 各服务端口配置
  • 小程序API地址配置
  • 管理后台API地址配置
  • 第三方API Key配置(天行数据、极速数据)
  • 腾讯云IM配置(SDKAppID、密钥)

🔍 十三、问题诊断指南

13.1 常见问题排查

问题 检查项 解决方案
跨域问题 网关CORS配置 检查 gateway/application.yml 中的CORS配置
路由404 网关路由配置顺序 确保具体路由在通用路由之前
Token失效 Redis连接、Token过期时间 检查Redis连接和Token配置
API调用失败 服务端口、网关路由 检查服务是否启动,路由是否正确
文件上传失败 MinIO配置和权限 检查MinIO配置和存储桶权限
聊天功能异常 腾讯云IM配置 检查SDKAppID和密钥配置

13.2 调试建议

  1. 开启网关DEBUG日志: 查看路由转发情况
  2. 检查各服务日志: 查看具体错误信息
  3. 使用Postman测试API: 验证接口是否正常
  4. 检查Redis和MySQL连接: 确保数据库连接正常
  5. 查看小程序网络请求日志: 检查前端请求

📚 十四、相关文档索引

项目包含的文档:

  • 项目架构分析报告.md - 项目架构详细分析
  • 技术栈快速参考.md - 技术栈快速查询
  • LiangZhiYUMao/API接口说明.md - API接口文档
  • marriageAdmin-vue/README.md - 管理后台说明
  • marriageAdmin-vue/美化方案说明.md - UI美化方案
  • marriageAdmin-vue/数据展示优化说明.md - 数据展示优化

🎯 十五、后续修改建议(优先级排序)

高优先级 🔴

  1. 统一异常处理机制

    • 位置: 各服务的Controller层
    • 建议: 创建全局异常处理器
  2. API版本控制

    • 位置: 网关路由配置
    • 建议: 引入 /api/v1/ 版本前缀
  3. 参数校验统一

    • 位置: Controller层
    • 建议: 使用 @Valid@NotNull 等注解
  4. 日志规范统一

    • 位置: 所有服务
    • 建议: 统一日志格式和级别

中优先级 🟡

  1. 服务注册发现

    • 位置: 网关和服务配置
    • 建议: 引入Nacos
  2. 配置中心

    • 位置: 所有服务配置
    • 建议: 使用Nacos Config
  3. API文档

    • 位置: 各服务Controller
    • 建议: 集成Swagger/Knife4j

低优先级 🟢

  1. 监控体系

    • 建议: 集成Spring Boot Admin
  2. 测试覆盖

    • 建议: 添加单元测试和集成测试
  3. 功能扩展

    • 搜索功能
    • 推荐算法优化
    • 消息推送
    • 支付功能

📝 十六、关键文件快速索引

后端关键文件

文件路径 说明
pom.xml Maven父项目配置
gateway/src/main/resources/application.yml 网关路由配置
service/*/src/main/resources/application.yml 各服务配置
common/src/main/java/com/zhentao/pojo/ 公共实体类

前端关键文件

文件路径 说明
LiangZhiYUMao/config/api-config.js 小程序API配置
LiangZhiYUMao/utils/api.js 小程序API封装
LiangZhiYUMao/pages.json 小程序路由配置
marriageAdmin-vue/src/config/api.js 管理后台API配置
marriageAdmin-vue/src/router/index.js 管理后台路由配置

📊 十七、项目统计信息

代码规模(估算)

  • 后端Java文件: ~500+ 个
  • 前端Vue文件: ~100+ 个
  • 数据库表: ~30+ 个
  • API接口: ~200+ 个
  • 服务模块: 8个微服务 + 1个网关

功能模块统计

  • 小程序页面: ~50+ 个
  • 管理后台页面: ~30+ 个
  • 核心业务模块: 10+ 个

🎓 十八、学习与开发建议

对于新开发者

  1. 先理解整体架构: 阅读 项目架构分析报告.md
  2. 熟悉技术栈: 查看 技术栈快速参考.md
  3. 从简单模块开始: 建议从 common 模块开始
  4. 理解路由配置: 重点理解网关路由配置
  5. 熟悉API调用: 查看小程序和管理后台的API封装

对于维护者

  1. 关注配置文件: 修改前先查看相关配置
  2. 理解服务依赖: 注意服务启动顺序
  3. 查看日志: 遇到问题先查看日志
  4. 测试验证: 修改后充分测试

报告生成时间: 2025-01-27
分析工具: 代码扫描 + 配置文件分析
建议更新频率: 每次重大架构变更后更新


📞 技术支持

如有问题,请参考:

  1. 项目文档目录下的相关文档
  2. 各服务的README文件
  3. 代码注释和配置说明

祝开发顺利! 🚀