SpringBoot 在线协同办公小程序开发 全栈式项目实战
v: ititit111222333
@Override
public List<CategoryVO> lazyLoadingTree(Page<Category> page, CategoryCondition condition) {
List<CategoryVO> categoryVOS;
boolean isSearch = isSearch(condition);
Long parentId = condition.getParentId();
// 取第一级数据
if (ObjectUtil.equal(parentId, DataState.DISABLED)) {
// 有条件查询
if (isSearch) {
// 父级id和下级ids的map关系
Map<Long, List<Long>> parentIdAndsubIdsMap = Maps.newHashMap();
// 查询符合条件的路径path(ids)
List<String> paths = this.mapper.listPathByCondition(condition);
// 获取下级ids
List<Long> rootIds = getRootIds(paths, parentIdAndsubIdsMap);
// 设置下级ids
condition.setRootIds(rootIds);
}
// 分页查询
categoryVOS = this.mapper.listNewByCondition(page, condition);
} else {
// 有条件懒加载查询
if (isSearch) {
Map<Long, List<Long>> parentIdAndsubIdsMap = Maps.newHashMap();
// 获取该父级下的ids
List<Long> ids = parentIdAndsubIdsMap.get(parentId);
// 设置下级ids
condition.setRootIds(ids);
}
// 查询分类数据
categoryVOS = this.mapper.listSubByCondition(condition);
}
return categoryVOS;
}