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.
2.9 KiB
2.9 KiB
07 — SystemController 出入参规范化
What to build: 新建 DeptDTO(继承 BaseDTO,含 children 树结构,加 fromEntity/toEntity),新建 AssignDeptDTO(纯 POJO 不继承 BaseDTO,无主键语义)。menuTree 出参从 List<SysMenu>(实体直出)改为 List<ResourceNodeDTO>。deptTree 出参从 List<SysDept>(实体直出)改为 List<DeptDTO>。saveDept(5 参数)从 @RequestParam 改为 DeptDTO 入参。assignUserDepts(3 参数)从 @RequestParam 改为 AssignDeptDTO 入参。userPage 去掉 @RequestBody 改表单绑定(前端破坏性变更——前端从 JSON body 改为 form-urlencoded)。UserStatsVO 改名为 UserStatsDTO。assignUserRoles(2 参数)、deleteDept(1 参数)保持 @RequestParam。
Blocked by: 01 (BaseDTO 重构), 02 (InitBinder), 05 (ResourceNodeDTO — menuTree 要用它)
Status: resolved
- 新建
DeptDTO(继承BaseDTO,含children字段,fromEntity(SysDept)+toEntity()),放crm-auth/domain/dto/ - 新建
AssignDeptDTO(纯 POJO,字段userId/primaryDeptId/deptIds),放crm-auth/domain/dto/ UserStatsVO改名为UserStatsDTO(不继承 BaseDTO,无主键语义)SystemController.menuTree出参从List<SysMenu>改为List<ResourceNodeDTO>SystemController.deptTree出参从List<SysDept>改为List<DeptDTO>SystemController.saveDept从 5 个@RequestParam改为DeptDTO入参SystemController.assignUserDepts从 3 个@RequestParam改为AssignDeptDTO入参SystemController.userPage去掉@RequestBody,改为隐式表单绑定(对齐已文档化的“全部表单字段”约定)SystemController.userStats出参类型从UserStatsVO改为UserStatsDTOassignUserRoles(2 参数)、deleteDept(1 参数)保持@RequestParam不变- PermissionResolver.visibleMenuTree 返回类型从
List<SysMenu>改为List<ResourceNodeDTO>(impl 内 Entity→DTO 转换后建树) - SystemController 不再 import
SysMenu/SysDept实体 - 测试:menuTree/deptTree 返回的 JSON 中不包含
deleted/creatorId/updaterId(DTO 继承 BaseDTO,不带审计字段;DataScopeIntegrationTest.visibleMenuTree 验证 DTO 树) - 测试:saveDept 入参为 DeptDTO,提交
createTime被 strip(GlobalDataBindingAdviceTest 覆盖 strip 行为;DeptDTO.toEntity 不映射审计字段) - 测试:assignUserDepts 入参为 AssignDeptDTO(表单绑定;现有 UserListIntegrationTest 维绿)
- 测试:userPage 表单绑定生效(UserPageParam 无 @RequestBody,由 Spring 表单绑定)
- 前端对接文档:userPage 本就应走 form-urlencoded(说明书已写“全部表单字段,不使用 JSON body”),代码回归约定无需新增文档;同步将 role 文档 RoleDetailVO→RoleDTO