--- description: 按 safety-eval-service 既定分层与枚举约定生成/修改代码(触发词:按照 safety 代码格式生成) alwaysApply: true --- # 按照 safety 代码格式生成 当用户说「按照 safety 代码格式生成」或根据 SQL/原型生成相关代码时,按本仓库既定格式生成,**只改任务相关文件,不动不相关代码**。 ## 触发词 - 「按照 safety 代码格式生成」 ## 分层与参考 对齐 `AccountController` / 机构端现有全链路(Controller → Api → Executor → DomainService → Gateway → Mapper),不相干功能不要生成。 参考入口:`safety-eval-adapter/.../web/AccountController.java` 机构端示例:`.../web/institution/EvalCustomerController.java`、`EvalProjectController.java` 新建清单(以表名为 Xxx): - adapter/web/XxxController.java(或 institution 包下) - client/api/XxxApi.java - client/dto/XxxAddCmd、XxxModifyCmd、XxxPageQuery(按实际需要) - client/co/XxxCO - app/executor/XxxExecutor.java(实现 Api) - app/convertor/XxxCmdConvertor.java(MapStruct,勿放 change/convertor,除非是备案变更) - domain/entity/XxxEntity、domain/query/XxxQuery、domain/gateway/XxxGateway、domain/service/XxxDomainService - infrastructure/dataobject/XxxDO、mapper/XxxMapper、gatewayimpl/XxxGatewayImpl - infrastructure/convertor/XxxDoConvertor.java(MapStruct Entity↔DO) ## 转换 - 禁止手写 set() 填充 Cmd/CO/Entity/DO;统一 MapStruct(`componentModel = "spring"`) - 字段名一致自动映射 ## orgId 与填充 - 表有 org_id 时:全链路所有实体都加 orgId(DO/Entity/AddCmd/ModifyCmd/PageQuery/DomainQuery/CO 按需要) - 新增:`InsertFieldDefaults.apply(dataObject)`(有 orgId 时不要用 applyIgnoreOrgId) - 修改:`InsertFieldDefaults.applyForUpdate(dataObject)` - 无 org 字段的表才用 `applyIgnoreOrgId`(如 Account) ## 枚举与只存 code(强约定) - 下拉/状态类字段:**库表与 DO/Entity/Cmd 只存 code**,不落 `*_name` - 名称在 Executor/CmdConvertor 用 `XxxEnum.ofCode(code).getValue()` 填到 CO(可展示) - 能复用已有枚举则复用(如 `IndustryEnum`、`ChongqingDistrictEnum`);不能复用则在 `domain/constant` 新建,写法对齐现有枚举(code + value + `ofCode`) - 经纬度等坐标字段:Java 侧统一 `String` - 每个带枚举的业务模块提供:`GET .../enums`,返回 `EnumOptionCO(code,name)` 列表集合(如 `EvalCustomerEnumsCO` / `EvalProjectEnumsCO`) ## 其它 - 最小 diff;不主动写 README/测试/注释除非要求 - 解释用中文;标识符英文 - 代码完成后回答精简:只说改了什么、怎么验 - 禁止猜测生成;字段/范围不清先问用户