Browse Source

应用配置页面显示每个应用已配置的 AppDeployConfig 数量

reghao 1 năm trước cách đây
mục cha
commit
80bbb62d7a

+ 2 - 1
web/src/main/java/cn/reghao/bnt/web/devops/app/controller/page/config/AppConfigPageController.java

@@ -6,6 +6,7 @@ import cn.reghao.bnt.web.devops.app.db.repository.config.build.PackerConfigRepos
 import cn.reghao.bnt.web.devops.app.db.repository.config.build.RepoAuthConfigRepository;
 import cn.reghao.bnt.web.devops.app.model.constant.AppType;
 import cn.reghao.bnt.web.devops.app.model.po.config.AppConfig;
+import cn.reghao.bnt.web.devops.app.model.vo.AppConfigVO;
 import cn.reghao.bnt.web.devops.app.model.vo.KeyValue;
 import cn.reghao.bnt.web.devops.build.model.constant.EnvType;
 import cn.reghao.bnt.web.util.DefaultSetting;
@@ -76,7 +77,7 @@ public class AppConfigPageController {
         }
 
         PageRequest pageRequest = PageSort.pageRequest();
-        Page<AppConfig> appPage = appConfigQuery.findByEnvAndType(env, type, pageRequest);
+        Page<AppConfigVO> appPage = appConfigQuery.findByEnvAndType(env, type, pageRequest);
 
         model.addAttribute("env", env);
         model.addAttribute("type", type);

+ 2 - 1
web/src/main/java/cn/reghao/bnt/web/devops/app/db/query/AppConfigQuery.java

@@ -4,6 +4,7 @@ import cn.reghao.bnt.web.devops.app.model.po.config.AppConfig;
 import cn.reghao.bnt.web.devops.app.model.po.config.build.CompilerConfig;
 import cn.reghao.bnt.web.devops.app.model.po.config.build.PackerConfig;
 import cn.reghao.bnt.web.devops.app.model.po.config.build.RepoAuthConfig;
