栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java实现三级菜单展示(递归)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java实现三级菜单展示(递归)

获取子菜单方法

    private List getChild(Long id,List menus){
        List childList = new ArrayList<>();
        for (Menu menu : menus) {
            if(menu.getPid().equals(id)){
                //当菜单范围内的父id等于传入的id,获取该id的所有子列表
                childList.add(menu);
            }
        }
        for (Menu menu : childList) {
            //当上面循环语句查询不到子菜单,长度为0,自然也就不会递归调用了
            //将该id的子菜单便利,通过递归调用,给每一个子菜单赋值子菜单
            List child = getChild(menu.getId(), menus);
            menu.setSubMenu(child);
        }
        if(childList.size()==0){
            //子菜单的长度为0,返回null,null不会被jackson解析
            return  null;
        }

        return  childList;

    }

 获取树状的菜单结构

  @Override
    public List findTreeMenu(){
        List menus = findAllMenu();  //先获取你想要在哪些菜单范围内搜索

   
        List rootMenus = new ArrayList<>();
        for (Menu menu : menus) {
        //从最上级菜单开始展示
            if(menu.getPid().equals(0L)){
                rootMenus.add(menu);
            }
        }

        for (Menu rootMenu : rootMenus) {
            //把最上级菜单的子菜单获取到,子菜单的子菜单也会获取到(目前是三层,由于是递归调用,100 
           层也没问题)
            List child = getChild(rootMenu.getId(), menus);
            rootMenu.setSubMenu(child);
        }
        return rootMenus;

    }

利用postman测接口,返回数据如下

