慢生活(MSH)系统 — 项目技术栈与架构分析
一、项目概述
慢生活(MSH System)是一套面向 C 端的商城 + 营养/工具一体化系统,包含移动端多端应用(UniApp)与基于 CRMEB 的 Java 后端服务。项目在 CRMEB Java 版 v2.2 基础上做了业务定制,并接入了 AI(Coze、KieAI、腾讯云 ASR 等)与文章/工具类能力,形成「慢生活营养专家」产品形态。
二、整体架构
系统采用前后端分离 + 多端一体架构:
- 前端:一套 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 及运行环境为准。