Files
rxthinkcmf-web/CLAUDE.md
T
2026-10-18 18:15:47 +08:00

60 lines
4.9 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.
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## 项目概述
小蚂蚁云后台管理系统 (RXThinkCMF):Spring Boot 3.3 (JDK 17) 多模块 Maven 后端 + Vue 3 管理后台前端 (`xiaomayi-ui/`)。注释与提交信息使用中文;Java 文件带版权头,不要删除。
## 常用命令
### 后端(Maven,无 mvnw,需系统 mvn)
- 全量构建:`mvn clean package`(默认 `local` profile)
- 指定环境构建:`mvn clean package -P prod`(可选:`local|dev|test|uat|prod`)
- 运行后台应用:`java -jar xiaomayi-modules/xiaomayi-admin/target/xiaomayi-admin.jar`,或 IDE 直接运行主类 `com.xiaomayi.admin.XMAdminApplication`
- 单独构建某模块:`mvn clean package -pl xiaomayi-services/xiaomayi-system -am`(`-am` 连带构建依赖模块)
- 测试实际被跳过:admin 的 surefire 配置 `skipTests=true`,父 POM 配置 compiler 跳过 test 编译,仓库中基本没有测试
### 前端(`xiaomayi-ui/`,包管理器 pnpm)
- 安装依赖:`pnpm install`
- 开发:`pnpm dev`(端口 8001,代理 `/api` → `http://127.0.0.1:8081/api`,见 `.env.development` 的 `VITE_PROXY`)
- 构建:`pnpm build` 或 `pnpm build:test`
- 类型检查:`pnpm type:check`
- Lint:`pnpm lint:eslint`、`pnpm lint:prettier`、`pnpm lint:stylelint`
## 后端架构
模块依赖方向:`xiaomayi-modules`(可运行应用)→ `xiaomayi-services`(业务模块)→ `xiaomayi-common`(基础组件)。
- **`xiaomayi-common/`**:约 30 个能力组件(security、mybatis、redis、oss/minio、sms、email、alipay/wxpay、websocket、tenant、excel、generator 等)+ BOM 模块 `xiaomayi-all`。所有第三方依赖版本集中在 `xiaomayi-common/pom.xml` 的 dependencyManagement 中管理,新增依赖版本加在这里。
- **`xiaomayi-services/`**:业务领域模块(system、cms、product、order、member、logistics、invoice、quartz、generator),每层结构为 `dto / entity / mapper / service`,Mapper XML 在各模块 `src/main/resources/mapper/`。
- **`xiaomayi-modules/`**:可运行应用。`xiaomayi-admin`(后台管理,主类 `XMAdminApplication`,端口 8081,context-path `/api`);`xiaomayi-web`(前台网站 `XMWebApplication`);`xiaomayi-uniapp`(客户端接口 `UniAppApplication`)。
- **`xiaomayi-visual/xiaomayi-monitor`**:监控应用。
后端约定:
- Controller 位于应用模块(主要在 `xiaomayi-admin/.../controller/<业务域>/`),注入 services 模块的 Service;不要把 Controller 写进 services 模块。
- 统一响应体 `com.xiaomayi.core.utils.R`:`{code, msg, data, count}`,`code=0` 成功、`1` 失败,分页总数放在 `count`。前端 axios 封装按 `code === 0` 判断成功(`xiaomayi-ui/src/utils/http/axios/`)。
- 认证用 Spring Security;放行 URL 在 `xiaomayi-admin/src/main/resources/configs/application-security.yml`。
- ORM 为 MyBatis(XML mapper),多数据源 dynamic-datasource + Druid;默认主库 MySQL,库名 `rxthinkcmf.web`,初始化脚本 `document/rxthinkcmf.web.sql`。
- 配置分两层:`application.yml` 通过 `spring.config.import` 导入公共配置 `configs/application-*.yml`(mybatis、security、logger、tenant、payment 等)和环境配置 `configs/<env>/application-*.yml`(redis、aliyun、minio、token、email 等)。`spring.profiles.active` 由 Maven profile 的 `@package.environment@` 资源过滤注入——改 `application-<env>.yml` 的内容时注意它是被 Maven filtering 处理的资源。
- 版本号统一为 `${revision}`(当前 2.0.0),由 flatten-maven-plugin 解析,不要在子 POM 中硬编码版本。
- 代码生成器:`GeneratorController` + Freemarker 模板(`xiaomayi-admin/src/main/resources/templates/`,含 `modules/` 后端模板和 `ui/` 前端模板)。
## 前端架构(xiaomayi-ui)
Vue 3 + Vite 3 + TypeScript + Element Plus + Pinia,结构类似 vben-admin。
- 接口定义在 `src/api/<域>/<模块>.ts`,页面在 `src/views/<域>/`;`@` 别名指向 `src/`。
- 动态路由:登录后由后端菜单接口(`getRouters`)返回菜单树,`src/router/generator-routers.ts` 用 `import.meta.glob('../views/**/*.{vue,tsx}')` 把菜单里的 `component` 路径字符串解析成组件。**新增页面必须放在 `src/views/` 下,且菜单表中配置对应路径**,否则路由无法加载。
- 请求走 `src/utils/http/axios/` 封装,接口前缀 `VITE_GLOB_API_URL_PREFIX=/api`,与后端 context-path 对应。
- 环境变量在根目录 `.env`、`.env.development`、`.env.test`、`.env.production`。
## 部署
- 根目录 `Dockerfile` + `docker-compose.yml`:构建并运行 admin 应用(挂载 `./logs`、`./upload`)。
- `.jenkins/`:CI 配置(Jenkinsfile 调用内部 share-library 的 `pipelineJDKService`)。
- `docker/deploy.sh`:从 Harbor 拉取镜像并 `docker compose up`。