新增AI云文档目录表、AI云文件表
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
package com.gxwebsoft.ai.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gxwebsoft.ai.mapper.AiCloudDocMapper;
|
||||
import com.gxwebsoft.ai.service.AiCloudDocService;
|
||||
import com.gxwebsoft.ai.entity.AiCloudDoc;
|
||||
import com.gxwebsoft.ai.param.AiCloudDocParam;
|
||||
import com.gxwebsoft.common.core.web.PageParam;
|
||||
import com.gxwebsoft.common.core.web.PageResult;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* AI云文档目录表Service实现
|
||||
*
|
||||
* @author yc
|
||||
*/
|
||||
@Service
|
||||
public class AiCloudDocServiceImpl extends ServiceImpl<AiCloudDocMapper, AiCloudDoc> implements AiCloudDocService {
|
||||
|
||||
@Override
|
||||
public PageResult<AiCloudDoc> pageRel(AiCloudDocParam param) {
|
||||
PageParam<AiCloudDoc, AiCloudDocParam> page = new PageParam<>(param);
|
||||
page.setDefaultOrder("sort_number asc, create_time desc");
|
||||
List<AiCloudDoc> list = baseMapper.selectPageRel(page, param);
|
||||
return new PageResult<>(list, page.getTotal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AiCloudDoc> listRel(AiCloudDocParam param) {
|
||||
List<AiCloudDoc> list = baseMapper.selectListRel(param);
|
||||
// 排序
|
||||
PageParam<AiCloudDoc, AiCloudDocParam> page = new PageParam<>();
|
||||
page.setDefaultOrder("sort_number asc, create_time desc");
|
||||
return page.sortRecords(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AiCloudDoc getByIdRel(Integer id) {
|
||||
AiCloudDocParam param = new AiCloudDocParam();
|
||||
param.setId(id);
|
||||
return param.getOne(baseMapper.selectListRel(param));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AiCloudDoc> getSelfAndChildren(Integer docId) {
|
||||
// 查询所有未删除的目录
|
||||
AiCloudDocParam param = new AiCloudDocParam();
|
||||
param.setDeleted(0);
|
||||
List<AiCloudDoc> allDocs = this.listRel(param);
|
||||
|
||||
// 查找指定目录
|
||||
AiCloudDoc targetDoc = allDocs.stream()
|
||||
.filter(doc -> doc.getId().equals(docId))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
if (targetDoc == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
// 递归获取所有子孙目录
|
||||
List<AiCloudDoc> result = new ArrayList<>();
|
||||
result.add(targetDoc);
|
||||
getChildrenRecursive(allDocs, targetDoc.getId(), result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归获取所有子目录
|
||||
*
|
||||
* @param allDocs 所有目录列表
|
||||
* @param parentId 父目录ID
|
||||
* @param result 结果列表
|
||||
*/
|
||||
private void getChildrenRecursive(List<AiCloudDoc> allDocs, Integer parentId, List<AiCloudDoc> result) {
|
||||
List<AiCloudDoc> children = allDocs.stream()
|
||||
.filter(doc -> parentId.equals(doc.getParentId()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
for (AiCloudDoc child : children) {
|
||||
result.add(child);
|
||||
getChildrenRecursive(allDocs, child.getId(), result);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user