Asone 开发者文档Asone 开发者文档
  • 项目架构
  • 技术栈
  • 目录结构
  • 本地启动
  • 新增功能
  • 开发规范
  • 数据库
  • 图表语法
  • 部署
  • 文档同步规则
  • 相关文档
  • 项目架构
  • 技术栈
  • 目录结构
  • 本地启动
  • 新增功能
  • 开发规范
  • 数据库
  • 图表语法
  • 部署
  • 文档同步规则
  • 相关文档
  • 新增功能
    • 新增业务域
    • 新增接口
    • 新增前端页面
    • 其他常见改动

新增业务域

新增一个业务域意味着新增一个后端 Maven 模块,并配套前端页面、路由、权限与菜单。以 asone-module-xxx、根包 com.qianxunclub.asone.xxx 为例。

后端

图 1 · 新模块必须登记的五个点位(漏一个就不生效)
  1. 新建模块目录 asone-server/asone-module-xxx,pom.xml 只依赖 asone-server-system,版本交给父 POM,不手写 <version>。
  2. 按目录结构建立包骨架:constants / controller / service / mapper / model/{entity,request,response} / export / task / config。
  3. 在父 POM asone-server/pom.xml 中登记:<modules> 加模块,<dependencyManagement> 加 com.qianxunclub:asone-module-xxx:${project.version}。
  4. 在 asone-server-boot/pom.xml 中新增对该模块的 <dependency>——否则模块不会被打包启动。
  5. 需要独立配置时新增 src/main/resources/application-xxx.yml,并把 xxx 加入 asone-server-boot/src/main/resources/application.yml 的 spring.profiles.include。
  6. 新增 i18n/messages-xxx.properties(默认中文)与 messages-xxx_en_US.properties,并追加到 spring.messages.basename 逗号列表。
  7. 表结构写入 docs/developer-docs/docs/public/1-ddl.sql(全量 DDL 是唯一来源,不建增量迁移脚本),由人工在目标库执行。

前端

  1. 新建 src/pages/Xxx 与 src/services/asone-server/xxx(接口层可用 pnpm openapi 从后端 OpenAPI 生成后整理)。
  2. 新建 config/routes/xxxRoutes.ts,并在 config/routes.ts 中展开。
  3. 在 src/constants/permissions.ts 增加权限码,页面通过 useAccess / usePageAccess 判断,不散落硬编码字符串。
  4. 在 src/locales/zh-CN 与 src/locales/en-US 同步补文案(pnpm i18n-check 会校验)。
  5. 菜单在「系统管理 → 菜单管理」手动新增,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 与权限码未配置,或角色未分配该资源
下一页
新增接口