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

更新删除 UserNode 的处理逻辑, 需保证 UserKey 和 UploadChannel 均不存在

reghao 2 роки тому
батько
коміт
466ca355bc

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

@@ -34,7 +34,7 @@ public class UserNodeController {
     @ApiOperation(value = "删除存储节点")
     @DeleteMapping(value = "/delete/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
     public String deleteUserNode(@PathVariable("id") Integer nodeId) {
-        userNodeService.delete(nodeId);
-        return WebResult.success();
+        Result result = userNodeService.delete(nodeId);
+        return WebResult.result(result);
     }
 }

+ 1 - 0
oss-console/src/main/java/cn/reghao/oss/console/app/db/repository/UploadChannelRepository.java

@@ -13,6 +13,7 @@ import java.util.List;
  */
 public interface UploadChannelRepository extends JpaRepository<UploadChannel, Integer> {
     int countByCreateBy(int createBy);
+    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);

+ 1 - 0
oss-console/src/main/java/cn/reghao/oss/console/app/db/repository/UserKeyRepository.java

@@ -13,4 +13,5 @@ public interface UserKeyRepository extends JpaRepository<UserKey, Integer> {
     int countByNodeIdAndUserId(int nodeId, int userId);
     List<UserKey> findByUserId(int userId);
     UserKey findByAccessKeyId(String accessKeyId);
+    UserKey findByNodeIdAndUserId(int nodeId, int userId);
 }

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

@@ -165,4 +165,8 @@ public class UploadChannelService {
 
         return storeNode;
     }
+
+    public UploadChannel getByNodeIdAndUserId(int nodeId, int userId) {
+        return uploadChannelRepository.findByNodeIdAndCreateBy(nodeId, userId);
+    }
 }

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

@@ -96,4 +96,8 @@ public class UserKeyService {
                 })
                 .collect(Collectors.toList());
     }
+
+    public UserKey getByNodeIdAndUserId(int nodeId, int userId) {
+        return userKeyRepository.findByNodeIdAndUserId(nodeId, userId);
+    }
 }

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

@@ -5,6 +5,8 @@ import cn.reghao.oss.console.account.service.UserContext;
 import cn.reghao.oss.console.app.db.repository.UserNodeRepository;
 import cn.reghao.oss.console.app.model.dto.UserNodeDto;
 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.UserKey;
 import cn.reghao.oss.console.app.model.po.UserNode;
 import org.springframework.stereotype.Service;
 
@@ -20,10 +22,15 @@ import java.util.stream.Collectors;
 public class UserNodeService {
     private final UserNodeRepository userNodeRepository;
     private final StoreNodeService storeNodeService;
+    private UserKeyService userKeyService;
+    private UploadChannelService uploadChannelService;
 
-    public UserNodeService(UserNodeRepository userNodeRepository, StoreNodeService storeNodeService) {
+    public UserNodeService(UserNodeRepository userNodeRepository, StoreNodeService storeNodeService,
+                           UserKeyService userKeyService, UploadChannelService uploadChannelService) {
         this.userNodeRepository = userNodeRepository;
         this.storeNodeService = storeNodeService;
+        this.userKeyService = userKeyService;
+        this.uploadChannelService = uploadChannelService;
     }
 
     public Result add(UserNodeDto userNodeDto) {
@@ -42,16 +49,32 @@ public class UserNodeService {
         return Result.fail("node exist");
     }
 
-    public void delete(Integer id) {
+    public Result delete(Integer id) {
         StoreNode storeNode = storeNodeService.getById(id);
         if (storeNode != null) {
             int nodeId = storeNode.getId();
             int userId = UserContext.getUser().getId();
+
+            UserKey userKey = userKeyService.getByNodeIdAndUserId(nodeId, userId);
+            if (userKey != null) {
+                return Result.fail("UserKey exists");
+            }
+
+            UploadChannel uploadChannel = uploadChannelService.getByNodeIdAndUserId(nodeId, userId);
+            if (uploadChannel != null) {
+                return Result.fail("UploadChannel exists");
+            }
+
             UserNode userNode = userNodeRepository.findByNodeIdAndUserId(nodeId, userId);
             if (userNode != null) {
                 userNodeRepository.delete(userNode);
+                return Result.success();
             }
+
+            return Result.fail("UserNode not exists");
         }
+
+        return Result.fail("StoreNode not exists");
     }
 
     public List<StoreNode> getUserStoreNodes() {