reghao 1 год назад
Родитель
Сommit
b8c363a7e7
39 измененных файлов с 626 добавлено и 663 удалено
  1. 0 9
      oss-api/src/main/java/cn/reghao/oss/api/iface/AliService.java
  2. 7 1
      oss-api/src/main/java/cn/reghao/oss/api/iface/ConsoleService.java
  3. 0 20
      oss-api/src/main/java/cn/reghao/oss/api/iface/MediaService.java
  4. 0 18
      oss-api/src/main/java/cn/reghao/oss/api/iface/ObjectService.java
  5. 20 1
      oss-api/src/main/java/cn/reghao/oss/api/iface/StoreService.java
  6. 31 0
      oss-api/src/main/java/cn/reghao/oss/api/iface/StoreServiceWrapper.java
  7. 5 0
      oss-api/src/main/java/cn/reghao/oss/api/util/AuthContext.java
  8. 1 1
      oss-console/src/main/java/cn/reghao/oss/console/account/service/AccountSessionService.java
  9. 10 0
      oss-console/src/main/java/cn/reghao/oss/console/account/service/UserContext.java
  10. 6 6
      oss-console/src/main/java/cn/reghao/oss/console/app/controller/OssServerController.java
  11. 5 2
      oss-console/src/main/java/cn/reghao/oss/console/app/controller/page/StoreNodePageController.java
  12. 6 6
      oss-console/src/main/java/cn/reghao/oss/console/app/controller/page/StoreObjectPageController.java
  13. 5 2
      oss-console/src/main/java/cn/reghao/oss/console/app/controller/page/UploadChannelController.java
  14. 1 1
      oss-console/src/main/java/cn/reghao/oss/console/app/controller/page/UploadChannelPageController.java
  15. 5 0
      oss-console/src/main/java/cn/reghao/oss/console/app/db/mapper/StoreNodeRepository.java
  16. 2 0
      oss-console/src/main/java/cn/reghao/oss/console/app/db/mapper/UploadChannelRepository.java
  17. 4 0
      oss-console/src/main/java/cn/reghao/oss/console/app/db/mapper/UserNodeRepository.java
  18. 1 0
      oss-console/src/main/java/cn/reghao/oss/console/app/model/dto/ObjectsScopeDto.java
  19. 41 7
      oss-console/src/main/java/cn/reghao/oss/console/app/rpc/ConsoleServiceImpl.java
  20. 0 49
      oss-console/src/main/java/cn/reghao/oss/console/app/service/OssService.java
  21. 105 0
      oss-console/src/main/java/cn/reghao/oss/console/app/service/StoreChannelService.java
  22. 5 43
      oss-console/src/main/java/cn/reghao/oss/console/app/service/StoreNodeService.java
  23. 5 56
      oss-console/src/main/java/cn/reghao/oss/console/app/service/UploadChannelService.java
  24. 2 2
      oss-console/src/main/java/cn/reghao/oss/console/app/service/UserKeyService.java
  25. 5 5
      oss-console/src/main/java/cn/reghao/oss/console/app/service/UserNodeService.java
  26. 11 13
      oss-console/src/main/java/cn/reghao/oss/console/store/controller/MediaController.java
  27. 9 9
      oss-console/src/main/java/cn/reghao/oss/console/store/controller/ObjectController.java
  28. 0 65
      oss-console/src/main/java/cn/reghao/oss/console/store/rpc/MediaRpcService.java
  29. 0 79
      oss-console/src/main/java/cn/reghao/oss/console/store/rpc/ObjectRpcService.java
  30. 0 32
      oss-console/src/main/java/cn/reghao/oss/console/store/rpc/StoreRpcService.java
  31. 183 0
      oss-console/src/main/java/cn/reghao/oss/console/store/rpc/StoreServiceWrapperImpl.java
  32. 1 1
      oss-store/bin/oss.yml
  33. 4 4
      oss-store/src/main/java/cn/reghao/oss/store/config/BeansConfig.java
  34. 3 3
      oss-store/src/main/java/cn/reghao/oss/store/model/po/FileMeta.java
  35. 0 91
      oss-store/src/main/java/cn/reghao/oss/store/rpc/MediaServiceImpl.java
  36. 0 95
      oss-store/src/main/java/cn/reghao/oss/store/rpc/ObjectServiceImpl.java
  37. 130 7
      oss-store/src/main/java/cn/reghao/oss/store/rpc/StoreServiceImpl.java
  38. 13 13
      oss-store/src/main/java/cn/reghao/oss/store/service/StoreLocalService.java
  39. 0 22
      oss-store/src/main/java/cn/reghao/oss/store/util/UserContext.java

+ 0 - 9
oss-api/src/main/java/cn/reghao/oss/api/iface/AliService.java

@@ -1,9 +0,0 @@
-package cn.reghao.oss.api.iface;
-
-/**
- * @author reghao
- * @date 2024-04-23 10:31:49
- */
-public interface AliService {
-    String getSignedUrl(String objectName);
-}

+ 7 - 1
oss-api/src/main/java/cn/reghao/oss/api/iface/NodeService.java → oss-api/src/main/java/cn/reghao/oss/api/iface/ConsoleService.java

@@ -2,15 +2,21 @@ package cn.reghao.oss.api.iface;
 
 import cn.reghao.oss.api.dto.NodeProperties;
 import cn.reghao.oss.api.dto.ObjectChannel;
+import cn.reghao.oss.api.dto.ServerInfo;
 import cn.reghao.oss.api.dto.StoreNodeDto;
 
 /**
+ * 获取 StoreNode 配置
+ * oss-store 调用
  * @author reghao
  * @date 2024-07-02 10:55:56
  */
