reghao vor 2 Jahren
Ursprung
Commit
862764fc40

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

@@ -12,7 +12,8 @@ import java.util.Set;
 public interface ImageFileService {
     void deleteByObjectNames(List<String> objectNames);
     void deleteByImageFileIds(List<String> imageFileIds);
-    ImageUrlDto getImageUrl(String imageFileId);
+    ImageUrlDto getImageUrl(int channelId, String imageFileId);
+    ImageUrlDto getImageUrl(String imageFileId, long loginUser, int channelId);
     List<ImageUrlDto> getImageUrls(Set<String> imageFileIds);
-    String getSignedUrl(String url, long loginUser);
+    String getSignedUrl(String url, long loginUser, int channelId);
 }

+ 3 - 2
oss-store/src/main/java/cn/reghao/oss/store/controller/ObjectGetController.java

@@ -1,5 +1,6 @@
 package cn.reghao.oss.store.controller;
 
+import cn.reghao.oss.api.constant.ChannelAction;
 import cn.reghao.oss.store.service.GetObjectService;
 import cn.reghao.oss.store.util.JwtUtil;
 import cn.reghao.oss.store.util.ObjectUtil;
@@ -91,9 +92,9 @@ public class ObjectGetController {
         }
 
         String action = ossPayload.getAction();
-        if ("access".equals(action)) {
+        if (ChannelAction.access.getName().equals(action)) {
             getObjectService.getObject(objectName);
-        } else if ("download".equals(action)) {
+        } else if (ChannelAction.download.getName().equals(action)) {
             getObjectService.downloadObject(objectName);
         } else {
             getObjectService.writeResponse(HttpServletResponse.SC_FORBIDDEN);

+ 13 - 38
oss-store/src/main/java/cn/reghao/oss/store/db/repository/ImageRepository.java

@@ -1,7 +1,6 @@
 package cn.reghao.oss.store.db.repository;
 
-import cn.reghao.oss.store.db.mapper.*;
-import cn.reghao.oss.store.model.po.*;
+import cn.reghao.oss.api.constant.UploadChannel;
 import cn.reghao.oss.api.dto.media.ImageUrlDto;
 import cn.reghao.oss.store.db.mapper.ImageFileMapper;
 import cn.reghao.oss.store.model.po.FileMeta;
@@ -62,10 +61,10 @@ public class ImageRepository {
         return imageFileMapper.findByImageFileId(imageFileId);
     }
 
-    public List<ImageUrlDto> getImageUrls(Set<String> imageFileIds) {
+    public List<ImageUrlDto> getImageUrls(int channelId, Set<String> imageFileIds) {
         List<ImageUrlDto> list = new ArrayList<>();
         for (String imageFileId : imageFileIds) {
-            ImageUrlDto imageUrlDto = getImageUrl(imageFileId);
+            ImageUrlDto imageUrlDto = getImageUrl(channelId, imageFileId);
             if (imageUrlDto != null) {
                 list.add(imageUrlDto);
             }
@@ -74,46 +73,22 @@ public class ImageRepository {
         return list;
     }
 
-    public ImageUrlDto getImageUrl(String imageFileId) {
+    public ImageUrlDto getImageUrl(int channelId, String imageFileId) {
         List<ImageFile> list = imageFileMapper.findByImageFileId(imageFileId);
         if (list.isEmpty()) {
             return null;
         }
 
         ImageUrlDto imageUrlDto = new ImageUrlDto(imageFileId);
-        for (ImageFile imageFile : list) {
-            String format = imageFile.getFormat();
-            String url = imageFile.getUrl();
-            if ("webp".equals(format)) {
-                imageUrlDto.setThumbnailUrl(url);
-            } else {
-                imageUrlDto.setOriginalUrl(url);
-            }
-        }
-
-        if (imageUrlDto.getOriginalUrl() != null && imageUrlDto.getThumbnailUrl() != null) {
-            return imageUrlDto;
-        }
-
-        return null;
-    }
-
-    @Deprecated
-    public ImageUrlDto getImageUrl1(String imageFileId) {
-        List<ImageFile> list = imageFileMapper.findByImageFileId(imageFileId);
-        if (list.isEmpty()) {
-            return null;
-        }
-
-        ImageUrlDto imageUrlDto = new ImageUrlDto(imageFileId);
-        for (ImageFile imageFile : list) {
-            String format = imageFile.getFormat();
-            String url = imageFile.getUrl();
-            if ("webp".equals(format)) {
-                imageUrlDto.setThumbnailUrl(url);
-            } else {
-                imageUrlDto.setOriginalUrl(url);
-            }
+        if (channelId == UploadChannel.photo.getCode() || channelId == UploadChannel.disk.getCode()) {
+            ImageFile original = list.get(0);
+            imageUrlDto.setOriginalUrl(original.getUrl());
+            ImageFile thumbnail = list.get(1);
+            imageUrlDto.setThumbnailUrl(thumbnail.getUrl());
+        } else {
+            ImageFile original = list.get(0);
+            imageUrlDto.setOriginalUrl(original.getUrl());
+            imageUrlDto.setThumbnailUrl(original.getUrl());
         }
 
         return imageUrlDto;

+ 1 - 6
oss-store/src/main/java/cn/reghao/oss/store/rpc/ObjectServiceImpl.java

@@ -119,11 +119,6 @@ public class ObjectServiceImpl implements ObjectService {
             return null;
         }
 
-        String objectName = fileMeta.getObjectName();
-        String url = String.format("//oss.reghao.cn/%s", objectName);
-        int fileType = fileMeta.getFileType();
-        String signedUrl = signService.getSignedUrl(10001, url, ObjectType.Other.getCode(), 3600);
-        ObjectUrl objectUrl = new ObjectUrl(objectId, objectName, fileType, url, signedUrl);
-        return objectUrl;
+        return null;
     }
 }

+ 2 - 14
oss-store/src/main/java/cn/reghao/oss/store/rpc/SignService.java

@@ -3,8 +3,6 @@ package cn.reghao.oss.store.rpc;
 import cn.reghao.oss.store.util.JwtUtil;
 import cn.reghao.oss.store.util.SignatureUtil;
 import cn.reghao.oss.api.constant.ChannelAction;
-import cn.reghao.oss.api.constant.ObjectType;
-import cn.reghao.oss.api.constant.UploadChannel;
 import cn.reghao.oss.api.dto.OssPayload;
 import org.springframework.stereotype.Service;
 
@@ -18,22 +16,12 @@ import java.util.UUID;
  */
 @Service
 public class SignService {
-    public String getSignedUrl(long loginUser, String url, int contentType, long expire) {
-        //String secretId = "reghao";
+    public String getSignedUrl(long loginUser, String url, int channelId, long expire) {
         long timestamp = System.currentTimeMillis() + expire*1000;
         String secretKey = "oss.reghao.cn";
 
         String action = ChannelAction.access.getName();
-        OssPayload ossPayload = new OssPayload(action, UploadChannel.video.getCode(), loginUser);
-        if (contentType == ObjectType.Image.getCode()) {
-            ossPayload = new OssPayload(action, UploadChannel.photo.getCode(), loginUser);
-        } else if (contentType == ObjectType.Video.getCode()) {
-            ossPayload = new OssPayload(action, UploadChannel.video.getCode(), loginUser);
-        } else if (contentType == ObjectType.Audio.getCode()) {
-            ossPayload = new OssPayload(action, UploadChannel.audio.getCode(), loginUser);
-        } else if (contentType == ObjectType.Other.getCode()) {
-            ossPayload = new OssPayload(action, UploadChannel.disk.getCode(), loginUser);
-        }
+        OssPayload ossPayload = new OssPayload(action, channelId, loginUser);
 
         String token = JwtUtil.createToken(ossPayload, timestamp, secretKey);
         String nonce = UUID.randomUUID().toString();

+ 3 - 2
oss-store/src/main/java/cn/reghao/oss/store/rpc/media/AudioFileServiceImpl.java

@@ -1,8 +1,8 @@
 package cn.reghao.oss.store.rpc.media;
 
+import cn.reghao.oss.api.constant.UploadChannel;
 import cn.reghao.oss.store.db.repository.AudioRepository;
 import cn.reghao.oss.store.rpc.SignService;
-import cn.reghao.oss.api.constant.ObjectType;
 import cn.reghao.oss.api.dto.media.AudioInfo;
 import cn.reghao.oss.api.dto.media.AudioUrl;
 import cn.reghao.oss.api.iface.media.AudioFileService;
@@ -34,10 +34,11 @@ public class AudioFileServiceImpl implements AudioFileService {
 
     @Override
     public List<AudioUrl> getAudioUrls(String audioFileId, long loginUser) {
+        int channelId = UploadChannel.audio.getCode();
         List<AudioUrl> audioUrls = audioRepository.getAudioUrls(audioFileId);
         audioUrls.forEach(audioUrl -> {
             String url = audioUrl.getUrl();
-            String signedUrl = signService.getSignedUrl(loginUser, url, ObjectType.Audio.getCode(), 3600);
+            String signedUrl = signService.getSignedUrl(loginUser, url, channelId, 3600);
             audioUrl.setUrl(signedUrl);
         });
         return audioUrls;

+ 20 - 6
oss-store/src/main/java/cn/reghao/oss/store/rpc/media/ImageFileServiceImpl.java

@@ -1,8 +1,8 @@
 package cn.reghao.oss.store.rpc.media;
 
+import cn.reghao.oss.api.constant.UploadChannel;
 import cn.reghao.oss.store.db.repository.ImageRepository;
 import cn.reghao.oss.store.rpc.SignService;
-import cn.reghao.oss.api.constant.ObjectType;
 import cn.reghao.oss.api.dto.media.ImageUrlDto;
 import cn.reghao.oss.api.iface.media.ImageFileService;
 import org.apache.dubbo.config.annotation.DubboService;
@@ -37,19 +37,33 @@ public class ImageFileServiceImpl implements ImageFileService {
     }
 
     @Override
-    public ImageUrlDto getImageUrl(String imageFileId) {
-        return imageRepository.getImageUrl1(imageFileId);
+    public ImageUrlDto getImageUrl(int channelId, String imageFileId) {
+        ImageUrlDto imageUrlDto = imageRepository.getImageUrl(channelId, imageFileId);
+        String originalUrl = imageUrlDto.getOriginalUrl();
+        String thumbnailUrl = imageUrlDto.getThumbnailUrl();
+        return imageUrlDto;
+    }
+
+    @Override
+    public ImageUrlDto getImageUrl(String imageFileId, long loginUser, int channelId) {
+        ImageUrlDto imageUrlDto = imageRepository.getImageUrl(channelId, imageFileId);
+        String originalUrl = getSignedUrl(imageUrlDto.getOriginalUrl(), loginUser, channelId);
+        imageUrlDto.setOriginalUrl(originalUrl);
+        String thumbnailUrl = getSignedUrl(imageUrlDto.getThumbnailUrl(), loginUser, channelId);
+        imageUrlDto.setThumbnailUrl(thumbnailUrl);
+        return imageUrlDto;
     }
 
     @Override
     public List<ImageUrlDto> getImageUrls(Set<String> imageFileIds) {
-        List<ImageUrlDto> list = imageRepository.getImageUrls(imageFileIds);
+        int channelId = UploadChannel.photo.getCode();
+        List<ImageUrlDto> list = imageRepository.getImageUrls(channelId, imageFileIds);
         return list;
     }
 
     @Override
-    public String getSignedUrl(String url, long loginUser) {
-        String signedUrl = signService.getSignedUrl(loginUser, url, ObjectType.Image.getCode(), 600);
+    public String getSignedUrl(String url, long loginUser, int channelId) {
+        String signedUrl = signService.getSignedUrl(loginUser, url, channelId, 600);
         return signedUrl;
     }
 }

+ 3 - 2
oss-store/src/main/java/cn/reghao/oss/store/rpc/media/VideoFileServiceImpl.java

@@ -2,12 +2,12 @@ package cn.reghao.oss.store.rpc.media;
 
 import cn.reghao.jutil.media.FFmpegWrapper;
 import cn.reghao.jutil.media.model.MediaProps;
+import cn.reghao.oss.api.constant.UploadChannel;
 import cn.reghao.oss.api.dto.ObjectMeta;
 import cn.reghao.oss.store.db.repository.ObjectRepository;
 import cn.reghao.oss.store.db.repository.VideoRepository;
 import cn.reghao.oss.store.model.po.VideoFile;
 import cn.reghao.oss.store.rpc.SignService;
-import cn.reghao.oss.api.constant.ObjectType;
 import cn.reghao.oss.api.dto.media.VideoInfo;
 import cn.reghao.oss.api.dto.media.VideoUrlDto;
 import cn.reghao.oss.api.iface.media.VideoFileService;
@@ -54,10 +54,11 @@ public class VideoFileServiceImpl implements VideoFileService {
 
     @Override
     public List<VideoUrlDto> getVideoUrls(String videoFileId, long loginUser) {
+        int channelId = UploadChannel.video.getCode();
         List<VideoUrlDto> list = videoRepository.findVideoUrls(videoFileId);
         list.forEach(videoUrlDto -> {
             String url = videoUrlDto.getUrl();
-            String signedUrl = signService.getSignedUrl(loginUser, url, ObjectType.Video.getCode(), 3600);
+            String signedUrl = signService.getSignedUrl(loginUser, url, channelId, 3600);
             videoUrlDto.setUrl(signedUrl);
         });
         return list;

+ 22 - 4
oss-store/src/main/java/cn/reghao/oss/store/task/FileProcessor.java

@@ -48,7 +48,7 @@ public class FileProcessor {
         UploadChannel channel = UploadChannel.getUploadChannel(channelId);
         switch (channel) {
             case disk:
-                uploadFileRet = diskFileProcessor.process(objectResult);
+                uploadFileRet = processFile(objectResult, channelId);
                 break;
             case video:
                 uploadFileRet = videoFileProcessor.process(objectResult);
@@ -60,7 +60,7 @@ public class FileProcessor {
             case image:
             case img:
                 uploadFileRet = imageFileProcessor.processImage(objectResult, channelId);
-                setUrl(uploadFileRet);
+                setUrl(channelId, uploadFileRet);
                 break;
             case photo:
                 uploadFileRet = imageFileProcessor.processImage(objectResult, channelId);
@@ -71,9 +71,27 @@ public class FileProcessor {
         return uploadFileRet;
     }
 
-    private void setUrl(UploadFileRet uploadFileRet) {
+    private void setUrl(int channelId, UploadFileRet uploadFileRet) {
         String uploadId = uploadFileRet.getUploadId();
-        String url = imageRepository.getImageUrl1(uploadId).getOriginalUrl();
+        String url = imageRepository.getImageUrl(channelId, uploadId).getOriginalUrl();
         uploadFileRet.setUrl(url);
     }
+
+    private UploadFileRet processFile(ObjectResult objectResult, int channelId) {
+        int fileType = objectResult.getFileType();
+        UploadFileRet uploadFileRet;
+        if (fileType == ObjectType.Image.getCode()) {
+            uploadFileRet = imageFileProcessor.processImage(objectResult, channelId);
+        } else if (fileType == ObjectType.Video.getCode()) {
+            uploadFileRet = videoFileProcessor.process(objectResult);
+        } else if (fileType == ObjectType.Audio.getCode()) {
+            uploadFileRet = audioFileProcessor.process(objectResult);
+        } else if (fileType == ObjectType.Text.getCode()) {
+            uploadFileRet = diskFileProcessor.process(objectResult);
+        } else {
+            uploadFileRet = diskFileProcessor.process(objectResult);
+        }
+
+        return uploadFileRet;
+    }
 }

+ 2 - 2
oss-store/src/main/java/cn/reghao/oss/store/task/processor/ImageFileProcessor.java

@@ -65,7 +65,7 @@ public class ImageFileProcessor {
             int height = size.getHeight();
             List<ImageFile> list = new ArrayList<>();
             list.add(new ImageFile(imageFileId, objectId, format, objectUrl, width, height));
-            if (channelId == UploadChannel.photo.getCode()) {
+            if (channelId == UploadChannel.photo.getCode() || channelId == UploadChannel.disk.getCode()) {
                 ImageFile imageFile = getConvertedImageFile(objectResult, "webp", width, height);
                 if (imageFile != null) {
                     list.add(imageFile);
@@ -92,7 +92,7 @@ public class ImageFileProcessor {
         List<ImageFile> list = new ArrayList<>();
         list.add(imageFile1);
 
-        if (channelId == UploadChannel.photo.getCode()) {
+        if (channelId == UploadChannel.photo.getCode() || channelId == UploadChannel.disk.getCode()) {
             if (imageFiles.size() > 1) {
                 for (int i = 1; i < imageFiles.size(); i++) {
                     ImageFile imageFile2 = imageFiles.get(i);