Explorar o código

修改 AppDeploying 和 AppRunning 数据模型和数据操作接口

reghao %!s(int64=4) %!d(string=hai) anos
pai
achega
9edf8bfff4
Modificáronse 25 ficheiros con 288 adicións e 357 borrados
  1. 22 14
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/page/config/AppConfigPageController.java
  2. 11 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/crud/config/AppDeployConfigCrud.java
  3. 42 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/crud/config/impl/AppDeployConfigCrudImpl.java
  4. 18 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/query/config/AppDeployConfigQuery.java
  5. 41 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/query/config/impl/AppDeployConfigQueryImpl.java
  6. 14 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/repository/config/AppDeployConfigRepository.java
  7. 0 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/dto/NewApp.java
  8. 0 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/AppBuilding.java
  9. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/AppDeploying.java
  10. 5 7
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/AppProperty.java
  11. 6 6
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/AppRunning.java
  12. 3 11
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/AppConfig.java
  13. 11 7
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/AppDeployConfig.java
  14. 0 6
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/LogConfig.java
  15. 0 21
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/RunningConfig.java
  16. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/vo/AppBuildingVO.java
  17. 9 10
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/bd/AppDeployer.java
  18. 2 5
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/config/impl/AppConfigServiceImpl.java
  19. 8 7
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/impl/BuildDeployConfigServiceImpl.java
  20. 7 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/page/BuildDeployPageImpl.java
  21. 26 66
      dmaster/src/main/resources/templates/app/config/app/add.html
  22. 0 159
      dmaster/src/main/resources/templates/app/config/app/deploy.html
  23. 51 0
      dmaster/src/main/resources/templates/app/config/app/deployconfig.html
  24. 7 25
      dmaster/src/main/resources/templates/app/config/app/detail.html
  25. 2 2
      dmaster/src/main/resources/templates/app/config/app/index.html

+ 22 - 14
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/page/config/AppConfigPageController.java

@@ -1,16 +1,13 @@
 package cn.reghao.autodop.dmaster.app.controller.page.config;
 
 import cn.reghao.autodop.common.msg.rpc.dto.app.PackType;
+import cn.reghao.autodop.dmaster.app.db.query.config.*;
 import cn.reghao.autodop.dmaster.app.model.constant.AppType;
 import cn.reghao.autodop.dmaster.app.model.constant.EnvList;
-import cn.reghao.autodop.dmaster.app.model.po.config.DeployConfig;
+import cn.reghao.autodop.dmaster.app.model.po.config.AppDeployConfig;
 import cn.reghao.autodop.dmaster.machine.db.query.MachineHostQuery;
 import cn.reghao.autodop.dmaster.notification.model.po.NotifyGroup;
 import cn.reghao.autodop.dmaster.notification.model.po.NotifyType;
-import cn.reghao.autodop.dmaster.app.db.query.config.AppConfigQuery;
-import cn.reghao.autodop.dmaster.app.db.query.config.CompilerConfigQuery;
-import cn.reghao.autodop.dmaster.app.db.query.config.PackerConfigQuery;
-import cn.reghao.autodop.dmaster.app.db.query.config.RepoAuthConfigQuery;
 import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
 import cn.reghao.autodop.dmaster.app.model.vo.KeyValue;
 import cn.reghao.autodop.dmaster.notification.db.repository.NotifyGroupRepository;
