Kaynağa Gözat

更新 dfs-store 中的 rpc 接口

reghao 2 yıl önce
ebeveyn
işleme
4d0e17fb15

+ 1 - 0
dfs-store/src/main/java/cn/reghao/dfs/store/db/mapper/FileMetaMapper.java

@@ -22,6 +22,7 @@ public interface FileMetaMapper extends BaseMapper<FileMeta> {
     List<FileMeta> findFileMetaByPage(Page page);
     FileMeta findBySha256sum(String sha256sum);
     FileMeta findByObjectName(String objectName);
+    List<FileMeta> findByObjectNames(List<String> objectNames);
     FileMeta findByObjectId(String objectId);
     List<FileMeta> findByContentId(String contentId);
     ObjectMeta findObjectMeta(String objectName);

+ 20 - 5
dfs-store/src/main/java/cn/reghao/dfs/store/db/repository/ImageRepository.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
@@ -18,9 +19,11 @@ import java.util.stream.Collectors;
 @Repository
 public class ImageRepository {
     private final ImageFileMapper imageFileMapper;
+    private final ObjectRepository objectRepository;
 
-    public ImageRepository(ImageFileMapper imageFileMapper) {
+    public ImageRepository(ImageFileMapper imageFileMapper, ObjectRepository objectRepository) {
         this.imageFileMapper = imageFileMapper;
+        this.objectRepository = objectRepository;
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -28,17 +31,29 @@ public class ImageRepository {
         imageFileMapper.saveAll(imageFiles);
     }
 
-    public List<String> deleteImageFile(String imageFileId) {
+    public void deleteByImageFileIds(List<String> imageFileIds) {
+        imageFileIds.forEach(this::deleteImageFile);
+    }
+
+    public void deleteImageFile(String imageFileId) {
         List<String> objectIds = imageFileMapper.findByImageFileId(imageFileId).stream()
                 .map(ImageFile::getObjectId)
                 .collect(Collectors.toList());
-        deleteImageFile0(imageFileId);
-        return objectIds;
+        deleteImageFile0(imageFileId, objectIds);
+    }
+
+    public void deleteByObjectNames(List<String> imageObjectNames) {
+        List<FileMeta> fileMetas = objectRepository.getByObjectNames(imageObjectNames);
+        fileMetas.forEach(fileMeta -> {
+            String objectId = fileMeta.getObjectId();
+            deleteImageFile(objectId);
+        });
     }
 
     @Transactional(rollbackFor = Exception.class)
-    public void deleteImageFile0(String imageFileId) {
+    public void deleteImageFile0(String imageFileId, List<String> objectIds) {
         imageFileMapper.deleteByImageFileId(imageFileId);
+        objectRepository.deleteByObjectIds(objectIds);
     }
 
     public List<ImageFile> findImageFiles(String imageFileId) {

+ 4 - 0
dfs-store/src/main/java/cn/reghao/dfs/store/db/repository/ObjectRepository.java

@@ -78,6 +78,10 @@ public class ObjectRepository {
         return fileMetaMapper.findByObjectName(objectName);
     }
 
+    public List<FileMeta> getByObjectNames(List<String> objectNames) {
+        return fileMetaMapper.findByObjectNames(objectNames);
+    }
+
     public FileMeta getByObjectId(String objectId) {
         return fileMetaMapper.findByObjectId(objectId);
     }

+ 5 - 14
dfs-store/src/main/java/cn/reghao/dfs/store/rpc/media/ImageFileServiceImpl.java

@@ -1,8 +1,6 @@
 package cn.reghao.dfs.store.rpc.media;
 
 import cn.reghao.dfs.store.db.repository.ImageRepository;
-import cn.reghao.dfs.store.db.repository.ObjectRepository;
-import cn.reghao.dfs.store.model.po.FileMeta;
 import cn.reghao.oss.api.dto.media.ImageUrlDto;
 import cn.reghao.oss.api.iface.media.ImageFileService;
 import org.apache.dubbo.config.annotation.DubboService;
@@ -19,26 +17,19 @@ import java.util.Set;
 @Service
 public class ImageFileServiceImpl implements ImageFileService {
     private final ImageRepository imageRepository;
-    private final ObjectRepository objectRepository;
 
-    public ImageFileServiceImpl(ImageRepository imageRepository, ObjectRepository objectRepository) {
+    public ImageFileServiceImpl(ImageRepository imageRepository) {
         this.imageRepository = imageRepository;
-        this.objectRepository = objectRepository;
     }
 
     @Override
-    public void deleteImageFile(String objectId) {
-        List<String> objectIds = imageRepository.deleteImageFile(objectId);
-        objectRepository.deleteByObjectIds(objectIds);
+    public void deleteByImageFileIds(List<String> imageFileIds) {
+        imageRepository.deleteByImageFileIds(imageFileIds);
     }
 
     @Override
-    public void deleteByObjectName(String objectName) {
-        FileMeta fileMeta = objectRepository.getByObjectName(objectName);
-        if (fileMeta != null) {
-            String objectId = fileMeta.getObjectId();
-            deleteImageFile(objectId);
-        }
+    public void deleteByObjectNames(List<String> objectNames) {
+        imageRepository.deleteByObjectNames(objectNames);
     }
 
     @Override

+ 16 - 14
dfs-store/src/main/java/cn/reghao/dfs/store/task/processor/ImageFileProcessor.java

@@ -92,20 +92,22 @@ public class ImageFileProcessor {
         List<ImageFile> list = new ArrayList<>();
         list.add(imageFile1);
 
-        if (imageFiles.size() > 1) {
-            for (int i = 1; i < imageFiles.size(); i++) {
-                ImageFile imageFile2 = imageFiles.get(i);
-                ObjectResult objectResult1 = putObjectService.copyFromObjectId(imageFile2.getObjectId());
-                String objectId1 = objectResult1.getObjectId();
-                String objectUrl1 = objectNameService.getObjectUrl(objectResult1.getObjectName());
-                list.add(new ImageFile(imageFileId, objectId1, objectUrl1, imageFile2));
-            }
-        } else if (imageFiles.size() == 1 && channelId == UploadChannel.photo.getCode()) {
-            int width = imageFile.getWidth();
-            int height = imageFile.getHeight();
-            ImageFile imageFile2 = getConvertedImageFile(objectResult, "webp", width, height);
-            if (imageFile2 != null) {
-                list.add(imageFile2);
+        if (channelId == UploadChannel.photo.getCode()) {
+            if (imageFiles.size() > 1) {
+                for (int i = 1; i < imageFiles.size(); i++) {
+                    ImageFile imageFile2 = imageFiles.get(i);
+                    ObjectResult objectResult1 = putObjectService.copyFromObjectId(imageFile2.getObjectId());
+                    String objectId1 = objectResult1.getObjectId();
+                    String objectUrl1 = objectNameService.getObjectUrl(objectResult1.getObjectName());
+                    list.add(new ImageFile(imageFileId, objectId1, objectUrl1, imageFile2));
+                }
+            } else {
+                int width = imageFile.getWidth();
+                int height = imageFile.getHeight();
+                ImageFile imageFile2 = getConvertedImageFile(objectResult, "webp", width, height);
+                if (imageFile2 != null) {
+                    list.add(imageFile2);
+                }
             }
         }
 

+ 2 - 2
oss-api/src/main/java/cn/reghao/oss/api/iface/media/ImageFileService.java

@@ -10,8 +10,8 @@ import java.util.Set;
  * @date 2023-08-28 15:47:43
  */
 public interface ImageFileService {
-    void deleteImageFile(String objectId);
-    void deleteByObjectName(String objectName);
+    void deleteByObjectNames(List<String> objectNames);
+    void deleteByImageFileIds(List<String> imageFileIds);
     ImageUrlDto getImageUrl(String imageFileId);
     List<ImageUrlDto> getImageUrls(Set<String> imageFileIds);
 }