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

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

close https://github.com/elunez/eladmin/issues/449
pull/516/head
ZhengJie 2020-10-11 23:25:06 +08:00
parent 718c1460df
commit 0c6ad747dd
3 changed files with 21 additions and 9 deletions

View File

@ -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<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
@ApiOperation("查询菜单")
@PreAuthorize("@el.check('menu:list')")
@ -126,7 +139,7 @@ public class MenuController {
for (Long id : ids) {
List<MenuDto> 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);

View File

@ -59,12 +59,12 @@ public interface MenuService {
void update(Menu resources);
/**
*
* ID
* @param menuList /
* @param menuSet /
* @return /
*/
Set<Menu> getDeleteMenus(List<Menu> menuList, Set<Menu> menuSet);
Set<Menu> getChildMenus(List<Menu> menuList, Set<Menu> menuSet);
/**
*

View File

@ -186,13 +186,12 @@ public class MenuServiceImpl implements MenuService {
}
@Override
public Set<Menu> getDeleteMenus(List<Menu> menuList, Set<Menu> menuSet) {
// 递归找出待删除的菜单
for (Menu menu1 : menuList) {
menuSet.add(menu1);
List<Menu> menus = menuRepository.findByPid(menu1.getId());
public Set<Menu> getChildMenus(List<Menu> menuList, Set<Menu> menuSet) {
for (Menu menu : menuList) {
menuSet.add(menu);
List<Menu> menus = menuRepository.findByPid(menu.getId());
if(menus!=null && menus.size()!=0){
getDeleteMenus(menus, menuSet);
getChildMenus(menus, menuSet);
}
}
return menuSet;