diff --git a/youlai-admin/admin-boot/src/main/java/com/youlai/admin/controller/MenuController.java b/youlai-admin/admin-boot/src/main/java/com/youlai/admin/controller/MenuController.java index 4f22e5b9883b1dd62952b218d362693c70b0f3cd..83a08582179b33257a0264f2e678c207a353815c 100644 --- a/youlai-admin/admin-boot/src/main/java/com/youlai/admin/controller/MenuController.java +++ b/youlai-admin/admin-boot/src/main/java/com/youlai/admin/controller/MenuController.java @@ -5,6 +5,7 @@ import com.youlai.admin.pojo.entity.SysMenu; import com.youlai.admin.pojo.vo.MenuVO; import com.youlai.admin.pojo.vo.RouteVO; import com.youlai.admin.pojo.vo.SelectVO; +import com.youlai.admin.pojo.vo.TreeSelectVO; import com.youlai.admin.service.ISysMenuService; import com.youlai.admin.service.ISysPermissionService; import com.youlai.common.result.Result; @@ -38,7 +39,7 @@ public class MenuController { @ApiOperation(value = "菜单表格(Table)层级列表") @ApiImplicitParam(name = "name", value = "菜单名称", paramType = "query", dataType = "String") @GetMapping("/table") - public Result getMenuTableList(String name) { + public Result getTableList(String name) { List menuList = menuService.listTable(name); return Result.success(menuList); } @@ -46,19 +47,26 @@ public class MenuController { @ApiOperation(value = "菜单下拉(Select)层级列表") @GetMapping("/select") - public Result getMenuSelectList() { + public Result getSelectList() { List menuList = menuService.listSelect(); return Result.success(menuList); } + @ApiOperation(value = "菜单下拉(TreeSelect)层级列表") + @GetMapping("/tree-select") + public Result getTreeSelectList() { + List menuList = menuService.listTreeSelect(); + return Result.success(menuList); + } + @ApiOperation(value = "菜单路由(Route)层级列表") @GetMapping("/route") - public Result getMenuRouteList() { - log.info("加载菜单路由"); - List menuList = menuService.listRoute(); - return Result.success(menuList); + public Result getRouteList() { + List routeList = menuService.listRoute(); + return Result.success(routeList); } + @ApiOperation(value = "菜单详情") @ApiImplicitParam(name = "id", value = "菜单id", required = true, paramType = "path", dataType = "Long") @GetMapping("/{id}") diff --git a/youlai-admin/admin-boot/src/main/java/com/youlai/admin/service/ISysMenuService.java b/youlai-admin/admin-boot/src/main/java/com/youlai/admin/service/ISysMenuService.java index 3de32069d610a4d5e7ec9688a285a65ba316fa17..88c954e8d710d684be9a7b667b70ab8e4f6aab87 100644 --- a/youlai-admin/admin-boot/src/main/java/com/youlai/admin/service/ISysMenuService.java +++ b/youlai-admin/admin-boot/src/main/java/com/youlai/admin/service/ISysMenuService.java @@ -6,11 +6,12 @@ import com.youlai.admin.pojo.entity.SysMenu; import com.youlai.admin.pojo.vo.MenuVO; import com.youlai.admin.pojo.vo.RouteVO; import com.youlai.admin.pojo.vo.SelectVO; +import com.youlai.admin.pojo.vo.TreeSelectVO; import java.util.List; /** - * @author haoxr + * @author xianrui * @date 2020-11-06 */ public interface ISysMenuService extends IService { @@ -39,4 +40,11 @@ public interface ISysMenuService extends IService { * @return */ List listRoute(); + + /** + * 菜单下拉(TreeSelect)层级列表 + * + * @return + */ + List listTreeSelect(); } diff --git a/youlai-admin/admin-boot/src/main/java/com/youlai/admin/service/impl/SysMenuServiceImpl.java b/youlai-admin/admin-boot/src/main/java/com/youlai/admin/service/impl/SysMenuServiceImpl.java index 552f71f34c683d8dbd90b5f5d86eb00a0f2179a2..4010f59d061b54d8aae8090473396efc086368be 100644 --- a/youlai-admin/admin-boot/src/main/java/com/youlai/admin/service/impl/SysMenuServiceImpl.java +++ b/youlai-admin/admin-boot/src/main/java/com/youlai/admin/service/impl/SysMenuServiceImpl.java @@ -11,13 +11,13 @@ import com.youlai.admin.pojo.vo.MenuVO; import com.youlai.admin.pojo.vo.RouteVO; import com.youlai.admin.mapper.SysMenuMapper; import com.youlai.admin.pojo.vo.SelectVO; +import com.youlai.admin.pojo.vo.TreeSelectVO; import com.youlai.admin.service.ISysMenuService; import com.youlai.common.constant.GlobalConstants; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import java.util.ArrayList; -import java.util.Comparator; import java.util.List; import java.util.Optional; @@ -129,6 +129,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl } + /** * 递归生成菜单路由层级列表 * @@ -160,4 +161,41 @@ public class SysMenuServiceImpl extends ServiceImpl impl return list; } + + /** + * 菜单下拉(TreeSelect)层级列表 + * + * @return + */ + @Override + public List listTreeSelect() { + List menuList = this.list(new LambdaQueryWrapper().orderByAsc(SysMenu::getSort)); + List menuSelectList = recursionTreeSelectList(SystemConstants.ROOT_MENU_ID, menuList); + return menuSelectList; + } + + + /** + * 递归生成菜单下拉(TreeSelect)层级列表 + * + * @param parentId 父级ID + * @param menuList 菜单列表 + * @return + */ + private static List recursionTreeSelectList(Long parentId, List menuList) { + List menuSelectList = new ArrayList<>(); + Optional.ofNullable(menuList).orElse(new ArrayList<>()) + .stream() + .filter(menu -> menu.getParentId().equals(parentId)) + .forEach(menu -> { + TreeSelectVO treeSelectVO = new TreeSelectVO(menu.getId(), menu.getName()); + List children = recursionTreeSelectList(menu.getId(), menuList); + if (CollectionUtil.isNotEmpty(children)) { + treeSelectVO.setChildren(children); + } + menuSelectList.add(treeSelectVO); + }); + return menuSelectList; + } + }