Files
msh-system/docs/项目技术栈与架构分析.md

198 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 慢生活MSH系统 — 项目技术栈与架构分析
## 一、项目概述
**慢生活**MSH System是一套面向 C 端的**商城 + 营养/工具**一体化系统包含移动端多端应用UniApp与基于 CRMEB 的 Java 后端服务。项目在 CRMEB Java 版 v2.2 基础上做了业务定制,并接入了 AICoze、KieAI、腾讯云 ASR 等)与文章/工具类能力,形成「慢生活营养专家」产品形态。
---
## 二、整体架构
系统采用**前后端分离 + 多端一体**架构:
```
┌─────────────────────────────────────────────────────────────────────────┐
│ 客户端(多端) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 微信小程序 │ │ H5 商城 │ │ App(iOS/ │ │ 支付宝/ │ │
│ │ (mp-weixin) │ │ │ │ Android) │ │ 头条等小程序│ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │ │
│ └────────────────┴────────────────┴────────────────┘ │
│ │ │
│ msh_single_uniapp (Vue 2 + UniApp) │
└────────────────────────────────────┬────────────────────────────────────┘
│ HTTPS / REST API
┌─────────────────────────────────────────────────────────────────────────┐
│ 后端服务Spring Boot
│ ┌─────────────────────────────┐ ┌─────────────────────────────┐ │
│ │ crmeb-front (C 端 API) │ │ crmeb-admin (管理端 API) │ │
│ │ 端口: 20822 (sophia) │ │ 后台管理、定时任务(Quartz) │ │
│ │ /api/front/*, /api/public/* │ │ │ │
│ └──────────────┬──────────────┘ └──────────────┬──────────────┘ │
│ │ │ │
│ └────────────┬───────────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ crmeb-service (业务逻辑) │ crmeb-common (工具/实体/配置) │ │
│ └─────────────────────────────────────────────────────────────────┘ │
└────────────────────────────────────┬────────────────────────────────────┘
┌───────────────────────────┼───────────────────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ MySQL 8.x │ │ Redis │ │ 对象存储/ │
│ (Druid 连接池) │ │ (缓存/会话/ │ │ 支付/地图等 │
│ │ │ Token/验证码) │ │ OSS/COS/七牛 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
```
- **前端**:一套 UniApp 源码通过条件编译发布到微信小程序、H5、App、支付宝/头条等小程序。
- **后端**:多模块 Maven 工程C 端入口为 `crmeb-front`,管理端为 `crmeb-admin`,共用 `crmeb-service``crmeb-common`
- **外部**MySQL 主库、Redis、阿里云 OSS/腾讯云 COS/七牛、微信/支付宝支付、高德地图、Coze/KieAI 等。
---
## 三、前端技术栈msh_single_uniapp
### 3.1 核心框架与语言
| 类别 | 技术选型 | 说明 |
|------------|-----------------|------|
| 跨端框架 | **UniApp** | 基于 Vue 2一套代码多端运行微信/支付宝/头条小程序、H5、App |
| 前端框架 | **Vue 2.x** | 选项式 API`main.js` 中挂载全局工具与 Store |
| 状态管理 | **Vuex** | `store/index.js` + `store/modules`(如 `app.js` |
| 构建/工程 | **Vue CLI** | `vue.config.js`:生产环境关闭 sourceMap、压缩时去掉 console |
| 富文本 | **mp-html** | 用于商品/文章等富文本展示(`package.json` 中声明) |
### 3.2 工程结构要点
- **入口与全局**`main.js``App.vue`;全局通过 `Vue.prototype` 挂载 `$util``$config``$Cache``$eventHub``$Order``$LoginAuth` 等。
- **配置**`config/app.js` 统一配置 `domain`API 基地址)、`HTTP_REQUEST_URL``HEADER``TOKENNAME`(如 `Authori-zation`H5 下可选 VConsole。
- **请求层**
- 通用业务请求:`utils/request.js`,基于 `uni.request`,前缀 `/api/front/``/api/public/`,统一处理 401/403/410xxx 跳转登录。
- AI/文章等:`api/models-api.js` 使用同一 `domain`,封装 Coze、KieAI、腾讯 ASR、文章等接口。
- **API 模块化**`api/api.js``api/user.js``api/order.js``api/store.js``api/tool.js``api/public.js``api/models-api.js` 等按业务拆分。
- **路由与页面**`pages.json` 配置首页、分包subPackages、tabBar、导航栏样式等首屏为 `pages/tool_main/index`(慢生活营养专家)。
### 3.3 多端与发布
- **manifest.json**:应用名「慢生活」、版本 2.2.1、App 模块(支付、分享、地图、定位、直播等)、微信/支付宝/头条小程序 appid、高德 key、支付与 OAuth 等。
- **发行**H5 使用 history 路由;微信小程序开启 `lazyCodeLoading: requiredComponents` 控制包体;生产构建通过 `vue.config.js` 做压缩与去 console。
### 3.4 前端技术栈小结
- **语言**JavaScriptES6+
- **UI**UniApp 内置组件 + 自定义组件(如 `skeleton``homeIndex``payment``jyf-parser` 等)
- **特色**多端统一、Token 鉴权、登录态校验、分包与懒加载、与 CRMEB 后端约定 `/api/front/``/api/public/` 前缀
---
## 四、后端技术栈msh_crmeb_22
### 4.1 核心框架与运行时
| 类别 | 技术选型 | 版本/说明 |
|--------------|-----------------------------|-----------|
| 基础框架 | **Spring Boot** | 2.2.6.RELEASE |
| Java | **JDK 1.8** | 编译与运行 |
| 构建 | **Maven** | 多模块 parent POM 管理依赖 |
### 4.2 模块划分
| 模块 | 职责 |
|----------------|------|
| **crmeb-common** | 公共实体、工具类、配置(如 CozeConfig、通用组件Druid、MyBatis-Plus、Redis、JWT、验证码等 |
| **crmeb-service** | 业务逻辑层商城、用户、订单、营销、工具、AI 对接Coze、KieAI、腾讯 ASR等 |
| **crmeb-admin** | 管理端 Web API、Quartz 定时任务,打包为 `jxz-admin-2.2.jar` |
| **crmeb-front** | C 端 Web API打包为 `sophia-front-2.2.jar`,当前 sophia 配置端口 20822 |
### 4.3 数据访问与存储
| 类别 | 技术选型 | 说明 |
|----------|-------------------------|------|
| 关系库 | **MySQL 8.x** | 驱动 `mysql-connector-java` 8.0.33Druid 连接池 |
| ORM | **MyBatis-Plus** | 3.3.1,含 generatormapper 扫描 `com.zbkj.**.dao` |
| 分页 | **PageHelper** | 1.2.5,与 MyBatis-Plus 共存时排除 mybatis 避免冲突 |
| 缓存 | **Redis + Jedis** | Spring Boot 2.2 Data Redis独立 DB 存 accessToken 等 |
| 文档 | **MongoDB** | 仅 driver-core 依赖,用于部分扩展能力 |
### 4.4 安全与认证
- **JWT**`jjwt-api/impl/jackson` 0.11.5Token 名称与前端约定(如 `Authori-zation`)。
- **行为验证码**`spring-boot-starter-captcha`AJ支持滑动/点选,缓存可走 Redis。
- **白名单**`application.yml``crmeb.ignored` 配置 Swagger、上传、Coze、KieAI 等路径免鉴权。
### 4.5 接口与文档
- **REST**Spring MVCC 端前缀 `/api/front/``/api/public/`
- **文档**Springfox Swagger 2.9.2 + swagger-bootstrap-ui 1.9.3,配置在 `application*.yml``swagger.basic`
### 4.6 第三方与中间件(根 POM 管理)
- **工具**Hutool、Commons Lang3、Fastjson、HttpClient、Dom4j、XStream、Pinyin4j、ZXing二维码等。
- **文件与图片**Commons FileUpload/IO、Thumbnailator、阿里云 OSS、腾讯云 COS、七牛 SDK。
- **支付**:支付宝 SDK、微信通过 common 或 service 内封装)。
- **AI/开放接口**Coze APIcoze-api 0.2.3、OkHttp、RxJava流式KieAI、腾讯云 ASR 等通过 HTTP 在 service 层封装。
### 4.7 配置与运行
- **配置**`application.yml` + `application-{profile}.yml`(如 `sophia``dev``prod``beta`)。
- **数据源/Redis**:在 profile 中覆盖 URL、库名、端口、密码等。
- **日志**Logback`logback-spring.xml`),按环境输出到 `./crmeb_log``./logs`
---
## 五、models-integration 子项目
- **定位**:独立 Maven 工程(`com.integration:models-integration`Java 8Spring Boot 2.7.5。
- **用途**:与「模型/AI」集成相关的独立服务或能力如统一网关、模型路由等通过 SpringDoc OpenAPI、Redis、MySQL、AOP 等搭建。
- **与主系统关系**:与 msh_crmeb_22 无直接模块依赖,可单独部署,通过 HTTP 或消息与 front 协作。
---
## 六、部署与运行约定
### 6.1 前端
- **开发**:使用 HBuilderX 或 Vue CLI 运行/发行到各端API 基地址在 `config/app.js``domain` 修改(如 `https://sophia-shop.uj345.cc`)。
- **生产**H5 可部署到任意静态服务器;小程序/App 需在对应平台上传与配置域名白名单。
### 6.2 后端
- **C 端**:以 `sophia` profile 启动 `CrmebFrontApplication`,默认端口 20822需可访问的 MySQL、Redis。
- **管理端**:启动 `CrmebAdminApplication`,按需配置端口与数据源。
- **包名**`com.zbkj`front 的 `@ComponentScan` 包含 `com.zbkj``com.zbkj.front`Mapper 扫描 `com.zbkj.**.dao`
---
## 七、技术栈汇总表
| 层次 | 技术项 | 选型说明 |
|----------|------------------|----------|
| 前端框架 | Vue 2 + UniApp | 多端统一(小程序/H5/App |
| 状态管理 | Vuex | 登录态、购物车、全局配置等 |
| 请求 | uni.request 封装 | 统一 domain、Token、错误与登录跳转 |
| 后端框架 | Spring Boot 2.2 | 多模块common/service/admin/front |
| 数据访问 | MyBatis-Plus + MySQL | Druid 连接池、PageHelper 分页 |
| 缓存 | Redis (Jedis) | 会话、Token、验证码、配置缓存 |
| 认证 | JWT + 行为验证码 | 前端 Header 传 Token |
| 文档 | Swagger 2 + Bootstrap UI | 后端 API 文档 |
| 构建 | Maven / npm | 后端 Maven前端 Vue CLI / HBuilderX |
| 对象存储 | 阿里云 OSS / 腾讯云 COS / 七牛 | 图片与文件 |
| 支付 | 微信支付、支付宝 | 通过后端封装 |
| AI/能力 | Coze、KieAI、腾讯云 ASR 等 | 在 crmeb-service 中封装front 暴露 REST |
---
## 八、文档与资源
- **产品与设计**`docs/` 下 PRD、打卡社区设计、食谱计算器接口文档、用户界面交互设计等。
- **数据库**`docs/sql``msh_crmeb_22/sql` 等目录可存放建表/迁移脚本。
- **接口**`documents/api` 可补充 C 端/管理端接口说明,与 Swagger 互补。
---
*文档基于当前仓库目录与配置文件整理,用于技术评审、新人上手与架构演进参考。具体版本号以各模块 `pom.xml`、`package.json` 及运行环境为准。*