Browse Source

修改角色权限

sunjiabei/feature-20250710132313-二期模块
sunjiabei 4 weeks ago
parent
commit
a2dd18226a
  1. 30
      src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java

30
src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java

@ -12,9 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -109,6 +107,32 @@ public class MenuServiceImpl implements MenuService {
} }
if(roleVo.getMenuIds() == null||roleVo.getMenuIds().isEmpty()) { if(roleVo.getMenuIds() == null||roleVo.getMenuIds().isEmpty()) {
return Result.error("角色权限为空"); 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);
} }
if(roleMapper.selectByRoleId(roleVo.getId())==null){ if(roleMapper.selectByRoleId(roleVo.getId())==null){
return Result.error("角色不存在"); return Result.error("角色不存在");

Loading…
Cancel
Save