From 0c6ad747ddc10fc7f2d25737c837b44cd1c67833 Mon Sep 17 00:00:00 2001 From: ZhengJie <201507802@qq.com> Date: Sun, 11 Oct 2020 23:25:06 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96](v2.6)?= =?UTF-8?q?=EF=BC=9A=E8=A7=92=E8=89=B2=E7=AE=A1=E7=90=86=E5=88=86=E9=85=8D?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=EF=BC=8C=E8=8F=9C=E5=8D=95=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E4=BC=98=E5=8C=96=201=E3=80=81=E9=80=89?= =?UTF-8?q?=E4=B8=AD=E4=B8=BB=E8=8F=9C=E5=8D=95=EF=BC=8C=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E9=80=89=E4=B8=AD=E6=89=80=E6=9C=89=E5=AD=90=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=202=E3=80=81=E5=8F=96=E6=B6=88=E4=B8=BB=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=EF=BC=8C=E9=BB=98=E8=AE=A4=E5=8F=96=E6=B6=88=E6=89=80=E6=9C=89?= =?UTF-8?q?=E5=AD=90=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close https://github.com/elunez/eladmin/issues/449 --- .../modules/system/rest/MenuController.java | 15 ++++++++++++++- .../modules/system/service/MenuService.java | 4 ++-- .../system/service/impl/MenuServiceImpl.java | 11 +++++------ 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java index ede4822b..d5461a2f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java @@ -35,6 +35,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.*; +import java.util.stream.Collectors; /** * @author Zheng Jie @@ -73,6 +74,18 @@ public class MenuController { return new ResponseEntity<>(menuService.getMenus(pid),HttpStatus.OK); } + @ApiOperation("根据菜单ID返回所有子节点ID,包含自身ID") + @GetMapping(value = "/child") + @PreAuthorize("@el.check('menu:list','roles:list')") + public ResponseEntity child(@RequestParam Long id){ + Set menuSet = new HashSet<>(); + List menuList = menuService.getMenus(id); + menuSet.add(menuService.findOne(id)); + menuSet = menuService.getChildMenus(menuMapper.toEntity(menuList), menuSet); + Set ids = menuSet.stream().map(Menu::getId).collect(Collectors.toSet()); + return new ResponseEntity<>(ids,HttpStatus.OK); + } + @GetMapping @ApiOperation("查询菜单") @PreAuthorize("@el.check('menu:list')") @@ -126,7 +139,7 @@ public class MenuController { for (Long id : ids) { List menuList = menuService.getMenus(id); menuSet.add(menuService.findOne(id)); - menuSet = menuService.getDeleteMenus(menuMapper.toEntity(menuList), menuSet); + menuSet = menuService.getChildMenus(menuMapper.toEntity(menuList), menuSet); } menuService.delete(menuSet); return new ResponseEntity<>(HttpStatus.OK); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java index e0c9b908..ea7b349f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java @@ -59,12 +59,12 @@ public interface MenuService { void update(Menu resources); /** - * 获取待删除的菜单 + * 获取所有子节点,包含自身ID * @param menuList / * @param menuSet / * @return / */ - Set getDeleteMenus(List menuList, Set menuSet); + Set getChildMenus(List menuList, Set menuSet); /** * 构建菜单树 diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java index f0ce9f71..1e3e257f 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java @@ -186,13 +186,12 @@ public class MenuServiceImpl implements MenuService { } @Override - public Set getDeleteMenus(List menuList, Set menuSet) { - // 递归找出待删除的菜单 - for (Menu menu1 : menuList) { - menuSet.add(menu1); - List menus = menuRepository.findByPid(menu1.getId()); + public Set getChildMenus(List menuList, Set menuSet) { + for (Menu menu : menuList) { + menuSet.add(menu); + List menus = menuRepository.findByPid(menu.getId()); if(menus!=null && menus.size()!=0){ - getDeleteMenus(menus, menuSet); + getChildMenus(menus, menuSet); } } return menuSet;