递归组装Cascader 级联选择器和Tree 树形控件结构的数据

以商品分类表为例,重点看分类ID和父分类ID

    public List<Map<String,Object>> getGoodsCategoryTree() {
        //1.获取所有商品分类,条件:category_id!=0(0为顶级菜单的父类ID)和disabled=0(删除标记为正常)
        List<GoodsCategoryEntity> goodsCategoryList = this.baseMapper.selectList(new EntityWrapper<GoodsCategoryEntity>()
                .ne("category_id", 0)
                .eq("disabled", 0));
        //2.调用生成tree结构数据的方法,参数是所有商品分类和顶级菜单父类ID
        List<Map<String,Object>> categoryTree = categoryTreeHandle(goodsCategoryList, 0);
        return categoryTree;
    }
    private List<Map<String,Object>> categoryTreeHandle(List<GoodsCategoryEntity> categoryEntityList, int pid) {
        List<Map<String,Object>> resultList = new ArrayList<>();

        //获取顶级元素集合
        Integer parentId;
        for (GoodsCategoryEntity goodsCategory : categoryEntityList) {
            parentId = goodsCategory.getParentCategoryId();
            if (pid == parentId) {
                Map map = new HashMap();
                map.put("label", goodsCategory.getCategoryName());
                map.put("value", goodsCategory.getCategoryId());
                resultList.add(map);
            }
        }

        //获取每个顶层元素的子数据集合
        for (Map map : resultList) {
            int value = Integer.parseInt(map.get("value").toString());
            List<Map<String,Object>> temp = categoryTreeHandle(categoryEntityList, value);
            if (temp.size() > 0) {
                map.put("children", temp);
            }
        }
        return resultList;
    }

页面接收到的数据效果

主要是应用递归遍历出父节点下的所有子节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值