Ver código fonte

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

reghao 2 anos atrás
pai
commit
fe71ff032f

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

@@ -17,10 +17,10 @@ import org.springframework.web.bind.annotation.*;
 @Api(tags = "用户存储节点数据接口")
 @RestController
 @RequestMapping("/api/store/my")
-public class UserStoreNodeController {
+public class UserNodeController {
     private final UserNodeService userNodeService;
 
-    public UserStoreNodeController(UserNodeService userNodeService) {
+    public UserNodeController(UserNodeService userNodeService) {
         this.userNodeService = userNodeService;
     }
 

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

@@ -23,11 +23,11 @@ import java.util.stream.Collectors;
 @Api(tags = "我的节点页面")
 @Controller
 @RequestMapping("/store/my")
-public class UserStoreNodePageController {
+public class UserNodePageController {
     private final UserNodeService userNodeService;
     private final StoreNodeService storeNodeService;
 
-    public UserStoreNodePageController(UserNodeService userNodeService, StoreNodeService storeNodeService) {
+    public UserNodePageController(UserNodeService userNodeService, StoreNodeService storeNodeService) {
         this.userNodeService = userNodeService;
         this.storeNodeService = storeNodeService;
     }
@@ -46,19 +46,20 @@ public class UserStoreNodePageController {
 
     @ApiOperation(value = "我的节点创建页面")
     @GetMapping(value = "/add")
-    public String statusPage(Model model) {
+    public String addNodePage(Model model) {
         List<KeyValue> storeNodes = storeNodeService.getStoreNodes().stream()
                 .map(storeNode -> {
+                    int nodeId = storeNode.getId();
                     String domain = storeNode.getDomain();
-                    return new KeyValue(domain, domain);
+                    return new KeyValue(nodeId+"", domain);
                 }).collect(Collectors.toList());
         model.addAttribute("storeNodes", storeNodes);
         return "/usernode/add";
     }
 
-    @ApiOperation(value = "应用运行状态详情页面")
+    @ApiOperation(value = "节点详情页面")
     @GetMapping(value = "/detail/{appId}")
-    public String statusPage2(@PathVariable(value = "appId") String appId, Model model) {
+    public String nodeDetailPage(@PathVariable(value = "appId") String appId, Model model) {
         model.addAttribute("list", Collections.emptyList());
         return "/usernode/index1";
     }

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

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

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

@@ -4,6 +4,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 
 /**
  * @author reghao
@@ -12,7 +13,7 @@ import javax.validation.constraints.NotBlank;
 @Setter
 @Getter
 public class UserNodeDto {
-    @NotBlank
-    private String domain;
+    @NotNull
+    private Integer nodeId;
     private String description;
 }

+ 2 - 2
oss-console/src/main/java/cn/reghao/oss/console/app/model/po/UserNode.java

@@ -19,11 +19,11 @@ import javax.persistence.Entity;
 @Setter
 @Entity
 public class UserNode extends BaseEntity {
-    private String domain;
+    private Integer nodeId;
     private Integer userId;
 
     public UserNode(UserNodeDto userNodeDto, int userId) {
-        this.domain = userNodeDto.getDomain();
+        this.nodeId = userNodeDto.getNodeId();
         this.userId = userId;
     }
 }

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

@@ -93,8 +93,8 @@ public class StoreNodeService {
         return storeNodeRepository.findAll(pageRequest);
     }
 
-    public List<StoreNode> getByDomains(List<String> list) {
-        return storeNodeRepository.findByDomainIn(list);
+    public List<StoreNode> getByIds(List<Integer> list) {
+        return storeNodeRepository.findAllById(list);
     }
 
     public StoreNode getByDomain(String domain) {

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

@@ -27,11 +27,11 @@ public class UserNodeService {
     }
 
     public Result add(UserNodeDto userNodeDto) {
-        String domain = userNodeDto.getDomain();
+        int nodeId = userNodeDto.getNodeId();
         Integer userId = UserContext.getUser().getId();
-        UserNode userNode = userNodeRepository.findByDomainAndUserId(domain, userId);
+        UserNode userNode = userNodeRepository.findByNodeIdAndUserId(nodeId, userId);
         if (userNode == null) {
-            StoreNode storeNode = storeNodeService.getByDomain(userNodeDto.getDomain());
+            StoreNode storeNode = storeNodeService.getById(nodeId);
             if (storeNode != null) {
                 userNode = new UserNode(userNodeDto, userId);
                 userNodeRepository.save(userNode);
@@ -45,9 +45,9 @@ public class UserNodeService {
     public void delete(Integer id) {
         StoreNode storeNode = storeNodeService.getById(id);
         if (storeNode != null) {
-            String domain = storeNode.getDomain();
+            int nodeId = storeNode.getId();
             int userId = UserContext.getUser().getId();
-            UserNode userNode = userNodeRepository.findByDomainAndUserId(domain, userId);
+            UserNode userNode = userNodeRepository.findByNodeIdAndUserId(nodeId, userId);
             if (userNode != null) {
                 userNodeRepository.delete(userNode);
             }
@@ -60,7 +60,7 @@ public class UserNodeService {
             return Collections.emptyList();
         }
 
-        List<String> domains = list.stream().map(UserNode::getDomain).collect(Collectors.toList());
-        return storeNodeService.getByDomains(domains);
+        List<Integer> nodeIds = list.stream().map(UserNode::getNodeId).collect(Collectors.toList());
+        return storeNodeService.getByIds(nodeIds);
     }
 }

+ 0 - 207
oss-console/src/main/resources/templates/node/add.html

@@ -1,207 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:th="http://www.thymeleaf.org">
-<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})"></head>
-
-<body>
-<div class="layui-form timo-compile">
-    <form th:action="@{/api/app/config/app}">
-        <div class="timo-detail-title">基础配置</div>
-        <table class="layui-table timo-detail-table">
-            <tbody>
-            <tr>
-                <th>
-                    <label class="layui-form-label required">应用 ID<i id="id_tips" class="fa fa-question-circle"></i></label>
-                </th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <label>
-                                <input class="layui-input" type="text" name="appId" placeholder="请输入应用 ID" required>
-                            </label>
-                        </div>
-                    </div>
-                </td>
-                <th>
-                    <label class="layui-form-label required">应用名</label>
-                </th>
-                <td >
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="appName" placeholder="请输入应用名" required>
-                        </div>
-                    </div>
-                </td>
-            </tr>
-            <tr>
-                <th>
-                    <label class="layui-form-label required">应用类型</label>
-                </th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <select name="appType">
-                                <option th:each="item : ${appTypes}" th:value="${item.key}">[[${item.value}]]</option>
-                            </select>
-                        </div>
-                    </div>
-                </td>
-                <th>
-                    <label class="layui-form-label required">所属环境</label>
-                </th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <select name="env">
-                                <option th:each="item : ${environments}" th:value="${item.key}">[[${item.value}]]</option>
-                            </select>
-                        </div>
-                    </div>
-                </td>
-            </tr>
-            <tr>
-                <th>
-                    <label class="layui-form-label required">应用仓库</label>
-                </th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="appRepo"  placeholder="请输入应用仓库" required>
-                        </div>
-                    </div>
-                </td>
-                <th>
-                    <label class="layui-form-label required">仓库分支</label>
-                </th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="repoBranch"  placeholder="请输入仓库分支" required>
-                        </div>
-                    </div>
-                </td>
-            </tr>
-            <tr>
-                <th>
-                    <label class="layui-form-label">应用路径<i id="path_tips" class="fa fa-question-circle"></i></label>
-                </th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="appRootPath"  placeholder="多模块项目必须填写" required>
-                        </div>
-                    </div>
-                </td>
-                <th>
-                    <label class="layui-form-label">监听端口<i id="port_tips" class="fa fa-question-circle"></i></label>
-                </th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="bindPorts" placeholder="没有监听端口则不填">
-                        </div>
-                    </div>
-                </td>
-            </tr>
-            </tbody>
-        </table>
-        <div class="timo-detail-title">构建配置</div>
-        <table class="layui-table timo-detail-table">
-            <tbody>
-            <tr>
-                <th>
-                    <label class="layui-form-label required">仓库认证</label>
-                </th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <select name="repoAuthConfig">
-                                <option th:each="item : ${repoAuths}" th:value="${item.key}" th:selected="${app?.repoAuthConfig?.name} eq ${item.key}">[[${item.value}]]</option>
-                            </select>
-                        </div>
-                    </div>
-                </td>
-                <th>
-                    <label class="layui-form-label required">编译工具</label>
-                </th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <select name="compilerConfig">
-                                <option th:each="item : ${compilers}" th:value="${item.key}" th:selected="${app?.compilerConfig?.name} eq ${item.key}">[[${item.value}]]</option>
-                            </select>
-                        </div>
-                    </div>
-                </td>
-            </tr>
-            <tr>
-                <th>
-                    <label class="layui-form-label required">打包工具</label>
-                </th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <select name="packerConfig">
-                                <option th:each="item : ${packers}" th:value="${item.key}" th:selected="${app?.packerConfig?.name} eq ${item.key}">[[${item.value}]]</option>
-                            </select>
-                        </div>
-                    </div>
-                </td>
-                <th>
-                    <label class="layui-form-label">Dockerfile<i id="dockerfile_tips" class="fa fa-question-circle"></i></label>
-                </th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <textarea class="layui-textarea" name="dockerfile" placeholder="打包类型是 docker 时必须填写" th:text="${app?.dockerfile}"></textarea>
-                        </div>
-                    </div>
-                </td>
-            </tr>
-            </tbody>
-        </table>
-        <div class="layui-form-item timo-finally">
-            <button class="layui-btn ajax-submit"><i class="fa fa-check-circle"></i> 保存</button>
-            <button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 关闭</button>
-        </div>
-    </form>
-</div>
-
-<script th:replace="/common/template :: script"></script>
-<script type="text/javascript" th:src="@{/js/plugins/jquery-2.2.4.min.js}"></script>
-<script type="text/javascript">
-    $(function () {
-        $("#id_tips").hover(function () {
-            var tips = layer.tips('应用 ID 由用户自己定义, 且保证全局唯一<br />', '#id_tips',{
-                tips: [1, '#555555']
-            });
-            sleep(1000);
-            layer.close(tips);
-        })
-
-        $("#path_tips").hover(function () {
-            var tips = layer.tips('多模块项目必须设置当前模块在项目中的相对路径<br/>', '#path_tips',{
-                tips: [1, '#555555']
-            });
-            sleep(1000);
-            layer.close(tips);
-        })
-
-        $("#port_tips").hover(function () {
-            var tips = layer.tips('应用监听的端口, 多个端口使用英文 , 分隔, 没有端口则不需要填写<br />', '#port_tips',{
-                tips: [1, '#555555']
-            });
-            sleep(1000);
-            layer.close(tips);
-        })
-
-        $("#dockerfile_tips").hover(function () {
-            var tips = layer.tips('采用 docker 打包的应用必须填写 dockerfile 的内容<br />', '#dockerfile_tips',{
-                tips: [1, '#555555']
-            });
-            sleep(1000);
-            layer.close(tips);
-        })
-    })
-</script>
-</body>
-</html>

+ 2 - 2
oss-console/src/main/resources/templates/usernode/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>
@@ -23,7 +23,7 @@
             </tr>
             <tr>
                 <th>
-                    <label class="layui-form-label required">简介</label>
+                    <label class="layui-form-label">简介</label>
                 </th>
                 <td>
                     <div class="layui-form-item">