-public interface NodeService {
+public interface ConsoleService {
     void registerNode(StoreNodeDto storeNodeDto);
     NodeProperties getNodeProperties(int owner, String nodeAddress);
+    ServerInfo getUploadStore(int loginUser, int channelId);
+
     ObjectChannel getChannelById(int owner, int channelId);
     int getChannelIdByUrl(int loginUser, String url);
+    int getChannelScope(int channelId);
 }

+ 0 - 20
oss-api/src/main/java/cn/reghao/oss/api/iface/MediaService.java

@@ -1,20 +0,0 @@
-package cn.reghao.oss.api.iface;
-
-import cn.reghao.oss.api.dto.media.AudioInfo;
-import cn.reghao.oss.api.dto.media.ConvertedImageInfo;
-import cn.reghao.oss.api.dto.media.ImageInfo;
-import cn.reghao.oss.api.dto.media.VideoInfo;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2024-04-23 15:14:06
- */
-public interface MediaService {
-    VideoInfo getVideoInfo(int channelId, String objectId);
-    ImageInfo getImageInfo(int channelId, String objectId);
-    List<ConvertedImageInfo> getWebpInfo(int channelId, List<String> objectIds);
-    AudioInfo getAudioInfo(int channelId, String objectId);
-    String getSignedUrl(int channelId, String objectId);
-}

+ 0 - 18
oss-api/src/main/java/cn/reghao/oss/api/iface/ObjectService.java

@@ -1,18 +0,0 @@
-package cn.reghao.oss.api.iface;
-
-import cn.reghao.oss.api.dto.ObjectChannel;
-import cn.reghao.oss.api.dto.ObjectInfo;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2024-04-23 15:14:06
- */
-public interface ObjectService {
-    void setObjectsScope(int channelId, List<String> objectIds, int scope);
-    void deleteByObjectIds(int channelId, List<String> objectIds);
-    void deleteByObjectUrl(String objectUrl);
-    ObjectInfo getObjectInfo(int channelId, String objectId);
-    ObjectChannel getObjectChannel(int channelId);
-}

+ 20 - 1
oss-api/src/main/java/cn/reghao/oss/api/iface/StoreService.java

@@ -1,13 +1,32 @@
 package cn.reghao.oss.api.iface;
 
 import cn.reghao.oss.api.dto.ObjectChannel;
+import cn.reghao.oss.api.dto.ObjectInfo;
 import cn.reghao.oss.api.dto.StoreInfo;
+import cn.reghao.oss.api.dto.media.AudioInfo;
+import cn.reghao.oss.api.dto.media.ConvertedImageInfo;
+import cn.reghao.oss.api.dto.media.ImageInfo;
+import cn.reghao.oss.api.dto.media.VideoInfo;
 
 /**
+ * 对 oss-store 进行操作
+ * oss-console 调用
+ *
  * @author reghao
  * @date 2023-08-01 14:51:50
  */
 public interface StoreService {
-    void createChannel(int userId, ObjectChannel channel);
+    void createChannel(String channelPrefix);
     StoreInfo getStoreInfo();
+
+    void setObjectScope(String objectId, int scope);
+    void deleteByObjectId(String objectId);
+    void deleteByObjectUrl(String objectUrl);
+    ObjectInfo getObjectInfo(String objectId);
+    String getSignedUrl(String objectId);
+
+    VideoInfo getVideoInfo(String objectId);
+    ImageInfo getImageInfo(String objectId);
+    ConvertedImageInfo getWebpInfo(String objectId);
+    AudioInfo getAudioInfo(String objectId);
 }

+ 31 - 0
oss-api/src/main/java/cn/reghao/oss/api/iface/StoreServiceWrapper.java

@@ -0,0 +1,31 @@
+package cn.reghao.oss.api.iface;
+
+import cn.reghao.oss.api.dto.ObjectInfo;
+import cn.reghao.oss.api.dto.StoreInfo;
+import cn.reghao.oss.api.dto.media.AudioInfo;
+import cn.reghao.oss.api.dto.media.ConvertedImageInfo;
+import cn.reghao.oss.api.dto.media.ImageInfo;
+import cn.reghao.oss.api.dto.media.VideoInfo;
+
+/**
+ * 对 oss-store 进行操作
+ * 第三方通过 oss-console 调用
+ *
+ * @author reghao
+ * @date 2024-04-23 15:14:06
+ */
+public interface StoreServiceWrapper {
+    void createChannel(int channelId, String channelPrefix);
+    StoreInfo getStoreInfo(int channelId);
+
+    void setObjectScope(int channelId, String objectId, int scope);
+    void deleteByObjectId(int channelId, String objectId);
+    void deleteByObjectUrl(String objectUrl);
+    ObjectInfo getObjectInfo(int channelId, String objectId);
+    String getSignedUrl(int channelId, String objectId);
+
+    VideoInfo getVideoInfo(int channelId, String objectId);
+    ImageInfo getImageInfo(int channelId, String objectId);
+    ConvertedImageInfo getWebpInfo(int channelId, String objectId);
+    AudioInfo getAudioInfo(int channelId, String objectId);
+}

+ 5 - 0
oss-api/src/main/java/cn/reghao/oss/api/util/AuthContext.java

@@ -11,10 +11,15 @@ public class AuthContext implements AutoCloseable {
         CURRENT.set(user);
     }
 
+    @Deprecated
     public static int getUser() {
         return CURRENT.get();
     }
 
+    public static int getUserId() {
+        return CURRENT.get();
+    }
+
     @Override
     public void close() {
         CURRENT.remove();

+ 1 - 1
oss-console/src/main/java/cn/reghao/oss/console/account/service/AccountSessionService.java

@@ -40,7 +40,7 @@ public class AccountSessionService {
     }
 
     public void deactiveSession(User user) {
-        int currentUserId = UserContext.getUser().getId();
+        int currentUserId = UserContext.getUserId();
         if (currentUserId != user.getId()) {
             String principal = user.getUsername();
             for (Object object : sessionRegistry.getAllPrincipals()) {

+ 10 - 0
oss-console/src/main/java/cn/reghao/oss/console/account/service/UserContext.java

@@ -31,6 +31,16 @@ public class UserContext {
         return null;
     }
 
+    public static int getUserId() {
+        Authentication authToken = SecurityContextHolder.getContext().getAuthentication();
+        if (authToken instanceof AccountAuthToken) {
+            User user = (User) authToken.getDetails();
+            return user.getId();
+        }
+
+        return -1;
+    }
+
     public static String getUserRole() {
         User user = getUser();
         if (user != null && !user.getRole().isEmpty()) {

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

@@ -1,9 +1,9 @@
 package cn.reghao.oss.console.app.controller;
 
 import cn.reghao.jutil.jdk.result.WebResult;
+import cn.reghao.oss.api.iface.ConsoleService;
 import cn.reghao.oss.api.util.AuthContext;
 import cn.reghao.oss.api.dto.ServerInfo;
-import cn.reghao.oss.console.app.service.OssService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.http.MediaType;
@@ -20,17 +20,17 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RequestMapping("/api/oss/server")
 public class OssServerController {
-    private final OssService ossService;
+    private final ConsoleService consoleService;
 
-    public OssServerController(OssService ossService) {
-        this.ossService = ossService;
+    public OssServerController(ConsoleService consoleService) {
+        this.consoleService = consoleService;
     }
 
     @ApiOperation(value = "获取 oss-store 节点")
     @GetMapping(value = "/info", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getServerInfo(@RequestParam("channelId") int channelId) throws Exception {
-        int loginUser = AuthContext.getUser();
-        ServerInfo serverInfo = ossService.getServerInfo(channelId, loginUser);
+        int loginUser = AuthContext.getUserId();
+        ServerInfo serverInfo = consoleService.getUploadStore(channelId, loginUser);
         return WebResult.success(serverInfo);
     }
 }

+ 5 - 2
oss-console/src/main/java/cn/reghao/oss/console/app/controller/page/StoreNodePageController.java

@@ -2,6 +2,7 @@ package cn.reghao.oss.console.app.controller.page;
 
 import cn.reghao.oss.console.app.model.po.StoreNode;
 import cn.reghao.oss.console.app.model.vo.StoreNodeVO;
+import cn.reghao.oss.console.app.service.StoreChannelService;
 import cn.reghao.oss.console.app.service.StoreNodeService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -20,9 +21,11 @@ import java.util.*;
 @RequestMapping("/store/node")
 public class StoreNodePageController {
     private final StoreNodeService storeNodeService;
+    private StoreChannelService storeChannelService;
 
-    public StoreNodePageController(StoreNodeService storeNodeService) {
+    public StoreNodePageController(StoreNodeService storeNodeService, StoreChannelService storeChannelService) {
         this.storeNodeService = storeNodeService;
+        this.storeChannelService = storeChannelService;
     }
 
     @ApiOperation(value = "存储节点列表页面")
@@ -70,7 +73,7 @@ public class StoreNodePageController {
     @ApiOperation(value = "存储节点详情页面")
     @GetMapping("/detail/{id}")
     public String storeNodePage(@PathVariable("id") Integer id, Model model) {
-        StoreNodeVO storeNode = storeNodeService.getDetail(id);
+        StoreNodeVO storeNode = storeChannelService.getStoreDetail(id);
         model.addAttribute("storeNode", storeNode);
         return "/node/detail";
     }

+ 6 - 6
oss-console/src/main/java/cn/reghao/oss/console/app/controller/page/StoreObjectPageController.java

@@ -1,8 +1,8 @@
 package cn.reghao.oss.console.app.controller.page;
 
 import cn.reghao.jutil.jdk.result.WebResult;
+import cn.reghao.oss.api.iface.ConsoleService;
 import cn.reghao.oss.console.account.service.UserContext;
-import cn.reghao.oss.console.app.service.OssService;
 import cn.reghao.oss.api.dto.ServerInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -19,10 +19,10 @@ import org.springframework.web.multipart.MultipartFile;
 @Controller
 @RequestMapping("/store/object")
 public class StoreObjectPageController {
-    private final OssService ossService;
+    private final ConsoleService consoleService;
 
-    public StoreObjectPageController(OssService ossService) {
-        this.ossService = ossService;
+    public StoreObjectPageController(ConsoleService consoleService) {
+        this.consoleService = consoleService;
     }
 
     @ApiOperation(value = "文件列表页面")
@@ -51,10 +51,10 @@ public class StoreObjectPageController {
     @ApiOperation(value = "文件上传页面")
     @GetMapping(value = "/upload")
     public String uploadPage(Model model) {
-        int loginUser = UserContext.getUser().getId();
+        int loginUser = UserContext.getUserId();
         int channelId = 105;
         try {
-            ServerInfo serverInfo = ossService.getServerInfo(loginUser, channelId);
+            ServerInfo serverInfo = consoleService.getUploadStore(loginUser, channelId);
             model.addAttribute("serverInfo", serverInfo);
         } catch (Exception e) {
             e.printStackTrace();

+ 5 - 2
oss-console/src/main/java/cn/reghao/oss/console/app/controller/page/UploadChannelController.java

@@ -5,6 +5,7 @@ import cn.reghao.jutil.jdk.result.WebResult;
 import cn.reghao.oss.console.app.model.dto.ChannelProcessDto;
 import cn.reghao.oss.console.app.model.dto.ChannelScopeDto;
 import cn.reghao.oss.console.app.model.dto.UploadChannelDto;
+import cn.reghao.oss.console.app.service.StoreChannelService;
 import cn.reghao.oss.console.app.service.UploadChannelService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -23,15 +24,17 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping("/api/store/channel")
 public class UploadChannelController {
     private final UploadChannelService uploadChannelService;
+    private final StoreChannelService storeChannelService;
 
-    public UploadChannelController(UploadChannelService uploadChannelService) {
+    public UploadChannelController(UploadChannelService uploadChannelService, StoreChannelService storeChannelService) {
         this.uploadChannelService = uploadChannelService;
+        this.storeChannelService = storeChannelService;
     }
 
     @ApiOperation(value = "添加上传通道")
     @PostMapping(value = "/add", produces = MediaType.APPLICATION_JSON_VALUE)
     public String addUploadChannel(@Validated UploadChannelDto uploadChannelDto) {
-        Result result = uploadChannelService.add(uploadChannelDto);
+        Result result = storeChannelService.add(uploadChannelDto);
         return WebResult.result(result);
     }
 

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

@@ -87,7 +87,7 @@ public class UploadChannelPageController {
         sizeList.add(new KeyValue(1024L*1024*1024*10+"", "10GiB"));
         sizeList.add(new KeyValue(1024L*1024*1024*20+"", "20GiB"));
 
-        int loginUser = UserContext.getUser().getId();
+        int loginUser = UserContext.getUserId();
         List<KeyValue> storeNodes = userNodeService.getUserStoreNodes().stream()
                 .map(storeNode -> {
                     int nodeId = storeNode.getId();

+ 5 - 0
oss-console/src/main/java/cn/reghao/oss/console/app/db/mapper/StoreNodeRepository.java

@@ -3,10 +3,15 @@ package cn.reghao.oss.console.app.db.mapper;
 import cn.reghao.jutil.jdk.db.BaseMapper;
 import cn.reghao.oss.console.app.model.po.StoreNode;
 
+import java.util.List;
+
 /**
  * @author reghao
  * @date 2024-07-02 18:15:11
  */
 public interface StoreNodeRepository extends BaseMapper<StoreNode> {
+    StoreNode getOne(int id);
     StoreNode findByNodeAddr(String nodeAddr);
+    StoreNode findById(int id);
+    List<StoreNode> findAllById(List<Integer> list);
 }

+ 2 - 0
oss-console/src/main/java/cn/reghao/oss/console/app/db/mapper/UploadChannelRepository.java

@@ -10,10 +10,12 @@ import java.util.List;
  * @date 2024-07-02 18:15:27
  */
 public interface UploadChannelRepository extends BaseMapper<UploadChannel> {
+    UploadChannel getOne(int id);
     int countByCreateBy(int createBy);
     List<UploadChannel> findByNodeIdAndCreateBy(int nodeId, int createBy);
     UploadChannel findByChannelIdAndCreateBy(int channelId, int createBy);
     UploadChannel findByPrefixAndCreateByAndNodeId(String prefix, int createBy, int nodeId);
     UploadChannel findByPrefixAndNodeId(String prefix, int nodeId);
+    UploadChannel findById(int id);
     List<UploadChannel> findByCreateBy(int createBy);
 }

+ 4 - 0
oss-console/src/main/java/cn/reghao/oss/console/app/db/mapper/UserNodeRepository.java

@@ -3,12 +3,16 @@ package cn.reghao.oss.console.app.db.mapper;
 import cn.reghao.jutil.jdk.db.BaseMapper;
 import cn.reghao.oss.console.app.model.po.UserNode;
 
+import java.util.List;
+
 /**
  * @author reghao
  * @date 2024-07-02 18:15:42
  */
 public interface UserNodeRepository extends BaseMapper<UserNode> {
+    UserNode getOne(int id);
     int countByNodeId(int nodeId);
     UserNode findByNodeIdAndUserId(int nodeId, int userId);
     UserNode findByDomain(String domain);
+    List<UserNode> findByUserId(int userId);
 }

+ 1 - 0
oss-console/src/main/java/cn/reghao/oss/console/app/model/dto/ObjectsScopeDto.java

@@ -11,6 +11,7 @@ import java.util.List;
  */
 @Setter
 @Getter
+@Deprecated
 public class ObjectsScopeDto {
     private Integer channelId;
     private Integer scope;

+ 41 - 7
oss-console/src/main/java/cn/reghao/oss/console/app/rpc/NodeServiceImpl.java → oss-console/src/main/java/cn/reghao/oss/console/app/rpc/ConsoleServiceImpl.java

@@ -1,14 +1,14 @@
 package cn.reghao.oss.console.app.rpc;
 
+import cn.reghao.oss.api.constant.ChannelAction;
+import cn.reghao.oss.api.dto.*;
+import cn.reghao.oss.api.util.JwtUtil;
 import cn.reghao.oss.console.app.model.po.StoreNode;
 import cn.reghao.oss.console.app.model.po.UploadChannel;
 import cn.reghao.oss.console.app.model.po.UserNode;
 import cn.reghao.oss.console.app.service.StoreNodeService;
 import cn.reghao.oss.console.app.service.UploadChannelService;
-import cn.reghao.oss.api.dto.NodeProperties;
-import cn.reghao.oss.api.iface.NodeService;
-import cn.reghao.oss.api.dto.StoreNodeDto;
-import cn.reghao.oss.api.dto.ObjectChannel;
+import cn.reghao.oss.api.iface.ConsoleService;
 import cn.reghao.oss.console.app.service.UserNodeService;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.stereotype.Service;
@@ -22,18 +22,19 @@ import java.util.List;
  */
 @DubboService
 @Service
-public class NodeServiceImpl implements NodeService {
+public class ConsoleServiceImpl implements ConsoleService {
     private final UploadChannelService uploadChannelService;
     private final StoreNodeService storeNodeService;
     private final UserNodeService userNodeService;
 
-    public NodeServiceImpl(UploadChannelService uploadChannelService, StoreNodeService storeNodeService,
-                           UserNodeService userNodeService) {
+    public ConsoleServiceImpl(UploadChannelService uploadChannelService, StoreNodeService storeNodeService,
+                              UserNodeService userNodeService) {
         this.uploadChannelService = uploadChannelService;
         this.storeNodeService = storeNodeService;
         this.userNodeService = userNodeService;
     }
 
+    @Override
     public void registerNode(StoreNodeDto storeNodeDto) {
         storeNodeService.add(storeNodeDto);
     }
@@ -52,6 +53,32 @@ public class NodeServiceImpl implements NodeService {
         return null;
     }
 
+    @Override
+    public ServerInfo getUploadStore(int loginUser, int channelId) {
+        UploadChannel uploadChannel = uploadChannelService.getByChannelIdAndCreateBy(channelId, loginUser);
+        if (uploadChannel == null) {
+            String errMsg = String.format("channel_id %s not exist", channelId);
+            return null;
+        }
+
+        UserNode userNode = userNodeService.getUserNode(uploadChannel.getNodeId(), loginUser);
+        if (userNode == null) {
+            String errMsg = String.format("channel_id %s not associate with any store_node", channelId);
+            return null;
+        }
+
+        String domain = userNode.getDomain();
+        String ossUrl = String.format("//%s", domain);
+        long maxSize = uploadChannel.getMaxSize();
+
+        String secretKey = userNode.getSecretKey();
+        String action = ChannelAction.upload.getName();
+        long expireAt = System.currentTimeMillis() + 3600*1000;
+        OssPayload ossPayload = new OssPayload(action, channelId, loginUser);
+        String uploadToken = JwtUtil.createToken(ossPayload, expireAt, secretKey);
+        return new ServerInfo(ossUrl, channelId, maxSize, uploadToken);
+    }
+
     @Override
     public ObjectChannel getChannelById(int owner, int channelId) {
         return uploadChannelService.getObjectChannelByChannelId(channelId, owner);
@@ -76,4 +103,11 @@ public class NodeServiceImpl implements NodeService {
 
         return 0;
     }
+
+    @Override
+    public int getChannelScope(int channelId) {
+        int createBy = 1;
+        ObjectChannel objectChannel = uploadChannelService.getObjectChannelByChannelId(channelId, createBy);
+        return objectChannel != null ? objectChannel.getScope() : -1;
+    }
 }

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

@@ -1,49 +0,0 @@
-package cn.reghao.oss.console.app.service;
-
-import cn.reghao.oss.console.app.model.po.UserNode;
-import cn.reghao.oss.api.util.JwtUtil;
-import cn.reghao.oss.api.dto.OssPayload;
-import cn.reghao.oss.api.dto.ServerInfo;
-import cn.reghao.oss.console.app.model.po.UploadChannel;
-import cn.reghao.oss.api.constant.ChannelAction;
-import org.springframework.stereotype.Service;
-
-/**
- * @author reghao
- * @date 2024-02-23 09:22:53
- */
-@Service
-public class OssService {
-    private final UploadChannelService uploadChannelService;
-    private final UserNodeService userNodeService;
-
-    public OssService(UploadChannelService uploadChannelService, UserNodeService userNodeService) {
-        this.uploadChannelService = uploadChannelService;
-        this.userNodeService = userNodeService;
-    }
-
-    public ServerInfo getServerInfo(int loginUser, int channelId) throws Exception {
-        UploadChannel uploadChannel = uploadChannelService.getByChannelIdAndCreateBy(channelId, loginUser);
-        if (uploadChannel == null) {
-            String errMsg = String.format("channel_id %s not exist", channelId);
-            throw new Exception(errMsg);
-        }
-
-        UserNode userNode = userNodeService.getUserNode(uploadChannel.getNodeId(), loginUser);
-        if (userNode == null) {
-            String errMsg = String.format("channel_id %s not associate with any store_node", channelId);
-            throw new Exception(errMsg);
-        }
-
-        String domain = userNode.getDomain();
-        String ossUrl = String.format("//%s", domain);
-        long maxSize = uploadChannel.getMaxSize();
-
-        String secretKey = userNode.getSecretKey();
-        String action = ChannelAction.upload.getName();
-        long expireAt = System.currentTimeMillis() + 3600*1000;
-        OssPayload ossPayload = new OssPayload(action, channelId, loginUser);
-        String uploadToken = JwtUtil.createToken(ossPayload, expireAt, secretKey);
-        return new ServerInfo(ossUrl, channelId, maxSize, uploadToken);
-    }
-}

+ 105 - 0
oss-console/src/main/java/cn/reghao/oss/console/app/service/StoreChannelService.java

@@ -0,0 +1,105 @@
+package cn.reghao.oss.console.app.service;
+
+import cn.reghao.jutil.jdk.converter.ByteConverter;
+import cn.reghao.jutil.jdk.converter.ByteType;
+import cn.reghao.jutil.jdk.result.Result;
+import cn.reghao.oss.api.dto.StoreDiskDto;
+import cn.reghao.oss.api.dto.StoreInfo;
+import cn.reghao.oss.api.iface.StoreServiceWrapper;
+import cn.reghao.oss.console.account.service.UserContext;
+import cn.reghao.oss.console.app.db.repository.StoreNodeRepository;
+import cn.reghao.oss.console.app.db.repository.UploadChannelRepository;
+import cn.reghao.oss.console.app.model.dto.UploadChannelDto;
+import cn.reghao.oss.console.app.model.po.StoreNode;
+import cn.reghao.oss.console.app.model.po.UploadChannel;
+import cn.reghao.oss.console.app.model.po.UserNode;
+import cn.reghao.oss.console.app.model.vo.StoreDiskVO;
+import cn.reghao.oss.console.app.model.vo.StoreNodeVO;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author reghao
+ * @date 2024-02-23 15:14:53
+ */
+@Service
+public class StoreChannelService {
+    private final ByteConverter byteConverter = new ByteConverter();
+    private final UploadChannelRepository uploadChannelRepository;
+    private final StoreNodeRepository storeNodeRepository;
+    private final UserNodeService userNodeService;
+    private final StoreServiceWrapper storeServiceWrapper;
+
+    public StoreChannelService(UploadChannelRepository uploadChannelRepository, StoreNodeRepository storeNodeRepository,
+                               UserNodeService userNodeService, StoreServiceWrapper storeServiceWrapper) {
+        this.uploadChannelRepository = uploadChannelRepository;
+        this.storeNodeRepository = storeNodeRepository;
+        this.userNodeService = userNodeService;
+        this.storeServiceWrapper = storeServiceWrapper;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public synchronized Result add(UploadChannelDto uploadChannelDto) {
+        int createBy = UserContext.getUserId();
+        int nodeId = uploadChannelDto.getNodeId();
+        UserNode userNode = userNodeService.getUserNode(nodeId, createBy);
+        if (userNode == null) {
+            return Result.fail(String.format("store_node with id %s not exist", nodeId));
+        }
+
+        //int createBy = 410;
+        String channelPrefix = uploadChannelDto.getChannelPrefix();
+        UploadChannel uploadChannel = uploadChannelRepository.findByPrefixAndCreateByAndNodeId(channelPrefix, createBy, nodeId);
+        if (uploadChannel != null) {
+            return Result.fail(String.format("channel_prefix %s exist", channelPrefix));
+        }
+
+        uploadChannel = uploadChannelRepository.findByPrefixAndNodeId(channelPrefix, nodeId);
+        if (uploadChannel != null) {
+            return Result.fail(String.format("someone has already created channel_prefix %s", channelPrefix));
+        }
+
+        int channelId = getNextChannelId(createBy);
+        uploadChannel = new UploadChannel(channelId, uploadChannelDto, createBy);
+        uploadChannelRepository.save(uploadChannel);
+        storeServiceWrapper.createChannel(channelId, channelPrefix);
+        return Result.success();
+    }
+
+    private int getNextChannelId(int userId) {
+        int channelId = 101;
+        int total = uploadChannelRepository.countByCreateBy(userId);
+        return channelId + total;
+    }
+
+    public StoreNodeVO getStoreDetail(int nodeId) {
+        StoreNode storeNode = storeNodeRepository.getOne(nodeId);
+        if (storeNode == null) {
+            return null;
+        }
+
+        int channelId = 1;
+        StoreInfo storeInfo = storeServiceWrapper.getStoreInfo(channelId);
+        List<StoreDiskDto> storeDiskDtos = storeInfo.getStoreDisks();
+        /*List<StoreDisk> list = storeDiskDtos.stream()
+                .map(StoreDisk::new)
+                .collect(Collectors.toList());
+        storeNode.setStoreDisks(list);
+        storeNodeRepository.save(storeNode);*/
+
+        List<StoreDiskVO> storeDisks = storeDiskDtos.stream()
+                .map(storeDisk -> {
+                    String diskDir = storeDisk.getDiskDir();
+                    long total = storeDisk.getTotal();
+                    String totalStr = byteConverter.convert(ByteType.Bytes, total);
+                    long avail = storeDisk.getAvail();
+                    String availStr = byteConverter.convert(ByteType.Bytes, avail);
+                    return new StoreDiskVO(diskDir, totalStr, availStr);
+                }).collect(Collectors.toList());
+
+        return new StoreNodeVO(storeNode, storeDisks, storeInfo);
+    }
+}

+ 5 - 43
oss-console/src/main/java/cn/reghao/oss/console/app/service/StoreNodeService.java

@@ -1,7 +1,5 @@
 package cn.reghao.oss.console.app.service;
 
-import cn.reghao.jutil.jdk.converter.ByteConverter;
-import cn.reghao.jutil.jdk.converter.ByteType;
 import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.oss.console.account.service.UserContext;
 import cn.reghao.oss.console.app.db.repository.StoreNodeRepository;
@@ -11,12 +9,7 @@ import cn.reghao.oss.console.app.model.po.StoreDisk;
 import cn.reghao.oss.console.app.model.po.StoreNode;
 import cn.reghao.oss.console.app.model.po.UserNode;
 import cn.reghao.oss.console.app.model.vo.KeyValue;
-import cn.reghao.oss.console.app.model.vo.StoreDiskVO;
-import cn.reghao.oss.console.app.model.vo.StoreNodeVO;
-import cn.reghao.oss.api.dto.StoreDiskDto;
-import cn.reghao.oss.api.dto.StoreInfo;
 import cn.reghao.oss.api.dto.StoreNodeDto;
-import cn.reghao.oss.console.store.rpc.StoreRpcService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -29,16 +22,12 @@ import java.util.stream.Collectors;
  */
 @Service
 public class StoreNodeService {
-    private final ByteConverter byteConverter = new ByteConverter();
     private final StoreNodeRepository storeNodeRepository;
     private final UserNodeRepository userNodeRepository;
-    private final StoreRpcService storeRpcService;
 
-    public StoreNodeService(StoreNodeRepository storeNodeRepository, UserNodeRepository userNodeRepository,
-                            StoreRpcService storeRpcService) {
+    public StoreNodeService(StoreNodeRepository storeNodeRepository, UserNodeRepository userNodeRepository) {
         this.storeNodeRepository = storeNodeRepository;
         this.userNodeRepository = userNodeRepository;
-        this.storeRpcService = storeRpcService;
     }
 
     public void add(StoreNodeDto storeNodeDto) {
@@ -59,7 +48,7 @@ public class StoreNodeService {
     @Transactional(rollbackFor = Exception.class)
     public Result updateDomain(NodeUpdateDto nodeUpdateDto) {
         int id = nodeUpdateDto.getId();
-        StoreNode storeNode = storeNodeRepository.findById(id).orElse(null);
+        StoreNode storeNode = storeNodeRepository.getOne(id);
         if (storeNode == null) {
             return Result.fail(String.format("id %s not exist", id));
         }
@@ -77,7 +66,7 @@ public class StoreNodeService {
     }
 
     public Result delete(int nodeId) {
-        StoreNode storeNode = storeNodeRepository.findById(nodeId).orElse(null);
+        StoreNode storeNode = storeNodeRepository.getOne(nodeId);
         if (storeNode == null) {
             return Result.fail("node not exist");
         }
@@ -105,11 +94,11 @@ public class StoreNodeService {
     }
 
     public StoreNode getById(int id) {
-        return storeNodeRepository.findById(id).orElse(null);
+        return storeNodeRepository.getOne(id);
     }
 
     public List<KeyValue> getNodeKeyValues() {
-        int loginUser = UserContext.getUser().getId();
+        int loginUser = UserContext.getUserId();
         return storeNodeRepository.findAll().stream()
                 .map(storeNode -> {
                     int nodeId = storeNode.getId();
@@ -118,33 +107,6 @@ public class StoreNodeService {
                 }).collect(Collectors.toList());
     }
 
-    public StoreNodeVO getDetail(int nodeId) {
-        StoreNode storeNode = storeNodeRepository.findById(nodeId).orElse(null);
-        if (storeNode == null) {
-            return null;
-        }
-
-        StoreInfo storeInfo = storeRpcService.getStoreInfo(storeNode);
-        List<StoreDiskDto> storeDiskDtos = storeInfo.getStoreDisks();
-        /*List<StoreDisk> list = storeDiskDtos.stream()
-                .map(StoreDisk::new)
-                .collect(Collectors.toList());
-        storeNode.setStoreDisks(list);
-        storeNodeRepository.save(storeNode);*/
-
-        List<StoreDiskVO> storeDisks = storeDiskDtos.stream()
-                .map(storeDisk -> {
-                    String diskDir = storeDisk.getDiskDir();
-                    long total = storeDisk.getTotal();
-                    String totalStr = byteConverter.convert(ByteType.Bytes, total);
-                    long avail = storeDisk.getAvail();
-                    String availStr = byteConverter.convert(ByteType.Bytes, avail);
-                    return new StoreDiskVO(diskDir, totalStr, availStr);
-                }).collect(Collectors.toList());
-
-        return new StoreNodeVO(storeNode, storeDisks, storeInfo);
-    }
-
     public StoreNode getByNodeAddr(String nodeAddress) {
         return storeNodeRepository.findByNodeAddr(nodeAddress);
     }

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

@@ -2,20 +2,16 @@ package cn.reghao.oss.console.app.service;
 
 import cn.reghao.jutil.jdk.converter.ByteConverter;
 import cn.reghao.jutil.jdk.converter.ByteType;
-import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.oss.console.app.model.dto.ChannelProcessDto;
 import cn.reghao.oss.api.dto.ObjectChannel;
 import cn.reghao.oss.console.account.service.UserContext;
 import cn.reghao.oss.console.app.db.repository.UploadChannelRepository;
 import cn.reghao.oss.console.app.model.dto.ChannelScopeDto;
-import cn.reghao.oss.console.app.model.dto.UploadChannelDto;
 import cn.reghao.oss.console.app.model.po.StoreNode;
 import cn.reghao.oss.console.app.model.po.UploadChannel;
 import cn.reghao.oss.console.app.model.po.UserNode;
 import cn.reghao.oss.console.app.model.vo.UploadChannelVo;
-import cn.reghao.oss.console.store.rpc.StoreRpcService;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.stream.Collectors;
@@ -30,64 +26,18 @@ public class UploadChannelService {
     private final UploadChannelRepository uploadChannelRepository;
     private final UserNodeService userNodeService;
     private final StoreNodeService storeNodeService;
-    private final StoreRpcService storeRpcService;
 
     public UploadChannelService(UploadChannelRepository uploadChannelRepository, UserNodeService userNodeService,
-                                StoreNodeService storeNodeService, StoreRpcService storeRpcService) {
+                                StoreNodeService storeNodeService) {
         this.uploadChannelRepository = uploadChannelRepository;
         this.userNodeService = userNodeService;
         this.storeNodeService = storeNodeService;
-        this.storeRpcService = storeRpcService;
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public synchronized Result add(UploadChannelDto uploadChannelDto) {
-        int createBy = UserContext.getUser().getId();
-        int nodeId = uploadChannelDto.getNodeId();
-        UserNode userNode = userNodeService.getUserNode(nodeId, createBy);
-        if (userNode == null) {
-            return Result.fail(String.format("store_node with id %s not exist", nodeId));
-        }
-
-        //int createBy = 410;
-        String channelPrefix = uploadChannelDto.getChannelPrefix();
-        UploadChannel uploadChannel = uploadChannelRepository.findByPrefixAndCreateByAndNodeId(channelPrefix, createBy, nodeId);
-        if (uploadChannel != null) {
-            return Result.fail(String.format("channel_prefix %s exist", channelPrefix));
-        }
-
-        uploadChannel = uploadChannelRepository.findByPrefixAndNodeId(channelPrefix, nodeId);
-        if (uploadChannel != null) {
-            return Result.fail(String.format("someone has already created channel_prefix %s", channelPrefix));
-        }
-
-        int channelId = getNextChannelId(createBy);
-        uploadChannel = new UploadChannel(channelId, uploadChannelDto, createBy);
-        uploadChannelRepository.save(uploadChannel);
-
-        String domain = userNode.getDomain();
-        String name = uploadChannel.getName();
-        long maxSize = uploadChannel.getMaxSize();
-        int fileType = uploadChannel.getFileType();
-        boolean seturl = uploadChannel.getSeturl();
-        int scope = uploadChannel.getScope();
-        ObjectChannel channel = new ObjectChannel(channelId, name, channelPrefix, maxSize, fileType, seturl, scope, domain, createBy);
-
-        StoreNode storeNode = storeNodeService.getById(nodeId);
-        storeRpcService.createChannel(storeNode, createBy, channel);
-        return Result.success();
-    }
-
-    private int getNextChannelId(int userId) {
-        int channelId = 101;
-        int total = uploadChannelRepository.countByCreateBy(userId);
-        return channelId + total;
     }
 
     public void updateScope(ChannelScopeDto channelScopeDto) {
         int id = channelScopeDto.getId();
         int newScope = channelScopeDto.getNewScope();
-        UploadChannel uploadChannel = uploadChannelRepository.findById(id).orElse(null);
+        UploadChannel uploadChannel = uploadChannelRepository.getOne(id);
         if (uploadChannel != null) {
             int currentScope = uploadChannel.getScope();
             if (currentScope != newScope) {
@@ -99,20 +49,19 @@ public class UploadChannelService {
 
     public void updateSeturl(ChannelProcessDto channelProcessDto) {
         int id = channelProcessDto.getId();
-        UploadChannel uploadChannel = uploadChannelRepository.findById(id).orElse(null);
+        UploadChannel uploadChannel = uploadChannelRepository.getOne(id);
         if (uploadChannel != null) {
             boolean seturl = channelProcessDto.getSeturl();
             boolean current = uploadChannel.getSeturl();
             if (seturl != current) {
                 uploadChannel.setSeturl(seturl);
                 uploadChannelRepository.save(uploadChannel);
-
             }
         }
     }
 
     public List<UploadChannelVo> getUploadChannels() {
-        int loginUser = UserContext.getUser().getId();
+        int loginUser = UserContext.getUserId();
         List<UploadChannel> page = uploadChannelRepository.findByCreateBy(loginUser);
         List<UploadChannelVo> list = page.stream().map(uploadChannel -> {
             long maxSize = uploadChannel.getMaxSize();
@@ -127,7 +76,7 @@ public class UploadChannelService {
     }
 
     public UploadChannel getUploadChannel(int id) {
-        return uploadChannelRepository.findById(id).orElse(null);
+        return uploadChannelRepository.getOne(id);
     }
 
     public UploadChannel getByChannelIdAndCreateBy(int channelId, int createBy) {

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

@@ -28,7 +28,7 @@ public class UserKeyService {
     }
 
     public Result create() {
-        int loginUser = UserContext.getUser().getId();
+        int loginUser = UserContext.getUserId();
         UserKey userKey = userKeyRepository.findByCreateBy(loginUser);
         if (userKey != null) {
             String errMsg = String.format("you already have key");
@@ -82,7 +82,7 @@ public class UserKeyService {
     }
 
     public List<UserKeyVo> getUserKeys() {
-        int loginUser = UserContext.getUser().getId();
+        int loginUser = UserContext.getUserId();
         UserKey userKey = userKeyRepository.findByCreateBy(loginUser);
         if (userKey == null) {
             return Collections.emptyList();

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

@@ -34,7 +34,7 @@ public class UserNodeService {
 
     public Result add(UserNodeDto userNodeDto) {
         int nodeId = userNodeDto.getNodeId();
-        Integer userId = UserContext.getUser().getId();
+        Integer userId = UserContext.getUserId();
         UserNode userNode = userNodeRepository.findByNodeIdAndUserId(nodeId, userId);
         if (userNode != null) {
             return Result.fail("UserNode exist");
@@ -51,11 +51,11 @@ public class UserNodeService {
     }
 
     public Result delete(Integer id) {
-        UserNode userNode = userNodeRepository.findById(id).orElse(null);
+        UserNode userNode = userNodeRepository.getOne(id);
         if (userNode != null) {
             int nodeId = userNode.getNodeId();
 
-            int userId = UserContext.getUser().getId();
+            int userId = UserContext.getUserId();
             List<UploadChannel> uploadChannels = uploadChannelRepository.findByNodeIdAndCreateBy(nodeId, userId);
             if (!uploadChannels.isEmpty()) {
                 return Result.fail("UploadChannel exists");
@@ -73,7 +73,7 @@ public class UserNodeService {
     }
 
     public List<StoreNode> getUserStoreNodes() {
-        int loginUser = UserContext.getUser().getId();
+        int loginUser = UserContext.getUserId();
         List<UserNode> list = userNodeRepository.findByUserId(loginUser);
         if (list.isEmpty()) {
             return Collections.emptyList();
@@ -84,7 +84,7 @@ public class UserNodeService {
     }
 
     public List<UserNodeVO> getUserStoreNodes1() {
-        int loginUser = UserContext.getUser().getId();
+        int loginUser = UserContext.getUserId();
         List<UserNode> list = userNodeRepository.findByUserId(loginUser);
         if (list.isEmpty()) {
             return Collections.emptyList();

+ 11 - 13
oss-console/src/main/java/cn/reghao/oss/console/store/controller/MediaController.java

@@ -1,16 +1,14 @@
 package cn.reghao.oss.console.store.controller;
 
 import cn.reghao.jutil.jdk.result.WebResult;
+import cn.reghao.oss.api.iface.StoreServiceWrapper;
 import cn.reghao.oss.console.app.model.dto.GetImageUrls;
-import cn.reghao.oss.console.store.rpc.MediaRpcService;
 import cn.reghao.oss.api.dto.media.*;
 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:05:58
@@ -19,39 +17,39 @@ import java.util.List;
 @RestController
 @RequestMapping("/api/oss/media")
 public class MediaController {
-    private final MediaRpcService mediaRpcService;
+    private final StoreServiceWrapper storeServiceWrapper;
 
-    public MediaController(MediaRpcService mediaRpcService) {
-        this.mediaRpcService = mediaRpcService;
+    public MediaController(StoreServiceWrapper storeServiceWrapper) {
+        this.storeServiceWrapper = storeServiceWrapper;
     }
 
     @ApiOperation(value = "获取视频文件信息")
     @GetMapping(value = "/video/info", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getVideoInfo(@RequestParam("channelId") Integer channelId,
                                @RequestParam("videoFileId") String videoFileId) throws Exception {
-        VideoInfo videoInfo = mediaRpcService.getVideoInfo(channelId, videoFileId);
+        VideoInfo videoInfo = storeServiceWrapper.getVideoInfo(channelId, videoFileId);
         return WebResult.success(videoInfo);
     }
 
     @ApiOperation(value = "获取图片文件信息")
     @PostMapping(value = "/image/info", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getImagesInfo(GetImageUrls getImageUrls) throws Exception {
-        List<ImageInfo> list = mediaRpcService.getImagesInfo(getImageUrls.getChannelId(), getImageUrls.getImageFileIds());
-        return WebResult.success(list);
+        //ImageInfo imageInfo = storeServiceWrapper.getImageInfo(getImageUrls.getChannelId(), getImageUrls.getImageFileIds());
+        return WebResult.success();
     }
 
     @ApiOperation(value = "获取 webp 图片文件信息")
     @PostMapping(value = "/image/webp", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getWebpInfo(GetImageUrls getImageUrls) throws Exception {
-        List<ConvertedImageInfo> list = mediaRpcService.getWebpInfo(getImageUrls.getChannelId(), getImageUrls.getImageFileIds());
-        return WebResult.success(list);
+        //List<ConvertedImageInfo> list = storeServiceWrapper.getWebpInfo(getImageUrls.getChannelId(), getImageUrls.getImageFileIds());
+        return WebResult.success();
     }
 
     @ApiOperation(value = "获取音频文件信息")
     @GetMapping(value = "/auduio/info", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getAudioInfo(@RequestParam("channelId") Integer channelId,
                                @RequestParam("audioFileId") String audioFileId) throws Exception {
-        AudioInfo audioInfo = mediaRpcService.getAudioInfo(channelId, audioFileId);
+        AudioInfo audioInfo = storeServiceWrapper.getAudioInfo(channelId, audioFileId);
         return WebResult.success(audioInfo);
     }
 
@@ -59,7 +57,7 @@ public class MediaController {
     @GetMapping(value = "/url", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getObjectUrl(@RequestParam("channelId") Integer channelId,
                                @RequestParam("objectId") String objectId) throws Exception {
-        String signedUrl = mediaRpcService.getSignedUrl(channelId, objectId);
+        String signedUrl = storeServiceWrapper.getSignedUrl(channelId, objectId);
         return WebResult.success(signedUrl);
     }
 }

+ 9 - 9
oss-console/src/main/java/cn/reghao/oss/console/store/controller/ObjectController.java

@@ -1,8 +1,8 @@
 package cn.reghao.oss.console.store.controller;
 
 import cn.reghao.jutil.jdk.result.WebResult;
+import cn.reghao.oss.api.iface.StoreServiceWrapper;
 import cn.reghao.oss.console.app.model.dto.ObjectsScopeDto;
-import cn.reghao.oss.console.store.rpc.ObjectRpcService;
 import cn.reghao.oss.api.dto.ObjectInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -19,16 +19,16 @@ import java.util.List;
 @RestController
 @RequestMapping("/api/oss/object")
 public class ObjectController {
-    private final ObjectRpcService objectRpcService;
+    private final StoreServiceWrapper storeServiceWrapper;
 
-    public ObjectController(ObjectRpcService objectRpcService) {
-        this.objectRpcService = objectRpcService;
+    public ObjectController(StoreServiceWrapper storeServiceWrapper) {
+        this.storeServiceWrapper = storeServiceWrapper;
     }
 
     @ApiOperation(value = "设置对象列表可见范围")
     @PostMapping(value = "/scope/objects", produces = MediaType.APPLICATION_JSON_VALUE)
     public String setObjectsScope(ObjectsScopeDto objectsScopeDto) throws Exception {
-        objectRpcService.setObjectsScope(objectsScopeDto);
+        //storeServiceWrapper.setObjectsScope(objectsScopeDto);
         return WebResult.success();
     }
 
@@ -36,14 +36,14 @@ public class ObjectController {
     @PostMapping(value = "/delete/ids", produces = MediaType.APPLICATION_JSON_VALUE)
     public String deleteByObjects(@RequestParam("channelId") Integer channelId,
                                   @RequestParam("objectIds") List<String> objectIds) throws Exception {
-        objectRpcService.deleteByObjectIds(channelId, objectIds);
+        //storeServiceWrapper.deleteByObjectIds(channelId, objectIds);
         return WebResult.success();
     }
 
     @ApiOperation(value = "根据 object_url 删除对象")
     @PostMapping(value = "/delete/url", produces = MediaType.APPLICATION_JSON_VALUE)
     public String deleteByObjectUrl(@RequestParam("objectUrl") String objectUrl) throws Exception {
-        objectRpcService.deleteByObjectUrl(objectUrl);
+        storeServiceWrapper.deleteByObjectUrl(objectUrl);
         return WebResult.success();
     }
 
@@ -52,7 +52,7 @@ public class ObjectController {
     @GetMapping(value = "/url", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getObjectUrl(@RequestParam("channelId") Integer channelId,
                                @RequestParam("objectId") String objectId) throws Exception {
-        //String signedUrl = objectRpcService.getSignedUrl(channelId, objectId);
+        //String signedUrl = storeServiceWrapper.getSignedUrl(channelId, objectId);
         return WebResult.success();
     }
 
@@ -60,7 +60,7 @@ public class ObjectController {
     @GetMapping(value = "/info", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getObjectInfo(@RequestParam("channelId") int channelId,
                                 @RequestParam("objectId") String objectId) throws Exception {
-        ObjectInfo objectInfo = objectRpcService.getObjectInfo(channelId, objectId);
+        ObjectInfo objectInfo = storeServiceWrapper.getObjectInfo(channelId, objectId);
         return WebResult.success(objectInfo);
     }
 }

+ 0 - 65
oss-console/src/main/java/cn/reghao/oss/console/store/rpc/MediaRpcService.java

@@ -1,65 +0,0 @@
-package cn.reghao.oss.console.store.rpc;
-
-import cn.reghao.oss.console.app.model.po.StoreNode;
-import cn.reghao.oss.console.app.service.UploadChannelService;
-import cn.reghao.oss.api.util.AuthContext;
-import cn.reghao.oss.api.dto.media.*;
-import cn.reghao.oss.api.iface.MediaService;
-import org.springframework.stereotype.Service;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2024-03-07 09:47:12
- */
-@Service
-public class MediaRpcService {
-    private final UploadChannelService uploadChannelService;
-
-    public MediaRpcService(UploadChannelService uploadChannelService) {
-        this.uploadChannelService = uploadChannelService;
-    }
-
-    public VideoInfo getVideoInfo(int channelId, String videoFileId) throws Exception {
-        MediaService mediaService = getMediaService(channelId);
-        return mediaService.getVideoInfo(channelId, videoFileId);
-    }
-
-    @Deprecated
-    public List<ImageInfo> getImagesInfo(int channelId, List<String> imageFileIds) throws Exception {
-        MediaService mediaService = getMediaService(channelId);
-        return Collections.emptyList();
-    }
-
-    public List<ConvertedImageInfo> getWebpInfo(int channelId, List<String> imageFileIds) throws Exception {
-        int loginUser = AuthContext.getUser();
-        MediaService mediaService = getMediaService(channelId);
-        return mediaService.getWebpInfo(channelId, imageFileIds);
-    }
-
-    public AudioInfo getAudioInfo(int channelId, String audioFileId) throws Exception {
-        MediaService mediaService = getMediaService(channelId);
-        return mediaService.getAudioInfo(channelId, audioFileId);
-    }
-
-    public String getSignedUrl(int channelId, String objectId) throws Exception {
-        MediaService mediaService = getMediaService(channelId);
-        return mediaService.getSignedUrl(channelId, objectId);
-    }
-
-    private MediaService getMediaService(int channelId) throws Exception {
-        int loginUser = 1;
-        StoreNode storeNode = uploadChannelService.getStoreNodeByChannelId(loginUser, channelId);
-        if (storeNode == null) {
-            String errMsg = String.format("channel_id %s not associate with any store_node", channelId);
-            throw new Exception(errMsg);
-        }
-
-        RemoteService<MediaService> remoteService = new RemoteService<>();
-        String host = storeNode.getNodeAddr();
-        int port = storeNode.getRpcPort();
-        return remoteService.getService(host, port, MediaService.class);
-    }
-}

+ 0 - 79
oss-console/src/main/java/cn/reghao/oss/console/store/rpc/ObjectRpcService.java

@@ -1,79 +0,0 @@
-package cn.reghao.oss.console.store.rpc;
-
-import cn.reghao.oss.console.app.model.dto.ObjectsScopeDto;
-import cn.reghao.oss.console.app.model.po.StoreNode;
-import cn.reghao.oss.console.app.model.po.UploadChannel;
-import cn.reghao.oss.console.app.service.UploadChannelService;
-import cn.reghao.oss.api.util.AuthContext;
-import cn.reghao.oss.api.dto.ObjectInfo;
-import cn.reghao.oss.api.iface.ObjectService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2024-02-29 14:27:03
- */
-@Service
-public class ObjectRpcService {
-    private final UploadChannelService uploadChannelService;
-
-    public ObjectRpcService(UploadChannelService uploadChannelService) {
-        this.uploadChannelService = uploadChannelService;
-    }
-
-    public void setObjectsScope(ObjectsScopeDto objectsScopeDto) throws Exception {
-        int channelId = objectsScopeDto.getChannelId();
-        ObjectService objectService = getObjectService(channelId);
-        int scope = objectsScopeDto.getScope();
-        List<String> objectIds = objectsScopeDto.getObjectIds();
-        objectService.setObjectsScope(channelId, objectIds, scope);
-    }
-
-    public void deleteByObjectIds(int channelId, List<String> objectIds) throws Exception {
-        ObjectService objectService = getObjectService(channelId);
-        objectService.deleteByObjectIds(channelId, objectIds);
-    }
-
-    public void deleteByObjectUrl(String objectUrl) throws Exception {
-        int loginUser = AuthContext.getUser();
-        String domain = objectUrl.replace("//", "").split("/")[0];
-        String objectName = objectUrl.replace("//" + domain + "/", "");
-        List<UploadChannel> uploadChannels = uploadChannelService.getByDomainAndCreateBy(domain, loginUser);
-        for (UploadChannel uploadChannel : uploadChannels) {
-            String prefix = uploadChannel.getPrefix();
-            // TODO get best match
-            if (objectName.startsWith(prefix)) {
-                int channelId = uploadChannel.getChannelId();
-                ObjectService objectService = getObjectService(channelId);
-                objectService.deleteByObjectUrl(objectName);
-                return;
-            }
-        }
-
-        String errMsg = String.format("%s not associate with any channels", objectUrl);
-        throw new Exception(errMsg);
-    }
-
-    public ObjectInfo getObjectInfo(int channelId, String objectId) throws Exception {
-        ObjectService objectService = getObjectService(channelId);
-        int loginUser = AuthContext.getUser();
-        int expireSecond = 3600;
-        return objectService.getObjectInfo(channelId, objectId);
-    }
-
-    private ObjectService getObjectService(int channelId) throws Exception {
-        int loginUser = 1;
-        StoreNode storeNode = uploadChannelService.getStoreNodeByChannelId(loginUser, channelId);
-        if (storeNode == null) {
-            String errMsg = String.format("channel_id %s not associate with any store_node", channelId);
-            throw new Exception(errMsg);
-        }
-
-        RemoteService<ObjectService> remoteService = new RemoteService<>();
-        String host = storeNode.getNodeAddr();
-        int port = storeNode.getRpcPort();
-        return remoteService.getService(host, port, ObjectService.class);
-    }
-}

+ 0 - 32
oss-console/src/main/java/cn/reghao/oss/console/store/rpc/StoreRpcService.java

@@ -1,32 +0,0 @@
-package cn.reghao.oss.console.store.rpc;
-
-import cn.reghao.oss.api.dto.ObjectChannel;
-import cn.reghao.oss.api.dto.StoreInfo;
-import cn.reghao.oss.api.iface.StoreService;
-import cn.reghao.oss.console.app.model.po.StoreNode;
-import org.springframework.stereotype.Service;
-
-/**
- * @author reghao
- * @date 2024-07-02 16:11:38
- */
-@Service
-public class StoreRpcService {
-    public void createChannel(StoreNode storeNode, int createBy, ObjectChannel channel) {
-        StoreService storeService = getStoreService(storeNode);
-        storeService.createChannel(createBy, channel);
-    }
-
-    public StoreInfo getStoreInfo(StoreNode storeNode) {
-        StoreService storeService = getStoreService(storeNode);
-        StoreInfo storeInfo = storeService.getStoreInfo();
-        return storeInfo;
-    }
-
-    private StoreService getStoreService(StoreNode storeNode) {
-        String host = storeNode.getNodeAddr();
-        int port = storeNode.getRpcPort();
-        RemoteService<StoreService> remoteService = new RemoteService<>();
-        return remoteService.getService(host, port, StoreService.class);
-    }
-}

+ 183 - 0
oss-console/src/main/java/cn/reghao/oss/console/store/rpc/StoreServiceWrapperImpl.java

@@ -0,0 +1,183 @@
+package cn.reghao.oss.console.store.rpc;
+
+import cn.reghao.oss.api.dto.ObjectInfo;
+import cn.reghao.oss.api.dto.StoreInfo;
+import cn.reghao.oss.api.dto.media.AudioInfo;
+import cn.reghao.oss.api.dto.media.ConvertedImageInfo;
+import cn.reghao.oss.api.dto.media.ImageInfo;
+import cn.reghao.oss.api.dto.media.VideoInfo;
+import cn.reghao.oss.api.iface.StoreService;
+import cn.reghao.oss.api.iface.StoreServiceWrapper;
+import cn.reghao.oss.api.util.AuthContext;
+import cn.reghao.oss.console.app.db.repository.UploadChannelRepository;
+import cn.reghao.oss.console.app.model.po.StoreNode;
+import cn.reghao.oss.console.app.model.po.UploadChannel;
+import cn.reghao.oss.console.app.service.UploadChannelService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2024-07-03 14:40:25
+ */
+@Service
+public class StoreServiceWrapperImpl implements StoreServiceWrapper {
+    private final UploadChannelService uploadChannelService;
+
+    public StoreServiceWrapperImpl(UploadChannelService uploadChannelService) {
+        this.uploadChannelService = uploadChannelService;
+    }
+    
+    private StoreService getStoreService(int channelId) throws Exception {
+        int loginUser = 1;
+        StoreNode storeNode = uploadChannelService.getStoreNodeByChannelId(loginUser, channelId);
+        if (storeNode == null) {
+            String errMsg = String.format("channel_id %s not associate with any store_node", channelId);
+            throw new Exception(errMsg);
+        }
+
+        RemoteService<StoreService> remoteService = new RemoteService<>();
+        String host = storeNode.getNodeAddr();
+        int port = storeNode.getRpcPort();
+        return remoteService.getService(host, port, StoreService.class);
+    }
+
+    @Override
+    public void createChannel(int channelId, String channelPrefix) {
+        try {
+            StoreService storeService = getStoreService(channelId);
+            storeService.createChannel(channelPrefix);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public StoreInfo getStoreInfo(int channelId) {
+        try {
+            StoreService storeService = getStoreService(channelId);
+            return storeService.getStoreInfo();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+    @Override
+    public void setObjectScope(int channelId, String objectId, int scope) {
+        try {
+            StoreService storeService = getStoreService(channelId);
+            storeService.setObjectScope(objectId, scope);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void deleteByObjectId(int channelId, String objectId) {
+        try {
+            StoreService storeService = getStoreService(channelId);
+            storeService.deleteByObjectId(objectId);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void deleteByObjectUrl(String objectUrl) {
+        int loginUser = AuthContext.getUserId();
+        String domain = objectUrl.replace("//", "").split("/")[0];
+        String objectName = objectUrl.replace("//" + domain + "/", "");
+        List<UploadChannel> uploadChannels = uploadChannelService.getByDomainAndCreateBy(domain, loginUser);
+        for (UploadChannel uploadChannel : uploadChannels) {
+            String prefix = uploadChannel.getPrefix();
+            // TODO get best match
+            if (objectName.startsWith(prefix)) {
+                int channelId = uploadChannel.getChannelId();
+                try {
+                    StoreService storeService = getStoreService(channelId);
+                    storeService.deleteByObjectUrl(objectName);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+    @Override
+    public ObjectInfo getObjectInfo(int channelId, String objectId) {
+        try {
+            StoreService storeService = getStoreService(channelId);
+            int loginUser = AuthContext.getUserId();
+            int expireSecond = 3600;
+            return storeService.getObjectInfo(objectId);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+    @Override
+    public String getSignedUrl(int channelId, String objectId) {
+        try {
+            StoreService storeService = getStoreService(channelId);
+            return storeService.getSignedUrl(objectId);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+    @Override
+    public VideoInfo getVideoInfo(int channelId, String videoFileId) {
+        try {
+            StoreService storeService = getStoreService(channelId);
+            return storeService.getVideoInfo(videoFileId);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+    @Override
+    public ImageInfo getImageInfo(int channelId, String imageFileId) {
+        try {
+            StoreService storeService = getStoreService(channelId);
+            return storeService.getImageInfo(imageFileId);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+    @Override
+    public ConvertedImageInfo getWebpInfo(int channelId, String imageFileId) {
+        try {
+            int loginUser = AuthContext.getUserId();
+            StoreService storeService = getStoreService(channelId);
+            return storeService.getWebpInfo(imageFileId);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+    @Override
+    public AudioInfo getAudioInfo(int channelId, String audioFileId) {
+        try {
+            StoreService storeService = getStoreService(channelId);
+            return storeService.getAudioInfo(audioFileId);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+}

+ 1 - 1
oss-store/bin/oss.yml

@@ -9,6 +9,6 @@ spring:
 oss:
   consoleHost: 127.0.0.1
   consolePort: 8120
-  host: 192.168.0.212
+  host: 127.0.0.1
   diskDirs:
     - /opt/disk/13f654c8-af87-4710-aac9-7aa086c99aec/

+ 4 - 4
oss-store/src/main/java/cn/reghao/oss/store/config/BeansConfig.java

@@ -1,6 +1,6 @@
 package cn.reghao.oss.store.config;
 
-import cn.reghao.oss.api.iface.NodeService;
+import cn.reghao.oss.api.iface.ConsoleService;
 import cn.reghao.oss.store.config.props.OssProperties;
 import cn.reghao.oss.store.rpc.RemoteService;
 import org.springframework.context.annotation.Bean;
@@ -13,10 +13,10 @@ import org.springframework.context.annotation.Configuration;
 @Configuration
 public class BeansConfig {
     @Bean
-    public NodeService nodeService(OssProperties ossProperties) {
-        RemoteService<NodeService> remoteService = new RemoteService<>();
+    public ConsoleService nodeService(OssProperties ossProperties) {
+        RemoteService<ConsoleService> remoteService = new RemoteService<>();
         String host = ossProperties.getConsoleHost();
         int port = ossProperties.getConsolePort();
-        return remoteService.getService(host, port, NodeService.class);
+        return remoteService.getService(host, port, ConsoleService.class);
     }
 }

+ 3 - 3
oss-store/src/main/java/cn/reghao/oss/store/model/po/FileMeta.java

@@ -39,7 +39,7 @@ public class FileMeta extends BaseObject<Integer> {
         this.contentType = "0";
         this.sha256sum = "0";
         this.pid = pid;
-        this.uploadBy = AuthContext.getUser();
+        this.uploadBy = AuthContext.getUserId();
         this.scope = scope;
     }
 
@@ -54,7 +54,7 @@ public class FileMeta extends BaseObject<Integer> {
         this.contentType = contentType;
         this.sha256sum = sha256sum;
         this.pid = pid;
-        this.uploadBy = AuthContext.getUser();
+        this.uploadBy = AuthContext.getUserId();
         this.scope = scope;
     }
 
@@ -68,7 +68,7 @@ public class FileMeta extends BaseObject<Integer> {
         this.contentType = fileMeta.getContentType();
         this.sha256sum = fileMeta.getSha256sum();
         this.pid = fileMeta.getPid();
-        this.uploadBy = AuthContext.getUser();
+        this.uploadBy = AuthContext.getUserId();
         this.scope = scope;
     }
 }

+ 0 - 91
oss-store/src/main/java/cn/reghao/oss/store/rpc/MediaServiceImpl.java

@@ -1,91 +0,0 @@
-package cn.reghao.oss.store.rpc;
-
-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.service.SignService;
-import cn.reghao.oss.api.dto.media.*;
-import cn.reghao.oss.store.task.MediaFileProcessor;
-import cn.reghao.oss.api.iface.MediaService;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2024-03-07 09:52:59
- */
-@Slf4j
-@DubboService
-@Service
-public class MediaServiceImpl implements MediaService {
-    private final LocalDateTime epoch = LocalDateTime.parse("1970-01-01T08:00");
-    private final MediaFileProcessor mediaFileProcessor;
-    private ObjectRepository objectRepository;
-    private ObjectNameService objectNameService;
-    private SignService signService;
-
-    public MediaServiceImpl(MediaFileProcessor mediaFileProcessor) {
-        this.mediaFileProcessor = mediaFileProcessor;
-    }
-
-    @Override
-    public VideoInfo getVideoInfo(int channelId, String objectId) {
-        try {
-            VideoInfo videoInfo = mediaFileProcessor.getVideoInfo(objectId);
-            return videoInfo;
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        return null;
-    }
-
-    @Override
-    public ImageInfo getImageInfo(int channelId, String objectId) {
-        try {
-            ImageInfo imageInfo = mediaFileProcessor.getImageInfo(objectId);
-            return imageInfo;
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        return null;
-    }
-
-    @Override
-    public List<ConvertedImageInfo> getWebpInfo(int channelId, List<String> objectIds) {
-        return mediaFileProcessor.getWebpInfos(objectIds);
-    }
-
-    @Override
-    public AudioInfo getAudioInfo(int channelId, String objectId) {
-        try {
-            AudioInfo audioInfo = mediaFileProcessor.getAudioInfo(objectId);
-            return audioInfo;
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        return null;
-    }
-
-    @Override
-    public String getSignedUrl(int channelId, String objectId) {
-        int userId = getUserIdByChannelId(channelId);
-
-        int expireSecond = 3600;
-        FileMeta fileMeta = objectRepository.getByObjectId(objectId);
-        String objectName = fileMeta.getObjectName();
-        String url = objectNameService.getObjectUrl(objectName);
-        String signedUrl = signService.getSignedUrl(userId, url, expireSecond);
-        return signedUrl;
-    }
-
-    private int getUserIdByChannelId(int channelId) {
-        return 1;
-    }
-}

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

@@ -1,95 +0,0 @@
-package cn.reghao.oss.store.rpc;
-
-import cn.reghao.oss.api.constant.ObjectScope;
-import cn.reghao.oss.store.db.repository.ObjectRepository;
-import cn.reghao.oss.store.model.po.FileMeta;
-import cn.reghao.oss.api.dto.ObjectChannel;
-import cn.reghao.oss.api.dto.ObjectInfo;
-import cn.reghao.oss.store.db.mapper.FileMetaMapper;
-import cn.reghao.oss.store.service.SignService;
-import cn.reghao.oss.store.service.StoreLocalService;
-import cn.reghao.oss.api.iface.ObjectService;
-import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-05-28 23:26:03
- */
-@DubboService
-@Service
-public class ObjectServiceImpl implements ObjectService {
-    private final FileMetaMapper fileMetaMapper;
-    private final ObjectRepository objectRepository;
-    private final SignService signService;
-    private final StoreLocalService storeLocalService;
-
-    public ObjectServiceImpl(FileMetaMapper fileMetaMapper, ObjectRepository objectRepository,
-                             SignService signService, StoreLocalService storeLocalService) {
-        this.fileMetaMapper = fileMetaMapper;
-        this.objectRepository = objectRepository;
-        this.signService = signService;
-        this.storeLocalService = storeLocalService;
-    }
-
-    @Override
-    public void setObjectsScope(int channelId, List<String> objectIds, int scope) {
-        if (objectIds.isEmpty()) {
-            return;
-        }
-
-        objectIds.forEach(objectId -> {
-            FileMeta fileMeta = objectRepository.getByObjectId(objectId);
-            objectRepository.updateObjectScope(scope, fileMeta.getObjectName());
-        });
-    }
-
-    @Override
-    public void deleteByObjectIds(int channelId, List<String> objectIds) {
-        objectIds.forEach(objectId -> {
-            FileMeta fileMeta = objectRepository.getByObjectId(objectId);
-            objectRepository.deleteObject(fileMeta);
-        });
-    }
-
-    @Override
-    public void deleteByObjectUrl(String objectUrl) {
-        String objectName = "";
-        FileMeta fileMeta = objectRepository.getByObjectName(objectName);
-        objectRepository.deleteObject(fileMeta);
-    }
-
-    @Override
-    public ObjectInfo getObjectInfo(int channelId, String objectId) {
-        int loginUser = 1;
-        int expireSecond = 3600;
-
-        FileMeta fileMeta = fileMetaMapper.findByObjectId(objectId);
-        if (fileMeta == null) {
-            return null;
-        }
-
-        String objectName = fileMeta.getObjectName();
-        int fileType = fileMeta.getFileType();
-        String filename = fileMeta.getFilename();
-        long size = fileMeta.getSize();
-        ObjectInfo objectInfo = new ObjectInfo(objectId, objectName, fileType, filename, size);
-        String url = String.format("//%s/%s", storeLocalService.getDomain(), objectName);
-        int scope = fileMeta.getScope();
-        if (scope != ObjectScope.PUBLIC.getCode()) {
-            String signedUrl = signService.getSignedUrl(loginUser, url, expireSecond);
-            objectInfo.setUrl(signedUrl);
-        } else {
-            objectInfo.setUrl(url);
-        }
-
-        return objectInfo;
-    }
-
-    @Override
-    public ObjectChannel getObjectChannel(int channelId) {
-        return null;
-    }
-}

+ 130 - 7
oss-store/src/main/java/cn/reghao/oss/store/rpc/StoreServiceImpl.java

@@ -1,37 +1,59 @@
 package cn.reghao.oss.store.rpc;
 
 import cn.reghao.oss.api.constant.ObjectScope;
+import cn.reghao.oss.api.dto.*;
+import cn.reghao.oss.api.dto.media.AudioInfo;
+import cn.reghao.oss.api.dto.media.ConvertedImageInfo;
+import cn.reghao.oss.api.dto.media.ImageInfo;
+import cn.reghao.oss.api.dto.media.VideoInfo;
+import cn.reghao.oss.store.db.repository.ObjectRepository;
+import cn.reghao.oss.store.model.po.FileMeta;
 import cn.reghao.oss.store.service.FileStoreService;
 import cn.reghao.oss.store.service.ObjectNameService;
-import cn.reghao.oss.api.dto.StoreDiskDto;
-import cn.reghao.oss.api.dto.StoreInfo;
 import cn.reghao.oss.api.iface.StoreService;
-import cn.reghao.oss.api.dto.ObjectChannel;
+import cn.reghao.oss.store.service.SignService;
+import cn.reghao.oss.store.service.StoreLocalService;
+import cn.reghao.oss.store.task.MediaFileProcessor;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.stream.Collectors;
 
 /**
+ * 获取存储节点信息
+ * oss-console 调用
+ *
  * @author reghao
  * @date 2023-08-01 14:54:23
  */
 @DubboService
 @Service
 public class StoreServiceImpl implements StoreService {
+    private final LocalDateTime epoch = LocalDateTime.parse("1970-01-01T08:00");
+
     private final ObjectNameService objectNameService;
     private final FileStoreService fileStoreService;
+    private final ObjectRepository objectRepository;
+    private final SignService signService;
+    private final StoreLocalService storeLocalService;
+    private final MediaFileProcessor mediaFileProcessor;
 
-    public StoreServiceImpl(ObjectNameService objectNameService, FileStoreService fileStoreService) {
+    public StoreServiceImpl(ObjectNameService objectNameService, FileStoreService fileStoreService,
+                            ObjectRepository objectRepository, SignService signService,
+                            StoreLocalService storeLocalService, MediaFileProcessor mediaFileProcessor) {
         this.objectNameService = objectNameService;
         this.fileStoreService = fileStoreService;
+        this.objectRepository = objectRepository;
+        this.signService = signService;
+        this.storeLocalService = storeLocalService;
+        this.mediaFileProcessor = mediaFileProcessor;
     }
 
     @Override
-    public void createChannel(int userId, ObjectChannel channel) {
-        String objectName = channel.getPrefix();
-        objectNameService.createParentDirs(objectName, ObjectScope.PUBLIC.getCode());
+    public void createChannel(String channelPrefix) {
+        objectNameService.createParentDirs(channelPrefix, ObjectScope.PUBLIC.getCode());
     }
 
     @Override
@@ -41,4 +63,105 @@ public class StoreServiceImpl implements StoreService {
                 .collect(Collectors.toList());
         return new StoreInfo(diskDtos);
     }
+
+    @Override
+    public void setObjectScope(String objectId, int scope) {
+        FileMeta fileMeta = objectRepository.getByObjectId(objectId);
+        objectRepository.updateObjectScope(scope, fileMeta.getObjectName());
+    }
+
+    @Override
+    public void deleteByObjectId(String objectId) {
+        FileMeta fileMeta = objectRepository.getByObjectId(objectId);
+        objectRepository.deleteObject(fileMeta);
+    }
+
+    @Override
+    public void deleteByObjectUrl(String objectUrl) {
+        String objectName = "";
+        FileMeta fileMeta = objectRepository.getByObjectName(objectName);
+        objectRepository.deleteObject(fileMeta);
+    }
+
+    @Override
+    public ObjectInfo getObjectInfo(String objectId) {
+        int loginUser = 1;
+        int expireSecond = 3600;
+
+        FileMeta fileMeta = objectRepository.getByObjectId(objectId);
+        if (fileMeta == null) {
+            return null;
+        }
+
+        String objectName = fileMeta.getObjectName();
+        int fileType = fileMeta.getFileType();
+        String filename = fileMeta.getFilename();
+        long size = fileMeta.getSize();
+        ObjectInfo objectInfo = new ObjectInfo(objectId, objectName, fileType, filename, size);
+        String url = String.format("//%s/%s", storeLocalService.getDomain(), objectName);
+        int scope = fileMeta.getScope();
+        if (scope != ObjectScope.PUBLIC.getCode()) {
+            String signedUrl = signService.getSignedUrl(loginUser, url, expireSecond);
+            objectInfo.setUrl(signedUrl);
+        } else {
+            objectInfo.setUrl(url);
+        }
+
+        return objectInfo;
+    }
+
+    public String getSignedUrl(String objectId) {
+        int expire = 3600;
+        ObjectMeta objectMeta = objectRepository.getObjectMetaById(objectId);
+        String url = objectNameService.getObjectUrl(objectMeta.getObjectName());
+        int loginUser = 10000;
+        return signService.getSignedUrl(loginUser, url, expire);
+    }
+
+    @Override
+    public VideoInfo getVideoInfo(String objectId) {
+        try {
+            VideoInfo videoInfo = mediaFileProcessor.getVideoInfo(objectId);
+            return videoInfo;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+    @Override
+    public ImageInfo getImageInfo(String objectId) {
+        try {
+            ImageInfo imageInfo = mediaFileProcessor.getImageInfo(objectId);
+            return imageInfo;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+    @Override
+    public ConvertedImageInfo getWebpInfo(String objectId) {
+        try {
+            return mediaFileProcessor.getWebpInfo(objectId);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+    @Override
+    public AudioInfo getAudioInfo(String objectId) {
+        try {
+            AudioInfo audioInfo = mediaFileProcessor.getAudioInfo(objectId);
+            return audioInfo;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
 }

+ 13 - 13
oss-store/src/main/java/cn/reghao/oss/store/service/StoreLocalService.java

@@ -1,7 +1,7 @@
 package cn.reghao.oss.store.service;
 
 import cn.reghao.oss.api.dto.NodeProperties;
-import cn.reghao.oss.api.iface.NodeService;
+import cn.reghao.oss.api.iface.ConsoleService;
 import cn.reghao.oss.api.util.AuthContext;
 import cn.reghao.oss.store.config.props.OssProperties;
 import cn.reghao.oss.api.dto.StoreNodeDto;
@@ -14,41 +14,41 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class StoreLocalService {
-    private final NodeService nodeService;
+    private final ConsoleService consoleService;
     private final String nodeAddress;
 
-    public StoreLocalService(OssProperties ossProperties, NodeService nodeService) {
+    public StoreLocalService(OssProperties ossProperties, ConsoleService consoleService) {
         this.nodeAddress = ossProperties.getHost();
-        this.nodeService = nodeService;
+        this.consoleService = consoleService;
     }
 
     public void register(StoreNodeDto storeNodeDto) {
-        nodeService.registerNode(storeNodeDto);
+        consoleService.registerNode(storeNodeDto);
     }
 
     public String getDomain() {
-        int loginUser = AuthContext.getUser();
-        NodeProperties nodeProperties = nodeService.getNodeProperties(loginUser, nodeAddress);
+        int loginUser = AuthContext.getUserId();
+        NodeProperties nodeProperties = consoleService.getNodeProperties(loginUser, nodeAddress);
         return nodeProperties != null ? nodeProperties.getDomain() : null;
     }
 
     public String getReferer() {
-        int loginUser = AuthContext.getUser();
-        NodeProperties nodeProperties = nodeService.getNodeProperties(loginUser, nodeAddress);
+        int loginUser = AuthContext.getUserId();
+        NodeProperties nodeProperties = consoleService.getNodeProperties(loginUser, nodeAddress);
         return nodeProperties != null ? nodeProperties.getReferer() : null;
     }
 
     public String getSecretKey() {
-        int loginUser = AuthContext.getUser();
-        NodeProperties nodeProperties = nodeService.getNodeProperties(loginUser, nodeAddress);
+        int loginUser = AuthContext.getUserId();
+        NodeProperties nodeProperties = consoleService.getNodeProperties(loginUser, nodeAddress);
         return nodeProperties != null ? nodeProperties.getSecretKey() : null;
     }
 
     public ObjectChannel getChannelById(int loginUser, int channelId) {
-        return nodeService.getChannelById(loginUser, channelId);
+        return consoleService.getChannelById(loginUser, channelId);
     }
 
     public int getChannelIdByUrl(int loginUser, String url) {
-        return nodeService.getChannelIdByUrl(loginUser, url);
+        return consoleService.getChannelIdByUrl(loginUser, url);
     }
 }

+ 0 - 22
oss-store/src/main/java/cn/reghao/oss/store/util/UserContext.java

@@ -1,22 +0,0 @@
-package cn.reghao.oss.store.util;
-
-/**
- * @author reghao
- * @date 2023-06-02 10:48:59
- */
-public class UserContext implements AutoCloseable {
-    static final ThreadLocal<Integer> CURRENT = new ThreadLocal<>();
-
-    public UserContext(int user) {
-        CURRENT.set(user);
-    }
-
-    public static int getUser() {
-        return CURRENT.get();
-    }
-
-    @Override
-    public void close() {
-        CURRENT.remove();
-    }
-}