Explorar o código

更新 StoreNode 和 UserNode 的删除接口

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

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

@@ -24,17 +24,17 @@ public class UserNodeController {
         this.userNodeService = userNodeService;
     }
 
-    @ApiOperation(value = "添加存储节点")
+    @ApiOperation(value = "添加用户节点")
     @PostMapping(value = "/add", produces = MediaType.APPLICATION_JSON_VALUE)
     public String addUserNode(@Validated UserNodeDto userNodeDto) {
         Result result = userNodeService.add(userNodeDto);
         return WebResult.result(result);
     }
 
-    @ApiOperation(value = "删除存储节点")
+    @ApiOperation(value = "删除用户节点")
     @DeleteMapping(value = "/delete/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String deleteUserNode(@PathVariable("id") Integer nodeId) {
-        Result result = userNodeService.delete(nodeId);
+    public String deleteUserNode(@PathVariable("id") Integer userNodeId) {
+        Result result = userNodeService.delete(userNodeId);
         return WebResult.result(result);
     }
 }

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

@@ -8,5 +8,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
  * @date 2024-02-27 09:49:12
  */
 public interface UserNodeRepository extends JpaRepository<UserNode, Integer> {
+    int countByNodeId(int nodeId);
     UserNode findByNodeIdAndUserId(int nodeId, int userId);
 }

+ 12 - 4
oss-console/src/main/java/cn/reghao/oss/console/app/service/StoreNodeService.java

@@ -2,6 +2,7 @@ package cn.reghao.oss.console.app.service;
 
 import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.oss.console.app.db.repository.StoreNodeRepository;
+import cn.reghao.oss.console.app.db.repository.UserNodeRepository;
 import cn.reghao.oss.console.app.model.dto.NodeUpdateDto;
 import cn.reghao.oss.console.app.model.po.StoreDisk;
 import cn.reghao.oss.console.app.model.po.StoreNode;
@@ -26,10 +27,13 @@ import java.util.stream.Collectors;
 public class StoreNodeService {
     private final StoreNodeRepository storeNodeRepository;
     private final RpcService rpcService;
+    private final UserNodeRepository userNodeRepository;
 
-    public StoreNodeService(StoreNodeRepository storeNodeRepository, RpcService rpcService) {
+    public StoreNodeService(StoreNodeRepository storeNodeRepository, RpcService rpcService,
+                            UserNodeRepository userNodeRepository) {
         this.storeNodeRepository = storeNodeRepository;
         this.rpcService = rpcService;
+        this.userNodeRepository = userNodeRepository;
     }
 
     public void add(StoreNodeDto storeNodeDto) {
@@ -65,7 +69,6 @@ public class StoreNodeService {
             return Result.success();
         }
 
-        String nodeAddr = storeNode.getNodeAddr();
         String secretKey = nodeUpdateDto.getSecretKey();
         String referer = nodeUpdateDto.getReferer();
         storeNode.setDomain(domain);
@@ -86,8 +89,13 @@ public class StoreNodeService {
             return Result.fail("node not exist");
         }
 
-        //storeNodeRepository.delete(storeNode);
-        return Result.success("not implement");
+        int total = userNodeRepository.countByNodeId(nodeId);
+        if (total > 0) {
+            return Result.fail("someone user the node");
+        }
+
+        storeNodeRepository.delete(storeNode);
+        return Result.success();
     }
 
     public Page<StoreNode> getByPage(PageRequest pageRequest) {

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

@@ -34,39 +34,36 @@ public class UserNodeService {
         int nodeId = userNodeDto.getNodeId();
         Integer userId = UserContext.getUser().getId();
         UserNode userNode = userNodeRepository.findByNodeIdAndUserId(nodeId, userId);
-        if (userNode == null) {
-            StoreNode storeNode = storeNodeService.getById(nodeId);
-            if (storeNode != null) {
-                userNode = new UserNode(userNodeDto, userId);
-                userNodeRepository.save(userNode);
-                return Result.success("node added");
-            }
+        if (userNode != null) {
+            return Result.fail("UserNode exist");
+        }
+
+        StoreNode storeNode = storeNodeService.getById(nodeId);
+        if (storeNode == null) {
+            return Result.success("StoreNode not exist");
         }
 
-        return Result.fail("node exist");
+        userNode = new UserNode(userNodeDto, userId);
+        userNodeRepository.save(userNode);
+        return Result.success("node added");
     }
 
     public Result delete(Integer id) {
-        StoreNode storeNode = storeNodeService.getById(id);
-        if (storeNode != null) {
-            int nodeId = storeNode.getId();
-            int userId = UserContext.getUser().getId();
+        UserNode userNode = userNodeRepository.findById(id).orElse(null);
+        if (userNode != null) {
+            int nodeId = userNode.getNodeId();
 
+            int userId = UserContext.getUser().getId();
             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");
+            userNodeRepository.delete(userNode);
+            return Result.success();
         }
 
-        return Result.fail("StoreNode not exists");
+        return Result.fail("UserNode not exists");
     }
 
     public List<StoreNode> getUserStoreNodes() {

+ 1 - 1
oss-console/src/main/resources/templates/node/index.html

@@ -49,7 +49,7 @@
                            data-size="640,480" href="#">设置</a>
                         <a class="open-popup" data-title="存储节点详细信息" th:attr="data-url=@{'/store/node/detail/'+${item.id}}"
                            data-size="640,540" href="#">详细</a>
-                        <a class="ajax-delete" th:attr="data-msg='确定要删除 '+ ${item.id}"
+                        <a class="ajax-delete" th:attr="data-msg='确定要删除节点 '+ ${item.nodeAddr}"
                            th:href="@{'/api/store/node/' + ${item.id}}">删除</a>
                     </td>
                 </tr>