Commit 0c6ad747 authored by ZhengJie's avatar ZhengJie
Browse files

[代码优化](v2.6):角色管理分配菜单,菜单节点选择优化

1、选中主菜单,默认选中所有子菜单
2、取消主菜单,默认取消所有子菜单

close https://github.com/elunez/eladmin/issues/449
parent 718c1460
...@@ -35,6 +35,7 @@ import org.springframework.validation.annotation.Validated; ...@@ -35,6 +35,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* @author Zheng Jie * @author Zheng Jie
...@@ -73,6 +74,18 @@ public class MenuController { ...@@ -73,6 +74,18 @@ public class MenuController {
return new ResponseEntity<>(menuService.getMenus(pid),HttpStatus.OK); return new ResponseEntity<>(menuService.getMenus(pid),HttpStatus.OK);
} }
@ApiOperation("根据菜单ID返回所有子节点ID,包含自身ID")
@GetMapping(value = "/child")
@PreAuthorize("@el.check('menu:list','roles:list')")
public ResponseEntity<Object> child(@RequestParam Long id){
Set<Menu> menuSet = new HashSet<>();
List<MenuDto> menuList = menuService.getMenus(id);
menuSet.add(menuService.findOne(id));
menuSet = menuService.getChildMenus(menuMapper.toEntity(menuList), menuSet);
Set<Long> ids = menuSet.stream().map(Menu::getId).collect(Collectors.toSet());
return new ResponseEntity<>(ids,HttpStatus.OK);
}
@GetMapping @GetMapping
@ApiOperation("查询菜单") @ApiOperation("查询菜单")
@PreAuthorize("@el.check('menu:list')") @PreAuthorize("@el.check('menu:list')")
...@@ -126,7 +139,7 @@ public class MenuController { ...@@ -126,7 +139,7 @@ public class MenuController {
for (Long id : ids) { for (Long id : ids) {
List<MenuDto> menuList = menuService.getMenus(id); List<MenuDto> menuList = menuService.getMenus(id);
menuSet.add(menuService.findOne(id)); menuSet.add(menuService.findOne(id));
menuSet = menuService.getDeleteMenus(menuMapper.toEntity(menuList), menuSet); menuSet = menuService.getChildMenus(menuMapper.toEntity(menuList), menuSet);
} }
menuService.delete(menuSet); menuService.delete(menuSet);
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
......
...@@ -59,12 +59,12 @@ public interface MenuService { ...@@ -59,12 +59,12 @@ public interface MenuService {
void update(Menu resources); void update(Menu resources);
/** /**
* 获取待删除的菜单 * 获取所有子节点,包含自身ID
* @param menuList / * @param menuList /
* @param menuSet / * @param menuSet /
* @return / * @return /
*/ */
Set<Menu> getDeleteMenus(List<Menu> menuList, Set<Menu> menuSet); Set<Menu> getChildMenus(List<Menu> menuList, Set<Menu> menuSet);
/** /**
* 构建菜单树 * 构建菜单树
......
...@@ -186,13 +186,12 @@ public class MenuServiceImpl implements MenuService { ...@@ -186,13 +186,12 @@ public class MenuServiceImpl implements MenuService {
} }
@Override @Override
public Set<Menu> getDeleteMenus(List<Menu> menuList, Set<Menu> menuSet) { public Set<Menu> getChildMenus(List<Menu> menuList, Set<Menu> menuSet) {
// 递归找出待删除的菜单 for (Menu menu : menuList) {
for (Menu menu1 : menuList) { menuSet.add(menu);
menuSet.add(menu1); List<Menu> menus = menuRepository.findByPid(menu.getId());
List<Menu> menus = menuRepository.findByPid(menu1.getId());
if(menus!=null && menus.size()!=0){ if(menus!=null && menus.size()!=0){
getDeleteMenus(menus, menuSet); getChildMenus(menus, menuSet);
} }
} }
return menuSet; return menuSet;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment