| | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.basic.entity.StorageAttachment; |
| | | import com.ruoyi.basic.entity.StorageBlob; |
| | | import com.ruoyi.basic.entity.dto.StorageBlobDTO; |
| | | import com.ruoyi.basic.mapper.StorageAttachmentMapper; |
| | | import com.ruoyi.basic.mapper.StorageBlobMapper; |
| | | import com.ruoyi.basic.service.StorageBlobService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.config.MinioConfig; |
| | | import com.ruoyi.common.constant.Constants; |
| | | import com.ruoyi.common.core.domain.MinioResult; |
| | | import com.ruoyi.common.exception.file.InvalidExtensionException; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.file.MinioUtils; |
| | | import com.ruoyi.common.utils.uuid.IdUtils; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | private MinioUtils minioUtils; |
| | | |
| | | @Override |
| | | public List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName) { |
| | | public List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName,Long type) { |
| | | |
| | | // 若没传入bucketName,则使用默认bucketName |
| | | if (StringUtils.isEmpty(bucketName)) { |
| | | bucketName = minioUtils.getDefaultBucket(); |
| | | bucketName = minioUtils.getDefaultBucket(); |
| | | } |
| | | |
| | | List<StorageBlobDTO> storageBlobDTOs = new ArrayList<>(); |
| | | for (MultipartFile file : files) { |
| | | try { |
| | |
| | | dto.setKey(IdUtils.simpleUUID()); |
| | | dto.setBucketName(bucketName); |
| | | dto.setUrl(minioUtils.getPreviewUrl(res.getBucketFileName(), bucketName, false)); |
| | | dto.setDownloadUrl(minioUtils.getDownloadUrl(res.getBucketFileName(), bucketName)); |
| | | if (type != null){ |
| | | dto.setType(type); |
| | | } |
| | | // 插入数据库 |
| | | storageBlobMapper.insert(dto); |
| | | |
| | | storageBlobDTOs.add(dto); |
| | | } catch (InvalidExtensionException e) { |
| | | throw new RuntimeException("minio文件上传异常:" + e); |
| | | throw new RuntimeException("minio文件上传异常:" + e); |
| | | } |
| | | } |
| | | |
| | | |
| | | return storageBlobDTOs; |
| | | } |
| | | |
| | |
| | | .eq(StorageAttachment::getRecordId, attachment.getRecordId()) |
| | | .eq(StorageAttachment::getRecordType, attachment.getRecordType()) |
| | | .eq(StorageAttachment::getName, attachment.getName())); |
| | | List<Long> ids = attachments.stream().map(StorageAttachment::getStorageBlobId).toList(); |
| | | List<StorageBlob> storageBlobs = storageBlobMapper.selectList(new LambdaQueryWrapper<StorageBlob>() |
| | | .in(StorageBlob::getId, ids)); |
| | | List<Long> ids = attachments.stream() |
| | | .map(StorageAttachment::getStorageBlobId) |
| | | .collect(Collectors.toList()); |
| | | List<StorageBlob> storageBlobs = new ArrayList<>(); |
| | | if (!ids.isEmpty()) { |
| | | // 只在ID列表非空时执行查询 |
| | | storageBlobs = storageBlobMapper.selectList( |
| | | new LambdaQueryWrapper<StorageBlob>().in(StorageBlob::getId, ids) |
| | | ); |
| | | } |
| | | |
| | | // 移除MinIO中的文件 |
| | | if (!storageBlobs.isEmpty()) { |
| | | for (StorageBlob storageBlob : storageBlobs) { |
| | | // 移除桶内文件 |
| | | minioUtils.removeObjectsResult(storageBlob.getBucketName(), storageBlob.getBucketName()); |
| | | minioUtils.removeObjectsResult(storageBlob.getBucketName(), storageBlob.getBucketFilename()); |
| | | } |
| | | } |
| | | |
| | | // 删除数据库记录 |
| | | if (!ids.isEmpty()) { |
| | | return storageBlobMapper.delete(new QueryWrapper<StorageBlob>().lambda().in(StorageBlob::getId, ids)); |
| | | return storageBlobMapper.delete( |
| | | new QueryWrapper<StorageBlob>().lambda().in(StorageBlob::getId, ids) |
| | | ); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | } |