数据库结构
/**
* 查询类目
*
* @param dto
* @return
*/
@Override
public ResultMessage queryCategory(PublishCategoryTypeDto dto) {
if (dto == null || StringUtils.isEmpty(dto.getType())) {
return ResultUtil.error(ResultCode.PARAMS_ERROR);
}
//查询所有分类
List<PublishClassify> publishClassifies = publishClassifyMapper.selectList(new LambdaQueryWrapper<PublishClassify>().eq(PublishClassify::getOnlinePlatformId, dto.getType()));
//赋值到集合中
List<PublishClassifyChildrenVo> list=copyClassify(publishClassifies);
//获取一级分类
List<PublishClassifyChildrenVo> collect = list.stream().filter((publishClassifyChildrenVo) -> {
return publishClassifyChildrenVo.getHierarchy() == 1;
}).map((menu) -> {
menu.setChildren(getChildren(menu, list));
return menu;
}).collect(Collectors.toList());
return ResultUtil.data(collect);
}
/**
* 递归查询
* @param root
* @param all
*/
private List<PublishClassifyChildrenVo> getChildren(PublishClassifyChildrenVo root,List<PublishClassifyChildrenVo> all){
List<PublishClassifyChildrenVo> child=all.stream().filter(classify ->{
return StringUtils.isNotEmpty(classify.getParentClassifyId())&&StringUtils.isNotEmpty(root.getClassifyId())
&&classify.getParentClassifyId().equals(root.getClassifyId());
}).map(childer->{
childer.setChildren(getChildren(childer,all));
return childer;
}).collect(Collectors.toList());
return child;
}
如果出现这样就ok了