[
    {
        "id": 1,
        "menuname": "B2C销售管理",
        "pid": 0,
        "url": "/qwe",
        "subMenu": [
            {
                "id": 1001,
                "menuname": "订单显示",
                "pid": 1,
                "url": "/fsd",
                "subMenu": [
                    {
                        "id": 1001001,
                        "menuname": "订单添加",
                        "pid": 1001,
                        "url": "/fg"
                    }
                ]
            },
            {
                "id": 1002,
                "menuname": "销售出库单",
                "pid": 1,
                "url": "/gk",
                "subMenu": [
                    {
                        "id": 1002001,
                        "menuname": "销售出库单修改",
                        "pid": 1002,
                        "url": "/gh"
                    }
                ]
            },
            {
                "id": 1003,
                "menuname": "销售退货单",
                "pid": 1,
                "url": "/jmf",
                "subMenu": [
                    {
                        "id": 1003001,
                        "menuname": "销售退货单修改",
                        "pid": 1003,
                        "url": "/il,.j"
                    }
                ]
            },
            {
                "id": 1004,
                "menuname": "网店订单导入",
                "pid": 1,
                "url": "/dh",
                "subMenu": [
                    {
                        "id": 1004001,
                        "menuname": "网店订单导入修改",
                        "pid": 1004,
                        "url": "/gfjnf"
                    }
                ]
            }
        ]
    },
    {
        "id": 2,
        "menuname": "商品与赠品管理",
        "pid": 0,
        "url": "/asd",
        "subMenu": [
            {
                "id": 2001,
                "menuname": "商品管理",
                "pid": 2,
                "url": "/fhj",
                "subMenu": [
                    {
                        "id": 2001001,
                        "menuname": "商品管理添加",
                        "pid": 2001,
                        "url": "/ghj"
                    }
                ]
            },
            {
                "id": 2002,
                "menuname": "商品品牌管理",
                "pid": 2,
                "url": "/dahj",
                "subMenu": [
                    {
                        "id": 2002001,
                        "menuname": " 商品品牌管理添加",
                        "pid": 2002,
                        "url": "/ghkjghkj"
                    }
                ]
            },
            {
                "id": 2003,
                "menuname": "商品类型管理",
                "pid": 2,
                "url": "/drhfjn",
                "subMenu": [
                    {
                        "id": 2003001,
                        "menuname": "商品类型管理添加",
                        "pid": 2003,
                        "url": "/fghf"
                    }
                ]
            },
            {
                "id": 2004,
                "menuname": "赠品管理",
                "pid": 2,
                "url": "/tmkt",
                "subMenu": [
                    {
                        "id": 2004001,
                        "menuname": "添加赠品",
                        "pid": 2004,
                        "url": "/iu"
                    },
                    {
                        "id": 2004002,
                        "menuname": "详情(查询)",
                        "pid": 2004,
                        "url": "/fhg"
                    },
                    {
                        "id": 2004003,
                        "menuname": "修改数量",
                        "pid": 2004,
                        "url": "/kl"
                    },
                    {
                        "id": 2004004,
                        "menuname": "商品转赠品",
                        "pid": 2004,
                        "url": "/goodsToPresent"
                    },
                    {
                        "id": 2004005,
                        "menuname": "赠品转商品",
                        "pid": 2004,
                        "url": "/qwde"
                    },
                    {
                        "id": 2004006,
                        "menuname": "审核",
                        "pid": 2004,
                        "url": "/qwfqwf"
                    }
                ]
            },
            {
                "id": 2005,
                "menuname": "促销活动申请与审批",
                "pid": 2,
                "url": "/gfh",
                "subMenu": [
                    {
                        "id": 2005001,
                        "menuname": "促销活动申请与审批添加",
                        "pid": 2005,
                        "url": "/qwdeq"
                    }
                ]
            },
            {
                "id": 2006,
                "menuname": "价格调整申请与审批",
                "pid": 2,
                "url": "/dhdtf",
                "subMenu": [
                    {
                        "id": 2006001,
                        "menuname": " 价格调整申请与审批添加",
                        "pid": 2006,
                        "url": "/cvbnv"
                    }
                ]
            }
        ]
    },
    {
        "id": 3,
        "menuname": "售后管理",
        "pid": 0,
        "url": "/zxc",
        "subMenu": [
            {
                "id": 3001,
                "menuname": "返厂出入库管理",
                "pid": 3,
                "url": "/fgjnf",
                "subMenu": [
                    {
                        "id": 3001001,
                        "menuname": " 返厂出入库管理添加",
                        "pid": 3001,
                        "url": "/cbvf"
                    }
                ]
            },
            {
                "id": 3002,
                "menuname": "退换货申请管理",
                "pid": 3,
                "url": "/fhtgfh",
                "subMenu": [
                    {
                        "id": 3002001,
                        "menuname": " 退换货申请管理添加",
                        "pid": 3002,
                        "url": "/cvbcv"
                    }
                ]
            },
            {
                "id": 3003,
                "menuname": "申诉管理",
                "pid": 3,
                "url": "/ghmgh",
                "subMenu": [
                    {
                        "id": 3003001,
                        "menuname": "申诉管理添加",
                        "pid": 3003,
                        "url": "/ghk"
                    }
                ]
            }
        ]
    },
    {
        "id": 4,
        "menuname": "系统管理",
        "pid": 0,
        "url": "/rty",
        "subMenu": [
            {
                "id": 4001,
                "menuname": "用户管理(账号管理)",
                "pid": 4,
                "url": "/fgjn",
                "subMenu": [
                    {
                        "id": 4001001,
                        "menuname": "添加用户",
                        "pid": 4001,
                        "url": "lkjh"
                    },
                    {
                        "id": 4001002,
                        "menuname": "用户详情",
                        "pid": 4001,
                        "url": "/userManage"
                    },
                    {
                        "id": 4001003,
                        "menuname": "用户修改",
                        "pid": 4001,
                        "url": "/dfbh"
                    }
                ]
            },
            {
                "id": 4002,
                "menuname": "角色管理(职位管理)",
                "pid": 4,
                "url": "/fgjj",
                "subMenu": [
                    {
                        "id": 4002001,
                        "menuname": "添加角色",
                        "pid": 4002,
                        "url": "/ijughf"
                    },
                    {
                        "id": 4002002,
                        "menuname": "角色详情",
                        "pid": 4002,
                        "url": "/ujyhgfb"
                    },
                    {
                        "id": 4002003,
                        "menuname": "角色修改",
                        "pid": 4002,
                        "url": "/ujyhgf"
                    }
                ]
            },
            {
                "id": 4003,
                "menuname": "权限管理",
                "pid": 4,
                "url": "/fhn",
                "subMenu": [
                    {
                        "id": 4003001,
                        "menuname": "添加权限",
                        "pid": 4003,
                        "url": "/fthgb"
                    },
                    {
                        "id": 4003002,
                        "menuname": "权限相亲",
                        "pid": 4003,
                        "url": "/dfg"
                    },
                    {
                        "id": 4003003,
                        "menuname": "权限修改",
                        "pid": 4003,
                        "url": "/yhkumj"
                    },
                    {
                        "id": 4003004,
                        "menuname": "权限报表",
                        "pid": 4003,
                        "url": "/wazs"
                    }
                ]
            },
            {
                "id": 4004,
                "menuname": "日志管理",
                "pid": 4,
                "url": "/fgngf",
                "subMenu": [
                    {
                        "id": 4004001,
                        "menuname": "用户日志",
                        "pid": 4004,
                        "url": "/logManage"
                    },
                    {
                        "id": 4004002,
                        "menuname": "商品日志",
                        "pid": 4004,
                        "url": "/asf"
                    }
                ]
            }
        ]
    }
]

实体类设计如下


import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

import java.util.List;

@Data
@TableName("t_menu")
@JsonInclude(JsonInclude.Include.NON_NULL)// 不是null的数据才会被携带到返回数据中
public class Menu {

    private Long id;
    private String menuname;
    private Long pid;
    private String url;
    @TableField(exist = false)
    private List subMenu;

}

数据库设计如下

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/591335.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号