Quellcode durchsuchen

处理上传的重复文件

reghao vor 2 Jahren
Ursprung
Commit
042fdacd0a

+ 8 - 1
dfs-store/src/main/java/cn/reghao/dfs/store/rpc/MediaUrlServiceImpl.java

@@ -1,5 +1,7 @@
 package cn.reghao.dfs.store.rpc;
 
+import cn.reghao.dfs.store.db.repository.MediaRepository;
+import cn.reghao.dfs.store.model.po.VideoUrl;
 import cn.reghao.oss.api.dto.ImageUrl;
 import cn.reghao.oss.api.dto.VideoUrlDto;
 import cn.reghao.oss.api.iface.MediaUrlService;
@@ -19,10 +21,13 @@ import java.util.List;
 public class MediaUrlServiceImpl implements MediaUrlService {
     private final ImageFileMapper imageFileMapper;
     private final VideoUrlMapper videoUrlMapper;
+    private final MediaRepository mediaRepository;
 
-    public MediaUrlServiceImpl(ImageFileMapper imageFileMapper, VideoUrlMapper videoUrlMapper) {
+    public MediaUrlServiceImpl(ImageFileMapper imageFileMapper, VideoUrlMapper videoUrlMapper,
+                               MediaRepository mediaRepository) {
         this.imageFileMapper = imageFileMapper;
         this.videoUrlMapper = videoUrlMapper;
+        this.mediaRepository = mediaRepository;
     }
 
     @Override
@@ -37,6 +42,8 @@ public class MediaUrlServiceImpl implements MediaUrlService {
 
     @Override
     public String getDownloadLink(String videoFileId) {
+        VideoUrl videoUrl = mediaRepository.findVideoUrl(videoFileId);
+        String objectId = videoUrl.getObjectId();
         return "";
     }
 }

+ 7 - 5
dfs-store/src/main/java/cn/reghao/dfs/store/service/PutObjectService.java

@@ -100,18 +100,20 @@ public class PutObjectService {
         return new ObjectResult(objectName, objectId, fileType, savedPath, url, dupObjectId);
     }
 
-    public ObjectResult copyObject1(ObjectProp objectProp, String filename, FileMeta fileMeta) {
-        String dupObjectId = fileMeta.getObjectId();
+    public ObjectResult copyObject(String objectName) {
+        FileMeta fileMeta = objectRepository.getByObjectName(objectName);
         int fileType = fileMeta.getFileType();
+
+        String filename = fileMeta.getFilename();
         String savedPath = "";
-        String objectName = objectProp.getObjectName();
+        boolean diskFile = fileMeta.getDiskFile();
+        int acl = fileMeta.getAcl();
         String objectId = UUID.randomUUID().toString().replace("-", "");
-        boolean diskFile = objectProp.isDiskFile();
-        int acl = objectProp.getAcl();
         FileMeta fileMeta1 = new FileMeta(objectName, objectId, filename, fileMeta, diskFile, acl);
         objectRepository.saveFileMeta(fileMeta1);
 
         String url = objectNameService.getObjectUrl(objectName);
+        String dupObjectId = fileMeta.getObjectId();
         return new ObjectResult(objectName, objectId, fileType, savedPath, url, dupObjectId);
     }
 }

+ 11 - 13
dfs-store/src/main/java/cn/reghao/dfs/store/task/ImageFileProcessor.java

@@ -1,8 +1,6 @@
 package cn.reghao.dfs.store.task;
 
 import cn.reghao.dfs.store.db.repository.MediaRepository;
-import cn.reghao.dfs.store.db.repository.ObjectRepository;
-import cn.reghao.dfs.store.model.po.FileMeta;
 import cn.reghao.dfs.store.model.vo.ObjectProp;
 import cn.reghao.dfs.store.model.vo.ObjectResult;
 import cn.reghao.dfs.store.service.FileStoreService;
@@ -29,16 +27,13 @@ public class ImageFileProcessor {
     private final FileStoreService fileStoreService;
     private final ObjectNameService objectNameService;
     private final PutObjectService putObjectService;
-    private final ObjectRepository objectRepository;
 
     public ImageFileProcessor(MediaRepository mediaRepository, FileStoreService fileStoreService,
-                              ObjectNameService objectNameService, PutObjectService putObjectService,
-                              ObjectRepository objectRepository) {
+                              ObjectNameService objectNameService, PutObjectService putObjectService) {
         this.mediaRepository = mediaRepository;
         this.fileStoreService = fileStoreService;
         this.objectNameService = objectNameService;
         this.putObjectService = putObjectService;
-        this.objectRepository = objectRepository;
     }
 
     public void process(ObjectResult objectResult) {
@@ -47,18 +42,21 @@ public class ImageFileProcessor {
         if (duplicate) {
             String dupObjectId = objectResult.getDupObjectId();
             ImageFile imageFile = mediaRepository.findImageFile(dupObjectId);
-            String originalUrl = imageFile.getOriginalUrl();
-            String originalObjectName = originalUrl.replace("", "");
-            FileMeta fileMeta = objectRepository.getByObjectName(originalObjectName);
-
 
-            String originalUrl1 = "";
+            String originalUrl = imageFile.getOriginalUrl();
+            String originalObjectName = originalUrl.replace("//oss.reghao.cn", "");
+            ObjectResult objectResult1 = putObjectService.copyObject(originalObjectName);
+            String originalUrl1 = objectResult1.getUploadFileRet().getUrl();
 
             String jpegUrl = imageFile.getWebpUrl();
-            String jpegUrl1 = "";
+            String jpegObjectName = jpegUrl.replace("//oss.reghao.cn", "");
+            ObjectResult objectResult2 = putObjectService.copyObject(jpegObjectName);
+            String jpegUrl1 = objectResult2.getUploadFileRet().getUrl();
 
             String webpUrl = imageFile.getThumbnailUrl();
-            String webpUrl1 = "";
+            String webpObjectName = webpUrl.replace("//oss.reghao.cn", "");
+            ObjectResult objectResult3 = putObjectService.copyObject(webpObjectName);
+            String webpUrl1 = objectResult3.getUploadFileRet().getUrl();
 
             int width = imageFile.getWidth();
             int height = imageFile.getHeight();

+ 5 - 1
dfs-store/src/main/java/cn/reghao/dfs/store/task/VideoFileProcessor.java

@@ -68,7 +68,11 @@ public class VideoFileProcessor {
             int width = videoUrl.getWidth();
             int height = videoUrl.getHeight();
 
-            VideoUrl videoUrl1 = new VideoUrl(objectId, objectId, urlType, url, quality, width, height);
+            String objectName1 = url.replace("//oss.reghao.cn", "");
+            ObjectResult objectResult1 = putObjectService.copyObject(objectName1);
+            String objectId1 = objectResult1.getObjectId();
+
+            VideoUrl videoUrl1 = new VideoUrl(objectId, objectId1, urlType, url, quality, width, height);
             mediaRepository.saveVideoFile(videoFile1, videoUrl1);
             return;
         }