diff --git a/src/main/java/com/youlai/boot/system/controller/MenuController.java b/src/main/java/com/youlai/boot/system/controller/MenuController.java index f8064bc9..a7975066 100644 --- a/src/main/java/com/youlai/boot/system/controller/MenuController.java +++ b/src/main/java/com/youlai/boot/system/controller/MenuController.java @@ -37,26 +37,36 @@ public class MenuController { @Operation(summary = "菜单列表") @GetMapping - @Log( value = "菜单列表",module = LogModuleEnum.MENU) - public Result> listMenus(MenuQuery queryParams) { + @Log(value = "菜单列表", module = LogModuleEnum.MENU) + public Result> getMenus(MenuQuery queryParams) { List menuList = menuService.listMenus(queryParams); return Result.success(menuList); } @Operation(summary = "菜单下拉列表") @GetMapping("/options") - public Result>> listMenuOptions( - @Parameter(description = "是否只查询父级菜单") - @RequestParam(required = false, defaultValue = "false") boolean onlyParent + public Result>> getMenuOptions( + @Parameter(description = "是否只查询父级菜单") + @RequestParam(required = false, defaultValue = "false") boolean onlyParent ) { List> menus = menuService.listMenuOptions(onlyParent); return Result.success(menus); } - @Operation(summary = "菜单路由列表") + @Operation(summary = "当前用户菜单路由列表") @GetMapping("/routes") public Result> getCurrentUserRoutes() { - List routeList = menuService.getCurrentUserRoutes(); + List routeList = menuService.listCurrentUserRoutes(); + return Result.success(routeList); + } + + @Operation(summary = "获取指定数据源的菜单路由列表") + @GetMapping("/routes/{datasource}") + public Result> getCurrentUserRoutesByDatasource( + @Parameter(description = "数据源名称,如:master(主库)、naiveui(NaiveUI数据库)、template(模板数据库)") + @PathVariable String datasource + ) { + List routeList = menuService.listCurrentUserRoutes(datasource); return Result.success(routeList); } diff --git a/src/main/java/com/youlai/boot/system/service/MenuService.java b/src/main/java/com/youlai/boot/system/service/MenuService.java index 41ba6f15..eb0ba54b 100644 --- a/src/main/java/com/youlai/boot/system/service/MenuService.java +++ b/src/main/java/com/youlai/boot/system/service/MenuService.java @@ -40,9 +40,16 @@ public interface MenuService extends IService { boolean saveMenu(MenuForm menuForm); /** - * 获取路由列表 + * 获取当前用户的菜单路由列表 */ - List getCurrentUserRoutes(); + List listCurrentUserRoutes(); + + /** + * 获取当前用户的菜单路由列表(指定数据源) + * + * @param datasource 数据源名称,如:master(主库)、naiveui(NaiveUI数据库)、template(模板数据库) + */ + List listCurrentUserRoutes(String datasource); /** * 修改菜单显示状态 diff --git a/src/main/java/com/youlai/boot/system/service/impl/MenuServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/MenuServiceImpl.java index 7acfc8f9..e6cda9c3 100644 --- a/src/main/java/com/youlai/boot/system/service/impl/MenuServiceImpl.java +++ b/src/main/java/com/youlai/boot/system/service/impl/MenuServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; +import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -139,16 +140,16 @@ public class MenuServiceImpl extends ServiceImpl implements Me } /** - * 获取菜单路由列表 + * 获取当前用户的菜单路由列表 */ @Override - public List getCurrentUserRoutes() { - + public List listCurrentUserRoutes() { Set roleCodes = SecurityUtils.getRoles(); if (CollectionUtil.isEmpty(roleCodes)) { return Collections.emptyList(); } + List menuList; if (SecurityUtils.isRoot()) { // 超级管理员获取所有菜单 @@ -162,6 +163,21 @@ public class MenuServiceImpl extends ServiceImpl implements Me return buildRoutes(SystemConstants.ROOT_NODE_ID, menuList); } + /** + * 获取当前用户的菜单路由列表(指定数据源) + * + * @param datasource 数据源名称 + * - master: 主库菜单数据 + * - naiveui: NaiveUI项目菜单数据 + * - template: 模板项目菜单数据 + */ + @Override + @DS("#datasource") + public List listCurrentUserRoutes(String datasource) { + return listCurrentUserRoutes(); + } + + /** * 递归生成菜单路由层级列表 *