/** * 获取父类别下面的所有子类别 * @return List<StoreGoodsCate> 返回当前类别下的所有子类别集合 */ public List<StoreGoodsCate> getCateNode(List<StoreGoodsCate> storeGoodsCates){ List<StoreGoodsCate> newCateIdNode = new ArrayList<>(); for(StoreGoodsCate cate: storeGoodsCates){ if(getCateChildren(cate).size() != 0){ //还有子类别,递归查询所有子类别 newCateIdNode.addAll(getCateNode(getCateChildren(cate))); }else{ //没有子类别,把当前节点添加到集合中 newCateIdNode.add(cate); } } return newCateIdNode; } /** * 查询当前类别的子类别集合 * 这里根据自己实际项目方法即可 * @param storeGoodsCate * @return */ public List<StoreGoodsCate> getCateChildren(StoreGoodsCate storeGoodsCate){ QueryWrapper<StoreGoodsCate> queryWrapper = new QueryWrapper<StoreGoodsCate>() .eq("pid", storeGoodsCate.getId()) .eq("is_deleted", 0); return cateService.list(queryWrapper); }
这种方法只能适用于数据量比较少的,如果数据量很大,这种查询方式会非常慢,慎用