|
|
|
|
# 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 不变
|