@@ -44,16 +41,19 @@ public class AppConfigPageController {
     private final PackerConfigQuery packerConfigQuery;
     private final MachineHostQuery hostQuery;
     private final NotifyGroupRepository receiverRepository;
+    private final AppDeployConfigQuery deployConfigQuery;
 
     public AppConfigPageController(AppConfigQuery appConfigQuery, RepoAuthConfigQuery repoAuthConfigQuery,
-                                   CompilerConfigQuery compilerConfigQuery, PackerConfigQuery packerConfigQuery, MachineHostQuery hostQuery,
-                                   NotifyGroupRepository receiverRepository) {
+                                   CompilerConfigQuery compilerConfigQuery, PackerConfigQuery packerConfigQuery,
+                                   MachineHostQuery hostQuery, NotifyGroupRepository receiverRepository,
+                                   AppDeployConfigQuery deployConfigQuery) {
         this.appConfigQuery = appConfigQuery;
         this.repoAuthConfigQuery = repoAuthConfigQuery;
         this.compilerConfigQuery = compilerConfigQuery;
         this.packerConfigQuery = packerConfigQuery;
         this.hostQuery = hostQuery;
         this.receiverRepository = receiverRepository;
+        this.deployConfigQuery = deployConfigQuery;
     }
 
     @ApiOperation(value = "应用配置页面")
@@ -186,14 +186,22 @@ public class AppConfigPageController {
 
     @ApiOperation(value = "部署配置页面")
     @GetMapping("/deploy/{id}")
-    public String deployConfigPage(@PathVariable("id") AppConfig app, Model model) {
+    public String deployConfigIndexPage(@PathVariable("id") AppConfig app, Model model) {
+        PageRequest pageRequest = PageSort.pageRequest();
+        Page<AppDeployConfig> deployConfigPage = deployConfigQuery.findByAppId(app.getAppId(), pageRequest);
+        PageList<AppDeployConfig> pageList = PageList.pageList(deployConfigPage);
+
+        model.addAttribute("page", deployConfigPage);
+        model.addAttribute("list", pageList.getList());
+        return "/app/config/app/deployconfig";
+    }
+
+    @ApiOperation(value = "部署配置页面")
+    @GetMapping("/deploy1/{id}")
+    public String deployConfigPage1(@PathVariable("id") AppConfig app, Model model) {
         int id = app.getId();
         String packType = app.getPackerConfig().getType();
-        List<DeployConfig> list = app.getDeployConfigs();
-        if (list == null) {
-            list = Collections.emptyList();
-        }
-
+        List<AppDeployConfig> list = deployConfigQuery.findByAppId(app.getAppId());
         String env = app.getEnv();
         List<KeyValue> machines = hostQuery.findByEnv(env).stream()
                 .map(machineHost -> {
@@ -207,6 +215,6 @@ public class AppConfigPageController {
         model.addAttribute("packType", packType);
         model.addAttribute("machines", machines);
         model.addAttribute("list", list);
-        return "/app/config/app/deploy";
+        return "/app/config/app/deployconfig1";
     }
 }

+ 11 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/crud/config/AppDeployConfigCrud.java

@@ -0,0 +1,11 @@
+package cn.reghao.autodop.dmaster.app.db.crud.config;
+
+import cn.reghao.autodop.dmaster.app.model.po.config.AppDeployConfig;
+import cn.reghao.jdkutil.db.BaseCrud;
+
+/**
+ * @author reghao
+ * @date 2020-11-10 21:58:00
+ */
+public interface AppDeployConfigCrud extends BaseCrud<AppDeployConfig> {
+}

+ 42 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/crud/config/impl/AppDeployConfigCrudImpl.java

@@ -0,0 +1,42 @@
+package cn.reghao.autodop.dmaster.app.db.crud.config.impl;
+
+import cn.reghao.autodop.dmaster.app.db.crud.config.AppDeployConfigCrud;
+import cn.reghao.autodop.dmaster.app.db.repository.config.AppDeployConfigRepository;
+import cn.reghao.autodop.dmaster.app.model.po.config.AppDeployConfig;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2020-11-10 21:58:00
+ */
+@Service
+public class AppDeployConfigCrudImpl implements AppDeployConfigCrud {
+    private final AppDeployConfigRepository appDeployConfigRepository;
+
+    public AppDeployConfigCrudImpl(AppDeployConfigRepository appDeployConfigRepository) {
+        this.appDeployConfigRepository = appDeployConfigRepository;
+    }
+
+    @Override
+    public AppDeployConfig save(AppDeployConfig appDeployConfig) {
+        appDeployConfigRepository.save(appDeployConfig);
+        return appDeployConfig;
+    }
+
+    @Override
+    public void saveAll(List<AppDeployConfig> list) {
+        appDeployConfigRepository.saveAll(list);
+    }
+
+    @Override
+    public void update(AppDeployConfig appDeployConfig) {
+        appDeployConfigRepository.save(appDeployConfig);
+    }
+
+    @Override
+    public void delete(AppDeployConfig appDeployConfig) {
+        appDeployConfigRepository.delete(appDeployConfig);
+    }
+}

+ 18 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/query/config/AppDeployConfigQuery.java

@@ -0,0 +1,18 @@
+package cn.reghao.autodop.dmaster.app.db.query.config;
+
+import cn.reghao.autodop.dmaster.app.model.po.config.AppDeployConfig;
+import cn.reghao.jdkutil.db.BaseQuery;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2021-06-02 15:01:18
+ */
+public interface AppDeployConfigQuery extends BaseQuery<AppDeployConfig> {
+    Page<AppDeployConfig> findByAppId(String appId, Pageable pageable);
+    List<AppDeployConfig> findByAppId(String appId);
+    AppDeployConfig findByAppIdAndMachineId(String appId, String machineId);
+}

+ 41 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/query/config/impl/AppDeployConfigQueryImpl.java

@@ -0,0 +1,41 @@
+package cn.reghao.autodop.dmaster.app.db.query.config.impl;
+
+import cn.reghao.autodop.dmaster.app.db.query.config.AppDeployConfigQuery;
+import cn.reghao.autodop.dmaster.app.db.repository.config.AppDeployConfigRepository;
+import cn.reghao.autodop.dmaster.app.model.po.config.AppDeployConfig;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2021-06-02 15:01:18
+ */
+@Service
+public class AppDeployConfigQueryImpl implements AppDeployConfigQuery {
+    private final AppDeployConfigRepository appDeployConfigRepository;
+
+    public AppDeployConfigQueryImpl(AppDeployConfigRepository appDeployConfigRepository) {
+        this.appDeployConfigRepository = appDeployConfigRepository;
+    }
+
+    @Override
+    public List<AppDeployConfig> findByAppId(String appId) {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public Page<AppDeployConfig> findByAppId(String appId, Pageable pageable) {
+        List<AppDeployConfig> list = Collections.emptyList();
+        return new PageImpl<>(list);
+    }
+
+    @Override
+    public AppDeployConfig findByAppIdAndMachineId(String appId, String machineId) {
+        return null;
+    }
+}

+ 14 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/repository/config/AppDeployConfigRepository.java

@@ -0,0 +1,14 @@
+package cn.reghao.autodop.dmaster.app.db.repository.config;
+
+import cn.reghao.autodop.dmaster.app.model.po.config.AppDeployConfig;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+/**
+ *
+ * @author reghao
+ * @date 2020-01-21 14:53:03
+ */
+public interface AppDeployConfigRepository 
+        extends JpaRepository<AppDeployConfig, Integer>, JpaSpecificationExecutor<AppDeployConfig> {
+}

+ 0 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/dto/NewApp.java

@@ -5,7 +5,6 @@ import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
 import java.io.Serializable;
-import java.util.Collections;
 
 /**
  * @author reghao
@@ -26,8 +25,6 @@ public class NewApp implements Serializable {
         from.setAppId(newId);
         from.setRepoBranch(newRepoBranch);
         from.setEnv(env);
-        from.setNotifyGroups(Collections.emptyList());
-        from.setDeployConfigs(Collections.emptyList());
 
         from.setId(null);
         from.setCreateTime(null);

+ 0 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/AppBuilding.java

@@ -2,7 +2,6 @@ package cn.reghao.autodop.dmaster.app.model.po;
 
 import cn.reghao.jdkutil.result.ResultStatus;
 import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
-import cn.reghao.autodop.dmaster.app.model.po.config.RunningConfig;
 import cn.reghao.autodop.dmaster.app.model.po.log.BuildLog;
 import cn.reghao.autodop.dmaster.app.service.bd.tools.repo.CommitInfo;
 import cn.reghao.autodop.dmaster.util.db.BaseEntity;

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/AppDeploying.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.app.model.po;
 
 import cn.reghao.autodop.common.msg.rpc.dto.app.DeployResult;
 import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
-import cn.reghao.autodop.dmaster.app.model.po.config.DeployConfig;
+import cn.reghao.autodop.dmaster.app.model.po.config.AppDeployConfig;
 import cn.reghao.autodop.dmaster.app.model.po.log.BuildLog;
 import lombok.*;
 
@@ -27,7 +27,7 @@ public class AppDeploying extends AppProperty {
     private String deployResult;
     private String deployBy;
 
-    public AppDeploying(AppConfig app, DeployConfig deployConfig) {
+    public AppDeploying(AppConfig app, AppDeployConfig deployConfig) {
         super(app, deployConfig);
     }
 

+ 5 - 7
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/AppProperty.java

@@ -1,11 +1,9 @@
 package cn.reghao.autodop.dmaster.app.model.po;
 
 import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
-import cn.reghao.autodop.dmaster.app.model.po.config.DeployConfig;
+import cn.reghao.autodop.dmaster.app.model.po.config.AppDeployConfig;
 import cn.reghao.autodop.dmaster.util.db.BaseEntity;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
+import lombok.*;
 
 import javax.persistence.MappedSuperclass;
 
@@ -17,8 +15,8 @@ import javax.persistence.MappedSuperclass;
  */
 @MappedSuperclass
 @NoArgsConstructor
-@EqualsAndHashCode(callSuper = false)
-@Data
+@Setter
+@Getter
 public class AppProperty extends BaseEntity<Integer> {
     private String appId;
     private String appName;
@@ -27,7 +25,7 @@ public class AppProperty extends BaseEntity<Integer> {
     private String machineId;
     private String machineIpv4;
 
-    public AppProperty(AppConfig app, DeployConfig deployConfig) {
+    public AppProperty(AppConfig app, AppDeployConfig deployConfig) {
         this.appId = app.getAppId();
         this.appName = app.getAppName();
         this.appType = app.getAppType();

+ 6 - 6
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/AppRunning.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.app.model.po;
 
 import cn.reghao.autodop.common.msg.rpc.dto.app.StatusResult;
 import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
-import cn.reghao.autodop.dmaster.app.model.po.config.DeployConfig;
+import cn.reghao.autodop.dmaster.app.model.po.config.AppDeployConfig;
 import cn.reghao.autodop.dmaster.app.model.po.log.BuildLog;
 import lombok.*;
 
@@ -29,16 +29,16 @@ public class AppRunning extends AppProperty {
     private Integer pid;
     private LocalDateTime lastCheck;
 
-    public AppRunning(AppConfig app, DeployConfig deployConfig) {
+    public AppRunning(AppConfig app, AppDeployConfig deployConfig) {
         super(app, deployConfig);
-        this.httpPort = app.getRunningConfig().getHttpPort();
-        this.healthCheck = app.getRunningConfig().getHealthCheck();
+        this.httpPort = app.getHttpPort();
+        this.healthCheck = app.getHealthCheck();
     }
 
     public AppRunning update(AppConfig app, String machineIpv4) {
         this.update0(app.getAppName(), machineIpv4);
-        this.httpPort = app.getRunningConfig().getHttpPort();
-        this.healthCheck = app.getRunningConfig().getHealthCheck();
+        this.httpPort = app.getHttpPort();
+        this.healthCheck = app.getHealthCheck();
         return this;
     }
 

+ 3 - 11
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/AppConfig.java

@@ -8,8 +8,6 @@ import cn.reghao.autodop.dmaster.app.model.po.config.build.RepoAuthConfig;
 import cn.reghao.autodop.dmaster.util.db.BaseEntity;
 import cn.reghao.autodop.dmaster.notification.model.po.NotifyGroup;
 import cn.reghao.autodop.dmaster.util.validator.ValidEnum;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.Setter;
 import org.hibernate.annotations.LazyCollection;
@@ -58,11 +56,13 @@ public class AppConfig extends BaseEntity<Integer> implements Cloneable {
     @NotBlank(message = "代码编译主目录不能为空白字符串")
     private String compileHome;
     private String execBinName;
+    private Integer httpPort;
+    private String healthCheck;
+
     // TODO packType 是 docker 时使用 Dockerfile
     @Lob
     @Column(columnDefinition="text")
     private String packScript;
-
     // buildConfig
     @ManyToOne(cascade = CascadeType.REFRESH)
     @JoinColumn(name = "repo_auth_config_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
@@ -77,14 +77,6 @@ public class AppConfig extends BaseEntity<Integer> implements Cloneable {
     //@Valid
     private PackerConfig packerConfig;
 
-    /* 部署配置 */
-    @ElementCollection(targetClass = DeployConfig.class)
-    @LazyCollection(LazyCollectionOption.FALSE)
-    private List<DeployConfig> deployConfigs;
-    /* 运行配置 */
-    @Embedded
-    private RunningConfig runningConfig;
-
     @Override
     public Object clone() throws CloneNotSupportedException {
         return super.clone();

+ 11 - 7
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/DeployConfig.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/AppDeployConfig.java

@@ -1,11 +1,12 @@
 package cn.reghao.autodop.dmaster.app.model.po.config;
 
+import cn.reghao.autodop.dmaster.util.db.BaseEntity;
 import lombok.Data;
+import lombok.Getter;
 import lombok.NoArgsConstructor;
+import lombok.Setter;
 
-import javax.persistence.Column;
-import javax.persistence.Embeddable;
-import javax.persistence.Lob;
+import javax.persistence.*;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
@@ -16,9 +17,12 @@ import javax.validation.constraints.NotNull;
  * @date 2020-05-13 16:59:20
  */
 @NoArgsConstructor
-@Data
-@Embeddable
-public class DeployConfig {
+@Getter
+@Setter
+@Entity
+public class AppDeployConfig extends BaseEntity<Integer> {
+    @OneToOne
+    private AppConfig appConfig;
     @NotBlank(message = "machineId 不能为空白字符串")
     private String machineId;
     @NotNull
@@ -36,7 +40,7 @@ public class DeployConfig {
     private String unpackScript;
     private String startHome;
 
-    public DeployConfig(String machineId, String machineIpv4, String packType, String startScript) {
+    public AppDeployConfig(String machineId, String machineIpv4, String packType, String startScript) {
         this.machineId = machineId;
         this.machineIpv4 = machineIpv4;
         this.packType = packType;

+ 0 - 6
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/LogConfig.java

@@ -4,18 +4,12 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import javax.persistence.Embeddable;
-
 /**
  * TODO 应用日志配置
  *
  * @author reghao
  * @date 2020-05-19 09:24:41
  */
-@NoArgsConstructor
-@AllArgsConstructor
-@Data
-@Embeddable
 public class LogConfig {
     private String type;
     private String level;

+ 0 - 21
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/RunningConfig.java

@@ -1,21 +0,0 @@
-package cn.reghao.autodop.dmaster.app.model.po.config;
-
-import lombok.Data;
-
-import javax.persistence.Embeddable;
-
-/**
- * 应用运行时配置
- *
- * @author reghao
- * @date 2021-02-05 23:30:27
- */
-@Data
-@Embeddable
-public class RunningConfig {
-    private Integer httpPort;
-    private String healthCheck;
-    /*@ElementCollection(targetClass = LogConfig.class)
-    @LazyCollection(LazyCollectionOption.FALSE)
-    private List<LogConfig> logConfigs;*/
-}

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/vo/AppBuildingVO.java

@@ -33,7 +33,7 @@ public class AppBuildingVO {
         this.appType = appConfig.getAppType();
         this.env = appConfig.getEnv();
         this.repoBranch = appConfig.getRepoBranch();
-        this.httpPort = appConfig.getRunningConfig() != null ? appConfig.getRunningConfig().getHttpPort() : 0;
+        this.httpPort = appConfig.getHttpPort();
 
         this.buildLogId = appBuilding.getBuildLogId();
         this.commitId = appBuilding.getCommitId();

+ 9 - 10
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/bd/AppDeployer.java

@@ -3,14 +3,13 @@ package cn.reghao.autodop.dmaster.app.service.bd;
 import cn.reghao.autodop.common.machine.Machine;
 import cn.reghao.autodop.common.msg.Message;
 import cn.reghao.autodop.common.msg.MsgQueue;
-import cn.reghao.autodop.common.msg.MsgType;
 import cn.reghao.autodop.common.msg.rpc.RpcMsg;
 import cn.reghao.autodop.common.msg.rpc.constant.AppRpcClazz;
 import cn.reghao.autodop.common.msg.rpc.dto.app.DeployParam;
 import cn.reghao.autodop.common.mqtt.DefaultMqttClient;
+import cn.reghao.autodop.dmaster.app.db.query.config.AppDeployConfigQuery;
+import cn.reghao.autodop.dmaster.app.model.po.config.AppDeployConfig;
 import cn.reghao.jdkutil.serializer.JsonConverter;
-import cn.reghao.autodop.dmaster.app.db.query.config.AppConfigQuery;
-import cn.reghao.autodop.dmaster.app.model.po.config.DeployConfig;
 import cn.reghao.autodop.dmaster.app.model.po.log.BuildLog;
 import lombok.extern.slf4j.Slf4j;
 import org.eclipse.paho.client.mqttv3.MqttException;
@@ -27,17 +26,17 @@ import java.util.*;
 @Slf4j
 @Service
 public class AppDeployer {
-    private DefaultMqttClient mqttClient;
-    private AppConfigQuery appConfigQuery;
+    private final DefaultMqttClient mqttClient;
+    private final AppDeployConfigQuery deployConfigQuery;
 
-    public AppDeployer(DefaultMqttClient mqttClient, AppConfigQuery appConfigQuery) {
+    public AppDeployer(DefaultMqttClient mqttClient, AppDeployConfigQuery deployConfigQuery) {
         this.mqttClient = mqttClient;
-        this.appConfigQuery = appConfigQuery;
+        this.deployConfigQuery = deployConfigQuery;
     }
 
     public void deploy(BuildLog buildLog) throws MqttException {
-        List<DeployConfig> deployConfigs = appConfigQuery.findByAppId(buildLog.getAppId()).getDeployConfigs();
-        for (DeployConfig deployConfig : deployConfigs) {
+        List<AppDeployConfig> deployConfigs = deployConfigQuery.findByAppId(buildLog.getAppId());
+        for (AppDeployConfig deployConfig : deployConfigs) {
             DeployParam deployParam = new DeployParam();
             deployParam.setBuildLogId(buildLog.getId());
             deployParam.setAppId(buildLog.getAppId());
@@ -65,6 +64,6 @@ public class AppDeployer {
      * @return
      * @date 2020-03-13 下午1:00
      */
-    public void deploy(BuildLog buildLog, List<DeployConfig> deployConfigs) {
+    public void deploy(BuildLog buildLog, List<AppDeployConfig> deployConfigs) {
     }
 }

+ 2 - 5
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/config/impl/AppConfigServiceImpl.java

@@ -6,12 +6,9 @@ import cn.reghao.autodop.dmaster.app.db.query.AppDeployingQuery;
 import cn.reghao.autodop.dmaster.app.db.query.config.AppConfigQuery;
 import cn.reghao.autodop.dmaster.app.db.repository.AppRunningRepository;
 import cn.reghao.autodop.dmaster.app.model.dto.DeployConfigDto;
-import cn.reghao.autodop.dmaster.app.model.po.AppDeploying;
 import cn.reghao.autodop.dmaster.app.model.po.AppRunning;
 import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
-import cn.reghao.autodop.dmaster.app.model.po.config.DeployConfig;
 import cn.reghao.autodop.dmaster.app.model.dto.NewApp;
-import cn.reghao.autodop.dmaster.app.model.po.config.build.PackerConfig;
 import cn.reghao.autodop.dmaster.app.service.impl.BuildDeployConfigServiceImpl;
 import cn.reghao.autodop.dmaster.app.service.config.AppConfigService;
 import cn.reghao.autodop.dmaster.machine.db.query.MachineHostQuery;
@@ -82,7 +79,7 @@ public class AppConfigServiceImpl implements AppConfigService {
             return Result.fail(String.format("id %s 不存在", id));
         }
 
-        PackerConfig packerConfig = app.getPackerConfig();
+        /*PackerConfig packerConfig = app.getPackerConfig();
         String packType = packerConfig.getType();
         List<DeployConfig> list = deployConfigDtos.stream()
                 .map(deployConfigDto -> {
@@ -98,7 +95,7 @@ public class AppConfigServiceImpl implements AppConfigService {
 
         List<AppDeploying> appDeployings = list.stream()
                 .map(deployConfig -> new AppDeploying(app, deployConfig)).collect(Collectors.toList());
-        appDeployingCrud.saveAll(appDeployings);
+        appDeployingCrud.saveAll(appDeployings);*/
         return Result.result(ResultStatus.SUCCESS);
     }
 

+ 8 - 7
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/impl/BuildDeployConfigServiceImpl.java

@@ -3,6 +3,7 @@ package cn.reghao.autodop.dmaster.app.service.impl;
 import cn.reghao.autodop.dmaster.app.db.crud.AppBuildingCrud;
 import cn.reghao.autodop.dmaster.app.db.query.AppBuildingQuery;
 import cn.reghao.autodop.dmaster.app.db.query.config.AppConfigQuery;
+import cn.reghao.autodop.dmaster.app.db.query.config.AppDeployConfigQuery;
 import cn.reghao.autodop.dmaster.app.model.po.AppBuilding;
 import cn.reghao.autodop.dmaster.app.model.po.AppDeploying;
 import cn.reghao.autodop.dmaster.app.model.po.AppRunning;
@@ -27,17 +28,17 @@ public class BuildDeployConfigServiceImpl implements BuildDeployConfigService {
     private AppBuildingCrud appBuildingCrud;
     private AppDeployingRepository deployingRepository;
     private AppRunningRepository runningRepository;
+    private AppDeployConfigQuery deployConfigQuery;
 
-    public BuildDeployConfigServiceImpl(AppConfigQuery appConfigQuery,
-                                        AppBuildingQuery appBuildingQuery,
-                                        AppBuildingCrud appBuildingCrud,
-                                        AppDeployingRepository deployingRepository,
-                                        AppRunningRepository runningRepository) {
+    public BuildDeployConfigServiceImpl(AppConfigQuery appConfigQuery, AppBuildingQuery appBuildingQuery,
+                                        AppBuildingCrud appBuildingCrud, AppDeployingRepository deployingRepository,
+                                        AppRunningRepository runningRepository, AppDeployConfigQuery deployConfigQuery) {
         this.appConfigQuery = appConfigQuery;
         this.deployingRepository = deployingRepository;
         this.runningRepository = runningRepository;
         this.appBuildingQuery = appBuildingQuery;
         this.appBuildingCrud = appBuildingCrud;
+        this.deployConfigQuery = deployConfigQuery;
     }
 
     /**
@@ -68,7 +69,7 @@ public class BuildDeployConfigServiceImpl implements BuildDeployConfigService {
     @Override
     public void refreshAppDeploying(AppConfig app) {
         String appId = app.getAppId();
-        List<AppDeploying> list = app.getDeployConfigs().stream()
+        List<AppDeploying> list = deployConfigQuery.findByAppId(appId).stream()
                 .map(deployConfig -> {
                     String machineId = deployConfig.getMachineId();
                     AppDeploying appDeploying = deployingRepository.findByAppIdAndMachineId(appId, machineId);
@@ -93,7 +94,7 @@ public class BuildDeployConfigServiceImpl implements BuildDeployConfigService {
     @Override
     public void refreshAppRunning(AppConfig app) {
         String appId = app.getAppId();
-        List<AppRunning> list = app.getDeployConfigs().stream()
+        List<AppRunning> list = deployConfigQuery.findByAppId(appId).stream()
                 .map(deployConfig -> {
                     String machineId = deployConfig.getMachineId();
                     AppRunning appRunning = runningRepository.findByAppIdAndMachineId(appId, machineId);

+ 7 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/page/BuildDeployPageImpl.java

@@ -3,10 +3,11 @@ package cn.reghao.autodop.dmaster.app.service.page;
 import cn.reghao.autodop.dmaster.app.db.query.AppBuildingQuery;
 import cn.reghao.autodop.dmaster.app.db.query.AppDeployingQuery;
 import cn.reghao.autodop.dmaster.app.db.query.config.AppConfigQuery;
+import cn.reghao.autodop.dmaster.app.db.query.config.AppDeployConfigQuery;
 import cn.reghao.autodop.dmaster.app.model.constant.AppType;
 import cn.reghao.autodop.dmaster.app.model.po.AppDeploying;
 import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
-import cn.reghao.autodop.dmaster.app.model.po.config.DeployConfig;
+import cn.reghao.autodop.dmaster.app.model.po.config.AppDeployConfig;
 import cn.reghao.autodop.dmaster.app.model.vo.AppBuildingVO;
 import cn.reghao.autodop.dmaster.app.model.vo.AppDeployingVO;
 import cn.reghao.autodop.dmaster.rbac.UserContext;
@@ -27,12 +28,14 @@ public class BuildDeployPageImpl implements BuildDeployPage {
     private final AppConfigQuery appConfigQuery;
     private final AppBuildingQuery buildingQuery;
     private final AppDeployingQuery deployingQuery;
+    private final AppDeployConfigQuery deployConfigQuery;
 
     public BuildDeployPageImpl(AppConfigQuery appConfigQuery, AppBuildingQuery buildingQuery,
-                               AppDeployingQuery deployingQuery) {
+                               AppDeployingQuery deployingQuery, AppDeployConfigQuery deployConfigQuery) {
         this.appConfigQuery = appConfigQuery;
         this.buildingQuery = buildingQuery;
         this.deployingQuery = deployingQuery;
+        this.deployConfigQuery = deployConfigQuery;
     }
 
     @Override
@@ -73,10 +76,10 @@ public class BuildDeployPageImpl implements BuildDeployPage {
     @Override
     public List<AppDeployingVO> deployStatus(String appId) {
         AppConfig app = appConfigQuery.findByIsDeleteFalseAndAppId(appId);
-        List<DeployConfig> deployConfigs = app.getDeployConfigs();
+        List<AppDeployConfig> deployConfigs = deployConfigQuery.findByAppId(appId);
 
         List<AppDeployingVO> list = new ArrayList<>();
-        for (DeployConfig deployConfig : deployConfigs) {
+        for (AppDeployConfig deployConfig : deployConfigs) {
             Map<String, String> queryMap = new HashMap<>();
             queryMap.put("appId", appId);
             queryMap.put("machineId", deployConfig.getMachineId());

+ 26 - 66
dmaster/src/main/resources/templates/app/config/app/add.html

@@ -31,6 +31,14 @@
                         </div>
                     </div>
                 </td>
+                <th>应用描述</th>
+                <td>
+                    <div class="layui-form-item">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="description"  placeholder="请输入应用描述" required th:value="${app?.description}">
+                        </div>
+                    </div>
+                </td>
             </tr>
             <tr>
                 <th>所属环境</th>
@@ -53,14 +61,6 @@
                         </div>
                     </div>
                 </td>
-                <th>应用描述</th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="description"  placeholder="请输入应用描述" required th:value="${app?.description}">
-                        </div>
-                    </div>
-                </td>
             </tr>
             <tr>
                 <th>应用仓库</th>
@@ -81,6 +81,24 @@
                 </td>
             </tr>
             </tbody>
+            <tr>
+                <th>HTTP 端口</th>
+                <td>
+                    <div class="layui-form-item">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="httpPort" placeholder="请输入应用的 HTTP 端口" th:value="${app?.httpPort}">
+                        </div>
+                    </div>
+                </td>
+                <th>健康检查地址</th>
+                <td >
+                    <div class="layui-form-item">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="healthCheck" placeholder="请输入健康检查 URI" required th:value="${app?.healthCheck}">
+                        </div>
+                    </div>
+                </td>
+            </tr>
         </table>
         <div class="timo-detail-title">构建配置</div>
         <table class="layui-table timo-detail-table">
@@ -156,64 +174,6 @@
             </tr>
             </tbody>
         </table>
-        <div class="timo-detail-title">运行配置</div>
-        <table class="layui-table timo-detail-table">
-            <tbody>
-            <tr>
-                <th>HTTP 端口</th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="runningConfig.httpPort" placeholder="请输入应用的 HTTP 端口" th:value="${app?.runningConfig?.httpPort}">
-                        </div>
-                    </div>
-                </td>
-                <th>健康检查地址</th>
-                <td >
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="runningConfig.healthCheck" placeholder="请输入健康检查 URI" required th:value="${app?.runningConfig?.healthCheck}">
-                        </div>
-                    </div>
-                </td>
-            </tr>
-            <!-- TODO 应用日志 -->
-            <!--<tr>
-                <th>日志类型</th>
-                <td >
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="runningConfig.healthCheck" placeholder="请选择日志类型" required th:value="${app?.runningConfig?.healthCheck}">
-                        </div>
-                    </div>
-                </td>
-                <th>日志级别</th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="runningConfig.httpPort" placeholder="请选择日志级别" th:value="${app?.runningConfig?.httpPort}">
-                        </div>
-                    </div>
-                </td>
-                <th>日志目录或文件路径</th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="runningConfig.httpPort" placeholder="日志目录或文件路径" th:value="${app?.runningConfig?.httpPort}">
-                        </div>
-                    </div>
-                </td>
-                <th>是否为目录</th>
-                <td >
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="runningConfig.healthCheck" placeholder="是否为目录" required th:value="${app?.runningConfig?.healthCheck}">
-                        </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>

+ 0 - 159
dmaster/src/main/resources/templates/app/config/app/deploy.html

@@ -1,159 +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/deploy}">
-        <input type="hidden" name="id" th:value="${id}"/>
-        <table class="layui-table timo-detail-table" id="deployConfigTable">
-            <tbody>
-            <span th:if="${not #lists.isEmpty(list)}">
-                    <tr th:each="deployConfig,stat:${list}">
-                    <th>机器地址</th>
-                    <td>
-                        <div class="layui-form-item">
-                            <div class="layui-input-inline">
-                                <select th:attr="name=@{'deployConfigs[' + ${stat.index} + '].machineId'}">
-                                    <option th:each="item : ${machines}" th:value="${item.key}" th:selected="${deployConfig.machineId} eq ${item.key}">[[${item.value}]]</option>
-                                </select>
-                            </div>
-                        </div>
-                    </td>
-                    <th>启动脚本</th>
-                    <td>
-                        <div class="layui-form-item">
-                            <div class="layui-input-inline">
-                                <textarea class="layui-textarea" th:attr="name=@{'deployConfigs[' + ${stat.index} + '].startScript'}" placeholder="请输入启动脚本" required th:text="${deployConfig?.startScript}"></textarea>
-                            </div>
-                        </div>
-                    </td>
-                    <!--<th>启动目录</th>
-                    <td>
-                        <div class="layui-form-item">
-                            <div class="layui-input-inline">
-                                <input class="layui-input" type="text" th:attr="name=@{'deployConfigs[' + ${stat.index} + '].startHome'}" placeholder="请输入启动目录(可选)" required th:value="${deployConfig?.startHome}">
-                            </div>
-                        </div>
-                    </td>-->
-                    <td>
-                        <div>
-                            <a class="layui-btn layui-btn-xs addDeployConfig">添加</a>
-                            <a class="layui-btn layui-btn-danger layui-btn-xs delDeployConfig">删除</a>
-                        </div>
-                    </td>
-                    </tr>
-                </span>
-            <span th:if="${#lists.isEmpty(list)}">
-                    <tr>
-                    <th>机器地址</th>
-                    <td>
-                        <div class="layui-form-item">
-                            <div class="layui-input-inline">
-                                <select name="deployConfigs[0].machineId">
-                                    <option th:each="item : ${machines}" th:value="${item.key}">[[${item.value}]]</option>
-                                </select>
-                            </div>
-                        </div>
-                    </td>
-                    <th>启动脚本</th>
-                    <td>
-                        <div class="layui-form-item">
-                            <div class="layui-input-inline">
-                                <textarea class="layui-textarea" name="deployConfigs[0].startScript" placeholder="请输入启动脚本" required></textarea>
-                            </div>
-                        </div>
-                    </td>
-                    <!--<th>启动目录</th>
-                    <td>
-                        <div class="layui-form-item">
-                            <div class="layui-input-inline">
-                                <input class="layui-input" type="text" name="deployConfigs[0].startHome"  placeholder="请输入启动目录" required>
-                            </div>
-                        </div>
-                    </td>-->
-                    <td>
-                        <a class="layui-btn layui-btn-xs addDeployConfig">添加</a>
-                        <a class="layui-btn layui-btn-danger layui-btn-xs delDeployConfig">删除</a>
-                    </td>
-                    </tr>
-                </span>
-            </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" th:inline="javascript">
-    var machineList = [[${machines}]]
-    var deployConfigSize = $('#deployConfigTable tbody tr').length
-    // 在表格末尾添加一行
-    $('body').on('click', '.addDeployConfig', function() {
-        console.log('在表格末尾添加一行')
-        var selectMachineHtml = '<select name="deployConfigs[' + deployConfigSize + '].machineId">\n'
-        for (let i in machineList) {
-            selectMachineHtml += '<option value="' + machineList[i].key + '">' + machineList[i].value + '</option>\n'
-        }
-        selectMachineHtml += '</select>'
-
-        // 需要添加的 html
-        var html =
-            '<tr>\n' +
-            '                <th>机器地址</th>\n' +
-            '                <td>\n' +
-            '                    <div class="layui-form-item">\n' + selectMachineHtml +
-            '                        </div>\n' +
-            '                    </div>\n' +
-            '                </td>\n' +
-            '                <th>启动脚本</th>\n' +
-            '                <td>\n' +
-            '                    <div class="layui-form-item">\n' +
-            '                        <div class="layui-input-inline">\n' +
-            '                            <textarea class="layui-textarea" name="deployConfigs[' + deployConfigSize + '].startScript" placeholder="请输入启动脚本" required></textarea>\n' +
-            '                        </div>\n' +
-            '                    </div>\n' +
-            '                </td>\n' +
-/*            '                <th>启动目录</th>\n' +
-            '                <td>\n' +
-            '                    <div class="layui-form-item">\n' +
-            '                        <div class="layui-input-inline">\n' +
-            '                            <input class="layui-input" type="text" name="deployConfigs[' + deployConfigSize + '].startHome"  placeholder="请输入启动目录" required>\n' +
-            '                        </div>\n' +
-            '                    </div>\n' +
-            '                </td>\n' +*/
-            '                <td>\n' +
-            '                    <a class="layui-btn layui-btn-xs addDeployConfig">添加</a>\n' +
-            '                    <a class="layui-btn layui-btn-danger layui-btn-xs delDeployConfig">删除</a>\n' +
-            '                </td>\n' +
-            '                </tr>';
-
-        // 添加到表格最后
-        $(html).appendTo($('#deployConfigTable tbody:last'));
-        layui.use(['form'], function () {
-            var form = layui.form;
-            // 因为有select元素,所有添加后要重新渲染一次
-            form.render();
-        });
-        deployConfigSize++;
-    });
-
-    // 删除表格末尾的行
-    $('body').on('click', '.delDeployConfig', function() {
-        if ($('#deployConfigTable tbody tr').length === 1) {
-            layer.msg('只有一条不允许删除', {
-                time : 1000
-            });
-        } else {
-            console.log('删除表格末尾的行')
-            // 删除当前按钮所在的tr
-            $(this).closest('tr').remove();
-            deployConfigSize--;
-        }
-    });
-</script>
-</body>
-</html>

+ 51 - 0
dmaster/src/main/resources/templates/app/config/app/deployconfig.html

@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org">
+<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})"></head>
+
+<body class="timo-layout-page">
+<div class="layui-card">
+    <div class="layui-card-body">
+        <div class="layui-row timo-card-screen put-row">
+            <div class="pull-right screen-btn-group">
+                <div class="btn-group-right">
+                    <button class="layui-btn open-popup" data-title="添加配置" th:attr="data-url=@{/app/config/app/add}"
+                            data-size="1200,500">
+                        <i class="fa fa-plus"></i> 添加
+                    </button>
+                </div>
+            </div>
+        </div>
+        <div class="timo-table-wrap">
+            <table class="layui-table timo-table">
+                <thead>
+                <tr>
+                    <th class="sortable" data-field="machineIpv4">机器地址</th>
+                    <th class="sortable" data-field="packType">打包类型</th>
+                    <th class="sortable" data-field="startScript">启动脚本</th>
+                    <th class="sortable" data-field="unpackScript">解包脚本</th>
+                    <th class="sortable" data-field="startHome">启动目录</th>
+                    <th>操作</th>
+                </tr>
+                </thead>
+                <tbody>
+                <tr th:each="item:${list}">
+                    <td th:text="${item.machineIpv4}">机器地址</td>
+                    <td th:text="${item.packType}">打包类型</td>
+                    <td th:text="${item.startScript}">启动脚本</td>
+                    <td th:text="${item.unpackScript}">解包脚本</td>
+                    <td th:text="${item.startHome}">启动目录</td>
+                    <td>
+                        <a class="open-popup" data-title="修改部署配置" th:attr="data-url=@{'/app/bd/deploy/'+${item.appId}}"
+                           data-size="1000,500" href="#">编辑</a>
+                        <a class="ajax-post" th:href="@{'/api/app/bd/build?appId='+${item.appId}}">删除</a>
+                    </td>
+                </tr>
+                </tbody>
+            </table>
+        </div>
+        <div th:replace="/common/fragment :: page"></div>
+    </div>
+</div>
+<script th:replace="/common/template :: script"></script>
+</body>
+</html>

+ 7 - 25
dmaster/src/main/resources/templates/app/config/app/detail.html

@@ -26,18 +26,11 @@
                 <th>仓库分支</th>
                 <td th:text="${app.repoBranch}"></td>
             </tr>
-            </tbody>
-        </table>
-        <div class="timo-detail-title">通知配置</div>
-        <table class="layui-table timo-detail-table">
-            <tbody>
-            <tr th:each="item:${app.notifyGroups}">
-                <th>通知账户</th>
-                <td th:text="${item.notifyAccountId}"></td>
-                <th>通知类型</th>
-                <td th:text="${item.notifyType}"></td>
-                <th>通知组</th>
-                <td th:text="${item.groupId}"></td>
+            <tr>
+                <th>HTTP 端口</th>
+                <td th:text="${app.httpPort}"></td>
+                <th>健康检查</th>
+                <td th:text="${app.healthCheck}"></td>
             </tr>
             </tbody>
         </table>
@@ -85,7 +78,7 @@
             </tbody>
         </table>
         <div class="timo-detail-title">部署配置</div>
-        <table class="layui-table timo-detail-table">
+        <!--<table class="layui-table timo-detail-table">
             <tbody>
             <tr th:each="item:${app.deployConfigs}">
                 <th>机器 ID</th>
@@ -100,18 +93,7 @@
                 <td th:if="${item?.packType} != 'docker'" th:text="${item.startHome}"></td>
             </tr>
             </tbody>
-        </table>
-        <div class="timo-detail-title">运行配置</div>
-        <table class="layui-table timo-detail-table">
-            <tbody>
-            <tr>
-                <th>HTTP 端口</th>
-                <td th:text="${app.runningConfig?.httpPort}"></td>
-                <th>健康检查</th>
-                <td th:text="${app.runningConfig?.healthCheck}"></td>
-            </tr>
-            </tbody>
-        </table>
+        </table>-->
     </div>
 <script th:replace="/common/template :: script"></script>
 </body>

+ 2 - 2
dmaster/src/main/resources/templates/app/config/app/index.html

@@ -83,10 +83,10 @@
                     <td th:text="${item.appId}">应用 ID</td>
                     <td th:text="${item.repoBranch}">分支</td>
                     <td th:text="${item.appType}">应用类型</td>
-                    <td th:text="${item.runningConfig?.httpPort?: ''}">HTTP 端口</td>
+                    <td th:text="${item.httpPort?: ''}">HTTP 端口</td>
                     <td>
                         <a class="open-popup" data-title="部署配置" th:attr="data-url=@{'/app/config/app/deploy/'+${item.id}}"
-                           data-size="1200,500" href="#">设置</a>
+                           data-size="max" href="#">设置</a>
                     </td>
                     <td>
                         <a class="open-popup" data-title="设置通知组" th:attr="data-url=@{'/app/config/app/notify/'+${item.id}}"