# 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//application-*.yml`(redis、aliyun、minio、token、email 等)。`spring.profiles.active` 由 Maven profile 的 `@package.environment@` 资源过滤注入——改 `application-.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`。