You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

23 lines
2.0 KiB

# 06 — RoleController 出入参规范化
**What to build:** RoleDetailVO 改名为 RoleDTO(继承 BaseDTO,加 `fromEntity`/`toEntity`)。新建 RoleParam extends BaseParam,RoleController.page 改用它并经 PageConverter 转换——修复分页绕过(当前自行 `new Page<>` 无页大小上限、排序字段可注入)。page 出参从 `PageResult<SysRole>`(实体直出)改为 `PageResult<RoleDTO>`——`deleted`/`creatorId` 不再泄露。saveOrUpdate 从 6 个 `@RequestParam` 改为 RoleDTO 入参(≥3 阈值触发封装)。assignResources(2 参数)和 delete(1 参数)保持 `@RequestParam`
**Blocked by:** 01 (BaseDTO 重构), 02 (InitBinder)
**Status:** resolved
- [x] `RoleDetailVO` 改名为 `RoleDTO`,继承 `BaseDTO`,加 `@EqualsAndHashCode(callSuper = true)`
- [x] `RoleDTO` 上实现 `fromEntity(SysRole)` 静态方法和 `toEntity()` 实例方法
- [x] 新建 `RoleParam extends BaseParam`,放 `param/` 包,keyword 等角色查询字段(keyword 继承自 BaseParam)
- [x] `RoleController.page` 入参从 3 个 `@RequestParam` 改为 `RoleParam`,经 `PageConverter.toMpPage` 转换(下沉到 `pageRoles`
- [x] `RoleController.page` 出参从 `PageResult<SysRole>` 改为 `PageResult<RoleDTO>`
- [x] `RoleController.saveOrUpdate` 从 6 个 `@RequestParam` 改为 `RoleDTO` 入参
- [x] `RoleController.detail` 出参从 `RoleDetailVO` 改为 `RoleDTO`
- [x] `RoleController.assignResources`(2 参数)保持 `@RequestParam`
- [x] `RoleController.delete`(1 参数)保持 `@RequestParam`
- [x] RoleController 不再 import `SysRole` 实体
- [x] 测试:page 返回的 JSON 中不包含 `deleted`/`creatorId`/`updaterId`(RoleDTO 继承 BaseDTO,不带审计字段)
- [x] 测试:page 经 PageConverter,页大小超过上限被收敛(PageConverterTest 新增,共享护栏)
- [x] 测试:saveOrUpdate 入参为 RoleDTO,提交 `createTime` 被 strip(GlobalDataBindingAdviceTest 覆盖)
- [x] 测试:assignResources 保持 @RequestParam 不变