Skip to content

Commit 484785c

Browse files
committed
代码优化,避免【菜单、部门】移动节点时出现PID数据环形问题
close elunez#803
1 parent 3aab156 commit 484785c

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.springframework.web.bind.annotation.*;
3535
import javax.servlet.http.HttpServletResponse;
3636
import java.util.*;
37+
import java.util.stream.Collectors;
3738

3839
/**
3940
* @author Zheng Jie
@@ -71,8 +72,15 @@ public ResponseEntity<Object> getDeptSuperior(@RequestBody List<Long> ids) {
7172
for (Long id : ids) {
7273
DeptDto deptDto = deptService.findById(id);
7374
List<DeptDto> depts = deptService.getSuperior(deptDto, new ArrayList<>());
75+
for (DeptDto dept : depts) {
76+
if(dept.getId().equals(deptDto.getPid())) {
77+
dept.setSubCount(dept.getSubCount() - 1);
78+
}
79+
}
7480
deptSet.addAll(depts);
7581
}
82+
// 编辑部门时不显示自己以及自己下级的数据,避免出现PID数据环形问题
83+
deptSet = deptSet.stream().filter(i -> !ids.contains(i.getId())).collect(Collectors.toSet());
7684
return new ResponseEntity<>(deptService.buildTree(new ArrayList<>(deptSet)),HttpStatus.OK);
7785
}
7886

eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import me.zhengjie.exception.BadRequestException;
2525
import me.zhengjie.modules.system.domain.vo.MenuVo;
2626
import me.zhengjie.modules.system.service.MenuService;
27+
import me.zhengjie.modules.system.service.dto.DeptDto;
2728
import me.zhengjie.modules.system.service.dto.MenuDto;
2829
import me.zhengjie.modules.system.service.dto.MenuQueryCriteria;
2930
import me.zhengjie.modules.system.service.mapstruct.MenuMapper;
@@ -43,7 +44,6 @@
4344
* @author Zheng Jie
4445
* @date 2018-12-03
4546
*/
46-
4747
@RestController
4848
@RequiredArgsConstructor
4949
@Api(tags = "系统:菜单管理")
@@ -104,8 +104,16 @@ public ResponseEntity<List<MenuDto>> getMenuSuperior(@RequestBody List<Long> ids
104104
if(CollectionUtil.isNotEmpty(ids)){
105105
for (Long id : ids) {
106106
MenuDto menuDto = menuService.findById(id);
107-
menuDtos.addAll(menuService.getSuperior(menuDto, new ArrayList<>()));
107+
List<MenuDto> menuDtoList = menuService.getSuperior(menuDto, new ArrayList<>());
108+
for (MenuDto menu : menuDtoList) {
109+
if(menu.getId().equals(menuDto.getPid())) {
110+
menu.setSubCount(menu.getSubCount() - 1);
111+
}
112+
}
113+
menuDtos.addAll(menuDtoList);
108114
}
115+
// 编辑菜单时不显示自己以及自己下级的数据,避免出现PID数据环形问题
116+
menuDtos = menuDtos.stream().filter(i -> !ids.contains(i.getId())).collect(Collectors.toSet());
109117
return new ResponseEntity<>(menuService.buildTree(new ArrayList<>(menuDtos)),HttpStatus.OK);
110118
}
111119
return new ResponseEntity<>(menuService.getMenus(null),HttpStatus.OK);

0 commit comments

Comments
 (0)