菜单递归

/**
 * @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
            }
          ]
        }
      ]
    }
  ],
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值