Browse Source

8月5日更新角色循环遍历父id方法删除

huangqizheng/feature-20250805200446-配置修改及充值导出修改
sunjiabei 2 weeks ago
parent
commit
ef1d54cca1
  1. 53
      src/main/java/com/example/demo/serviceImpl/coin/MenuServiceImpl.java

53
src/main/java/com/example/demo/serviceImpl/coin/MenuServiceImpl.java

@ -123,33 +123,34 @@ public class MenuServiceImpl implements MenuService {
}
if(roleVo.getMenuIds() == null||roleVo.getMenuIds().isEmpty()) {
return Result.error("角色权限为空");
}else
{
List<Integer> menuIds = new ArrayList<>(roleVo.getMenuIds()); // 创建副本避免修改原始列表
Set<Integer> processedIds = new HashSet<>(menuIds); // 使用Set快速检查存在性
// 处理每个菜单ID及其所有父菜单
for (int i = 0; i < menuIds.size(); i++) {
Integer currentId = menuIds.get(i);
// ID为1不处理
if (currentId == 1) continue;
// 获取父菜单ID
Integer fatherId = menuMapper.selectFatherId(currentId);
// 递归添加所有父菜单
while (fatherId != null) {
if (!processedIds.contains(fatherId)) {
menuIds.add(fatherId);
processedIds.add(fatherId);
}
// 继续向上查找父菜单的父菜单
fatherId = menuMapper.selectFatherId(fatherId);
}
}
roleVo.setMenuIds(menuIds);
}
// else
// {
// List<Integer> menuIds = new ArrayList<>(roleVo.getMenuIds()); // 创建副本避免修改原始列表
// Set<Integer> processedIds = new HashSet<>(menuIds); // 使用Set快速检查存在性
//
// // 处理每个菜单ID及其所有父菜单
// for (int i = 0; i < menuIds.size(); i++) {
// Integer currentId = menuIds.get(i);
//
// // ID为1不处理
// if (currentId == 1) continue;
//
// // 获取父菜单ID
// Integer fatherId = menuMapper.selectFatherId(currentId);
//
// // 递归添加所有父菜单
// while (fatherId != null) {
// if (!processedIds.contains(fatherId)) {
// menuIds.add(fatherId);
// processedIds.add(fatherId);
// }
// // 继续向上查找父菜单的父菜单
// fatherId = menuMapper.selectFatherId(fatherId);
// }
// }
// roleVo.setMenuIds(menuIds);
// }
if(roleMapper.selectByRoleId(roleVo.getId())==null){
return Result.error("角色不存在");
}

Loading…
Cancel
Save