mirror of https://github.com/elunez/eladmin
[代码优化](v2.6):角色管理分配菜单,菜单节点选择优化
1、选中主菜单,默认选中所有子菜单 2、取消主菜单,默认取消所有子菜单 close https://github.com/elunez/eladmin/issues/449pull/516/head
parent
718c1460df
commit
0c6ad747dd
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
/**
|
||||
* 构建菜单树
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue