فهرست منبع

UserKey model 中使用 StoreNode 的 id 字段来引用 StoreNode 对象

reghao 2 سال پیش
والد
کامیت
15c2702ace

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

@@ -2,6 +2,7 @@ package cn.reghao.oss.console.app.controller.page;
 
 import cn.reghao.oss.console.app.model.po.UserKey;
 import cn.reghao.oss.console.app.model.vo.KeyValue;
+import cn.reghao.oss.console.app.model.vo.UserKeyVo;
 import cn.reghao.oss.console.app.service.StoreNodeService;
 import cn.reghao.oss.console.app.service.UserKeyService;
 import io.swagger.annotations.Api;
@@ -33,7 +34,7 @@ public class UserKeyPageController {
     @ApiOperation(value = "我的帐号页面")
     @GetMapping(value = "")
     public String userKeyPage(Model model) {
-        List<UserKey> list = userKeyService.getUserKeys();
+        List<UserKeyVo> list = userKeyService.getUserKeys();
         model.addAttribute("list", list);
         return "/userkey/index1";
     }
@@ -41,11 +42,7 @@ public class UserKeyPageController {
     @ApiOperation(value = "帐号创建页面")
     @GetMapping(value = "/add")
     public String userKeyAddPage(Model model) {
-        List<KeyValue> storeNodes = storeNodeService.getStoreNodes().stream()
-                .map(storeNode -> {
-                    String domain = storeNode.getDomain();
-                    return new KeyValue(domain, domain);
-                }).collect(Collectors.toList());
+        List<KeyValue> storeNodes = storeNodeService.getNodeKeyValues();
         model.addAttribute("storeNodes", storeNodes);
         return "/userkey/add";
     }

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

@@ -47,12 +47,7 @@ public class UserNodePageController {
     @ApiOperation(value = "我的节点创建页面")
     @GetMapping(value = "/add")
     public String addNodePage(Model model) {
-        List<KeyValue> storeNodes = storeNodeService.getStoreNodes().stream()
-                .map(storeNode -> {
-                    int nodeId = storeNode.getId();
-                    String domain = storeNode.getDomain();
-                    return new KeyValue(nodeId+"", domain);
-                }).collect(Collectors.toList());
+        List<KeyValue> storeNodes = storeNodeService.getNodeKeyValues();
         model.addAttribute("storeNodes", storeNodes);
         return "/usernode/add";
     }

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

@@ -10,8 +10,7 @@ import java.util.List;
  * @date 2024-02-27 10:35:53
  */
 public interface UserKeyRepository extends JpaRepository<UserKey, Integer> {
-    int countByDomainAndUserId(String domain, int userId);
+    int countByNodeIdAndUserId(int nodeId, int userId);
     List<UserKey> findByUserId(int userId);
-    List<UserKey> findByDomainAndUserId(String domain, int userId);
     UserKey findByAccessKeyId(String accessKeyId);
 }

+ 3 - 3
oss-console/src/main/java/cn/reghao/oss/console/app/model/dto/UserKeyDto.java

@@ -3,7 +3,7 @@ package cn.reghao.oss.console.app.model.dto;
 import lombok.Getter;
 import lombok.Setter;
 
-import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 
 /**
  * @author reghao
@@ -12,6 +12,6 @@ import javax.validation.constraints.NotBlank;
 @Setter
 @Getter
 public class UserKeyDto {
-    @NotBlank
-    private String domain;
+    @NotNull
+    private Integer nodeId;
 }

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

@@ -3,7 +3,6 @@ package cn.reghao.oss.console.app.model.dto;
 import lombok.Getter;
 import lombok.Setter;
 
-import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
 /**

+ 1 - 1
oss-console/src/main/java/cn/reghao/oss/console/app/model/po/UserKey.java

@@ -22,6 +22,6 @@ public class UserKey extends BaseEntity {
     @Column(unique = true)
     private String accessKeyId;
     private String accessKeySecret;
-    private String domain;
+    private Integer nodeId;
     private Integer userId;
 }

+ 16 - 0
oss-console/src/main/java/cn/reghao/oss/console/app/model/vo/UserKeyVo.java

@@ -0,0 +1,16 @@
+package cn.reghao.oss.console.app.model.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author reghao
+ * @date 2024-03-05 17:17:16
+ */
+@AllArgsConstructor
+@Getter
+public class UserKeyVo {
+    private String domain;
+    private String accessKeyId;
+    private String accessKeySecret;
+}

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

@@ -5,6 +5,7 @@ import cn.reghao.oss.console.app.db.repository.StoreNodeRepository;
 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;
+import cn.reghao.oss.console.app.model.vo.KeyValue;
 import cn.reghao.oss.console.app.rpc.RpcService;
 import cn.reghao.oss.store.api.dto.StoreNodeDto;
 import cn.reghao.oss.store.api.dto.StoreProperties;
@@ -109,7 +110,12 @@ public class StoreNodeService {
         return storeNodeRepository.findById(id).orElse(null);
     }
 
-    public List<StoreNode> getStoreNodes() {
-        return storeNodeRepository.findAll();
+    public List<KeyValue> getNodeKeyValues() {
+        return storeNodeRepository.findAll().stream()
+                .map(storeNode -> {
+                    int nodeId = storeNode.getId();
+                    String domain = storeNode.getDomain();
+                    return new KeyValue(nodeId+"", domain);
+                }).collect(Collectors.toList());
     }
 }

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

@@ -2,6 +2,7 @@ package cn.reghao.oss.console.app.service;
 
 import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.jutil.jdk.security.RandomString;
+import cn.reghao.oss.console.app.model.vo.UserKeyVo;
 import cn.reghao.oss.store.api.constant.ChannelAction;
 import cn.reghao.oss.store.api.dto.OssPayload;
 import cn.reghao.oss.console.account.service.UserContext;
@@ -13,6 +14,7 @@ import cn.reghao.oss.console.util.JwtUtil;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author reghao
@@ -21,15 +23,17 @@ import java.util.List;
 @Service
 public class UserKeyService {
     private final UserKeyRepository userKeyRepository;
+    private StoreNodeService storeNodeService;
 
-    public UserKeyService(UserKeyRepository userKeyRepository) {
+    public UserKeyService(UserKeyRepository userKeyRepository, StoreNodeService storeNodeService) {
         this.userKeyRepository = userKeyRepository;
+        this.storeNodeService = storeNodeService;
     }
 
     public Result create(UserKeyDto userKeyDto) {
-        String domain = userKeyDto.getDomain();
+        int nodeId = userKeyDto.getNodeId();
         int userId = UserContext.getUser().getId();
-        int total = userKeyRepository.countByDomainAndUserId(domain, userId);
+        int total = userKeyRepository.countByNodeIdAndUserId(nodeId, userId);
         if (total > 2) {
             String errMsg = String.format("you already have %s keys, key exceed limit", total);
             return Result.fail(errMsg);
@@ -37,7 +41,7 @@ public class UserKeyService {
 
         String accessKeyId = RandomString.getString(8);
         String accessKeySecret = RandomString.getString(18);
-        UserKey userKey = new UserKey(accessKeyId, accessKeySecret, domain, userId);
+        UserKey userKey = new UserKey(accessKeyId, accessKeySecret, nodeId, userId);
         userKeyRepository.save(userKey);
         return Result.success("key has created");
     }
@@ -75,11 +79,21 @@ public class UserKeyService {
     }
 
     public void delete(String accessKeyId) {
+        UserKey userKey = userKeyRepository.findByAccessKeyId(accessKeyId);
+        if (userKey != null) {
+            userKeyRepository.delete(userKey);
+        }
     }
 
-    public List<UserKey> getUserKeys() {
+    public List<UserKeyVo> getUserKeys() {
         int userId = UserContext.getUser().getId();
-        List<UserKey> list = userKeyRepository.findByUserId(userId);
-        return list;
+        return userKeyRepository.findByUserId(userId).stream()
+                .map(userKey -> {
+                    String domain = storeNodeService.getById(userKey.getNodeId()).getDomain();
+                    String accessKeyId = userKey.getAccessKeyId();
+                    String accessKeySecret = userKey.getAccessKeySecret();
+                    return new UserKeyVo(domain, accessKeyId, accessKeySecret);
+                })
+                .collect(Collectors.toList());
     }
 }

+ 1 - 1
oss-console/src/main/resources/templates/userkey/add.html

@@ -14,7 +14,7 @@
                 <td>
                     <div class="layui-form-item">
                         <div class="layui-input-inline">
-                            <select name="domain">
+                            <select name="nodeId">
                                 <option th:each="item : ${storeNodes}" th:value="${item.key}">[[${item.value}]]</option>
                             </select>
                         </div>

+ 0 - 2
oss-console/src/main/resources/templates/userkey/index1.html

@@ -49,8 +49,6 @@
                     <td th:text="${item.accessKeyId}">应用名</td>
                     <td th:text="${item.accessKeySecret}">应用 ID</td>
                     <td>
-                        <a class="open-popup" data-title="应用详细信息" th:attr="data-url=@{'/app/config/app/detail/'+${item.id}}"
-                           data-size="1200,500" href="#">详细</a>
                         <a class="ajax-delete" th:attr="data-msg='确定要删除 '+ ${item.accessKeyId}"
                            th:href="@{'/api/store/my/key/delete/' + ${item.accessKeyId}}">删除</a>
                     </td>