新增业务域
新增一个业务域意味着新增一个后端 Maven 模块,并配套前端页面、路由、权限与菜单。以 asone-module-xxx、根包 com.qianxunclub.asone.xxx 为例。
后端
- 新建模块目录
asone-server/asone-module-xxx,pom.xml只依赖asone-server-system,版本交给父 POM,不手写<version>。 - 按目录结构建立包骨架:
constants/controller/service/mapper/model/{entity,request,response}/export/task/config。 - 在父 POM
asone-server/pom.xml中登记:<modules>加模块,<dependencyManagement>加com.qianxunclub:asone-module-xxx:${project.version}。 - 在
asone-server-boot/pom.xml中新增对该模块的<dependency>——否则模块不会被打包启动。 - 需要独立配置时新增
src/main/resources/application-xxx.yml,并把xxx加入asone-server-boot/src/main/resources/application.yml的spring.profiles.include。 - 新增
i18n/messages-xxx.properties(默认中文)与messages-xxx_en_US.properties,并追加到spring.messages.basename逗号列表。 - 表结构写入
docs/developer-docs/docs/public/1-ddl.sql(全量 DDL 是唯一来源,不建增量迁移脚本),由人工在目标库执行。
前端
- 新建
src/pages/Xxx与src/services/asone-server/xxx(接口层可用pnpm openapi从后端 OpenAPI 生成后整理)。 - 新建
config/routes/xxxRoutes.ts,并在config/routes.ts中展开。 - 在
src/constants/permissions.ts增加权限码,页面通过useAccess/usePageAccess判断,不散落硬编码字符串。 - 在
src/locales/zh-CN与src/locales/en-US同步补文案(pnpm i18n-check会校验)。 - 菜单在「系统管理 → 菜单管理」手动新增,
path必须与路由一致;role_scope只在顶级菜单设置,子级自动继承。
完成后的自检
# 后端:模块被 boot 正确聚合、编译通过
cd asone-server && mvn -q -DskipTests clean compile
# 没有残留 record(本项目禁止使用)
grep -rnE '(^|\s)record\s+[A-Za-z_]' --include='*.java' asone-server/*/src
# 前端:格式化、类型、文案、脚本测试全链路
cd asone-front && pnpm lint
- 启动后端(
--spring.profiles.active=local)后访问http://localhost:8001/swagger-ui.html,确认新分组与接口出现。 - 未带令牌访问新接口应返回 401,带普通角色访问
SYSTEM授权域资源应被拒绝。
常见遗漏
| 症状 | 原因 |
|---|---|
| 接口 404,Mapper 未注册 | 忘了在 asone-server-boot/pom.xml 加模块依赖 |
| 配置不生效 | application-xxx.yml 没进 spring.profiles.include |
| 报错信息始终是中文 | 新 bundle 没加进 spring.messages.basename,或前端未带 X-Locale |
| 菜单不显示 | 后台菜单的 path 与 config/routes 中的路由不一致 |
| 页面 403 | 路由 access 与权限码未配置,或角色未分配该资源 |
