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

198 lines
14 KiB
Markdown
Raw Normal View History

# 慢生活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` 及运行环境为准。*