Переглянути джерело

对应 store-api 的更新

reghao 2 роки тому
батько
коміт
3a8b5adb73
29 змінених файлів з 210 додано та 728 видалено
  1. 0 24
      oss-console/src/main/java/cn/reghao/oss/console/app/controller/ImageFileController.java
  2. 0 82
      oss-console/src/main/java/cn/reghao/oss/console/app/controller/MediaController.java
  3. 48 0
      oss-console/src/main/java/cn/reghao/oss/console/app/controller/OssObjectController.java
  4. 2 2
      oss-console/src/main/java/cn/reghao/oss/console/app/controller/OssServerController.java
  5. 2 3
      oss-console/src/main/java/cn/reghao/oss/console/app/controller/VideoFileController.java
  6. 19 0
      oss-console/src/main/java/cn/reghao/oss/console/app/service/OssObjectService.java
  7. 0 15
      oss-console/src/main/java/cn/reghao/oss/console/app/service/OssService.java
  8. 0 13
      oss-console/src/main/java/cn/reghao/oss/console/app/service/media/ImageService.java
  9. 0 49
      oss-console/src/main/java/cn/reghao/oss/console/app/service/media/MediaService.java
  10. 4 2
      oss-console/src/main/java/cn/reghao/oss/console/app/service/media/VideoService.java
  11. 2 162
      oss-sdk/src/main/java/cn/reghao/oss/sdk/OssConsoleClient.java
  12. 5 5
      oss-sdk/src/test/java/ObjectTest.java
  13. 16 8
      oss-store/src/main/java/cn/reghao/oss/store/controller/ObjectUploadController.java
  14. 0 9
      oss-store/src/main/java/cn/reghao/oss/store/db/repository/ImageRepository.java
  15. 4 0
      oss-store/src/main/java/cn/reghao/oss/store/db/repository/ObjectRepository.java
  16. 10 45
      oss-store/src/main/java/cn/reghao/oss/store/rpc/ObjectServiceImpl.java
  17. 23 1
      oss-store/src/main/java/cn/reghao/oss/store/rpc/OssServerServiceImpl.java
  18. 0 78
      oss-store/src/main/java/cn/reghao/oss/store/rpc/PermissionServiceImpl.java
  19. 14 0
      oss-store/src/main/java/cn/reghao/oss/store/rpc/SignService.java
  20. 19 0
      oss-store/src/main/java/cn/reghao/oss/store/rpc/media/AudioFileServiceImpl.java
  21. 0 30
      oss-store/src/main/java/cn/reghao/oss/store/rpc/media/ConvertServiceImpl.java
  22. 14 20
      oss-store/src/main/java/cn/reghao/oss/store/rpc/media/ImageFileServiceImpl.java
  23. 0 112
      oss-store/src/main/java/cn/reghao/oss/store/rpc/media/MediaScopeServiceImpl.java
  24. 13 0
      oss-store/src/main/java/cn/reghao/oss/store/rpc/media/VideoFileServiceImpl.java
  25. 1 17
      oss-store/src/main/java/cn/reghao/oss/store/service/ChannelValidateService.java
  26. 5 2
      oss-store/src/main/java/cn/reghao/oss/store/service/ObjectMultipartUploadService.java
  27. 2 11
      oss-store/src/main/java/cn/reghao/oss/store/service/ObjectNameService.java
  28. 7 37
      oss-store/src/main/java/cn/reghao/oss/store/task/FileProcessor.java
  29. 0 1
      oss-store/src/main/java/cn/reghao/oss/store/util/SignatureUtil.java

+ 0 - 24
oss-console/src/main/java/cn/reghao/oss/console/app/controller/ImageFileController.java

@@ -25,13 +25,6 @@ public class ImageFileController {
         this.imageService = imageService;
     }
 
-    @ApiOperation(value = "根据 object_name 删除图片文件")
-    @PostMapping(value = "/delete/name", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String deleteByObjectNames(@RequestParam("objectNames") List<String> objectNames) throws Exception {
-        imageService.deleteByObjectNames(objectNames);
-        return WebResult.success();
-    }
-
     @ApiOperation(value = "根据 image_file_id 删除图片文件")
     @PostMapping(value = "/delete/id", produces = MediaType.APPLICATION_JSON_VALUE)
     public String deleteByImageIds(@RequestParam("imageFileIds") List<String> imageFileIds) throws Exception {
@@ -39,27 +32,10 @@ public class ImageFileController {
         return WebResult.success();
     }
 
-    @ApiOperation(value = "获取图片文件 url")
-    @GetMapping(value = "/url", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String getImageUrl(@RequestParam("channelName") String channelName,
-                              @RequestParam("imageFileId") String imageFileId) {
-        ImageUrlDto imageUrlDto = imageService.getImageUrl(channelName, imageFileId);
-        return WebResult.success(imageUrlDto);
-    }
-
     @ApiOperation(value = "获取图片文件 url")
     @GetMapping(value = "/urls", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getImageUrls(@RequestParam("imageFileIds") Set<String> imageFileIds) {
         List<ImageUrlDto> list = imageService.getImageUrls(imageFileIds);
         return WebResult.success(list);
     }
-
-    @ApiOperation(value = "获取图片签名 url")
-    @GetMapping(value = "/signedurl", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String getImageSignedUrls(@RequestParam("channelId") int channelId,
-                                     @RequestParam("url") String url,
-                                     @RequestParam(value = "loginUser") Integer loginUser) {
-        String signedUrl = imageService.getSignedUrl(url, loginUser, channelId);
-        return WebResult.success(signedUrl);
-    }
 }

+ 0 - 82
oss-console/src/main/java/cn/reghao/oss/console/app/controller/MediaController.java

@@ -1,82 +0,0 @@
-package cn.reghao.oss.console.app.controller;
-
-import cn.reghao.jutil.jdk.result.WebResult;
-import cn.reghao.oss.console.app.service.media.MediaService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * @author reghao
- * @date 2024-02-23 09:27:28
- */
-@Api(tags = "媒体接口")
-@RestController
-@RequestMapping("/api/oss/media")
-public class MediaController {
-    private final MediaService mediaService;
-
-    public MediaController(MediaService mediaService) {
-        this.mediaService = mediaService;
-    }
-
-    @ApiOperation(value = "视频转码")
-    @PostMapping(value = "/convert/video/{videoFileId}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String convertVideo(@PathVariable("videoFileId") String videoFileId) throws Exception {
-        mediaService.convertVideo(videoFileId);
-        return WebResult.success();
-    }
-
-    @ApiOperation(value = "音频转码")
-    @PostMapping(value = "/convert/audio/{audioFileId}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String convertAudio(@PathVariable("audioFileId") String audioFileId) throws Exception {
-        mediaService.convertAudio(audioFileId);
-        return WebResult.success();
-    }
-
-    @ApiOperation(value = "设置视频可见范围")
-    @PostMapping(value = "/scope/video", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String setVideoScope(@RequestParam("videoFileId") String videoFileId,
-                                @RequestParam("scope") Integer scope) {
-        mediaService.setVideoScope(videoFileId, scope);
-        return WebResult.success();
-    }
-
-    @ApiOperation(value = "设置音频可见范围")
-    @PostMapping(value = "/scope/audio", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String setAudioScope(@RequestParam("audioFileId") String audioFileId,
-                                @RequestParam("scope") Integer scope) {
-        mediaService.setAudioScope(audioFileId, scope);
-        return WebResult.success();
-    }
-
-    @ApiOperation(value = "设置图片可见范围")
-    @PostMapping(value = "/scope/image", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String setImageScope(@RequestParam("imageFileIds") Set<String> imageFileIds,
-                                @RequestParam("scope") Integer scope) {
-        mediaService.setImagesScope(imageFileIds, scope);
-        return WebResult.success();
-    }
-
-    @ApiOperation(value = "设置对象可见范围")
-    @PostMapping(value = "/scope/object", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String setObjectScope(@RequestParam("scope") Integer scope,
-                                @RequestParam("objectId") String objectId,
-                                @RequestParam("contentType") Integer contentType) {
-        mediaService.setObjectScope(scope, objectId, contentType);
-        return WebResult.success();
-    }
-
-    @ApiOperation(value = "设置对象可见范围")
-    @PostMapping(value = "/scope/objects", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String setObjectsScope(@RequestParam("scope") Integer scope,
-                                  @RequestParam("objectIds") List<String> objectIds,
-                                  @RequestParam("contentType") Integer contentType) {
-        mediaService.setObjectsScope(scope, objectIds, contentType);
-        return WebResult.success();
-    }
-}

+ 48 - 0
oss-console/src/main/java/cn/reghao/oss/console/app/controller/OssObjectController.java

@@ -0,0 +1,48 @@
+package cn.reghao.oss.console.app.controller;
+
+import cn.reghao.jutil.jdk.result.WebResult;
+import cn.reghao.oss.console.app.service.OssObjectService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2024-02-23 09:27:28
+ */
+@Api(tags = "媒体接口")
+@RestController
+@RequestMapping("/api/oss/media")
+public class OssObjectController {
+    private final OssObjectService ossObjectService;
+
+    public OssObjectController(OssObjectService ossObjectService) {
+        this.ossObjectService = ossObjectService;
+    }
+
+    @ApiOperation(value = "设置对象可见范围")
+    @PostMapping(value = "/scope/object", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String setObjectScope(@RequestParam("scope") Integer scope,
+                                @RequestParam("objectId") String objectId,
+                                @RequestParam("contentType") Integer contentType) {
+        return WebResult.success();
+    }
+
+    @ApiOperation(value = "设置对象列表可见范围")
+    @PostMapping(value = "/scope/objects", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String setObjectsScope(@RequestParam("scope") Integer scope,
+                                  @RequestParam("objectIds") List<String> objectIds,
+                                  @RequestParam("contentType") Integer contentType) {
+        return WebResult.success();
+    }
+
+    @ApiOperation(value = "根据 object_name 删除图片文件")
+    @PostMapping(value = "/delete/name", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String deleteByObjectNames(@RequestParam("objectNames") List<String> objectNames) throws Exception {
+        ossObjectService.deleteByObjectNames(objectNames);
+        return WebResult.success();
+    }
+}

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

@@ -23,10 +23,10 @@ import java.util.List;
 @Api(tags = "OSS 接口")
 @RestController
 @RequestMapping("/api/oss")
-public class OssController {
+public class OssServerController {
     private final OssService ossService;
 
-    public OssController(OssService ossService) {
+    public OssServerController(OssService ossService) {
         this.ossService = ossService;
     }
 

+ 2 - 3
oss-console/src/main/java/cn/reghao/oss/console/app/controller/VideoFileController.java

@@ -42,9 +42,8 @@ public class VideoFileController {
 
     @ApiOperation(value = "获取视频文件URL")
     @GetMapping(value = "/url", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String getVideoUrl(@RequestParam("videoFileId") String videoFileId,
-                              @RequestParam("userId") Integer userId) {
-        List<VideoUrlDto> list = videoService.getVideoUrls(videoFileId, userId);
+    public String getVideoUrl(@RequestParam("videoFileId") String videoFileId) {
+        List<VideoUrlDto> list = videoService.getVideoUrls(videoFileId);
         return WebResult.success(list);
     }
 

+ 19 - 0
oss-console/src/main/java/cn/reghao/oss/console/app/service/OssObjectService.java

@@ -0,0 +1,19 @@
+package cn.reghao.oss.console.app.service;
+
+import cn.reghao.oss.store.api.iface.ObjectService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2024-02-29 14:27:03
+ */
+@Service
+public class OssObjectService {
+    private ObjectService objectService;
+
+    public void deleteByObjectNames(List<String> objectNames) {
+        objectService.deleteByObjectNames(objectNames);
+    }
+}

+ 0 - 15
oss-console/src/main/java/cn/reghao/oss/console/app/service/OssService.java

@@ -105,19 +105,4 @@ public class OssService {
         ObjectService objectService = remoteService.getService(host, port, ObjectService.class);
         return objectService.getDownloadUrl(objectId, channelId, userId);
     }
-
-    public void putObjectPrefix(ObjectPrefix objectPrefix) {
-    }
-
-    public List<String> getObjectPrefix() {
-        return Collections.emptyList();
-    }
-
-    public ObjectMeta getObject(String objectName) {
-        return null;
-    }
-
-    public ObjectUrl getObjectUrl(String objectId) {
-        return null;
-    }
 }

+ 0 - 13
oss-console/src/main/java/cn/reghao/oss/console/app/service/media/ImageService.java

@@ -15,24 +15,11 @@ import java.util.Set;
 public class ImageService {
     private ImageFileService imageFileService;
 
-    public void deleteByObjectNames(List<String> objectNames) {
-        imageFileService.deleteByObjectNames(objectNames);
-    }
-
     public void deleteByImageFileIds(List<String> imageFileIds) {
         imageFileService.deleteByImageFileIds(imageFileIds);
     }
 
-    public ImageUrlDto getImageUrl(String channelName, String imageFileId) {
-        int channelId = 1;
-        return imageFileService.getImageUrl(channelId, imageFileId);
-    }
-
     public List<ImageUrlDto> getImageUrls(Set<String> imageFileIds) {
         return imageFileService.getImageUrls(imageFileIds);
     }
-
-    public String getSignedUrl(String url, int loginUser, int channelId) {
-        return imageFileService.getSignedUrl(url);
-    }
 }

+ 0 - 49
oss-console/src/main/java/cn/reghao/oss/console/app/service/media/MediaService.java

@@ -1,49 +0,0 @@
-package cn.reghao.oss.console.app.service.media;
-
-import cn.reghao.oss.store.api.iface.media.ConvertService;
-import cn.reghao.oss.store.api.iface.media.MediaScopeService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * @author reghao
- * @date 2024-02-23 09:24:05
- */
-@Service
-public class MediaService {
-    private ConvertService convertService;
-    private MediaScopeService mediaScopeService;
-
-    public void convertVideo(String videoFileId) {
-        convertService.convertVideo(videoFileId);
-    }
-
-    public void convertAudio(String audioFileId) {
-        convertService.convertAudio(audioFileId);
-    }
-
-    @Deprecated
-    public void setVideoScope(String videoFileId, int scope) {
-        mediaScopeService.setVideoScope(videoFileId, scope);
-    }
-
-    @Deprecated
-    public void setAudioScope(String audioFileId, int scope) {
-        mediaScopeService.setAudioScope(audioFileId, scope);
-    }
-
-    @Deprecated
-    public void setImagesScope(Set<String> imageFileIds, int scope) {
-        mediaScopeService.setImagesScope(imageFileIds, scope);
-    }
-
-    public void setObjectScope(int scope, String objectId, int contentType) {
-        mediaScopeService.setObjectScope(scope, objectId, contentType);
-    }
-
-    public void setObjectsScope(int scope, List<String> objectIds, int contentType) {
-        mediaScopeService.setObjectsScope(scope, objectIds, contentType);
-    }
-}

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

@@ -1,5 +1,6 @@
 package cn.reghao.oss.console.app.service.media;
 
+import cn.reghao.oss.console.util.AuthKeyContext;
 import cn.reghao.oss.store.api.dto.media.VideoInfo;
 import cn.reghao.oss.store.api.dto.media.VideoUrlDto;
 import cn.reghao.oss.store.api.iface.media.VideoFileService;
@@ -24,8 +25,9 @@ public class VideoService {
         return videoFileService.getVideoInfo(videoFileId);
     }
 
-    public List<VideoUrlDto> getVideoUrls(String videoFileId, int loginUser) {
-        return videoFileService.getVideoUrls(videoFileId, loginUser);
+    public List<VideoUrlDto> getVideoUrls(String videoFileId) {
+        int authedUser = AuthKeyContext.getUser();
+        return videoFileService.getVideoUrls(videoFileId, authedUser);
     }
 
     public LocalDateTime getCreateTime(String videoFileId) {

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

@@ -245,90 +245,6 @@ public class OssConsoleClient {
         }
     }
 
-    @Deprecated
-    public void setVideoScope(String videoFileId, int scope) throws Exception {
-        MultiPartBodyPublisher publisher = new MultiPartBodyPublisher();
-        publisher.addPart("videoId", videoFileId);
-        publisher.addPart("scope", scope+"");
-
-        String api = String.format("%s/api/oss/media/scope/video", endpoint);
-        HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
-                .header("authorization", "Bearer " + token)
-                .version(HttpClient.Version.HTTP_1_1)
-                .POST(publisher.build())
-                .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<String>>(){}.getType();
-        WebResult<String> webResult = JsonConverter.jsonToObject(body, type);
-        if (webResult.getCode() != 0) {
-            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
-            throw new Exception(errMsg);
-        }
-    }
-
-    @Deprecated
-    public void setAudioScope(String audioFileId, int scope) throws Exception {
-        MultiPartBodyPublisher publisher = new MultiPartBodyPublisher();
-        publisher.addPart("audioFileId", audioFileId);
-        publisher.addPart("scope", scope+"");
-
-        String api = String.format("%s/api/oss/media/scope/audio", endpoint);
-        HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
-                .header("authorization", "Bearer " + token)
-                .version(HttpClient.Version.HTTP_1_1)
-                .POST(publisher.build())
-                .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<String>>(){}.getType();
-        WebResult<String> webResult = JsonConverter.jsonToObject(body, type);
-        if (webResult.getCode() != 0) {
-            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
-            throw new Exception(errMsg);
-        }
-    }
-
-    @Deprecated
-    public void setImagesScope(Set<String> imageFileIds, int scope) throws Exception {
-        String api = String.format("%s/api/oss/media/scope/image", endpoint);
-        MultiPartBodyPublisher publisher = new MultiPartBodyPublisher();
-        publisher.addPart("imageFileIds", imageFileIds.toString());
-        publisher.addPart("scope", scope+"");
-
-        HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
-                .header("authorization", "Bearer " + token)
-                .version(HttpClient.Version.HTTP_1_1)
-                .POST(publisher.build())
-                .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<String>>(){}.getType();
-        WebResult<String> webResult = JsonConverter.jsonToObject(body, type);
-        if (webResult.getCode() != 0) {
-            String errMsg = String.format("%s - %s", webResult.getCode(), webResult.getMsg());
-            throw new Exception(errMsg);
-        }
-    }
-
     public void setObjectScope(int scope, String objectId, int contentType) throws Exception {
         String api = String.format("%s/api/oss/media/scope/object", endpoint);
         MultiPartBodyPublisher publisher = new MultiPartBodyPublisher();
@@ -483,57 +399,6 @@ public class OssConsoleClient {
         }
     }
 
-    public ImageUrlDto getImageUrl(int channelId, String imageFileId) throws Exception {
-        String api = String.format("%s/api/oss/media/image/url?channelId=%s&imageFileId=%s", endpoint, channelId, imageFileId);
-        //String api = String.format("%s/api/oss/media/image/url?channelId=%s&imageFileId=%s&loginUser=%s", endpoint, channelId, imageFileId);
-        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<ImageUrlDto>>(){}.getType();
-        WebResult<ImageUrlDto> 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 ImageUrlDto getImageUrl(String imageFileId, int loginUser, int channelId) throws Exception {
-        String api = String.format("%s/api/oss/media/image/url?channelId=%s&imageFileId=%s&loginUser=%s", endpoint, channelId, imageFileId, loginUser);
-        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<ImageUrlDto>>(){}.getType();
-        WebResult<ImageUrlDto> 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 List<ImageUrlDto> getImageUrls(Set<String> imageFileIds) throws Exception {
         String api = String.format("%s/api/oss/media/image/urls?imageFileIds=%s", endpoint, imageFileIds.toString());
         HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
@@ -559,31 +424,6 @@ public class OssConsoleClient {
         return webResult.getData();
     }
 
-    public String getSignedUrl(String url, int loginUser, int channelId) throws Exception {
-        String api = String.format("%s/api/oss/media/image/signedurl?channelId=%s&url=%s&loginUser=%s", endpoint, channelId, url, loginUser);
-        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<String>>(){}.getType();
-        WebResult<String> 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 void deleteVideoFile(String videoFileId) throws Exception {
         String api = String.format("%s/api/oss/media/video/delete/%s", endpoint, videoFileId);
         HttpRequest.Builder builder = HttpRequest.newBuilder(new URI(api)).version(HttpClient.Version.HTTP_1_1);
@@ -629,8 +469,8 @@ public class OssConsoleClient {
         return webResult.getData();
     }
 
-    public List<VideoUrlDto> getVideoUrls(String videoFileId, int loginUser) throws Exception {
-        String api = String.format("%s/api/oss/media/video/url?videoFileId=%s&userId=%s", endpoint, videoFileId, loginUser);
+    public List<VideoUrlDto> getVideoUrls(String videoFileId) throws Exception {
+        String api = String.format("%s/api/oss/media/video/url?videoFileId=%s", endpoint, videoFileId);
         HttpRequest httpRequest = HttpRequest.newBuilder(new URI(api))
                 .header("authorization", "Bearer " + token)
                 .version(HttpClient.Version.HTTP_1_1)

+ 5 - 5
oss-sdk/src/test/java/ObjectTest.java

@@ -14,7 +14,7 @@ import java.io.*;
 @Slf4j
 public class ObjectTest {
     static void multipartUpload() throws Exception {
-        String storeEndpoint = "http://ossweb.reghao.cn";
+        String storeEndpoint = "";
         ObjectMultipartUploadService multipartUploadService = new ObjectMultipartUploadService(storeEndpoint);
         String filePath = "";
         int channelId = 1;
@@ -24,12 +24,12 @@ public class ObjectTest {
     }
 
     public static void main(String[] args) throws Exception {
-        String consoleUrl = "http://ossweb.reghao.cn";
-        String accessKeyId = "QQ0LlqAJ";
-        String accessKeySecret = "gA1EBpn3SN9ay4EgaX";
+        String consoleUrl = "http://ossconsole.reghao.cn";
+        String accessKeyId = "z9mtelCi";
+        String accessKeySecret = "mX7dO8zC8dokThJOC2";
         OssConsoleClient ossConsoleClient = new OssConsoleClient(consoleUrl, accessKeyId, accessKeySecret);
 
-        int channelId = 5;
+        int channelId = 103;
         ServerInfo serverInfo = ossConsoleClient.getServerInfo(channelId);
         if (serverInfo == null) {
             log.info("获取 server_info 失败");

+ 16 - 8
oss-store/src/main/java/cn/reghao/oss/store/controller/ObjectUploadController.java

@@ -1,12 +1,10 @@
 package cn.reghao.oss.store.controller;
 
+import cn.reghao.oss.store.api.dto.ObjectChannel;
 import cn.reghao.oss.store.config.OssProperties;
 import cn.reghao.oss.store.model.vo.ObjectProp;
 import cn.reghao.oss.store.model.vo.ObjectResult;
-import cn.reghao.oss.store.service.ChannelValidateService;
-import cn.reghao.oss.store.service.FileStoreService;
-import cn.reghao.oss.store.service.ObjectNameService;
-import cn.reghao.oss.store.service.PutObjectService;
+import cn.reghao.oss.store.service.*;
 import cn.reghao.oss.store.task.FileProcessor;
 import cn.reghao.oss.store.util.JwtUtil;
 import cn.reghao.jutil.jdk.result.Result;
@@ -38,16 +36,19 @@ public class ObjectUploadController {
     private final PutObjectService putObjectService;
     private final FileProcessor fileProcessor;
     private final OssProperties ossProperties;
+    private final ObjectChannelService objectChannelService;
 
     public ObjectUploadController(ChannelValidateService channelValidateService, FileStoreService fileStoreService,
                                   ObjectNameService objectNameService, PutObjectService putObjectService,
-                                  FileProcessor fileProcessor, OssProperties ossProperties) {
+                                  FileProcessor fileProcessor, OssProperties ossProperties,
+                                  ObjectChannelService objectChannelService) {
         this.channelValidateService = channelValidateService;
         this.fileStoreService = fileStoreService;
         this.objectNameService = objectNameService;
         this.putObjectService = putObjectService;
         this.fileProcessor = fileProcessor;
         this.ossProperties = ossProperties;
+        this.objectChannelService = objectChannelService;
     }
 
     @PutMapping(value = "/**")
@@ -78,6 +79,13 @@ public class ObjectUploadController {
                     .body(WebResult.failWithMsg("channel not match in token"));
         }
 
+        ObjectChannel objectChannel = objectChannelService.getObjectChannel(channelId);
+        if (objectChannel == null) {
+            String errMsg = String.format("channel validate failed, channel %s not exist", channelId);
+            return ResponseEntity.status(HttpStatus.FORBIDDEN)
+                    .body(WebResult.failWithMsg(errMsg));
+        }
+
         int userId1 = ossPayload.getUserId();
         UserContext context = new UserContext(userId1);
 
@@ -85,7 +93,7 @@ public class ObjectUploadController {
         String contentId = UUID.randomUUID().toString().replace("-", "");
         long size = file.getSize();
         File savedFile = fileStoreService.saveFile(file.getInputStream(), contentId, size);
-        Result result = channelValidateService.validate(savedFile, channelId);
+        Result result = channelValidateService.validateFile(savedFile, objectChannel);
         if (result.getCode() != 0) {
             FileUtils.deleteQuietly(savedFile);
             return ResponseEntity.status(HttpStatus.FORBIDDEN).body(WebResult.result(result));
@@ -102,12 +110,12 @@ public class ObjectUploadController {
             filename = "";
         }
 
-        ObjectProp objectProp = objectNameService.getObjectProp(channelId, filename);
+        ObjectProp objectProp = objectNameService.getObjectProp(objectChannel, filename);
         ObjectResult objectResult = putObjectService.putObject(objectProp, contentId, savedFile, filename, sha256sum1);
         UploadFileRet uploadFileRet;
         String errMsg;
         try {
-            uploadFileRet = fileProcessor.process(objectResult, channelId);
+            uploadFileRet = fileProcessor.process(objectResult, objectChannel);
             return ResponseEntity.status(HttpStatus.OK).body(WebResult.success(uploadFileRet));
         } catch (Exception e) {
             e.printStackTrace();

+ 0 - 9
oss-store/src/main/java/cn/reghao/oss/store/db/repository/ImageRepository.java

@@ -3,7 +3,6 @@ package cn.reghao.oss.store.db.repository;
 import cn.reghao.oss.store.api.constant.UploadChannel;
 import cn.reghao.oss.store.api.dto.media.ImageUrlDto;
 import cn.reghao.oss.store.db.mapper.ImageFileMapper;
-import cn.reghao.oss.store.model.po.FileMeta;
 import cn.reghao.oss.store.model.po.ImageFile;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
@@ -43,14 +42,6 @@ public class ImageRepository {
         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, List<String> objectIds) {
         imageFileMapper.deleteByImageFileId(imageFileId);

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

@@ -77,6 +77,10 @@ public class ObjectRepository {
         deleteObject(fileMeta);
     }
 
+    public void deleteByObjectNames(List<String> objectNames) {
+        fileMetaMapper.findByObjectNames(objectNames).forEach(this::deleteObject);
+    }
+
     //@CacheEvict
     public void deleteByObjectIds(List<String> objectIds) {
         objectIds.forEach(this::deleteByObjectId);

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

@@ -2,13 +2,9 @@ package cn.reghao.oss.store.rpc;
 
 import cn.reghao.jutil.media.ImageOps;
 import cn.reghao.oss.store.api.dto.*;
-import cn.reghao.oss.store.config.OssProperties;
 import cn.reghao.oss.store.db.repository.ObjectRepository;
 import cn.reghao.oss.store.model.po.FileMeta;
 import cn.reghao.oss.store.service.ObjectNameService;
-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.iface.ObjectService;
 import cn.reghao.oss.store.db.mapper.FileMetaMapper;
 import org.apache.dubbo.config.annotation.DubboService;
@@ -17,7 +13,6 @@ import org.springframework.stereotype.Service;
 import java.io.File;
 import java.io.IOException;
 import java.util.List;
-import java.util.UUID;
 
 /**
  * @author reghao
@@ -29,35 +24,29 @@ public class ObjectServiceImpl implements ObjectService {
     private final FileMetaMapper fileMetaMapper;
     private final ObjectNameService objectNameService;
     private final ObjectRepository objectRepository;
-    private final String secretKey;
+    private final SignService signService;
 
     public ObjectServiceImpl(FileMetaMapper fileMetaMapper, ObjectNameService objectNameService,
-                             ObjectRepository objectRepository, OssProperties ossProperties) {
+                             ObjectRepository objectRepository, SignService signService) {
         this.fileMetaMapper = fileMetaMapper;
         this.objectNameService = objectNameService;
         this.objectRepository = objectRepository;
-        this.secretKey = ossProperties.getSecretKey();
+        this.signService = signService;
     }
 
     @Override
-    public void putObjectPrefix(ObjectPrefix objectPrefix) {
-        String prefix = objectPrefix.getPrefix();
-        int scope = objectPrefix.getScope();
-        FileMeta fileMeta = fileMetaMapper.findByObjectName(prefix);
-        if (fileMeta != null) {
+    public void setObjectsScope(int scope, List<String> objectIds) {
+        if (objectIds.isEmpty()) {
             return;
         }
-        objectNameService.createParentDirs(prefix, scope);
-    }
 
-    @Override
-    public List<String> getObjectPrefix() {
-        return fileMetaMapper.findObjectPrefix();
+        List<String> objectNames = objectRepository.getObjectNames(objectIds);
+        objectRepository.updateObjectScope1(scope, objectNames);
     }
 
     @Override
-    public ObjectMeta getObject(String objectName) {
-        return objectRepository.getObjectMeta(objectName);
+    public void deleteByObjectNames(List<String> objectNames) {
+        objectRepository.deleteByObjectNames(objectNames);
     }
 
     @Override
@@ -65,24 +54,10 @@ public class ObjectServiceImpl implements ObjectService {
         FileMeta fileMeta = objectRepository.getByObjectId(objectId);
         String objectName = fileMeta.getObjectName();
         String url = objectNameService.getObjectUrl(objectName);
-        String signedUrl = getSignedUrl(url, userId);
+        String signedUrl = signService.getSignedUrl(url, userId);
         return new DownloadUrl(signedUrl, "");
     }
 
-    private String getSignedUrl(String url, int loginUser) {
-        String secretId = loginUser+"";
-        long timestamp = System.currentTimeMillis() + 3600*1000;
-
-        String action = ChannelAction.download.getName();
-        OssPayload ossPayload = new OssPayload(action, 102, 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);
-        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);
-    }
-
     @Override
     public ObjectInfo getObjectInfo(String objectId) {
         FileMeta fileMeta = fileMetaMapper.findByObjectId(objectId);
@@ -109,14 +84,4 @@ public class ObjectServiceImpl implements ObjectService {
 
         return objectInfo;
     }
-
-    @Override
-    public ObjectUrl getObjectUrl(String objectId) {
-        FileMeta fileMeta = fileMetaMapper.findByObjectId(objectId);
-        if (fileMeta == null) {
-            return null;
-        }
-
-        return null;
-    }
 }

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

@@ -3,6 +3,7 @@ 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;
@@ -12,6 +13,8 @@ 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
@@ -21,10 +24,15 @@ import org.springframework.stereotype.Service;
 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) {
+    public OssServerServiceImpl(OssProperties ossProperties, ObjectNameService objectNameService,
+                                ObjectChannelService objectChannelService, SignService signService) {
         this.ossProperties = ossProperties;
         this.objectNameService = objectNameService;
+        this.objectChannelService = objectChannelService;
+        this.signService = signService;
     }
 
     @Override
@@ -41,4 +49,18 @@ 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;
+    }
 }

+ 0 - 78
oss-store/src/main/java/cn/reghao/oss/store/rpc/PermissionServiceImpl.java

@@ -1,78 +0,0 @@
-package cn.reghao.oss.store.rpc;
-
-import cn.reghao.oss.store.model.po.AudioFile;
-import cn.reghao.oss.store.model.po.ImageFile;
-import cn.reghao.oss.store.model.po.VideoFile;
-import cn.reghao.oss.store.api.constant.ObjectScope;
-import cn.reghao.oss.store.api.iface.PermissionService;
-import cn.reghao.oss.store.db.mapper.AudioFileMapper;
-import cn.reghao.oss.store.db.mapper.FileMetaMapper;
-import cn.reghao.oss.store.db.mapper.ImageFileMapper;
-import cn.reghao.oss.store.db.mapper.VideoFileMapper;
-import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * @author reghao
- * @date 2023-06-02 10:07:42
- */
-@DubboService
-@Service
-public class PermissionServiceImpl implements PermissionService {
-    private final ImageFileMapper imageFileMapper;
-    private final AudioFileMapper audioFileMapper;
-    private final VideoFileMapper videoFileMapper;
-    private final FileMetaMapper fileMetaMapper;
-
-    public PermissionServiceImpl(ImageFileMapper imageFileMapper, AudioFileMapper audioFileMapper,
-                                 VideoFileMapper videoFileMapper, FileMetaMapper fileMetaMapper) {
-        this.imageFileMapper = imageFileMapper;
-        this.audioFileMapper = audioFileMapper;
-        this.videoFileMapper = videoFileMapper;
-        this.fileMetaMapper = fileMetaMapper;
-    }
-
-    @Override
-    public void setDirPermission(String prefix, int scope) {
-    }
-
-    @Override
-    public void getDirPermission(String prefix) {
-        for (ObjectScope scope : ObjectScope.values()) {
-        }
-    }
-
-    @Override
-    public void setVideoPermission(String videoFileId, int scope) {
-        List<String> objectIds = videoFileMapper.findByVideoFileId(videoFileId).stream()
-                .map(VideoFile::getObjectId)
-                .collect(Collectors.toList());
-        if (!objectIds.isEmpty()) {
-            fileMetaMapper.updateScopeByObjectIds(scope, objectIds);
-        }
-    }
-
-    @Override
-    public void setAudioPermission(String audioFileId, int scope) {
-        List<String> objectIds = audioFileMapper.findByAudioFileId(audioFileId).stream()
-                .map(AudioFile::getObjectId)
-                .collect(Collectors.toList());
-        if (!objectIds.isEmpty()) {
-            fileMetaMapper.updateScopeByObjectIds(scope, objectIds);
-        }
-    }
-
-    @Override
-    public void setImagesPermission(Set<String> imageFileIds, int scope) {
-        List<String> objectIds = imageFileMapper.findByImageFileIds(imageFileIds).stream()
-                .map(ImageFile::getObjectId)
-                .collect(Collectors.toList());
-        if (!objectIds.isEmpty()) {
-            fileMetaMapper.updateScopeByObjectIds(scope, objectIds);
-        }
-    }
-}

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

@@ -35,4 +35,18 @@ public class SignService {
         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;
+
+        String action = ChannelAction.download.getName();
+        OssPayload ossPayload = new OssPayload(action, 102, 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);
+        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);
+    }
 }

+ 19 - 0
oss-store/src/main/java/cn/reghao/oss/store/rpc/media/AudioFileServiceImpl.java

@@ -1,7 +1,10 @@
 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;
+import cn.reghao.oss.store.model.po.AudioFile;
 import cn.reghao.oss.store.rpc.SignService;
 import cn.reghao.oss.store.api.dto.media.AudioInfo;
 import cn.reghao.oss.store.api.dto.media.AudioUrl;
@@ -10,6 +13,7 @@ import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author reghao
@@ -18,6 +22,8 @@ import java.util.List;
 @DubboService
 @Service
 public class AudioFileServiceImpl implements AudioFileService {
+    private AudioFileMapper audioFileMapper;
+    private ObjectService objectService;
     private final AudioRepository audioRepository;
     private final SignService signService;
 
@@ -26,6 +32,19 @@ public class AudioFileServiceImpl implements AudioFileService {
         this.signService = signService;
     }
 
+    @Override
+    public void setAudioScope(int scope, String audioFileId) {
+        List<String> objectIds = audioFileMapper.findByAudioFileId(audioFileId).stream()
+                .map(AudioFile::getObjectId)
+                .collect(Collectors.toList());
+        objectService.setObjectsScope(scope, objectIds);
+    }
+
+    @Override
+    public void deleteAudioFile(String audioFileId) {
+
+    }
+
     @Override
     public AudioInfo getAudioInfo(String audioFileId) {
         List<AudioInfo> list = audioRepository.getAudioInfo(audioFileId);

+ 0 - 30
oss-store/src/main/java/cn/reghao/oss/store/rpc/media/ConvertServiceImpl.java

@@ -1,30 +0,0 @@
-package cn.reghao.oss.store.rpc.media;
-
-import cn.reghao.oss.store.task.MediaConverter;
-import cn.reghao.oss.store.api.iface.media.ConvertService;
-import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
-
-/**
- * @author reghao
- * @date 2023-10-08 16:54:25
- */
-@DubboService
-@Service
-public class ConvertServiceImpl implements ConvertService {
-    private final MediaConverter mediaConverter;
-
-    public ConvertServiceImpl(MediaConverter mediaConverter) {
-        this.mediaConverter = mediaConverter;
-    }
-
-    @Override
-    public void convertVideo(String videoFileId) {
-        mediaConverter.convertVideo(videoFileId);
-    }
-
-    @Override
-    public void convertAudio(String audioFileId) {
-        mediaConverter.convertAudio(audioFileId);
-    }
-}

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

@@ -1,15 +1,20 @@
 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.ImageFileMapper;
 import cn.reghao.oss.store.db.repository.ImageRepository;
+import cn.reghao.oss.store.model.po.ImageFile;
 import cn.reghao.oss.store.rpc.SignService;
 import cn.reghao.oss.store.api.dto.media.ImageUrlDto;
 import cn.reghao.oss.store.api.iface.media.ImageFileService;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.stereotype.Service;
 
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * @author reghao
@@ -18,6 +23,8 @@ import java.util.Set;
 @DubboService
 @Service
 public class ImageFileServiceImpl implements ImageFileService {
+    private ImageFileMapper imageFileMapper;
+    private ObjectService objectService;
     private final ImageRepository imageRepository;
     private final SignService signService;
 
@@ -27,21 +34,16 @@ public class ImageFileServiceImpl implements ImageFileService {
     }
 
     @Override
-    public void deleteByImageFileIds(List<String> imageFileIds) {
-        imageRepository.deleteByImageFileIds(imageFileIds);
-    }
-
-    @Override
-    public void deleteByObjectNames(List<String> objectNames) {
-        imageRepository.deleteByObjectNames(objectNames);
+    public void setImagesScope(int scope, List<String> imageFileIds) {
+        List<String> objectIds = imageFileMapper.findByImageFileIds(new HashSet<>(imageFileIds)).stream()
+                .map(ImageFile::getObjectId)
+                .collect(Collectors.toList());
+        objectService.setObjectsScope(scope, objectIds);
     }
 
     @Override
-    public ImageUrlDto getImageUrl(int channelId, String imageFileId) {
-        ImageUrlDto imageUrlDto = imageRepository.getImageUrl(channelId, imageFileId);
-        String originalUrl = imageUrlDto.getOriginalUrl();
-        String thumbnailUrl = imageUrlDto.getThumbnailUrl();
-        return imageUrlDto;
+    public void deleteByImageFileIds(List<String> imageFileIds) {
+        imageRepository.deleteByImageFileIds(imageFileIds);
     }
 
     @Override
@@ -50,12 +52,4 @@ public class ImageFileServiceImpl implements ImageFileService {
         List<ImageUrlDto> list = imageRepository.getImageUrls(channelId, imageFileIds);
         return list;
     }
-
-    @Override
-    public String getSignedUrl(String url) {
-        int loginUser = 1;
-        int channelId = 1;
-        String signedUrl = signService.getSignedUrl(loginUser, url, channelId, 600);
-        return signedUrl;
-    }
 }

+ 0 - 112
oss-store/src/main/java/cn/reghao/oss/store/rpc/media/MediaScopeServiceImpl.java

@@ -1,112 +0,0 @@
-package cn.reghao.oss.store.rpc.media;
-
-import cn.reghao.oss.store.db.mapper.AudioFileMapper;
-import cn.reghao.oss.store.db.mapper.ImageFileMapper;
-import cn.reghao.oss.store.db.mapper.VideoFileMapper;
-import cn.reghao.oss.store.db.repository.ObjectRepository;
-import cn.reghao.oss.store.model.po.AudioFile;
-import cn.reghao.oss.store.model.po.ImageFile;
-import cn.reghao.oss.store.model.po.VideoFile;
-import cn.reghao.oss.store.api.constant.ObjectType;
-import cn.reghao.oss.store.api.iface.media.MediaScopeService;
-import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * @author reghao
- * @date 2023-10-12 15:06:21
- */
-@DubboService
-@Service
-public class MediaScopeServiceImpl implements MediaScopeService {
-    private final ImageFileMapper imageFileMapper;
-    private final AudioFileMapper audioFileMapper;
-    private final VideoFileMapper videoFileMapper;
-    private final ObjectRepository objectRepository;
-
-    public MediaScopeServiceImpl(ImageFileMapper imageFileMapper, AudioFileMapper audioFileMapper,
-                                 VideoFileMapper videoFileMapper, ObjectRepository objectRepository) {
-        this.imageFileMapper = imageFileMapper;
-        this.audioFileMapper = audioFileMapper;
-        this.videoFileMapper = videoFileMapper;
-        this.objectRepository = objectRepository;
-    }
-
-    @Override
-    public void setVideoScope(String videoFileId, int scope) {
-        List<String> objectIds = videoFileMapper.findByVideoFileId(videoFileId).stream()
-                .map(VideoFile::getObjectId)
-                .collect(Collectors.toList());
-        if (!objectIds.isEmpty()) {
-            List<String> objectNames = objectRepository.getObjectNames(objectIds);
-            objectRepository.updateObjectScope1(scope, objectNames);
-        }
-    }
-
-    @Override
-    public void setAudioScope(String audioFileId, int scope) {
-        List<String> objectIds = audioFileMapper.findByAudioFileId(audioFileId).stream()
-                .map(AudioFile::getObjectId)
-                .collect(Collectors.toList());
-        if (!objectIds.isEmpty()) {
-            List<String> objectNames = objectRepository.getObjectNames(objectIds);
-            objectRepository.updateObjectScope1(scope, objectNames);
-        }
-    }
-
-    @Override
-    public void setImagesScope(Set<String> imageFileIds, int scope) {
-        List<String> objectIds = imageFileMapper.findByImageFileIds(imageFileIds).stream()
-                .map(ImageFile::getObjectId)
-                .collect(Collectors.toList());
-        if (!objectIds.isEmpty()) {
-            List<String> objectNames = objectRepository.getObjectNames(objectIds);
-            objectRepository.updateObjectScope1(scope, objectNames);
-        }
-    }
-
-    @Override
-    public void setObjectScope(int scope, String objectId, int contentType) {
-        List<String> objectIds;
-        if (contentType == ObjectType.Image.getCode()) {
-            objectIds = imageFileMapper.findByImageFileId(objectId).stream()
-                    .map(ImageFile::getObjectId)
-                    .collect(Collectors.toList());
-        } else  if (contentType == ObjectType.Video.getCode()) {
-            objectIds = videoFileMapper.findByVideoFileId(objectId).stream()
-                    .map(VideoFile::getObjectId)
-                    .collect(Collectors.toList());
-        } else if (contentType == ObjectType.Audio.getCode()) {
-            objectIds = audioFileMapper.findByAudioFileId(objectId).stream()
-                    .map(AudioFile::getObjectId)
-                    .collect(Collectors.toList());
-        } else if (contentType == ObjectType.Text.getCode()) {
-            objectIds = Collections.emptyList();
-        } else {
-            objectIds = Collections.emptyList();
-        }
-
-        if (!objectIds.isEmpty()) {
-            List<String> objectNames = objectRepository.getObjectNames(objectIds);
-            objectRepository.updateObjectScope1(scope, objectNames);
-        }
-    }
-
-    @Override
-    public void setObjectsScope(int scope, List<String> objectsId, int contentType) {
-        List<String> objectIds = new ArrayList<>();
-        if (contentType == ObjectType.Image.getCode()) {
-            objectIds = imageFileMapper.findByImageFileIds(new HashSet<>(objectsId)).stream()
-                    .map(ImageFile::getObjectId)
-                    .collect(Collectors.toList());
-        }
-
-        if (!objectIds.isEmpty()) {
-            List<String> objectNames = objectRepository.getObjectNames(objectIds);
-            objectRepository.updateObjectScope1(scope, objectNames);
-        }
-    }
-}

+ 13 - 0
oss-store/src/main/java/cn/reghao/oss/store/rpc/media/VideoFileServiceImpl.java

@@ -4,6 +4,8 @@ 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;
 import cn.reghao.oss.store.db.repository.ObjectRepository;
 import cn.reghao.oss.store.db.repository.VideoRepository;
 import cn.reghao.oss.store.model.po.VideoFile;
@@ -16,6 +18,7 @@ import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author reghao
@@ -25,6 +28,8 @@ import java.util.List;
 @Service
 public class VideoFileServiceImpl implements VideoFileService {
     private final LocalDateTime epoch = LocalDateTime.parse("1970-01-01T08:00");
+    private VideoFileMapper videoFileMapper;
+    private ObjectService objectService;
     private final VideoRepository videoRepository;
     private final ObjectRepository objectRepository;
     private final SignService signService;
@@ -35,6 +40,14 @@ public class VideoFileServiceImpl implements VideoFileService {
         this.signService = signService;
     }
 
+    @Override
+    public void setVideoScope(int scope, String videoFileId) {
+        List<String> objectIds = videoFileMapper.findByVideoFileId(videoFileId).stream()
+                .map(VideoFile::getObjectId)
+                .collect(Collectors.toList());
+        objectService.setObjectsScope(scope, objectIds);
+    }
+
     @Override
     public void deleteVideoFile(String videoFileId) {
         List<String> objectIds = videoRepository.deleteVideoFile(videoFileId);

+ 1 - 17
oss-store/src/main/java/cn/reghao/oss/store/service/ChannelValidateService.java

@@ -16,23 +16,7 @@ import java.io.File;
 @Slf4j
 @Service
 public class ChannelValidateService {
-    private final ObjectChannelService objectChannelService;
-
-    public ChannelValidateService(ObjectChannelService objectChannelService) {
-        this.objectChannelService = objectChannelService;
-    }
-
-    public Result validate(File file, int channelId) {
-        ObjectChannel objectChannel = objectChannelService.getObjectChannel(channelId);
-        if (objectChannel == null) {
-            String errMsg = String.format("channel validate failed, channel %s not exist", channelId);
-            return Result.fail(errMsg);
-        }
-
-        return validateFile(file, objectChannel);
-    }
-
-    private Result validateFile(File file, ObjectChannel objectChannel) {
+    public Result validateFile(File file, ObjectChannel objectChannel) {
         int fileType = objectChannel.getFileType();
         ObjectType objectType = ObjectType.getByCode(fileType);
         if (objectType == null) {

+ 5 - 2
oss-store/src/main/java/cn/reghao/oss/store/service/ObjectMultipartUploadService.java

@@ -1,5 +1,6 @@
 package cn.reghao.oss.store.service;
 
+import cn.reghao.oss.store.api.dto.ObjectChannel;
 import cn.reghao.oss.store.config.OssProperties;
 import cn.reghao.oss.store.db.mapper.FileMetaMapper;
 import cn.reghao.oss.store.model.dto.PathUrl;
@@ -79,7 +80,8 @@ public class ObjectMultipartUploadService {
         if (fileMeta != null) {
             String objectName = fileMeta.getObjectName();
             String suffix = StringUtil.getSuffix(objectName);
-            ObjectProp objectProp = objectNameService.getObjectProp(uploadFilePart.getChannelId(), suffix);
+            ObjectChannel objectChannel = null;
+            ObjectProp objectProp = objectNameService.getObjectProp(objectChannel, suffix);
             putObjectService.copyObject(objectProp, filename, fileMeta);
 
             String url = String.format("https://%s/%s", domain, objectProp);
@@ -117,7 +119,8 @@ public class ObjectMultipartUploadService {
 
             int channelId = uploadFilePart.getChannelId();
             String suffix = StringUtil.getSuffix(filename);
-            ObjectProp objectProp = objectNameService.getObjectProp(channelId, suffix);
+            ObjectChannel objectChannel = null;
+            ObjectProp objectProp = objectNameService.getObjectProp(objectChannel, suffix);
             File savedFile = new File(absolutePath);
             putObjectService.putObject(objectProp, contentId, savedFile, filename, absolutePath);
 

+ 2 - 11
oss-store/src/main/java/cn/reghao/oss/store/service/ObjectNameService.java

@@ -20,26 +20,17 @@ import java.util.UUID;
 public class ObjectNameService {
     private final ObjectRepository objectRepository;
     private final String domain;
-    private final ObjectChannelService objectChannelService;
 
-    public ObjectNameService(ObjectRepository objectRepository, OssProperties ossProperties,
-                             ObjectChannelService objectChannelService) {
+    public ObjectNameService(ObjectRepository objectRepository, OssProperties ossProperties) {
         this.objectRepository = objectRepository;
         this.domain = ossProperties.getDomain();
-        this.objectChannelService = objectChannelService;
     }
 
     public String getObjectUrl(String objectName) {
         return String.format("//%s/%s", domain, objectName);
     }
 
-    public ObjectProp getObjectProp(int channelId, String filename) throws Exception {
-        ObjectChannel channel = objectChannelService.getObjectChannel(channelId);
-        if (channel == null) {
-            String errMsg = String.format("channel_id %s illegal", channelId);
-            throw new Exception(errMsg);
-        }
-
+    public ObjectProp getObjectProp(ObjectChannel channel, String filename) throws Exception {
         int scope = channel.getScope();
         String suffix = StringUtil.getSuffix(filename);
         String objectPrefix = channel.getPrefix();

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

@@ -3,7 +3,6 @@ package cn.reghao.oss.store.task;
 import cn.reghao.oss.store.api.dto.ObjectChannel;
 import cn.reghao.oss.store.db.repository.ImageRepository;
 import cn.reghao.oss.store.model.vo.ObjectResult;
-import cn.reghao.oss.store.service.ObjectChannelService;
 import cn.reghao.oss.store.task.processor.AudioFileProcessor;
 import cn.reghao.oss.store.task.processor.DiskFileProcessor;
 import cn.reghao.oss.store.task.processor.ImageFileProcessor;
@@ -25,36 +24,30 @@ public class FileProcessor {
     private final AudioFileProcessor audioFileProcessor;
     private final DiskFileProcessor diskFileProcessor;
     private final ImageRepository imageRepository;
-    private final ObjectChannelService objectChannelService;
 
     public FileProcessor(ImageFileProcessor imageFileProcessor, VideoFileProcessor videoFileProcessor,
                          AudioFileProcessor audioFileProcessor, DiskFileProcessor diskFileProcessor,
-                         ImageRepository imageRepository, ObjectChannelService objectChannelService) {
+                         ImageRepository imageRepository) {
         this.imageFileProcessor = imageFileProcessor;
         this.videoFileProcessor = videoFileProcessor;
         this.audioFileProcessor = audioFileProcessor;
         this.diskFileProcessor = diskFileProcessor;
         this.imageRepository = imageRepository;
-        this.objectChannelService = objectChannelService;
     }
 
-    public UploadFileRet process(ObjectResult objectResult, int channelId) throws Exception {
+    public UploadFileRet process(ObjectResult objectResult, ObjectChannel channel) throws Exception {
         String objectName = objectResult.getObjectName();
-        //int fileType = objectResult.getFileType();
-        //ObjectType objectType = ObjectType.getByCode(fileType);
         UploadFileRet uploadFileRet = null;
-
-        ObjectChannel channel = objectChannelService.getObjectChannel(channelId);
-        int fileType0 = channel.getFileType();
-        ObjectType objectType0 = ObjectType.getByCode(fileType0);
-        switch (objectType0) {
+        int fileType = channel.getFileType();
+        int channelId = channel.getFileType();
+        ObjectType objectType = ObjectType.getByCode(fileType);
+        switch (objectType) {
             case Image:
                 uploadFileRet = imageFileProcessor.processImage(objectResult, channelId);
                 setUrl(channelId, uploadFileRet);
                 break;
             case Video:
                 uploadFileRet = videoFileProcessor.process(objectResult);
-                //uploadFileRet = processFile(objectResult, channelId);
                 break;
             case Audio:
                 uploadFileRet = audioFileProcessor.process(objectResult);
@@ -64,14 +57,9 @@ public class FileProcessor {
                 uploadFileRet = diskFileProcessor.process(objectResult);
                 break;
             default:
-                log.info("{} 类型的 {} 文件暂时无法处理", objectType0.name(), objectName);
+                log.info("{} 类型的 {} 文件暂时无法处理", objectType.name(), objectName);
         }
 
-        /*switch (channel) {
-            case photo:
-                uploadFileRet = imageFileProcessor.processImage(objectResult, channelId);
-                break;
-        }*/
         return uploadFileRet;
     }
 
@@ -80,22 +68,4 @@ public class FileProcessor {
         String url = imageRepository.getImageUrl(channelId, uploadId).getOriginalUrl();
         uploadFileRet.setUrl(url);
     }
-
-    private UploadFileRet processFile(ObjectResult objectResult, int channelId) throws Exception {
-        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;
-    }
 }

+ 0 - 1
oss-store/src/main/java/cn/reghao/oss/store/util/SignatureUtil.java

@@ -1,7 +1,6 @@
 package cn.reghao.oss.store.util;
 
 import cn.reghao.jutil.jdk.converter.ByteHex;
-import org.checkerframework.checker.units.qual.A;
 
 import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;