Prechádzať zdrojové kódy

UploadChannelController 添加一个 UploadChannel 初始化接口

reghao 5 mesiacov pred
rodič
commit
02864f6c42

+ 7 - 0
file/file-service/src/main/java/cn/reghao/tnb/file/app/controller/UploadChannelController.java

@@ -80,6 +80,13 @@ public class UploadChannelController {
         return WebResult.success(addChannelAttr);
     }
 
+    @Operation(summary = "初始化上传通道", description = "N")
+    @PostMapping(value = "/init", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String initUploadChannel() throws Exception {
+        uploadChannelService.initUploadChannel();
+        return WebResult.success();
+    }
+
     @Operation(summary = "添加上传通道", description = "N")
     @PostMapping(value = "/add", produces = MediaType.APPLICATION_JSON_VALUE)
     public String addUploadChannel(@RequestBody @Validated UploadChannelDto uploadChannelDto) throws Exception {

+ 37 - 0
file/file-service/src/main/java/cn/reghao/tnb/file/app/db/repository/ChannelRepository.java

@@ -0,0 +1,37 @@
+package cn.reghao.tnb.file.app.db.repository;
+
+import cn.reghao.tnb.file.app.db.mapper.UploadChannelMapper;
+import cn.reghao.tnb.file.app.model.po.UploadChannel;
+import cn.reghao.tnb.file.app.rpc.StoreServiceWrapper;
+import cn.reghao.tnb.file.app.service.StoreConfigService;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author reghao
+ * @date 2025-10-19 22:07:47
+ */
+@Repository
+public class ChannelRepository {
+    private final UploadChannelMapper uploadChannelMapper;
+    private final StoreConfigService storeConfigService;
+    private final StoreServiceWrapper storeServiceWrapper;
+
+    public ChannelRepository(UploadChannelMapper uploadChannelMapper, StoreConfigService storeConfigService,
+                             StoreServiceWrapper storeServiceWrapper) {
+        this.uploadChannelMapper = uploadChannelMapper;
+        this.storeConfigService = storeConfigService;
+        this.storeServiceWrapper = storeServiceWrapper;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void createUploadChannel(UploadChannel uploadChannel) throws Exception {
+        uploadChannelMapper.save(uploadChannel);
+
+        int userNodeId = uploadChannel.getUserNodeId();
+        String prefix = uploadChannel.getPrefix();
+        int scope = uploadChannel.getScope();
+        int ossUser = storeConfigService.getLocalOssUser();
+        storeServiceWrapper.createChannel(userNodeId, prefix, scope, ossUser);
+    }
+}

+ 2 - 16
file/file-service/src/main/java/cn/reghao/tnb/file/app/service/StoreNodeService.java

@@ -34,15 +34,11 @@ public class StoreNodeService {
     private final StoreServiceWrapper storeServiceWrapper;
     private final StoreRepository storeRepository;
     private final UserNodeService userNodeService;
-    private final UploadChannelService uploadChannelService;
-    private final StoreConfigService storeConfigService;
-    private final UserKeyService userKeyService;
 
     public StoreNodeService(ByteConverter byteConverter, StoreNodeMapper storeNodeMapper,
                             StoreVolumeMapper storeVolumeMapper, UserNodeMapper userNodeMapper,
                             StoreServiceWrapper storeServiceWrapper, StoreRepository storeRepository,
-                            UserNodeService userNodeService, UploadChannelService uploadChannelService,
-                            StoreConfigService storeConfigService, UserKeyService userKeyService) {
+                            UserNodeService userNodeService) {
         this.byteConverter = byteConverter;
         this.storeNodeMapper = storeNodeMapper;
         this.storeVolumeMapper = storeVolumeMapper;
@@ -50,9 +46,6 @@ public class StoreNodeService {
         this.storeServiceWrapper = storeServiceWrapper;
         this.storeRepository = storeRepository;
         this.userNodeService = userNodeService;
-        this.uploadChannelService = uploadChannelService;
-        this.storeConfigService = storeConfigService;
-        this.userKeyService = userKeyService;
     }
 
     public void addOrUpdate(StoreNodeDto storeNodeDto) {
@@ -63,7 +56,7 @@ public class StoreNodeService {
 
             int total = storeNodeMapper.findAll().size();
             if (total == 1) {
-                init(storeNodeId);
+                userNodeService.createUserNode(storeNodeId);
             }
         } else {
             int storeNodeId = storeNode.getId();
@@ -74,13 +67,6 @@ public class StoreNodeService {
         }
     }
 
-    private void init(int storeNodeId) {
-        int userNodeId = userNodeService.createUserNode(storeNodeId);
-        int ossUser = storeConfigService.getLocalOssUser();
-        userKeyService.getUserKeys(ossUser);
-        uploadChannelService.createUploadChannel(ossUser, userNodeId);
-    }
-
     public Result updateStatus(int storeNodeId) {
         StoreNode storeNode = storeNodeMapper.findById(storeNodeId);
         if (storeNode != null) {

+ 14 - 23
file/file-service/src/main/java/cn/reghao/tnb/file/app/service/UploadChannelService.java

@@ -7,18 +7,17 @@ import cn.reghao.jutil.jdk.result.ResultStatus;
 import cn.reghao.oss.api.dto.ObjectChannel;
 import cn.reghao.oss.sdk.model.constant.ObjectScope;
 import cn.reghao.oss.sdk.model.constant.ObjectType;
-import cn.reghao.tnb.common.auth.UserContext;
 import cn.reghao.tnb.file.app.db.mapper.UploadChannelMapper;
+import cn.reghao.tnb.file.app.db.repository.ChannelRepository;
 import cn.reghao.tnb.file.app.model.constant.UploadChannelType;
 import cn.reghao.tnb.file.app.model.dto.UploadChannelDto;
 import cn.reghao.tnb.file.app.model.po.UploadChannel;
 import cn.reghao.tnb.file.app.model.po.UserNode;
 import cn.reghao.tnb.file.app.model.vo.UploadChannelInfo;
+import cn.reghao.tnb.file.app.model.vo.UserNodeInfo;
 import cn.reghao.tnb.file.app.rpc.StoreServiceWrapper;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -33,15 +32,17 @@ public class UploadChannelService {
     private final UserNodeService userNodeService;
     private final StoreServiceWrapper storeServiceWrapper;
     private final StoreConfigService storeConfigService;
+    private final ChannelRepository channelRepository;
 
     public UploadChannelService(ByteConverter byteConverter, UploadChannelMapper uploadChannelMapper,
                                 UserNodeService userNodeService, StoreServiceWrapper storeServiceWrapper,
-                                StoreConfigService storeConfigService) {
+                                StoreConfigService storeConfigService, ChannelRepository channelRepository) {
         this.byteConverter = byteConverter;
         this.uploadChannelMapper = uploadChannelMapper;
         this.userNodeService = userNodeService;
         this.storeServiceWrapper = storeServiceWrapper;
         this.storeConfigService = storeConfigService;
+        this.channelRepository = channelRepository;
     }
 
     public synchronized Result addObjectChannel(UploadChannelDto uploadChannelDto) throws Exception {
@@ -60,30 +61,20 @@ public class UploadChannelService {
 
         int channelCode = getNextChannelCode(createBy);
         uploadChannel = new UploadChannel(channelCode, uploadChannelDto, (int) createBy);
-        createUploadChannel(uploadChannel);
+        channelRepository.createUploadChannel(uploadChannel);
         return Result.success();
     }
 
-    public void createUploadChannel(int ossUser, int userNodeId) {
-        Arrays.asList(UploadChannelType.values()).forEach(uploadChannelType -> {
-            try {
+    public void initUploadChannel() throws Exception {
+        int ossUser = storeConfigService.getLocalOssUser();
+        List<UserNodeInfo> list = userNodeService.getUserNodes(ossUser);
+        if (list.size() == 1 && uploadChannelMapper.findByCreateBy(ossUser).isEmpty()) {
+            int userNodeId = list.get(0).getUserNodeId();
+            for (UploadChannelType uploadChannelType : UploadChannelType.values()) {
                 UploadChannel uploadChannel = new UploadChannel(userNodeId, uploadChannelType, ossUser);
-                createUploadChannel(uploadChannel);
-            } catch (Exception e) {
-                e.printStackTrace();
+                channelRepository.createUploadChannel(uploadChannel);
             }
-        });
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void createUploadChannel(UploadChannel uploadChannel) throws Exception {
-        uploadChannelMapper.save(uploadChannel);
-
-        int userNodeId = uploadChannel.getUserNodeId();
-        String prefix = uploadChannel.getPrefix();
-        int scope = uploadChannel.getScope();
-        int ossUser = storeConfigService.getLocalOssUser();
-        storeServiceWrapper.createChannel(userNodeId, prefix, scope, ossUser);
+        }
     }
 
     private int getNextChannelCode(long createBy) {

+ 1 - 3
file/file-service/src/main/java/cn/reghao/tnb/file/app/service/UserNodeService.java

@@ -53,15 +53,13 @@ public class UserNodeService {
         return Result.success("node added");
     }
 
-    public int createUserNode(int storeNodeId) {
+    public void createUserNode(int storeNodeId) {
         int ossUser = storeConfigService.getLocalOssUser();
         String domain = "";
         String secretKey = "";
         String referer = "";
         UserNode userNode = new UserNode(storeNodeId, domain, secretKey, referer, ossUser);
         userNodeMapper.save(userNode);
-        int userNodeId = userNode.getId();
-        return userNodeId;
     }
 
     public Result delete(int id) {