diff --git a/src/main/java/com/youlai/system/controller/SysMenuController.java b/src/main/java/com/youlai/system/controller/SysMenuController.java index 7251e368..2707e9df 100644 --- a/src/main/java/com/youlai/system/controller/SysMenuController.java +++ b/src/main/java/com/youlai/system/controller/SysMenuController.java @@ -9,6 +9,7 @@ import com.youlai.system.model.vo.MenuVO; import com.youlai.system.common.model.Option; import com.youlai.system.model.vo.RouteVO; import com.youlai.system.plugin.syslog.annotation.LogAnnotation; +import com.youlai.system.security.util.SecurityUtils; import com.youlai.system.service.SysMenuService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -19,6 +20,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Set; /** * 菜单控制层 @@ -53,7 +55,8 @@ public class SysMenuController { @Operation(summary = "路由列表") @GetMapping("/routes") public Result> listRoutes() { - List routeList = menuService.listRoutes(); + Set roles = SecurityUtils.getRoles(); + List routeList = menuService.listRoutes(roles); return Result.success(routeList); } @@ -106,6 +109,5 @@ public class SysMenuController { return Result.judge(result); } - } diff --git a/src/main/java/com/youlai/system/mapper/SysMenuMapper.java b/src/main/java/com/youlai/system/mapper/SysMenuMapper.java index f5001f2d..6a745257 100644 --- a/src/main/java/com/youlai/system/mapper/SysMenuMapper.java +++ b/src/main/java/com/youlai/system/mapper/SysMenuMapper.java @@ -1,9 +1,9 @@ package com.youlai.system.mapper; -/** - * 菜单持久接口层 +/* + * 菜单 访问层 * - * @author haoxr + * @author Ray * @since 2022/1/24 */ @@ -18,6 +18,6 @@ import java.util.Set; @Mapper public interface SysMenuMapper extends BaseMapper { - List listRoutes(); + List listRoutes(Set roles); } diff --git a/src/main/java/com/youlai/system/model/bo/RouteBO.java b/src/main/java/com/youlai/system/model/bo/RouteBO.java index 49ae0ae0..d617896c 100644 --- a/src/main/java/com/youlai/system/model/bo/RouteBO.java +++ b/src/main/java/com/youlai/system/model/bo/RouteBO.java @@ -68,11 +68,6 @@ public class RouteBO { */ private String redirect; - /** - * 拥有路由的权限 - */ - private List roles; - /** * 【目录】只有一个子路由是否始终显示(1:是 0:否) */ diff --git a/src/main/java/com/youlai/system/model/vo/RouteVO.java b/src/main/java/com/youlai/system/model/vo/RouteVO.java index 743cf1a7..18dec3b1 100644 --- a/src/main/java/com/youlai/system/model/vo/RouteVO.java +++ b/src/main/java/com/youlai/system/model/vo/RouteVO.java @@ -46,9 +46,6 @@ public class RouteVO { @Schema(description = "是否隐藏(true-是 false-否)", example = "true") private Boolean hidden; - @Schema(description = "拥有路由权限的角色编码", example = "['ADMIN','ROOT']") - private List roles; - @Schema(description = "【菜单】是否开启页面缓存", example = "true") @JsonInclude(JsonInclude.Include.NON_NULL) private Boolean keepAlive; diff --git a/src/main/java/com/youlai/system/service/SysMenuService.java b/src/main/java/com/youlai/system/service/SysMenuService.java index 2624dad7..b15d9f51 100644 --- a/src/main/java/com/youlai/system/service/SysMenuService.java +++ b/src/main/java/com/youlai/system/service/SysMenuService.java @@ -9,6 +9,7 @@ import com.youlai.system.model.vo.MenuVO; import com.youlai.system.model.vo.RouteVO; import java.util.List; +import java.util.Set; /** * 菜单业务接口 @@ -39,7 +40,7 @@ public interface SysMenuService extends IService { /** * 获取路由列表 */ - List listRoutes(); + List listRoutes( Set roles); /** * 修改菜单显示状态 diff --git a/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java b/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java index d277f694..0875466c 100644 --- a/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java +++ b/src/main/java/com/youlai/system/service/impl/SysMenuServiceImpl.java @@ -141,9 +141,13 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 获取路由列表 */ @Override - @Cacheable(cacheNames = "menu", key = "'routes'") - public List listRoutes() { - List menuList = this.baseMapper.listRoutes(); + public List listRoutes(Set roles) { + + if (CollectionUtil.isEmpty(roles)) { + return new ArrayList<>(); + } + + List menuList = this.baseMapper.listRoutes(roles); return buildRoutes(SystemConstants.ROOT_NODE_ID, menuList); } @@ -193,7 +197,6 @@ public class SysMenuServiceImpl extends ServiceImpl impl RouteVO.Meta meta = new RouteVO.Meta(); meta.setTitle(routeBO.getName()); meta.setIcon(routeBO.getIcon()); - meta.setRoles(routeBO.getRoles()); meta.setHidden(StatusEnum.DISABLE.getValue().equals(routeBO.getVisible())); // 【菜单】是否开启页面缓存 if (MenuTypeEnum.MENU.equals(routeBO.getType()) diff --git a/src/main/resources/mapper/SysMenuMapper.xml b/src/main/resources/mapper/SysMenuMapper.xml index 907054aa..e5b0ad22 100644 --- a/src/main/resources/mapper/SysMenuMapper.xml +++ b/src/main/resources/mapper/SysMenuMapper.xml @@ -20,9 +20,6 @@ - - - @@ -49,6 +46,15 @@ LEFT JOIN sys_role t3 ON t2.role_id = t3.id WHERE t1.type != '${@com.youlai.system.enums.MenuTypeEnum@BUTTON.getValue()}' + + + + AND t3.code IN + + #{role} + + + ORDER BY t1.sort