+import cn.reghao.bnt.web.devops.app.model.vo.AppConfigVO;
 import cn.reghao.jutil.jdk.db.BaseQuery;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -20,7 +21,7 @@ public interface AppConfigQuery extends BaseQuery<AppConfig> {
     AppConfig findByRepoAndBranch(String repo, String branch);
     AppConfig findByAppId(String appId);
     Page<AppConfig> findByEnv(String env, Pageable pageable);
-    Page<AppConfig> findByEnvAndType(String env, String type, Pageable pageable);
+    Page<AppConfigVO> findByEnvAndType(String env, String type, Pageable pageable);
     List<AppConfig> findAllByRepoAuthConfig(RepoAuthConfig repoAuthConfig);
     List<AppConfig> findAllByCompilerConfig(CompilerConfig compilerConfig);
     List<AppConfig> findAllByPackerConfig(PackerConfig packerConfig);

+ 17 - 3
web/src/main/java/cn/reghao/bnt/web/devops/app/db/query/impl/AppConfigQueryImpl.java

@@ -2,11 +2,14 @@ package cn.reghao.bnt.web.devops.app.db.query.impl;
 
 import cn.reghao.bnt.web.devops.app.db.query.AppConfigQuery;
 import cn.reghao.bnt.web.devops.app.db.repository.config.AppConfigRepository;
+import cn.reghao.bnt.web.devops.app.db.repository.config.AppDeployConfigRepository;
 import cn.reghao.bnt.web.devops.app.model.po.config.AppConfig;
 import cn.reghao.bnt.web.devops.app.model.po.config.build.CompilerConfig;
 import cn.reghao.bnt.web.devops.app.model.po.config.build.PackerConfig;
 import cn.reghao.bnt.web.devops.app.model.po.config.build.RepoAuthConfig;
+import cn.reghao.bnt.web.devops.app.model.vo.AppConfigVO;
 import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
@@ -15,6 +18,7 @@ import javax.persistence.criteria.Predicate;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author reghao
@@ -23,9 +27,11 @@ import java.util.Map;
 @Service
 public class AppConfigQueryImpl implements AppConfigQuery {
     private final AppConfigRepository appRepository;
+    private AppDeployConfigRepository deployConfigRepository;
 
-    public AppConfigQueryImpl(AppConfigRepository appRepository) {
+    public AppConfigQueryImpl(AppConfigRepository appRepository, AppDeployConfigRepository deployConfigRepository) {
         this.appRepository = appRepository;
+        this.deployConfigRepository = deployConfigRepository;
     }
 
     @Override
@@ -65,8 +71,16 @@ public class AppConfigQueryImpl implements AppConfigQuery {
     }
 
     @Override
-    public Page<AppConfig> findByEnvAndType(String env, String type, Pageable pageable) {
-        return appRepository.findByEnvAndAppType(env, type, pageable);
+    public Page<AppConfigVO> findByEnvAndType(String env, String type, Pageable pageable) {
+        Page<AppConfig> page = appRepository.findByEnvAndAppType(env, type, pageable);
+
+        List<AppConfigVO> list = page.stream()
+                .map(appConfig -> {
+                    int total = deployConfigRepository.countByAppConfig(appConfig);
+                    return new AppConfigVO(appConfig, total);
+                })
+                .collect(Collectors.toList());
+        return new PageImpl<>(list, page.getPageable(), page.getTotalElements());
     }
 
     //@Cacheable({"appId"})

+ 1 - 0
web/src/main/java/cn/reghao/bnt/web/devops/app/db/repository/config/AppDeployConfigRepository.java

@@ -18,6 +18,7 @@ public interface AppDeployConfigRepository
         extends JpaRepository<AppDeployConfig, Integer>, JpaSpecificationExecutor<AppDeployConfig> {
     void deleteByMachineHost(MachineHost machineHost);
 
+    int countByAppConfig(AppConfig appConfig);
     List<AppDeployConfig> findByMachineHost(MachineHost machineHost);
     List<AppDeployConfig> findByAppConfig(AppConfig appConfig);
 }

+ 36 - 0
web/src/main/java/cn/reghao/bnt/web/devops/app/model/vo/AppConfigVO.java

@@ -0,0 +1,36 @@
+package cn.reghao.bnt.web.devops.app.model.vo;
+
+import cn.reghao.bnt.web.devops.app.model.po.config.AppConfig;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author reghao
+ * @date 2024-07-28 18:04:55
+ */
+@NoArgsConstructor
+@Getter
+public class AppConfigVO {
+    private int id;
+    private String appId;
+    private String appName;
+    private String appType;
+    private String env;
+    private String appRepo;
+    private String repoBranch;
+    private boolean enabled;
+    private String projDirname;
+    private String appRootPath;
+    private String bindPorts;
+    private int total;
+
+    public AppConfigVO(AppConfig appConfig, int total) {
+        this.id = appConfig.getId();
+        this.appId = appConfig.getAppId();
+        this.appName = appConfig.getAppName();
+        this.appType = appConfig.getAppType();
+        this.repoBranch = appConfig.getRepoBranch();
+        this.bindPorts = appConfig.getBindPorts();
+        this.total = total;
+    }
+}

+ 2 - 1
web/src/main/resources/templates/devops/app/config/app/index.html

@@ -83,8 +83,9 @@
                     <td th:text="${item.appType}">应用类型</td>
                     <td th:text="${item.bindPorts?: ''}">监听端口</td>
                     <td>
+                        <span style="color: red" th:text="${item.total}"></span>
                         <a class="open-popup" data-title="部署配置" th:attr="data-url=@{'/app/config/app/deploy/'+${item.appId}}"
-                           data-size="max" href="#">置</a>
+                           data-size="max" href="#">置</a>
                     </td>
                     <td>
                         <a class="open-popup" data-title="拷贝应用" th:attr="data-url=@{'/app/config/app/copy/'+${item.appId}}"