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.1 KiB
1.1 KiB
01 — 祖先补全能力(ISysMenuService)
What to build: 为 ISysMenuService 新增 getAncestorIds(Collection<Long> menuIds) 方法,接收一组资源节点 ID,沿 parentId 递归向上遍历,返回包含全部祖先 catalog/menu 节点 ID 的完整集合。实现方式为批量查询 sys_menu 全表构建 ID→parentId 映射,在内存中遍历,避免逐节点查 DB。这是角色权限保存时祖先补全逻辑(ADR-0005)的底层能力,其他 ticket 依赖它。
Blocked by: None — can start immediately
Status: ready-for-agent
- ISysMenuService 接口新增
getAncestorIds(Collection<Long> menuIds)方法声明 - SysMenuServiceImpl 实现:批量查全表,构建 ID→parentId 映射,内存遍历补全祖先,返回 Set
- SysMenuServiceImplTest 覆盖:单链向上遍历(button→menu→catalog→root)
- 多链汇合:两条独立链的叶子节点,返回并集
- 根节点:parentId=0 的 catalog,返回它自己(无祖先可补)
- 空输入:传入空集合,返回空集合
- 已含祖先:传入完整集合,返回相同集合(幂等不重复)