Parcourir la source

update 优化 菜单权限查询

疯狂的狮子Li il y a 1 an
Parent
commit
90fef1bb17

+ 12 - 6
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java

@@ -6,7 +6,9 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 import org.dromara.system.domain.SysMenu;
 import org.dromara.system.domain.vo.SysMenuVo;
 
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 /**
  * 菜单表 数据层
@@ -75,12 +77,14 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo> {
      * @param userId 用户ID
      * @return 权限列表
      */
-    default List<String> selectMenuPermsByUserId(Long userId) {
-        return this.selectObjs(
+    default Set<String> selectMenuPermsByUserId(Long userId) {
+        return new HashSet<>(this.selectObjs(
             new LambdaQueryWrapper<SysMenu>()
                 .select(SysMenu::getPerms)
                 .inSql(SysMenu::getMenuId, this.buildMenuByUserSql(userId))
-        );
+                .isNotNull(SysMenu::getPerms)
+                .ne(SysMenu::getPerms, "")
+        ));
     }
 
     /**
@@ -89,12 +93,14 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo> {
      * @param roleId 角色ID
      * @return 权限列表
      */
-    default List<String> selectMenuPermsByRoleId(Long roleId) {
-        return this.selectObjs(
+    default Set<String> selectMenuPermsByRoleId(Long roleId) {
+        return new HashSet<>(this.selectObjs(
             new LambdaQueryWrapper<SysMenu>()
                 .select(SysMenu::getPerms)
                 .inSql(SysMenu::getMenuId, this.buildMenuByRoleSql(roleId))
-        );
+                .isNotNull(SysMenu::getPerms)
+                .ne(SysMenu::getPerms, "")
+        ));
     }
 
     /**

+ 2 - 16
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java

@@ -90,14 +90,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
      */
     @Override
     public Set<String> selectMenuPermsByUserId(Long userId) {
-        List<String> perms = baseMapper.selectMenuPermsByUserId(userId);
-        Set<String> permsSet = new HashSet<>();
-        for (String perm : perms) {
-            if (StringUtils.isNotEmpty(perm)) {
-                permsSet.addAll(StringUtils.splitList(perm.trim()));
-            }
-        }
-        return permsSet;
+        return baseMapper.selectMenuPermsByUserId(userId);
     }
 
     /**
@@ -108,14 +101,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
      */
     @Override
     public Set<String> selectMenuPermsByRoleId(Long roleId) {
-        List<String> perms = baseMapper.selectMenuPermsByRoleId(roleId);
-        Set<String> permsSet = new HashSet<>();
-        for (String perm : perms) {
-            if (StringUtils.isNotEmpty(perm)) {
-                permsSet.addAll(StringUtils.splitList(perm.trim()));
-            }
-        }
-        return permsSet;
+        return baseMapper.selectMenuPermsByRoleId(roleId);
     }
 
     /**