SpringBoot 在线协同办公小程序开发 全栈式项目实战

248 阅读1分钟

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;
    }