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 = "菜单列表")
@GetMapping
@Log( value = "菜单列表",module = LogModuleEnum.MENU)
public Result<List<MenuVO>> listMenus(MenuQuery queryParams) {
@Log(value = "菜单列表", module = LogModuleEnum.MENU)
public Result<List<MenuVO>> getMenus(MenuQuery queryParams) {
List<MenuVO> menuList = menuService.listMenus(queryParams);
return Result.success(menuList);
}
@Operation(summary = "菜单下拉列表")
@GetMapping("/options")
public Result<List<Option<Long>>> listMenuOptions(
@Parameter(description = "是否只查询父级菜单")
@RequestParam(required = false, defaultValue = "false") boolean onlyParent
public Result<List<Option<Long>>> getMenuOptions(
@Parameter(description = "是否只查询父级菜单")
@RequestParam(required = false, defaultValue = "false") boolean onlyParent
) {
List<Option<Long>> menus = menuService.listMenuOptions(onlyParent);
return Result.success(menus);
}
@Operation(summary = "菜单路由列表")
@Operation(summary = "当前用户菜单路由列表")
@GetMapping("/routes")
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);
}

View File

@@ -40,9 +40,16 @@ public interface MenuService extends IService<Menu> {
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.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<MenuMapper, Menu> implements Me
}
/**
* 获取菜单路由列表
* 获取当前用户的菜单路由列表
*/
@Override
public List<RouteVO> getCurrentUserRoutes() {
public List<RouteVO> listCurrentUserRoutes() {
Set<String> roleCodes = SecurityUtils.getRoles();
if (CollectionUtil.isEmpty(roleCodes)) {
return Collections.emptyList();
}
List<Menu> menuList;
if (SecurityUtils.isRoot()) {
// 超级管理员获取所有菜单
@@ -162,6 +163,21 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
return buildRoutes(SystemConstants.ROOT_NODE_ID, menuList);
}
/**
* 获取当前用户的菜单路由列表(指定数据源)
*
* @param datasource 数据源名称
* - master: 主库菜单数据
* - naiveui: NaiveUI项目菜单数据
* - template: 模板项目菜单数据
*/
@Override
@DS("#datasource")
public List<RouteVO> listCurrentUserRoutes(String datasource) {
return listCurrentUserRoutes();
}
/**
* 递归生成菜单路由层级列表
*