File tree Expand file tree Collapse file tree
application/src/main/java/top/cadecode/uniboot/controller/system Expand file tree Collapse file tree Original file line number Diff line number Diff line change 2121
2222import javax .validation .Valid ;
2323import javax .validation .constraints .NotEmpty ;
24+ import java .util .ArrayList ;
2425import java .util .List ;
26+ import java .util .stream .Collectors ;
2527
2628import 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 );
You can’t perform that action at this time.
0 commit comments