198 lines
14 KiB
Markdown
198 lines
14 KiB
Markdown
# 慢生活(MSH)系统 — 项目技术栈与架构分析
|
||
|
||
## 一、项目概述
|
||
|
||
**慢生活**(MSH System)是一套面向 C 端的**商城 + 营养/工具**一体化系统,包含移动端多端应用(UniApp)与基于 CRMEB 的 Java 后端服务。项目在 CRMEB Java 版 v2.2 基础上做了业务定制,并接入了 AI(Coze、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 前端技术栈小结
|
||
|
||
- **语言**:JavaScript(ES6+)
|
||
- **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.33,Druid 连接池 |
|
||
| ORM | **MyBatis-Plus** | 3.3.1,含 generator;mapper 扫描 `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.5,Token 名称与前端约定(如 `Authori-zation`)。
|
||
- **行为验证码**:`spring-boot-starter-captcha`(AJ),支持滑动/点选,缓存可走 Redis。
|
||
- **白名单**:`application.yml` 中 `crmeb.ignored` 配置 Swagger、上传、Coze、KieAI 等路径免鉴权。
|
||
|
||
### 4.5 接口与文档
|
||
|
||
- **REST**:Spring MVC,C 端前缀 `/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 API(coze-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 8,Spring 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` 及运行环境为准。*
|