Explorar o código

添加 ObjectChannel getObjectChannel(int channelId) 方法

reghao %!s(int64=2) %!d(string=hai) anos
pai
achega
f82bb3376f

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

@@ -29,11 +29,14 @@ public class OssServerController {
     private final OssService ossService;
     private final OssObjectService ossObjectService;
     private final OssStoreService ossStoreService;
+    private UploadChannelService uploadChannelService;
 
-    public OssServerController(OssService ossService, OssObjectService ossObjectService, OssStoreService ossStoreService) {
+    public OssServerController(OssService ossService, OssObjectService ossObjectService,
+                               OssStoreService ossStoreService, UploadChannelService uploadChannelService) {
         this.ossService = ossService;
         this.ossObjectService = ossObjectService;
         this.ossStoreService = ossStoreService;
+        this.uploadChannelService = uploadChannelService;
     }
 
     @ApiOperation(value = "获取 oss-store 节点")
@@ -43,6 +46,14 @@ public class OssServerController {
         return WebResult.success(serverInfo);
     }
 
+    @ApiOperation(value = "根据 channel_id 获取 UploadChannel")
+    @GetMapping(value = "/server/channel", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String getChannel(@RequestParam("channelId") int channelId) {
+        int loginUser = AuthKeyContext.getUser();
+        ObjectChannel objectChannel = uploadChannelService.getObjectChannelByChannelId(channelId, loginUser);
+        return WebResult.success(objectChannel);
+    }
+
     @ApiOperation(value = "获取对象信息")
     @GetMapping(value = "/object/info", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getObjectInfo(@RequestParam("objectId") String objectId) {

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

@@ -1,7 +1,6 @@
 package cn.reghao.oss.console.app.service;
 
 import cn.reghao.oss.console.app.model.po.StoreNode;
-import cn.reghao.oss.console.app.model.po.UploadChannel;
 import cn.reghao.oss.store.api.dto.ObjectChannel;
 import cn.reghao.oss.store.api.dto.StoreNodeDto;
 import cn.reghao.oss.store.api.dto.StoreProperties;
@@ -37,22 +36,10 @@ public class OssStoreService {
 
         String domain = storeNode.getDomain();
         return uploadChannelService.getByDomain(domain).stream()
-                .map(this::getObjectChannel)
+                .map(uploadChannelService::getObjectChannel)
                 .collect(Collectors.toList());
     }
 
-    private ObjectChannel getObjectChannel(UploadChannel uploadChannel) {
-        int channelId = uploadChannel.getChannelId();
-        String name = uploadChannel.getName();
-        String channelPrefix = uploadChannel.getPrefix();
-        long maxSize = uploadChannel.getMaxSize();
-        int fileType = uploadChannel.getFileType();
-        boolean processFile = uploadChannel.getProcessFile();
-        int scope = uploadChannel.getScope();
-        String domain = uploadChannel.getBindDomain();
-        return new ObjectChannel(channelId, name, channelPrefix, maxSize, fileType, processFile, scope, domain);
-    }
-
     public StoreProperties getStoreProperties(String nodeAddr) {
         StoreNode storeNode = storeNodeService.getByNodeAddr(nodeAddr);
         String domain = storeNode.getDomain();

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

@@ -122,6 +122,23 @@ public class UploadChannelService {
         return uploadChannelRepository.findByChannelIdAndCreateBy(channelId, createBy);
     }
 
+    public ObjectChannel getObjectChannelByChannelId(int channelId, int createBy) {
+        UploadChannel uploadChannel = uploadChannelRepository.findByChannelIdAndCreateBy(channelId, createBy);
+        return getObjectChannel(uploadChannel);
+    }
+
+    public ObjectChannel getObjectChannel(UploadChannel uploadChannel) {
+        int channelId = uploadChannel.getChannelId();
+        String name = uploadChannel.getName();
+        String channelPrefix = uploadChannel.getPrefix();
+        long maxSize = uploadChannel.getMaxSize();
+        int fileType = uploadChannel.getFileType();
+        boolean processFile = uploadChannel.getProcessFile();
+        int scope = uploadChannel.getScope();
+        String domain = uploadChannel.getBindDomain();
+        return new ObjectChannel(channelId, name, channelPrefix, maxSize, fileType, processFile, scope, domain);
+    }
+
     public StoreNode getStoreNodeByChannelId(int channelId) throws Exception {
         int userId = AuthKeyContext.getUser();
         UploadChannel uploadChannel = uploadChannelRepository.findByChannelIdAndCreateBy(channelId, userId);

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

@@ -117,6 +117,31 @@ public class OssConsoleClient {
         return webResult.getData();
     }
 
+    public ObjectChannel getObjectChannel(int channelId) throws Exception {
+        String api = String.format("%s/api/oss/server/channel?channelId=%s", endpoint, channelId);
+        HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
+                .header("authorization", "Bearer " + token)
+                .version(HttpClient.Version.HTTP_1_1)
+                .GET()
+                .build();
+        HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+        int statusCode = httpResponse.statusCode();
+        String body = httpResponse.body();
+        if (statusCode != 200) {
+            String errMsg = String.format("%s -> %s", statusCode, body);
+            throw new Exception(errMsg);
+        }
+
+        Type type = new TypeToken<WebResult<ObjectChannel>>(){}.getType();
+        WebResult<ObjectChannel> webResult = JsonConverter.jsonToObject(body, type);
+        if (webResult.getCode() != 0) {
+            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
+            throw new Exception(errMsg);
+        }
+
+        return webResult.getData();
+    }
+
     public StoreProperties getStoreProperties(String nodeAddr) throws Exception {
         String api = String.format("%s/api/oss/store/properties?nodeAddr=%s", endpoint, nodeAddr);
         HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))