递归组装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;
    }

页面接收到的数据效果

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

猜你喜欢

转载自blog.csdn.net/qq_39940205/article/details/84645611
今日推荐