From 0b34ad848972943d0225fce7fdde1ff0ed0307c4 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 30 五月 2025 18:00:25 +0800
Subject: [PATCH] 供应商
---
ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 104 insertions(+), 0 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
new file mode 100644
index 0000000..72c2dd7
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java
@@ -0,0 +1,104 @@
+package com.ruoyi.basic.service.impl;
+
+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.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 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;
+
+/**
+ * <p>
+ * 閫氱敤鏂囦欢涓婁紶鐨勯檮浠朵俊鎭� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author ruoyi
+ * @since 2025-05-29
+ */
+@Service
+@RequiredArgsConstructor
+public class StorageBlobServiceImpl extends ServiceImpl<StorageBlobMapper, StorageBlob> implements StorageBlobService {
+ @Autowired
+ private StorageAttachmentMapper storageAttachmentMapper;
+
+ @Autowired
+ private StorageBlobMapper storageBlobMapper;
+
+ @Autowired
+ private MinioUtils minioUtils;
+
+ @Override
+ public List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName) {
+
+ // 鑻ユ病浼犲叆bucketName锛屽垯浣跨敤榛樿bucketName
+ if (StringUtils.isEmpty(bucketName)) {
+ bucketName = minioUtils.getDefaultBucket();
+ }
+
+ List<StorageBlobDTO> storageBlobDTOs = new ArrayList<>();
+ for (MultipartFile file : files) {
+ try {
+ MinioResult res = minioUtils.upload(bucketName, file, false);
+ StorageBlobDTO dto = new StorageBlobDTO();
+ dto.setContentType(file.getContentType());
+ dto.setBucketFilename(res.getBucketFileName());
+ dto.setOriginalFilename(res.getOriginalName());
+ dto.setByteSize(file.getSize());
+ dto.setKey(IdUtils.simpleUUID());
+ dto.setBucketName(bucketName);
+ dto.setUrl(minioUtils.getPreviewUrl(res.getBucketFileName(), bucketName, false));
+ // 鎻掑叆鏁版嵁搴�
+ storageBlobMapper.insert(dto);
+
+ storageBlobDTOs.add(dto);
+ } catch (InvalidExtensionException e) {
+ throw new RuntimeException("minio鏂囦欢涓婁紶寮傚父锛�" + e);
+ }
+ }
+
+
+ return storageBlobDTOs;
+ }
+
+ @Override
+ public int deleteStorageBlobs(StorageAttachment attachment) {
+ List<StorageAttachment> attachments = storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>()
+ .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));
+ if (!storageBlobs.isEmpty()) {
+ for (StorageBlob storageBlob : storageBlobs) {
+ // 绉婚櫎妗跺唴鏂囦欢
+ minioUtils.removeObjectsResult(storageBlob.getBucketName(), storageBlob.getBucketName());
+ }
+ }
+
+ if (!ids.isEmpty()) {
+ return storageBlobMapper.delete(new QueryWrapper<StorageBlob>().lambda().in(StorageBlob::getId, ids));
+ }
+
+ return 0;
+ }
+}
--
Gitblit v1.9.3