--- name: crud-by-controller-dcsw description: 基于 tofly-dcsw 现有 Controller 风格快速生成标准 CRUD 代码(Controller/Service/Mapper/Mapper.xml),并约束 SQL 仅放在 *Mapper.xml。用户提到生成 CRUD、参考现有控制器补全增删改查、统一 ResultRespone 风格或规范 MyBatis XML 时使用。 --- # CRUD 生成 Skill(tofly-dcsw 场景) ## 适用场景 当用户要求“按 tofly-dcsw 现有模块风格新增或补全 CRUD”时使用。 默认对齐 `dc-moudule/water-quality` 和 `dc-moudule/hnls-scada` 的常见风格。 ## 公共 Skill 引用 - POM 工作流:`language/java/pom-factory-skill.md`;**Maven 治理条文**:[`rules/java-pom-governance.mdc`](../../../../../rules/java/java-pom-governance.mdc)。 - **Java CRUD 通用规范**:[`rules/java-crud-common.mdc`](../../../../../rules/java/java-crud-common.mdc)。 - 当任务同时涉及 CRUD 与 POM 治理时:代码分层遵循本文件,Maven 规则遵循 `pom-factory-skill` + **`java-pom-governance`**。 - 当本文件与 **java-crud-common** 冲突时,本文件项目差异规则优先。 ## dcsw 专项约束 ### 接口与返回 - Controller:`@RestController` + `@RequestMapping("/xxx")` + `@Api(tags = "...")`。 - 返回体统一使用 `ResultRespone`。 - CRUD:`GET /page`(`Page` + `@ModelAttribute`)、`GET /{id}`、`POST /`(`@RequestBody @Valid`)、`PUT /`(`@RequestBody @Valid`)、`DELETE /{id}`、`DELETE /deleteByIds`(`ids` 逗号分隔)。 ### Swagger 与日志 - 方法级 `@ApiOperation`;主键与批量参数 `@ApiImplicitParam(s)`。 - 写操作(新增/修改/删除)使用 `@ToFlyAppLog(title = "...")`。 ### 分层与 SQL - Controller 只做参数接收、基础校验、结果封装;业务规则与事务在 `Service`;不直接访问 `Mapper`。 - SQL 仅 `*Mapper.xml`;`Mapper.java` 仅签名,禁止注解 SQL;`namespace` 对齐全限定名。 - 与 **`rules/java-crud-common.mdc`** 一致的条款不再重复。 ### Service - `ServiceImpl` 常见基类:`ServiceImpl`。 - 跨表写、批量删除等需 `@Transactional`。 - 业务失败统一抛业务异常或 `ResultRespone.failed(...)`,不透出 SQL/堆栈。 - 名称唯一、删除前关联检查等校验在 Service 实现。 ## 生成步骤 1. 识别目标模块 - 确认是 `water-quality`、`hnls-scada` 或其他子模块。 - 就近选择同包 Controller 作为风格模板。 2. 生成 Controller - 保持 `ResultRespone`、路由、Swagger 一致;六类接口齐全;写操作加 `@ToFlyAppLog`。 3. 生成 Service 与 ServiceImpl - 接口声明业务方法;实现含事务与业务约束。 4. 生成 Mapper + Mapper.xml - Mapper 声明分页与扩展查询;XML 中动态 SQL、resultMap 等。 5. 自检 - 按 **`rules/java-crud-common.mdc`** 自检。 - 检查注解 SQL、Controller 复杂业务、写接口 `@ToFlyAppLog`、XML `namespace`。 ## 输出格式 ```markdown ## CRUD 结果(dcsw) - 模块:`...` - 实体:`...` - 新增文件:`...` - 修改文件:`...` ## 接口清单 - `GET /xxx/page` - `GET /xxx/{id}` - `POST /xxx` - `PUT /xxx` - `DELETE /xxx/{id}` - `DELETE /xxx/deleteByIds` ## 规范检查 - [x] 返回统一使用 `ResultRespone` - [x] 写接口已加 `@ToFlyAppLog` - [x] Controller 无复杂业务编排 - [x] SQL 全部位于 `*Mapper.xml` - [x] Mapper 无注解 SQL ``` ## 参考 - 详细示例见 [examples-dcsw.md](examples-dcsw.md)