递归算法 tree型菜单
public List<SysResource> routingHop() {
List<SysResource> sysResources = this.selectList(new EntityWrapper<SysResource>().eq("enable_",0).isNull("parent_id").orderBy("level",true));
List<SysResource> resourceList = new LinkedList<>();
resourceList = treeChildren(sysResources);
return resourceList;
}
/**
* 递归子查询 树形菜单
* @param lists
* @return
*/
public List<SysResource> treeChildren(List<SysResource> lists){
lists.forEach(item->{
List<SysResource> resourceList = this.selectList(new EntityWrapper<SysResource>().eq("parent_id",item.getId()).and().eq("enable_",0));
if(resourceList.size()>0){
//如果存在子数据
item.setChildren(resourceList);
treeChildren(resourceList); //重新调取获取子数据
}
});
return lists;
}
先查询顶层数据并排序,循环遍历顶层数据,用顶层数据的id作为查询条件去查他的子列表,如果存在子列表则把子列表作为查询条件再次进行递归查询,最后结果如下:
{
"resultCode": "10000",
"desc": "success",
"data": [
{
"id": "0000000",
"alias": "manageUser",
"name": "后台管理用户模块",
"url": "/user",
"enable": 0,
"icon": "el-icon-user",
"level": 0,
"type": null,
"parentId": null,
"createTime": null,
"createId": null,
"updateTime": null,
"updateId": null,
"useFlag": 1,
"delFlag": null,
"children": [
{
"id": "000000000000000000001",
"alias": "userInfo",
"name": "用户信息",
"url": "/userInfo",
"enable": 0,
"icon": "el-icon-menu",
"level": 1,
"type": null,
"parentId": "0000000",
"createTime": "2021-07-27T10:16:24.000+0000",
"createId": null,
"updateTime": null,
"updateId": null,
"useFlag": 1,
"delFlag": null,
"children": [
{
"id": "000000000000000000002",
"alias": "userDetail",
"name": "用户详情",
"url": "/userDetail",
"enable": 0,
"icon": "el-icon-menu",
"level": null,
"type": null,
"parentId": "000000000000000000001",
"createTime": null,
"createId": null,
"updateTime": null,
"updateId": null,
"useFlag": 1,
"delFlag": null,
"children": null
}
]
}
]
}
],
"model": null
}