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 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 {
|
||||||
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 {
|
||||||
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 {
|
||||||
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 {
|
||||||
}
|
}
|
||||||
|
|
||||||
@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;
|
||||||
|
|
Loading…
Reference in New Issue