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.
 
 
 
 
 

1.7 KiB

04 — 角色详情 + 权限分配(带祖先补全)

What to build: 在 RoleController 新增角色详情和权限分配两个端点。详情端点返回 RoleDetailVO,其中 resourceIds 为从 sys_role_menu 查出的已补全完整授权集合。权限分配端点接收前端勾选的原始 resourceIds(逗号分隔),调用 ISysMenuService.getAncestorIds 补全祖先后全量替换写入 sys_role_menu。从 SystemController 移除旧的 /api/system/roles/menus 和 /api/system/roles/assign-menus 端点。

Blocked by: 01 — 祖先补全能力(ISysMenuService), 03 — 角色保存 + 列表 + 校验 + RoleController

Status: ready-for-agent

  • GET /api/roles/detail — hasAuthority('crm:role:detail'),roleId query 参数,返回 RoleDetailVO
  • RoleDetailVO 填充 resourceIds 字段(从 sys_role_menu 查出的完整授权集合,Long 序列化为 String)
  • POST /api/roles/assign-resources — hasAuthority('crm:role:assign'),roleId + resourceIds(逗号分隔字符串)表单参数
  • ISysRoleService 新增 assignResources 方法:调用 ISysMenuService.getAncestorIds 补全祖先,再先删后插全量替换 sys_role_menu
  • ISysRoleService 新增 getRoleDetail 方法:查角色基本信息 + 查 sys_role_menu 得到 resourceIds,组装 RoleDetailVO
  • 事务保护:assignResources 在 @Transactional 中执行
  • SysRoleServiceImplTest 覆盖:assignResources 调用祖先补全后写库(验证写入的 menuIds 包含祖先)、先删后插全量替换、getRoleDetail 返回 RoleDetailVO 含基本信息和 resourceIds
  • SystemController 移除 /api/system/roles/menus 和 /api/system/roles/assign-menus 方法