liding
3 天以前 49e1bc66ebaf696ebd3fc3ed33d65c8795fd3cde
main-business/src/main/java/com/ruoyi/business/service/impl/ArchiveServiceImpl.java
@@ -14,7 +14,9 @@
import com.ruoyi.basic.service.StorageAttachmentService;
import com.ruoyi.business.dto.ArchiveDto;
import com.ruoyi.business.entity.Archive;
import com.ruoyi.business.entity.Tree;
import com.ruoyi.business.mapper.ArchiveMapper;
import com.ruoyi.business.mapper.TreeMapper;
import com.ruoyi.business.service.ArchiveService;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.file.MinioUtils;
@@ -43,6 +45,8 @@
    private final ArchiveMapper archiveMapper;
    private final TreeMapper treeMapper;
    private final StorageAttachmentService storageAttachmentService;
    private final StorageBlobMapper storageBlobMapper;
@@ -53,10 +57,31 @@
    @Override
    public IPage<ArchiveDto> selectArchiveList(Page page, ArchiveDto archiveDto) {
    public IPage<ArchiveDto> selectArchiveList(Page<Archive> page, ArchiveDto archiveDto) {
        // 1. 分页查询主数据
        LambdaQueryWrapper<Archive> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.orderByDesc(Archive::getCreateTime);
        if (archiveDto.getTreeId() != null) {
            Long treeId = archiveDto.getTreeId();
            // 判断是否为主ID
            Tree tree = treeMapper.selectById(archiveDto.getTreeId());
            boolean isMainId = tree != null && tree.getParentId() == null;
            if (isMainId) {
                // 获取主ID的所有递归子节点ID
                List<Long> recursiveSubIds = treeMapper.listRecursiveSubNodeIds(treeId);
                // 将主ID本身和所有子节点ID加入查询条件
                recursiveSubIds.add(treeId);
                queryWrapper.in(Archive::getTreeId, recursiveSubIds);
            } else {
                // 非主ID,直接按原条件查询
                queryWrapper.eq(Archive::getTreeId, treeId);
            }
        }
        if (archiveDto.getSearchAll() != null) {
            queryWrapper.like(Archive::getName, archiveDto.getSearchAll());
        }
        IPage<Archive> archivePage = archiveMapper.selectPage(page, queryWrapper);
        // 2. 无数据提前返回
@@ -111,7 +136,7 @@
                    .map(blob -> {
                        StorageBlobDTO blobDTO = new StorageBlobDTO();
                        BeanUtils.copyProperties(blob, blobDTO);
                        // 动态生成预览地址和下载地址
                        // 设置预览URL
                        blobDTO.setUrl(minioUtils.getPreviewUrls(
@@ -137,6 +162,7 @@
        // 7. 构建返回分页对象
        IPage<ArchiveDto> resultPage = new Page<>();
        BeanUtils.copyProperties(archivePage, resultPage);
        resultPage.setRecords(dtoList);
        return resultPage;
    }