/**
* @Description: 通过类型获取对应的权限菜单 web:web端,app:手机端
* @Param:
* @return:
* @Author: hanyi
* @Date: 2019/10/10 001018:13
*/
@Override
public List<MenuVo> getByTypeList(String type, String userId) {
List<MenuVo> menuList = menuMapper.getByTypeList(type, userId);
//找到所有的1级菜单
List<MenuVo> mList = new ArrayList<>();
for (int i = 0; i < menuList.size(); i++) {
if ("0".equals(menuList.get(i).getParentId()) || "1".equals(menuList.get(i).getParentId())) {
mList.add(menuList.get(i));
}
}
//为一级菜单设置子菜单准备递归
for (MenuVo menu:mList) {
//获取父菜单下所有子菜单调用getChildList
List<MenuVo> childList = TreeUtil.getChildList(String.valueOf(menu.getId()),menuList);
menu.setChildren(childList);
}
return mList;
}
/**
* @Description: 菜单递归===需要传入一级菜单和一级菜单的id
* @Param:
* @return:
* @Author: hanyi
* @Date: 2019/10/11 001111:04
*/
public static List<MenuVo> getChildList(String id, List<MenuVo> menuList){
//构建子菜单
List<MenuVo> childList = new ArrayList<>();
//遍历传入的list
for (MenuVo menu:menuList) {
//所有菜单的父id与传入的根节点id比较,若相等则为该级菜单的子菜单
if (String.valueOf(menu.getParentId()).equals(id)){
childList.add(menu);
}
}
//递归
for (MenuVo m:childList) {
m.setChildren(getChildList(String.valueOf(m.getId()),menuList));
}
if (childList.size() == 0){
return null;
}
return childList;
}
最后返回结果集
{
[
{
"id": "2018",
"number": "007",
"name": "权限管理",
"menuType": "1",
"url": null,
"parentId": "0",
"sort": 7,
"children": [
{
"id": "2020",
"number": "0072",
"name": "角色管理",
"menuType": "1",
"url": "/role/manage",
"parentId": "2018",
"sort": 2,
"children": [
{
"id": "2032",
"number": "20320",
"name": "新增",
"menuType": "0",
"url": null,
"parentId": "2020",
"sort": 1,
"children": null
}
]
},
{
"id": "2019",
"number": "0071",
"name": "组织单位管理",
"menuType": "1",
"url": "/org/manage",
"parentId": "2018",
"sort": 1,
"children": [
{
"id": "2030",
"number": "0002030",
"name": "删除",
"menuType": "0",
"url": "",
"parentId": "2019",
"sort": 2,
"children": null
},
{
"id": "2031",
"number": "222031",
"name": "新增",
"menuType": "0",
"url": "",
"parentId": "2019",
"sort": 1,
"children": null
}
]
}
]
}
],
}