From a8df571a0d7da69764506fc6a1b5b6da334645b1 Mon Sep 17 00:00:00 2001 From: buhuazhen <hua100783@gmail.com> Date: 星期五, 29 八月 2025 15:22:29 +0800 Subject: [PATCH] :ambulance: 应付修正 --- ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java | 54 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 48 insertions(+), 6 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java b/ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java index cf2094e..c42d317 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java +++ b/ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java @@ -3,8 +3,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.collect.Iterables; import com.ruoyi.basic.entity.StorageAttachment; import com.ruoyi.basic.entity.StorageBlob; +import com.ruoyi.basic.entity.dto.SimpleStorageDto; import com.ruoyi.basic.entity.dto.StorageBlobDTO; import com.ruoyi.basic.mapper.StorageAttachmentMapper; import com.ruoyi.basic.mapper.StorageBlobMapper; @@ -15,15 +17,16 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.MinioUtils; import com.ruoyi.common.utils.uuid.IdUtils; +import jakarta.annotation.Resource; +import lombok.Getter; import lombok.RequiredArgsConstructor; import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -46,8 +49,12 @@ @Autowired private MinioUtils minioUtils; + @Getter + @Value("${minio.default-bucket}") + private String defaultBucket; + @Override - public List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName,Long type) { + public List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName, Long type) { // 鑻ユ病浼犲叆bucketName锛屽垯浣跨敤榛樿bucketName if (StringUtils.isEmpty(bucketName)) { @@ -85,7 +92,7 @@ "pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "txt", "rtf", "md", "csv", "odt", // 瑙嗛 - "mp4", "mov", "avi", "wmv", "flv", "mkv", "webm", "mpeg", "3gp","MOV", + "mp4", "mov", "avi", "wmv", "flv", "mkv", "webm", "mpeg", "3gp", "MOV", // 闊抽 "mp3", "wav", "ogg", "aac", "flac", "m4a", "wma", "amr", @@ -142,7 +149,7 @@ new LambdaQueryWrapper<StorageBlob>().in(StorageBlob::getId, ids) ); } - + // 绉婚櫎MinIO涓殑鏂囦欢 if (!storageBlobs.isEmpty()) { for (StorageBlob storageBlob : storageBlobs) { @@ -158,4 +165,39 @@ } return 0; } + + @Override + public List<SimpleStorageDto> findStorageByIds(List<Long> ids, String bucketName) { + if (ids == null || ids.isEmpty()) { + return List.of(); + } + return storageBlobMapper.selectByIds(ids).parallelStream().map(it -> { + SimpleStorageDto dto = new SimpleStorageDto(it.getId(), it.getContentType(), it.getOriginalFilename(), it.getCreateTime()); + dto.setUrl(minioUtils.getDownloadUrls(it.getBucketFilename(), bucketName, it.getOriginalFilename(), true)); + dto.setPreviewUrl(minioUtils.getPreviewUrl(it.getBucketFilename(), bucketName, true)); + return dto; + }).toList(); + } + + @Override + public Map<Long, List<SimpleStorageDto>> conver(Map<Long, List<Long>> attachMap) { + if (attachMap == null || attachMap.isEmpty()) { + return Map.of(); + } + List<Long> storageBlobIds = attachMap.values().stream().flatMap(Collection::stream).toList(); + + if(Iterables.isEmpty(storageBlobIds)){ + return Map.of(); + } + + Map<Long,SimpleStorageDto> storageMap = this.findStorageByIds(storageBlobIds, defaultBucket).stream().collect(Collectors.toMap(SimpleStorageDto::getId,it->it));; + + + Map<Long, List<SimpleStorageDto>> finalMap = new HashMap<>(); + attachMap.forEach((k,v)->{ + finalMap.put(k, v.stream().map(storageMap::get).toList()); + }); + + return finalMap; + } } -- Gitblit v1.9.3