Explorar el Código

对应 store-api 的更新

reghao hace 2 años
padre
commit
3c3ddd7556

+ 1 - 1
oss-console/src/main/java/cn/reghao/oss/console/app/controller/AudioFileController.java

@@ -38,7 +38,7 @@ public class AudioFileController {
     @ApiOperation(value = "获取音频文件 url")
     @GetMapping(value = "/url", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getImageUrls(@RequestParam("audioFileId") String audioFileId) {
-        List<AudioUrl> list = audioService.getAudioUrls(audioFileId, 10000);
+        List<AudioUrl> list = audioService.getAudioUrls(audioFileId);
         return WebResult.success(list);
     }
 }

+ 2 - 4
oss-console/src/main/java/cn/reghao/oss/console/app/controller/OssServerController.java

@@ -62,10 +62,8 @@ public class OssServerController {
 
     @ApiOperation(value = "获取对象 url")
     @GetMapping(value = "/object/url", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String getObjectUrl(@RequestParam("objectId") String objectId,
-                               @RequestParam("channelId") Integer channelId,
-                               @RequestParam("userId") Integer userId) {
-        DownloadUrl downloadUrl = ossService.getDownloadUrl(objectId, channelId, userId);
+    public String getObjectUrl(@RequestParam("objectId") String objectId) {
+        DownloadUrl downloadUrl = ossService.getDownloadUrl(objectId);
         return WebResult.success(downloadUrl);
     }
 }

+ 5 - 3
oss-console/src/main/java/cn/reghao/oss/console/app/service/OssService.java

@@ -82,12 +82,13 @@ public class OssService {
     }
 
     private ObjectChannel getObjectChannel(UploadChannel uploadChannel, String domain) {
+        int channelId = uploadChannel.getChannelId();
         String name = uploadChannel.getName();
         String channelPrefix = uploadChannel.getPrefix();
         long maxSize = uploadChannel.getMaxSize();
         int fileType = uploadChannel.getFileType();
         int scope = uploadChannel.getScope();
-        return new ObjectChannel(name, channelPrefix, maxSize, fileType, scope, domain);
+        return new ObjectChannel(channelId, name, channelPrefix, maxSize, fileType, scope, domain);
     }
 
     public ObjectInfo getObjectInfo(String objectId) {
@@ -98,11 +99,12 @@ public class OssService {
         return objectService.getObjectInfo(objectId);
     }
 
-    public DownloadUrl getDownloadUrl(String objectId, int channelId, int userId) {
+    public DownloadUrl getDownloadUrl(String objectId) {
+        int expireSecond = 3600;
         RemoteService<ObjectService> remoteService = new RemoteService<>();
         String host = "";
         int port = -1;
         ObjectService objectService = remoteService.getService(host, port, ObjectService.class);
-        return objectService.getDownloadUrl(objectId, channelId, userId);
+        return objectService.getDownloadUrl(objectId, expireSecond);
     }
 }

+ 1 - 1
oss-console/src/main/java/cn/reghao/oss/console/app/service/UploadChannelService.java

@@ -63,7 +63,7 @@ public class UploadChannelService {
         long maxSize = uploadChannel.getMaxSize();
         int fileType = uploadChannel.getFileType();
         int scope = uploadChannel.getScope();
-        ObjectChannel channel = new ObjectChannel(name, channelPrefix, maxSize, fileType, scope, domain);
+        ObjectChannel channel = new ObjectChannel(channelId, name, channelPrefix, maxSize, fileType, scope, domain);
 
         String host = storeNode.getIpv4Addr();
         int port = storeNode.getRpcPort();

+ 3 - 2
oss-console/src/main/java/cn/reghao/oss/console/app/service/media/AudioService.java

@@ -19,7 +19,8 @@ public class AudioService {
         return audioFileService.getAudioInfo(audioFileId);
     }
 
-    public List<AudioUrl> getAudioUrls(String audioFileId, int loginUser) {
-        return audioFileService.getAudioUrls(audioFileId, loginUser);
+    public List<AudioUrl> getAudioUrls(String audioFileId) {
+        int expireSecond = 3600;
+        return audioFileService.getAudioUrls(audioFileId, expireSecond);
     }
 }

+ 2 - 2
oss-console/src/main/java/cn/reghao/oss/console/app/service/media/VideoService.java

@@ -26,8 +26,8 @@ public class VideoService {
     }
 
     public List<VideoUrlDto> getVideoUrls(String videoFileId) {
-        int authedUser = AuthKeyContext.getUser();
-        return videoFileService.getVideoUrls(videoFileId, authedUser);
+        int expireSecond = 3600;
+        return videoFileService.getVideoUrls(videoFileId, expireSecond);
     }
 
     public LocalDateTime getCreateTime(String videoFileId) {

+ 2 - 2
oss-sdk/src/main/java/cn/reghao/oss/sdk/OssConsoleClient.java

@@ -187,8 +187,8 @@ public class OssConsoleClient {
         return webResult.getData();
     }
 
-    public DownloadUrl getDownloadUrl(String objectId, int channelId, int userId) throws Exception {
-        String api = String.format("%s/api/oss/object/url?objectId=%s&channelId=%s&userId=%s", endpoint, objectId, channelId, userId);
+    public DownloadUrl getDownloadUrl(String objectId) throws Exception {
+        String api = String.format("%s/api/oss/object/url?objectId=%s", endpoint, objectId);
         HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
                 .header("authorization", "Bearer " + token)
                 .version(HttpClient.Version.HTTP_1_1)

+ 5 - 7
oss-store/src/main/java/cn/reghao/oss/store/db/repository/ImageRepository.java

@@ -71,14 +71,12 @@ public class ImageRepository {
         }
 
         ImageUrlDto imageUrlDto = new ImageUrlDto(imageFileId);
-        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());
+        ImageFile original = list.get(0);
+        imageUrlDto.setOriginalUrl(original.getUrl());
+
+        if (channelId == UploadChannel.photo.getCode()) {
+            imageUrlDto.setThumbnailUrl(list.get(1).getUrl());
         } else {
-            ImageFile original = list.get(0);
-            imageUrlDto.setOriginalUrl(original.getUrl());
             imageUrlDto.setThumbnailUrl(original.getUrl());
         }
 

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

@@ -50,11 +50,11 @@ public class ObjectServiceImpl implements ObjectService {
     }
 
     @Override
-    public DownloadUrl getDownloadUrl(String objectId, int channelId, int userId) {
+    public DownloadUrl getDownloadUrl(String objectId, int expireSecond) {
         FileMeta fileMeta = objectRepository.getByObjectId(objectId);
         String objectName = fileMeta.getObjectName();
         String url = objectNameService.getObjectUrl(objectName);
-        String signedUrl = signService.getSignedUrl(url, userId);
+        String signedUrl = signService.getSignedUrl(url, expireSecond);
         return new DownloadUrl(signedUrl, "");
     }
 

+ 1 - 23
oss-store/src/main/java/cn/reghao/oss/store/rpc/OssServerServiceImpl.java

@@ -3,7 +3,6 @@ package cn.reghao.oss.store.rpc;
 import cn.reghao.oss.store.api.constant.ObjectScope;
 import cn.reghao.oss.store.api.dto.ObjectChannel;
 import cn.reghao.oss.store.config.OssProperties;
-import cn.reghao.oss.store.service.ObjectChannelService;
 import cn.reghao.oss.store.service.ObjectNameService;
 import cn.reghao.oss.store.util.JwtUtil;
 import cn.reghao.oss.store.api.constant.ChannelAction;
@@ -13,8 +12,6 @@ import cn.reghao.oss.store.util.UserContext;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
-
 /**
  * @author reghao
  * @date 2023-08-01 14:54:23
@@ -24,15 +21,10 @@ import java.util.List;
 public class OssServerServiceImpl implements OssServerService {
     private final OssProperties ossProperties;
     private final ObjectNameService objectNameService;
-    private ObjectChannelService objectChannelService;
-    private SignService signService;
 
-    public OssServerServiceImpl(OssProperties ossProperties, ObjectNameService objectNameService,
-                                ObjectChannelService objectChannelService, SignService signService) {
+    public OssServerServiceImpl(OssProperties ossProperties, ObjectNameService objectNameService) {
         this.ossProperties = ossProperties;
         this.objectNameService = objectNameService;
-        this.objectChannelService = objectChannelService;
-        this.signService = signService;
     }
 
     @Override
@@ -49,18 +41,4 @@ public class OssServerServiceImpl implements OssServerService {
         String objectName = channel.getPrefix();
         objectNameService.createParentDirs(objectName, ObjectScope.PUBLIC.getCode());
     }
-
-    public String getSignedUrl(String url) {
-        List<String> list = objectChannelService.getAllChannelPrefix();
-        for (String prefix : list) {
-            if (url.startsWith(prefix)) {
-
-            }
-        }
-
-        int loginUser = 1;
-        int channelId = 1;
-        String signedUrl = signService.getSignedUrl(loginUser, url, channelId, 600);
-        return signedUrl;
-    }
 }

+ 13 - 7
oss-store/src/main/java/cn/reghao/oss/store/rpc/SignService.java

@@ -1,10 +1,12 @@
 package cn.reghao.oss.store.rpc;
 
 import cn.reghao.oss.store.config.OssProperties;
+import cn.reghao.oss.store.service.ObjectChannelService;
 import cn.reghao.oss.store.util.JwtUtil;
 import cn.reghao.oss.store.util.SignatureUtil;
 import cn.reghao.oss.store.api.constant.ChannelAction;
 import cn.reghao.oss.store.api.dto.OssPayload;
+import cn.reghao.oss.store.util.UserContext;
 import org.springframework.stereotype.Service;
 
 import java.util.UUID;
@@ -18,12 +20,14 @@ import java.util.UUID;
 @Service
 public class SignService {
     private final String secretKey;
+    private final ObjectChannelService objectChannelService;
 
-    public SignService(OssProperties ossProperties) {
+    public SignService(OssProperties ossProperties, ObjectChannelService objectChannelService) {
         this.secretKey = ossProperties.getSecretKey();
+        this.objectChannelService = objectChannelService;
     }
 
-    public String getSignedUrl(int loginUser, String url, int channelId, long expire) {
+    /*public String getSignedUrl(int loginUser, String url, int channelId, long expire) {
         long timestamp = System.currentTimeMillis() + expire*1000;
         String action = ChannelAction.access.getName();
         OssPayload ossPayload = new OssPayload(action, channelId, loginUser);
@@ -34,14 +38,16 @@ public class SignService {
         String requestString = String.format("%s%s?%s", "GET", url, queryString);
         String sign = SignatureUtil.sign(requestString, secretKey);
         return String.format("%s?token=%s&t=%s&nonce=%s&sign=%s", url, token, timestamp, nonce, sign);
-    }
+    }*/
 
-    public String getSignedUrl(String url, int loginUser) {
-        String secretId = loginUser+"";
-        long timestamp = System.currentTimeMillis() + 3600*1000;
+    public String getSignedUrl(String url, int expire) {
+        int loginUser = UserContext.getUser();
+        long timestamp = System.currentTimeMillis() + expire*1000L;
+        int channelId = objectChannelService.getChannelId(url);
 
         String action = ChannelAction.download.getName();
-        OssPayload ossPayload = new OssPayload(action, 102, loginUser);
+        OssPayload ossPayload = new OssPayload(action, channelId, loginUser);
+
         String token = JwtUtil.createToken(ossPayload, timestamp, secretKey);
         String nonce = UUID.randomUUID().toString();
         String queryString = String.format("token=%s&t=%s&nonce=%s", token, timestamp, nonce);

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

@@ -1,6 +1,5 @@
 package cn.reghao.oss.store.rpc.media;
 
-import cn.reghao.oss.store.api.constant.UploadChannel;
 import cn.reghao.oss.store.api.iface.ObjectService;
 import cn.reghao.oss.store.db.mapper.AudioFileMapper;
 import cn.reghao.oss.store.db.repository.AudioRepository;
@@ -52,12 +51,11 @@ public class AudioFileServiceImpl implements AudioFileService {
     }
 
     @Override
-    public List<AudioUrl> getAudioUrls(String audioFileId, int loginUser) {
-        int channelId = UploadChannel.audio.getCode();
+    public List<AudioUrl> getAudioUrls(String audioFileId, int expireSecond) {
         List<AudioUrl> audioUrls = audioRepository.getAudioUrls(audioFileId);
         audioUrls.forEach(audioUrl -> {
             String url = audioUrl.getUrl();
-            String signedUrl = signService.getSignedUrl(loginUser, url, channelId, 3600);
+            String signedUrl = signService.getSignedUrl(url, expireSecond);
             audioUrl.setUrl(signedUrl);
         });
         return audioUrls;

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

@@ -2,7 +2,6 @@ package cn.reghao.oss.store.rpc.media;
 
 import cn.reghao.jutil.media.FFmpegWrapper;
 import cn.reghao.jutil.media.model.MediaProps;
-import cn.reghao.oss.store.api.constant.UploadChannel;
 import cn.reghao.oss.store.api.dto.ObjectMeta;
 import cn.reghao.oss.store.api.iface.ObjectService;
 import cn.reghao.oss.store.db.mapper.VideoFileMapper;
@@ -66,12 +65,11 @@ public class VideoFileServiceImpl implements VideoFileService {
     }
 
     @Override
-    public List<VideoUrlDto> getVideoUrls(String videoFileId, int loginUser) {
-        int channelId = UploadChannel.video.getCode();
+    public List<VideoUrlDto> getVideoUrls(String videoFileId, int expireSecond) {
         List<VideoUrlDto> list = videoRepository.findVideoUrls(videoFileId);
         list.forEach(videoUrlDto -> {
             String url = videoUrlDto.getUrl();
-            String signedUrl = signService.getSignedUrl(loginUser, url, channelId, 3600);
+            String signedUrl = signService.getSignedUrl(url, expireSecond);
             videoUrlDto.setUrl(signedUrl);
         });
         return list;

+ 18 - 0
oss-store/src/main/java/cn/reghao/oss/store/service/ObjectChannelService.java

@@ -48,4 +48,22 @@ public class ObjectChannelService {
 
         return Collections.emptyList();
     }
+
+    public int getChannelId(String url) {
+        String domain = "";
+        String objectName = url.replace("//" + domain + "/", "");
+        String nodeAddr = machineId.ipv4();
+        try {
+            List<ObjectChannel> list = ossConsoleClient.getObjectChannels(nodeAddr);
+            for (ObjectChannel channel : list) {
+                if (objectName.startsWith(channel.getPrefix())) {
+                    return channel.getChannelId();
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return -1;
+    }
 }

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

@@ -39,7 +39,7 @@ public class FileProcessor {
         String objectName = objectResult.getObjectName();
         UploadFileRet uploadFileRet = null;
         int fileType = channel.getFileType();
-        int channelId = channel.getFileType();
+        int channelId = channel.getChannelId();
         ObjectType objectType = ObjectType.getByCode(fileType);
         switch (objectType) {
             case Image:

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

@@ -64,7 +64,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() || channelId == UploadChannel.disk.getCode()) {
+        if (channelId == UploadChannel.photo.getCode()) {
             ImageFile imageFile = getConvertedImageFile(objectResult, "webp", width, height);
             list.add(imageFile);
         }
@@ -85,7 +85,7 @@ public class ImageFileProcessor {
         List<ImageFile> list = new ArrayList<>();
         list.add(imageFile1);
 
-        if (channelId == UploadChannel.photo.getCode() || channelId == UploadChannel.disk.getCode()) {
+        if (channelId == UploadChannel.photo.getCode()) {
             if (imageFiles.size() > 1) {
                 for (int i = 1; i < imageFiles.size(); i++) {
                     ImageFile imageFile2 = imageFiles.get(i);