Skip to content

Commit a9025a7

Browse files
committed
feat: 删除父级菜单时删除下面子菜单
1 parent c680261 commit a9025a7

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

application/src/main/java/top/cadecode/uniboot/controller/system/SysMenuController.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121

2222
import javax.validation.Valid;
2323
import javax.validation.constraints.NotEmpty;
24+
import java.util.ArrayList;
2425
import java.util.List;
26+
import java.util.stream.Collectors;
2527

2628
import static top.cadecode.uniboot.system.request.SysMenuRequest.*;
2729

@@ -77,6 +79,19 @@ public boolean add(@RequestBody @Valid SysMenuAddRequest request) {
7779
@PostMapping("delete")
7880
@Transactional(rollbackFor = Exception.class)
7981
public boolean delete(@RequestBody @NotEmpty List<Long> menuIdList) {
82+
List<Long> assumedParentList = new ArrayList<>(menuIdList);
83+
while (!assumedParentList.isEmpty()) {
84+
List<SysMenu> children = sysMenuService.lambdaQuery()
85+
.select(SysMenu::getId, SysMenu::getLeafFlag).in(SysMenu::getParentId, assumedParentList)
86+
.list();
87+
// 加入删除名单
88+
menuIdList.addAll(children.stream().map(SysMenu::getId).collect(Collectors.toList()));
89+
// 非页面的菜单 id 再次查询
90+
assumedParentList = children.stream()
91+
.filter(o -> !o.getLeafFlag())
92+
.map(SysMenu::getId)
93+
.collect(Collectors.toList());
94+
}
8095
// 清理菜单角色绑定关系
8196
sysRoleService.removeRoleMenuByMenuIds(menuIdList);
8297
return sysMenuService.removeBatchByIds(menuIdList);

0 commit comments

Comments
 (0)