1
0
Преглед на файлове

fix:修复角色没有权限时的接口错误问题

wangzaijun преди 7 месеца
родител
ревизия
5863a2382a
променени са 1 файла, в които са добавени 13 реда и са изтрити 10 реда
  1. 13 10
      service-base/src/main/java/com/simuwang/base/components/UserAuthService.java

+ 13 - 10
service-base/src/main/java/com/simuwang/base/components/UserAuthService.java

@@ -1,5 +1,6 @@
 package com.simuwang.base.components;
 
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.simuwang.base.common.support.dos.OnlyIdNameDO;
@@ -107,16 +108,18 @@ public class UserAuthService {
             return this.roleMapper.allPerms();
         }
         List<OnlyIdNameDO> dataList = this.roleMapper.listAssignPerms(roleId);
-        // 找到所有父id是上述数据的
-        List<Integer> menuIds = dataList.stream().map(OnlyIdNameDO::getId).distinct().collect(Collectors.toList());
-        LambdaQueryWrapper<SysMenuDO> wrapper = Wrappers.lambdaQuery(SysMenuDO.class)
-                .select(SysMenuDO::getMenuId, SysMenuDO::getParentId)
-                .in(SysMenuDO::getParentId, menuIds)
-                .eq(SysMenuDO::getStatus, 1);
-        List<SysMenuDO> tempList = this.menuMapper.selectList(wrapper);
-        // 过滤存在父节点引用的菜单id
-        List<Integer> pids = tempList.stream().map(SysMenuDO::getParentId).distinct().collect(Collectors.toList());
-        dataList.removeIf(e -> pids.contains(e.getId()));
+        if (CollUtil.isNotEmpty(dataList)) {
+            // 找到所有父id是上述数据的
+            List<Integer> menuIds = dataList.stream().map(OnlyIdNameDO::getId).distinct().collect(Collectors.toList());
+            LambdaQueryWrapper<SysMenuDO> wrapper = Wrappers.lambdaQuery(SysMenuDO.class)
+                    .select(SysMenuDO::getMenuId, SysMenuDO::getParentId)
+                    .in(SysMenuDO::getParentId, menuIds)
+                    .eq(SysMenuDO::getStatus, 1);
+            List<SysMenuDO> tempList = this.menuMapper.selectList(wrapper);
+            // 过滤存在父节点引用的菜单id
+            List<Integer> pids = tempList.stream().map(SysMenuDO::getParentId).distinct().collect(Collectors.toList());
+            dataList.removeIf(e -> pids.contains(e.getId()));
+        }
         return dataList;
     }