From a2dd18226a7198e3abf8f497581f6835f4cbfd4e Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Wed, 23 Jul 2025 22:47:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=A7=92=E8=89=B2=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/serviceImpl/MenuServiceImpl.java | 30 +++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java index cfce95d..5c8b052 100644 --- a/src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java +++ b/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.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -109,6 +107,32 @@ public class MenuServiceImpl implements MenuService { } if(roleVo.getMenuIds() == null||roleVo.getMenuIds().isEmpty()) { return Result.error("角色权限为空"); + }else + { + List menuIds = new ArrayList<>(roleVo.getMenuIds()); // 创建副本避免修改原始列表 + Set 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("角色不存在");