feat(menu):重构菜单路由接口支持多数据源

This commit is contained in:
Ray.Hao
2025-09-24 14:41:03 +08:00
parent 7174f0fbe6
commit a27f68e5b2
3 changed files with 45 additions and 12 deletions

View File

@@ -37,26 +37,36 @@ public class MenuController {
@Operation(summary = "菜单列表") @Operation(summary = "菜单列表")
@GetMapping @GetMapping
@Log( value = "菜单列表",module = LogModuleEnum.MENU) @Log(value = "菜单列表", module = LogModuleEnum.MENU)
public Result<List<MenuVO>> listMenus(MenuQuery queryParams) { public Result<List<MenuVO>> getMenus(MenuQuery queryParams) {
List<MenuVO> menuList = menuService.listMenus(queryParams); List<MenuVO> menuList = menuService.listMenus(queryParams);
return Result.success(menuList); return Result.success(menuList);
} }
@Operation(summary = "菜单下拉列表") @Operation(summary = "菜单下拉列表")
@GetMapping("/options") @GetMapping("/options")
public Result<List<Option<Long>>> listMenuOptions( public Result<List<Option<Long>>> getMenuOptions(
@Parameter(description = "是否只查询父级菜单") @Parameter(description = "是否只查询父级菜单")
@RequestParam(required = false, defaultValue = "false") boolean onlyParent @RequestParam(required = false, defaultValue = "false") boolean onlyParent
) { ) {
List<Option<Long>> menus = menuService.listMenuOptions(onlyParent); List<Option<Long>> menus = menuService.listMenuOptions(onlyParent);
return Result.success(menus); return Result.success(menus);
} }
@Operation(summary = "菜单路由列表") @Operation(summary = "当前用户菜单路由列表")
@GetMapping("/routes") @GetMapping("/routes")
public Result<List<RouteVO>> getCurrentUserRoutes() { public Result<List<RouteVO>> getCurrentUserRoutes() {
List<RouteVO> routeList = menuService.getCurrentUserRoutes(); List<RouteVO> routeList = menuService.listCurrentUserRoutes();
return Result.success(routeList);
}
@Operation(summary = "获取指定数据源的菜单路由列表")
@GetMapping("/routes/{datasource}")
public Result<List<RouteVO>> getCurrentUserRoutesByDatasource(
@Parameter(description = "数据源名称master(主库)、naiveui(NaiveUI数据库)、template(模板数据库)")
@PathVariable String datasource
) {
List<RouteVO> routeList = menuService.listCurrentUserRoutes(datasource);
return Result.success(routeList); return Result.success(routeList);
} }

View File

@@ -40,9 +40,16 @@ public interface MenuService extends IService<Menu> {
boolean saveMenu(MenuForm menuForm); boolean saveMenu(MenuForm menuForm);
/** /**
* 获取路由列表 * 获取当前用户的菜单路由列表
*/ */
List<RouteVO> getCurrentUserRoutes(); List<RouteVO> listCurrentUserRoutes();
/**
* 获取当前用户的菜单路由列表(指定数据源)
*
* @param datasource 数据源名称master(主库)、naiveui(NaiveUI数据库)、template(模板数据库)
*/
List<RouteVO> listCurrentUserRoutes(String datasource);
/** /**
* 修改菜单显示状态 * 修改菜单显示状态

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; 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.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -139,16 +140,16 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
} }
/** /**
* 获取菜单路由列表 * 获取当前用户的菜单路由列表
*/ */
@Override @Override
public List<RouteVO> getCurrentUserRoutes() { public List<RouteVO> listCurrentUserRoutes() {
Set<String> roleCodes = SecurityUtils.getRoles(); Set<String> roleCodes = SecurityUtils.getRoles();
if (CollectionUtil.isEmpty(roleCodes)) { if (CollectionUtil.isEmpty(roleCodes)) {
return Collections.emptyList(); return Collections.emptyList();
} }
List<Menu> menuList; List<Menu> menuList;
if (SecurityUtils.isRoot()) { if (SecurityUtils.isRoot()) {
// 超级管理员获取所有菜单 // 超级管理员获取所有菜单
@@ -162,6 +163,21 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
return buildRoutes(SystemConstants.ROOT_NODE_ID, menuList); return buildRoutes(SystemConstants.ROOT_NODE_ID, menuList);
} }
/**
* 获取当前用户的菜单路由列表(指定数据源)
*
* @param datasource 数据源名称
* - master: 主库菜单数据
* - naiveui: NaiveUI项目菜单数据
* - template: 模板项目菜单数据
*/
@Override
@DS("#datasource")
public List<RouteVO> listCurrentUserRoutes(String datasource) {
return listCurrentUserRoutes();
}
/** /**
* 递归生成菜单路由层级列表 * 递归生成菜单路由层级列表
* *