Просмотр исходного кода

调整优化 web.mgr 的代码结构, 实际上是在开始重构了

reghao 1 год назад
Родитель
Сommit
bdd5a0e354
47 измененных файлов с 297 добавлено и 603 удалено
  1. 1 9
      web/src/main/java/cn/reghao/devops/web/mgr/app/controller/AppConfigController.java
  2. 8 8
      web/src/main/java/cn/reghao/devops/web/mgr/app/controller/AppDeployConfigController.java
  3. 10 4
      web/src/main/java/cn/reghao/devops/web/mgr/app/controller/BuildDeployController.java
  4. 9 9
      web/src/main/java/cn/reghao/devops/web/mgr/app/controller/RunStatController.java
  5. 1 1
      web/src/main/java/cn/reghao/devops/web/mgr/app/controller/page/AppConfigPageController.java
  6. 2 2
      web/src/main/java/cn/reghao/devops/web/mgr/app/controller/page/AppDeployConfigPageController.java
  7. 5 15
      web/src/main/java/cn/reghao/devops/web/mgr/app/controller/page/BuildDeployPageController.java
  8. 2 0
      web/src/main/java/cn/reghao/devops/web/mgr/app/db/repository/AppDeployingRepository.java
  9. 2 0
      web/src/main/java/cn/reghao/devops/web/mgr/app/db/repository/config/AppConfigRepository.java
  10. 1 0
      web/src/main/java/cn/reghao/devops/web/mgr/app/db/repository/config/AppDeployConfigRepository.java
  11. 3 1
      web/src/main/java/cn/reghao/devops/web/mgr/app/db/repository/log/BuildLogRepository.java
  12. 3 1
      web/src/main/java/cn/reghao/devops/web/mgr/app/db/repository/log/DeployLogRepository.java
  13. 0 40
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/BuildLogService.java
  14. 0 37
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/BuildService.java
  15. 5 3
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/BuildStat.java
  16. 12 1
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/DeployStat.java
  17. 2 2
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/RunStat.java
  18. 18 11
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/impl/BuildStatImpl.java
  19. 152 8
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/impl/DeployStatImpl.java
  20. 3 3
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/impl/RunStatImpl.java
  21. 0 3
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/config/AppConfigService.java
  22. 1 1
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/config/AppDeployConfigPage.java
  23. 0 20
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/config/AppDeployConfigService.java
  24. 1 1
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/config/BuildDeployLogPage.java
  25. 7 28
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/config/impl/AppConfigServiceImpl.java
  26. 2 1
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/config/impl/AppDeployConfigPageImpl.java
  27. 0 170
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/config/impl/AppDeployConfigServiceImpl.java
  28. 2 1
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/config/impl/BuildDeployLogPageImpl.java
  29. 0 8
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/AppStatusPage.java
  30. 0 19
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/BuildDeployPage.java
  31. 0 76
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/BuildDeployPageImpl.java
  32. 0 11
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/config/AppConfigPage.java
  33. 0 8
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/config/BuildDirPage.java
  34. 0 8
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/config/CompilerConfigPage.java
  35. 0 8
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/config/PackerConfigPage.java
  36. 0 8
      web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/config/RepoAuthConfigPage.java
  37. 3 7
      web/src/main/java/cn/reghao/devops/web/mgr/builds/service/impl/CompilerConfigServiceImpl.java
  38. 1 17
      web/src/main/java/cn/reghao/devops/web/mgr/builds/service/impl/PackerConfigServiceImpl.java
  39. 1 17
      web/src/main/java/cn/reghao/devops/web/mgr/builds/service/impl/RepoAuthConfigServiceImpl.java
  40. 1 1
      web/src/main/java/cn/reghao/devops/web/mgr/machine/controller/MachineHostController.java
  41. 3 0
      web/src/main/java/cn/reghao/devops/web/mgr/machine/db/repository/MachineHostRepository.java
  42. 4 1
      web/src/main/java/cn/reghao/devops/web/mgr/machine/db/repository/MachineInfoRepository.java
  43. 1 1
      web/src/main/java/cn/reghao/devops/web/mgr/machine/service/MachineHostService.java
  44. 13 21
      web/src/main/java/cn/reghao/devops/web/mgr/machine/service/MachineHostServiceImpl.java
  45. 8 1
      web/src/main/java/cn/reghao/devops/web/mgr/machine/service/MachineService.java
  46. 1 4
      web/src/main/java/cn/reghao/devops/web/mgr/machine/service/page/MachineHostPageImpl.java
  47. 9 7
      web/src/main/java/cn/reghao/devops/web/ws/event/MachineEventService.java

+ 1 - 9
web/src/main/java/cn/reghao/devops/web/mgr/app/controller/config/AppConfigController.java → web/src/main/java/cn/reghao/devops/web/mgr/app/controller/AppConfigController.java

@@ -1,4 +1,4 @@
-package cn.reghao.devops.web.mgr.app.controller.config;
+package cn.reghao.devops.web.mgr.app.controller;
 
 import cn.reghao.devops.web.mgr.app.model.dto.AppConfigDto;
 import cn.reghao.devops.web.mgr.app.model.dto.AppConfigUpdateDto;
@@ -14,8 +14,6 @@ import org.springframework.http.MediaType;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
-
 /**
  * @author reghao
  * @date 2019-11-27 11:29:43
@@ -68,10 +66,4 @@ public class AppConfigController {
         Result result = appConfigService.clearLocalRepo(appId);
         return WebResult.result(result);
     }
-
-    @PostMapping(value = "/enable", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String deleteAll(@RequestParam(value = "ids") List<String> appIds) {
-        Result result = appConfigService.batchDelete(appIds);
-        return WebResult.result(result);
-    }
 }

+ 8 - 8
web/src/main/java/cn/reghao/devops/web/mgr/app/controller/config/AppDeployConfigController.java → web/src/main/java/cn/reghao/devops/web/mgr/app/controller/AppDeployConfigController.java

@@ -1,7 +1,7 @@
-package cn.reghao.devops.web.mgr.app.controller.config;
+package cn.reghao.devops.web.mgr.app.controller;
 
 import cn.reghao.devops.web.mgr.app.model.dto.DeployConfigDto;
-import cn.reghao.devops.web.mgr.app.service.config.AppDeployConfigService;
+import cn.reghao.devops.web.mgr.app.service.bd.DeployStat;
 import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.jutil.jdk.result.WebResult;
 import io.swagger.annotations.Api;
@@ -20,30 +20,30 @@ import org.springframework.web.bind.annotation.*;
 @RestController
 @RequestMapping("/api/app/config/app/deploy")
 public class AppDeployConfigController {
-    private final AppDeployConfigService deployConfigService;
+    private final DeployStat deployStat;
 
-    public AppDeployConfigController(AppDeployConfigService deployConfigService) {
-        this.deployConfigService = deployConfigService;
+    public AppDeployConfigController(DeployStat deployStat) {
+        this.deployStat = deployStat;
     }
 
     @ApiOperation(value = "添加应用部署配置")
     @PostMapping(produces = MediaType.APPLICATION_JSON_VALUE)
     public String add(@Validated DeployConfigDto deployConfigDto) {
-        Result result = deployConfigService.add(deployConfigDto);
+        Result result = deployStat.addDeployConfig(deployConfigDto);
         return WebResult.result(result);
     }
 
     @ApiOperation(value = "修改应用部署配置")
     @PostMapping(value = "/update", produces = MediaType.APPLICATION_JSON_VALUE)
     public String update(@Validated DeployConfigDto deployConfigDto) {
-        Result result = deployConfigService.updateStartScript(deployConfigDto);
+        Result result = deployStat.updateStartScript(deployConfigDto);
         return WebResult.result(result);
     }
 
     @ApiOperation(value = "删除应用部署配置")
     @DeleteMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
     public String delete(@PathVariable("id") Integer appDeployConfigId) {
-        Result result = deployConfigService.delete(appDeployConfigId);
+        Result result = deployStat.deleteDeployConfig(appDeployConfigId);
         return WebResult.result(result);
     }
 }

+ 10 - 4
web/src/main/java/cn/reghao/devops/web/mgr/app/controller/BuildDeployController.java

@@ -28,8 +28,7 @@ public class BuildDeployController {
     private final BuildStat buildStat;
     private final WebhookService webhookService;
 
-    public BuildDeployController(BuildApp buildApp, DeployApp deployApp,
-                                 BuildStat buildStat, WebhookService webhookService) {
+    public BuildDeployController(BuildApp buildApp, DeployApp deployApp, BuildStat buildStat, WebhookService webhookService) {
         this.buildApp = buildApp;
         this.deployApp = deployApp;
         this.buildStat = buildStat;
@@ -79,8 +78,8 @@ public class BuildDeployController {
     @ApiOperation(value = "取消构建任务")
     @PostMapping(value = "/task/cancel/{appId}", produces = MediaType.APPLICATION_JSON_VALUE)
     public String cancelTask(@PathVariable("appId") String appId) {
-        buildApp.cancelTask(appId);
-        return WebResult.success();
+        //buildApp.cancelTask(appId);
+        return WebResult.failWithMsg("接口未实现");
     }
 
     @ApiOperation(value = "webhook 自动构建部署")
@@ -89,4 +88,11 @@ public class BuildDeployController {
         webhookService.handle(body);
         return WebResult.success();
     }
+
+    @ApiOperation(value = "删除构建")
+    @DeleteMapping(value = "/delete/{buildLogId}", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String deleteBuild(@PathVariable("buildLogId") String buildLogId) throws Exception {
+        buildStat.deleteBuild(buildLogId);
+        return WebResult.success();
+    }
 }

+ 9 - 9
web/src/main/java/cn/reghao/devops/web/mgr/app/controller/AppStatusController.java → web/src/main/java/cn/reghao/devops/web/mgr/app/controller/RunStatController.java

@@ -1,6 +1,6 @@
 package cn.reghao.devops.web.mgr.app.controller;
 
-import cn.reghao.devops.web.mgr.app.service.bd.AppStat;
+import cn.reghao.devops.web.mgr.app.service.bd.RunStat;
 import cn.reghao.devops.web.mgr.log.model.vo.AppLogVO;
 import cn.reghao.devops.web.mgr.log.service.LogService;
 import cn.reghao.devops.common.msg.constant.AppStatOps;
@@ -23,40 +23,40 @@ import java.util.List;
 @Api(tags = "应用状态管理接口")
 @RestController
 @RequestMapping("/api/app/status")
-public class AppStatusController {
-    private final AppStat statusService;
+public class RunStatController {
+    private final RunStat runStat;
     private final LogService logService;
     
-    public AppStatusController(AppStat statusService, LogService logService) {
-        this.statusService = statusService;
+    public RunStatController(RunStat runStat, LogService logService) {
+        this.runStat = runStat;
         this.logService = logService;
     }
 
     @ApiOperation(value = "重启应用")
     @PostMapping(value = "/restart/{appId}/{machineId}", produces = MediaType.APPLICATION_JSON_VALUE)
     public String restart(@PathVariable("appId") String appId, @PathVariable("machineId") String machineId) throws Exception {
-        statusService.changeStatus(appId, machineId, AppStatOps.restart);
+        runStat.changeStatus(appId, machineId, AppStatOps.restart);
         return WebResult.result(Result.result(ResultStatus.SUCCESS, appId + " 正在重启,请 10s 后刷新页面查看最新状态"));
     }
 
     @ApiOperation(value = "停止应用")
     @PostMapping(value = "/stop/{appId}/{machineId}", produces = MediaType.APPLICATION_JSON_VALUE)
     public String stop(@PathVariable("appId") String appId, @PathVariable("machineId") String machineId) throws Exception {
-        statusService.changeStatus(appId, machineId, AppStatOps.stop);
+        runStat.changeStatus(appId, machineId, AppStatOps.stop);
         return WebResult.result(Result.result(ResultStatus.SUCCESS, appId + " 正在停止,请稍后刷新页面"));
     }
 
     @ApiOperation(value = "启动应用")
     @PostMapping(value = "/start/{appId}/{machineId}", produces = MediaType.APPLICATION_JSON_VALUE)
     public String start(@PathVariable("appId") String appId, @PathVariable("machineId") String machineId) throws Exception {
-        statusService.changeStatus(appId, machineId, AppStatOps.start);
+        runStat.changeStatus(appId, machineId, AppStatOps.start);
         return WebResult.result(Result.result(ResultStatus.SUCCESS, appId + " 正在启动,请 10s 后刷新页面查看最新状态"));
     }
 
     @ApiOperation(value = "应用当前状态")
     @GetMapping(value = "/{appId}/{machineId}", produces = MediaType.APPLICATION_JSON_VALUE)
     public String status(@PathVariable("appId") String appId, @PathVariable("machineId") String machineId) {
-        statusService.getStatus(appId, machineId);
+        runStat.getStatus(appId, machineId);
         String msg = String.format("正在获取 %s 的状态,请 10s 后刷新页面查看", appId);
         return WebResult.result(Result.result(ResultStatus.SUCCESS, msg));
     }

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

@@ -1,4 +1,4 @@
-package cn.reghao.devops.web.mgr.app.controller.page.config;
+package cn.reghao.devops.web.mgr.app.controller.page;
 
 import cn.reghao.devops.web.mgr.app.db.query.AppConfigQuery;
 import cn.reghao.devops.web.mgr.builds.db.repository.CompilerConfigRepository;

+ 2 - 2
web/src/main/java/cn/reghao/devops/web/mgr/app/controller/page/config/AppDeployConfigPageController.java → web/src/main/java/cn/reghao/devops/web/mgr/app/controller/page/AppDeployConfigPageController.java

@@ -1,11 +1,11 @@
-package cn.reghao.devops.web.mgr.app.controller.page.config;
+package cn.reghao.devops.web.mgr.app.controller.page;
 
 import cn.reghao.devops.web.mgr.app.model.po.config.AppConfig;
 import cn.reghao.devops.web.mgr.app.model.po.config.AppDeployConfig;
 import cn.reghao.devops.web.mgr.app.model.vo.AppDeployConfigVo;
 import cn.reghao.devops.web.mgr.app.model.vo.KeyValue;
 import cn.reghao.devops.web.util.PageSort;
-import cn.reghao.devops.web.mgr.app.service.page.config.AppDeployConfigPage;
+import cn.reghao.devops.web.mgr.app.service.config.AppDeployConfigPage;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;

+ 5 - 15
web/src/main/java/cn/reghao/devops/web/mgr/app/controller/page/BuildDeployPageController.java

@@ -8,14 +8,12 @@ import cn.reghao.devops.web.mgr.app.model.vo.AppDeployingVO;
 import cn.reghao.devops.web.mgr.app.model.vo.BuildLogVO;
 import cn.reghao.devops.web.mgr.app.model.vo.BuildTask;
 import cn.reghao.devops.web.mgr.app.service.bd.BuildApp;
-import cn.reghao.devops.web.mgr.app.service.bd.BuildService;
 import cn.reghao.devops.web.mgr.app.service.bd.BuildStat;
 import cn.reghao.devops.web.mgr.app.service.bd.DeployStat;
 import cn.reghao.devops.web.util.DefaultSetting;
 import cn.reghao.devops.web.util.PageSort;
 import cn.reghao.devops.common.util.NotAvailable;
-import cn.reghao.devops.web.mgr.app.service.page.BuildDeployLogPage;
-import cn.reghao.jutil.jdk.db.PageList;
+import cn.reghao.devops.web.mgr.app.service.config.BuildDeployLogPage;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -39,15 +37,13 @@ public class BuildDeployPageController {
     private final BuildStat buildStat;
     private final DeployStat deployStat;
     private final BuildDeployLogPage buildDeployLogPage;
-    private final BuildService buildService;
-    private BuildApp buildApp;
+    private final BuildApp buildApp;
 
     public BuildDeployPageController(BuildStat buildStat, DeployStat deployStat, BuildDeployLogPage buildDeployLogPage,
-                                     BuildService buildService, BuildApp buildApp) {
+                                     BuildApp buildApp) {
         this.buildStat = buildStat;
         this.deployStat = deployStat;
         this.buildDeployLogPage = buildDeployLogPage;
-        this.buildService = buildService;
         this.buildApp = buildApp;
     }
 
@@ -65,19 +61,13 @@ public class BuildDeployPageController {
         }
 
         PageRequest pageRequest = PageSort.pageRequest();
-        int pageNumber = pageRequest.getPageNumber()+1;
-        int pageSize = pageRequest.getPageSize();
-        PageList<AppBuildingVO> pageList;
         Page<AppBuildingVO> page;
         if (appName != null) {
-            pageList = buildStat.getByName(appName, pageNumber, pageSize);
-            page = buildService.findByPage(appName, pageRequest);
+            page = buildStat.getPageByName(appName, pageRequest);
         } else {
-            pageList = buildStat.getByPage(env, type, pageNumber, pageSize);
-            page = buildService.findByPage(env, type, pageRequest);
+            page = buildStat.getByPage(env, type, pageRequest);
         }
 
-        Page<AppBuildingVO> page1 = new PageImpl<>(pageList.getList(), pageRequest, pageList.getTotalSize());
         model.addAttribute("env", env);
         model.addAttribute("type", type);
         model.addAttribute("page", page);

+ 2 - 0
web/src/main/java/cn/reghao/devops/web/mgr/app/db/repository/AppDeployingRepository.java

@@ -11,6 +11,8 @@ import org.springframework.data.jpa.repository.JpaRepository;
  * @date 2023-11-15 21:24:50
  */
 public interface AppDeployingRepository extends JpaRepository<AppDeploying, Integer> {
+    void deleteByAppConfig_AppId(String appId);
+
     AppDeploying findByAppConfig(AppConfig appConfig);
     AppDeploying findByAppConfig_AppId(String appId);
     Page<AppDeploying> findAllByAppConfig_EnvAndAppConfig_AppType(String env, String appType, Pageable pageable);

+ 2 - 0
web/src/main/java/cn/reghao/devops/web/mgr/app/db/repository/config/AppConfigRepository.java

@@ -17,6 +17,8 @@ import java.util.List;
  * @date 2020-01-21 14:53:03
  */
 public interface AppConfigRepository extends JpaRepository<AppConfig, Integer>, JpaSpecificationExecutor<AppConfig> {
+    void deleteByAppId(String appId);
+
     AppConfig findByAppId(String appId);
     AppConfig findByDeletedFalseAndAppId(String appId);
     List<AppConfig> findByAppRepoAndRepoBranch(String repo, String branch);

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

@@ -15,6 +15,7 @@ import java.util.List;
  */
 public interface AppDeployConfigRepository 
         extends JpaRepository<AppDeployConfig, Integer>, JpaSpecificationExecutor<AppDeployConfig> {
+    void deleteById(int appDeployConfigId);
     void deleteByMachineHost(MachineHost machineHost);
 
     int countByAppConfig(AppConfig appConfig);

+ 3 - 1
web/src/main/java/cn/reghao/devops/web/mgr/app/db/repository/log/BuildLogRepository.java

@@ -13,8 +13,10 @@ import java.util.List;
  * @date 2020-01-21 14:53:03
  */
 public interface BuildLogRepository extends JpaRepository<BuildLog, String> {
+    void deleteByBuildLogId(String buildLogId);
+    void deleteByAppConfig(AppConfig appConfig);
+
     Page<BuildLog> findByAppConfig(AppConfig appConfig, Pageable pageable);
     List<BuildLog> findByAppConfig(AppConfig appConfig);
     BuildLog findByBuildLogId(String buildLogId);
-    void deleteByAppConfig(AppConfig appConfig);
 }

+ 3 - 1
web/src/main/java/cn/reghao/devops/web/mgr/app/db/repository/log/DeployLogRepository.java

@@ -13,7 +13,9 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
  * @date 2020-01-21 14:53:03
  */
 public interface DeployLogRepository extends JpaRepository<DeployLog, String>, JpaSpecificationExecutor<DeployLog> {
-    void deleteByBuildLog(BuildLog buildLog);
+    void deleteByBuildLog_BuildLogId(String buildLogId);
+    void deleteByMachineHost(MachineHost machineHost);
+    void deleteByMachineHost_MachineId(String machineId);
 
     Page<DeployLog> findByBuildLogAndMachineHost(BuildLog buildLog, MachineHost machineHost, Pageable pageable);
 }

+ 0 - 40
web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/BuildLogService.java

@@ -1,40 +0,0 @@
-package cn.reghao.devops.web.mgr.app.service.bd;
-
-import cn.reghao.devops.web.mgr.app.db.repository.AppBuildingRepository;
-import cn.reghao.devops.web.mgr.app.db.repository.log.BuildLogRepository;
-import cn.reghao.devops.web.mgr.app.db.repository.log.DeployLogRepository;
-import cn.reghao.devops.web.mgr.app.model.po.config.AppConfig;
-import cn.reghao.devops.web.mgr.app.model.po.log.BuildLog;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-04-21 21:19:04
- */
-@Service
-public class BuildLogService {
-    private final BuildLogRepository buildLogRepository;
-    private final DeployLogRepository deployLogRepository;
-    private AppBuildingRepository buildingRepository;
-
-    public BuildLogService(BuildLogRepository buildLogRepository, DeployLogRepository deployLogRepository,
-                           AppBuildingRepository buildingRepository) {
-        this.buildLogRepository = buildLogRepository;
-        this.deployLogRepository = deployLogRepository;
-        this.buildingRepository = buildingRepository;
-    }
-
-    @Modifying
-    @Transactional
-    public void delete(AppConfig appConfig) {
-        List<BuildLog> buildLogs = buildLogRepository.findByAppConfig(appConfig);
-        if (!buildLogs.isEmpty()) {
-            buildLogs.forEach(deployLogRepository::deleteByBuildLog);
-            buildLogRepository.deleteAll(buildLogs);
-        }
-    }
-}

+ 0 - 37
web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/BuildService.java

@@ -1,37 +0,0 @@
-package cn.reghao.devops.web.mgr.app.service.bd;
-
-import cn.reghao.devops.web.mgr.app.db.repository.AppBuildingRepository;
-import cn.reghao.devops.web.mgr.app.model.po.AppBuilding;
-import cn.reghao.devops.web.mgr.app.model.vo.AppBuildingVO;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @author reghao
- * @date 2023-11-15 21:55:18
- */
-@Service
-public class BuildService {
-    private final AppBuildingRepository buildingRepository;
-
-    public BuildService(AppBuildingRepository buildingRepository) {
-        this.buildingRepository = buildingRepository;
-    }
-
-    public Page<AppBuildingVO> findByPage(String appEnv, String appType, PageRequest pageRequest) {
-        Page<AppBuilding> page = buildingRepository.findAllByAppConfig_EnvAndAppConfig_AppType(appEnv, appType, pageRequest);
-        List<AppBuildingVO> list = page.getContent().stream().map(AppBuildingVO::new).collect(Collectors.toList());
-        return new PageImpl<>(list, pageRequest, page.getTotalElements());
-    }
-
-    public Page<AppBuildingVO> findByPage(String appName, PageRequest pageRequest) {
-        Page<AppBuilding> page = buildingRepository.findAllByAppConfig_AppName(appName, pageRequest);
-        List<AppBuildingVO> list = page.getContent().stream().map(AppBuildingVO::new).collect(Collectors.toList());
-        return new PageImpl<>(list, pageRequest, page.getTotalElements());
-    }
-}

+ 5 - 3
web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/BuildStat.java

@@ -5,6 +5,8 @@ import cn.reghao.devops.web.mgr.app.model.po.config.AppConfig;
 import cn.reghao.devops.web.mgr.app.model.vo.AppBuildingVO;
 import cn.reghao.devops.web.mgr.build.chain.impl.BuildChainResult;
 import cn.reghao.jutil.jdk.db.PageList;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
 
 /**
  * @author reghao
@@ -16,9 +18,8 @@ public interface BuildStat {
     void delete(AppConfig appConfig);
     void beforeBuild(String appId, String buildBy);
     AppBuilding afterBuild(BuildChainResult buildChainResult);
-
-    PageList<AppBuildingVO> getByPage(String env, String appType, int pageNumber, int pageSize);
-    PageList<AppBuildingVO> getByName(String appName, int pageNumber, int pageSize);
+    Page<AppBuildingVO> getByPage(String appEnv, String appType, PageRequest pageRequest);
+    Page<AppBuildingVO> getPageByName(String appName, PageRequest pageRequest);
     AppConfig getAppConfig(String appId);
     AppBuilding getAppBuilding(String appId);
     boolean isBuilding(String appId);
@@ -30,4 +31,5 @@ public interface BuildStat {
      * @date 2024-02-21 08:59:59
      */
     void resetState();
+    void deleteBuild(String buildLogId);
 }

+ 12 - 1
web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/DeployStat.java

@@ -2,12 +2,16 @@ package cn.reghao.devops.web.mgr.app.service.bd;
 
 import cn.reghao.devops.common.agent.app.dto.AppInfo;
 import cn.reghao.devops.common.msg.event.EvtAppStatResult;
+import cn.reghao.devops.web.mgr.app.model.dto.DeployConfigDto;
 import cn.reghao.devops.web.mgr.app.model.po.AppBuilding;
+import cn.reghao.devops.web.mgr.app.model.po.config.AppConfig;
 import cn.reghao.devops.web.mgr.app.model.po.config.AppDeployConfig;
 import cn.reghao.devops.web.mgr.app.model.vo.AppDeployingVO;
 import cn.reghao.devops.web.mgr.app.model.vo.AppRunning;
 import cn.reghao.devops.web.mgr.app.model.vo.AppRunningVO;
+import cn.reghao.devops.web.mgr.machine.model.po.MachineHost;
 import cn.reghao.jutil.jdk.db.PageList;
+import cn.reghao.jutil.jdk.result.Result;
 
 import java.util.List;
 
@@ -31,5 +35,12 @@ public interface DeployStat {
     boolean isDeploying(String appId, String machineId);
     boolean isRunning(String appId);
     boolean isRunning(String appId, String machineId);
-    void delete(String appId, String machineId);
+    void deleteAppDeploying(String appId, String machineId);
+    void deleteDeployLog(String buildLogId);
+
+    Result addDeployConfig(DeployConfigDto deployConfigDto);
+    Result updateStartScript(DeployConfigDto deployConfigDto);
+    Result deleteDeployConfig(int appDeployConfigId);
+    void deleteByAppConfig(AppConfig appConfig);
+    void deleteByMachineHost(MachineHost machineHost);
 }

+ 2 - 2
web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/AppStat.java → web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/RunStat.java

@@ -6,12 +6,12 @@ import cn.reghao.devops.common.msg.constant.AppStatOps;
 import java.util.List;
 
 /**
- * 应用状态管理
+ * 应用运行状态管理
  *
  * @author reghao
  * @date 2019-11-27 11:30:28
  */
-public interface AppStat {
+public interface RunStat {
     void changeStatus(String appId, String machineId, AppStatOps appStatOps) throws Exception;
     void getStatus(String appId, String machineId);
     void getStat(String machineId, List<AppInfo> appInfos);

+ 18 - 11
web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/impl/BuildStatImpl.java

@@ -3,6 +3,7 @@ package cn.reghao.devops.web.mgr.app.service.bd.impl;
 import cn.reghao.devops.web.mgr.app.db.repository.AppBuildingRepository;
 import cn.reghao.devops.web.mgr.app.db.repository.config.AppConfigRepository;
 import cn.reghao.devops.web.mgr.app.db.repository.log.BuildLogRepository;
+import cn.reghao.devops.web.mgr.app.db.repository.log.DeployLogRepository;
 import cn.reghao.devops.web.mgr.app.model.constant.BuildStatus;
 import cn.reghao.devops.web.mgr.app.model.po.AppBuilding;
 import cn.reghao.devops.web.mgr.app.model.po.config.AppConfig;
@@ -17,8 +18,10 @@ import cn.reghao.jutil.jdk.db.PageList;
 import cn.reghao.jutil.jdk.result.ResultStatus;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.*;
@@ -31,13 +34,13 @@ import java.util.stream.Collectors;
 @Slf4j
 @Service
 public class BuildStatImpl implements BuildStat {
+    private final AppBuildingRepository buildingRepository;
     private final BuildLogRepository buildLogRepository;
     private final DeployStat deployStat;
     private final AppConfigRepository appConfigRepository;
-    private final AppBuildingRepository buildingRepository;
 
-    public BuildStatImpl(BuildLogRepository buildLogRepository, DeployStat deployStat,
-                         AppConfigRepository appConfigRepository, AppBuildingRepository buildingRepository) {
+    public BuildStatImpl(AppBuildingRepository buildingRepository,BuildLogRepository buildLogRepository,
+                         DeployStat deployStat, AppConfigRepository appConfigRepository) {
         this.buildLogRepository = buildLogRepository;
         this.deployStat = deployStat;
         this.appConfigRepository = appConfigRepository;
@@ -102,20 +105,17 @@ public class BuildStatImpl implements BuildStat {
     }
 
     @Override
-    public PageList<AppBuildingVO> getByPage(String env, String appType, int pageNumber, int pageSize) {
-        PageRequest pageRequest = PageRequest.of(pageNumber, pageSize);
-        Page<AppBuilding> page = buildingRepository.findAllByAppConfig_EnvAndAppConfig_AppType(env, appType, pageRequest);
+    public Page<AppBuildingVO> getByPage(String appEnv, String appType, PageRequest pageRequest) {
+        Page<AppBuilding> page = buildingRepository.findAllByAppConfig_EnvAndAppConfig_AppType(appEnv, appType, pageRequest);
         List<AppBuildingVO> list = page.getContent().stream().map(AppBuildingVO::new).collect(Collectors.toList());
-        int total = list.size();
-        return PageList.pageList(pageNumber, pageSize, total, list);
+        return new PageImpl<>(list, pageRequest, page.getTotalElements());
     }
 
     @Override
-    public PageList<AppBuildingVO> getByName(String appName, int pageNumber, int pageSize) {
-        PageRequest pageRequest = PageRequest.of(pageNumber, pageSize);
+    public Page<AppBuildingVO> getPageByName(String appName, PageRequest pageRequest) {
         Page<AppBuilding> page = buildingRepository.findAllByAppConfig_AppName(appName, pageRequest);
         List<AppBuildingVO> list = page.getContent().stream().map(AppBuildingVO::new).collect(Collectors.toList());
-        return PageList.pageList(pageNumber, pageSize, (int) page.getTotalElements(), list);
+        return new PageImpl<>(list, pageRequest, page.getTotalElements());
     }
 
     @Override
@@ -155,4 +155,11 @@ public class BuildStatImpl implements BuildStat {
             buildingRepository.saveAll(page.getContent());
         }
     }
+
+    @Transactional
+    @Override
+    public void deleteBuild(String buildLogId) {
+        deployStat.deleteDeployLog(buildLogId);
+        buildLogRepository.deleteByBuildLogId(buildLogId);
+    }
 }

+ 152 - 8
web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/impl/DeployStatImpl.java

@@ -1,8 +1,14 @@
 package cn.reghao.devops.web.mgr.app.service.bd.impl;
 
+import cn.reghao.devops.common.docker.po.Config;
+import cn.reghao.devops.common.msg.constant.PackType;
+import cn.reghao.devops.web.mgr.app.db.query.AppDeployConfigQuery;
 import cn.reghao.devops.web.mgr.app.db.repository.AppDeployingRepository;
+import cn.reghao.devops.web.mgr.app.db.repository.config.AppConfigRepository;
+import cn.reghao.devops.web.mgr.app.db.repository.config.AppDeployConfigRepository;
 import cn.reghao.devops.web.mgr.app.db.repository.log.DeployLogRepository;
 import cn.reghao.devops.web.mgr.app.model.constant.DeployStatus;
+import cn.reghao.devops.web.mgr.app.model.dto.DeployConfigDto;
 import cn.reghao.devops.web.mgr.app.model.po.AppBuilding;
 import cn.reghao.devops.web.mgr.app.model.po.AppDeploying;
 import cn.reghao.devops.web.mgr.app.model.po.AppDeployingNode;
@@ -22,11 +28,14 @@ import cn.reghao.devops.common.msg.constant.NodeStatus;
 import cn.reghao.devops.common.msg.event.EvtAppStatResult;
 import cn.reghao.jutil.jdk.converter.DateTimeConverter;
 import cn.reghao.jutil.jdk.db.PageList;
+import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.jutil.jdk.result.ResultStatus;
+import cn.reghao.jutil.jdk.serializer.JsonConverter;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -38,18 +47,25 @@ import java.util.stream.Collectors;
 @Slf4j
 @Service
 public class DeployStatImpl implements DeployStat {
+    private final AppDeployConfigRepository deployConfigRepository;
+    private final AppDeployingRepository deployingRepository;
     private final DeployLogRepository deployLogRepository;
     private final BuildDeployNotify buildDeployNotify;
     private final MachineService machineService;
-    private final AppDeployingRepository deployingRepository;
-
-    public DeployStatImpl(DeployLogRepository deployLogRepository,
-                          BuildDeployNotify buildDeployNotify, MachineService machineService,
-                          AppDeployingRepository deployingRepository) {
+    private final AppConfigRepository appConfigRepository;
+    private final AppDeployConfigQuery deployConfigQuery;
+
+    public DeployStatImpl(AppDeployConfigRepository deployConfigRepository, AppDeployingRepository deployingRepository,
+                          DeployLogRepository deployLogRepository, BuildDeployNotify buildDeployNotify,
+                          AppConfigRepository appConfigRepository, AppDeployConfigQuery deployConfigQuery,
+                          MachineService machineService) {
+        this.deployConfigRepository = deployConfigRepository;
+        this.deployingRepository = deployingRepository;
         this.deployLogRepository = deployLogRepository;
+        this.appConfigRepository = appConfigRepository;
+        this.deployConfigQuery = deployConfigQuery;
         this.buildDeployNotify = buildDeployNotify;
         this.machineService = machineService;
-        this.deployingRepository = deployingRepository;
     }
 
     @Override
@@ -66,11 +82,12 @@ public class DeployStatImpl implements DeployStat {
     public boolean delete(AppDeployConfig appDeployConfig) {
         String appId = appDeployConfig.getAppConfig().getAppId();
         String machineId = appDeployConfig.getMachineHost().getMachineId();
-        delete(appId, machineId);
+        deleteAppDeploying(appId, machineId);
         return true;
     }
 
-    public void delete(String appId, String machineId) {
+    @Override
+    public void deleteAppDeploying(String appId, String machineId) {
         AppDeploying appDeploying = deployingRepository.findByAppConfig_AppId(appId);
         if (appDeploying != null) {
             List<AppDeployingNode> deployingNodes = appDeploying.getDeployingNodes();
@@ -85,7 +102,9 @@ public class DeployStatImpl implements DeployStat {
 
             if (idx != -1) {
                 deployingNodes.remove(idx);
+                deployLogRepository.deleteByMachineHost_MachineId(machineId);
                 deployingRepository.delete(appDeploying);
+                deployingRepository.deleteByAppConfig_AppId(appId);
             }
         }
     }
@@ -296,4 +315,129 @@ public class DeployStatImpl implements DeployStat {
 
         return false;
     }
+
+    @Override
+    public void deleteDeployLog(String buildLogId) {
+        deployLogRepository.deleteByBuildLog_BuildLogId(buildLogId);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Result addDeployConfig(DeployConfigDto deployConfigDto) {
+        String appId = deployConfigDto.getAppId();
+        AppConfig appConfig = appConfigRepository.findByAppId(appId);
+        if (appConfig == null) {
+            String msg = String.format("%s 不存在", appId);
+            return Result.result(ResultStatus.ERROR, msg);
+        }
+
+        String machineId = deployConfigDto.getMachineId();
+        MachineHost machineHost = machineService.getMachineHost(machineId);
+        if (machineHost == null) {
+            String msg = String.format("%s 不存在", machineId);
+            return Result.result(ResultStatus.ERROR, msg);
+        }
+
+        String startScript = deployConfigDto.getStartScript();
+        String packType = deployConfigDto.getPackType();
+        if (packType.equals(PackType.docker.name())) {
+            Config containerConfig = JsonConverter.jsonToObject(startScript, Config.class);
+            if (startScript == null || startScript.isBlank()) {
+                startScript = "{}";
+            }
+        }
+
+        AppDeployConfig appDeployConfig = new AppDeployConfig(appConfig, machineHost, startScript);
+        appDeployConfig = deployConfigRepository.save(appDeployConfig);
+
+        add(appDeployConfig);
+        return Result.result(ResultStatus.SUCCESS);
+    }
+
+    @Override
+    public Result updateStartScript(DeployConfigDto deployConfigDto) {
+        String appId = deployConfigDto.getAppId();
+        String machineId = deployConfigDto.getMachineId();
+        AppDeployConfig appDeployConfig = deployConfigQuery.findByAppIdAndMachineId(appId, machineId);
+        if (appDeployConfig == null) {
+            String msg = String.format("%s 在 %s 上的部署配置不存在", appId, machineId);
+            return Result.result(ResultStatus.ERROR, msg);
+        }
+
+        String startScript = deployConfigDto.getStartScript();
+        String packType = deployConfigDto.getPackType();
+        if (packType.equals(PackType.docker.name())) {
+            Config containerConfig = JsonConverter.jsonToObject(startScript, Config.class);
+            if (startScript == null || startScript.isBlank()) {
+                startScript = "{}";
+            }
+        }
+
+        appDeployConfig.setUnpackScript(deployConfigDto.getUnpackScript());
+        appDeployConfig.setStartHome(deployConfigDto.getStartHome());
+        appDeployConfig.setStartScript(startScript);
+        deployConfigRepository.save(appDeployConfig);
+        return Result.result(ResultStatus.SUCCESS);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Result deleteDeployConfig(int appDeployConfigId) {
+        deployConfigRepository.deleteById(appDeployConfigId);
+
+        /*AppDeployConfig appDeployConfig = deployConfigQuery.findById(appDeployConfigId);
+        String appId = appDeployConfig.getAppConfig().getAppId();
+        String machineId = appDeployConfig.getMachineHost().getMachineId();
+        if (!isRunning(appId, machineId)) {
+            delete(appDeployConfig);
+            deployConfigRepository.delete(appDeployConfig);
+        }*/
+
+        return Result.result(ResultStatus.SUCCESS);
+    }
+
+    public boolean delete0(AppDeployConfig appDeployConfig) {
+        String appId = appDeployConfig.getAppConfig().getAppId();
+        String machineId = appDeployConfig.getMachineHost().getMachineId();
+        if (!isRunning(appId, machineId)) {
+            delete(appDeployConfig);
+            deployConfigRepository.delete(appDeployConfig);
+            return true;
+        }
+
+        return false;
+    }
+
+    public void deleteByAppConfig(AppConfig appConfig) {
+        List<AppDeployConfig> deployConfigs = deployConfigRepository.findByAppConfig(appConfig);
+        if (!deployConfigs.isEmpty()) {
+            deployConfigs.forEach(this::delete0);
+        }
+    }
+
+    public void deleteByMachineHost(MachineHost machineHost) {
+        List<AppDeployConfig> list = deployConfigRepository.findByMachineHost(machineHost);
+        List<String> apps = list.stream()
+                .map(appDeployConfig -> appDeployConfig.getAppConfig().getAppId())
+                .collect(Collectors.toList());
+
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < Math.min(3, list.size()); i++) {
+            sb.append(apps.get(i)).append(",");
+        }
+        String msg = sb.toString();
+        if (!msg.isBlank()) {
+            String errMsg = String.format("还有 %s 等应用部署在当前机器上", msg.substring(0, msg.length()-1));
+            log.error(errMsg);
+        }
+
+        for (AppDeployConfig appDeployConfig : list) {
+            String appId = appDeployConfig.getAppConfig().getAppId();
+            String machineId = appDeployConfig.getMachineHost().getMachineId();
+            deleteAppDeploying(appId, machineId);
+
+        }
+
+        deployConfigRepository.deleteByMachineHost(machineHost);
+    }
 }

+ 3 - 3
web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/impl/AppStatImpl.java → web/src/main/java/cn/reghao/devops/web/mgr/app/service/bd/impl/RunStatImpl.java

@@ -6,7 +6,7 @@ import cn.reghao.devops.common.msg.event.EvtAppStat;
 import cn.reghao.devops.web.mgr.app.db.repository.config.AppConfigRepository;
 import cn.reghao.devops.web.mgr.app.model.po.config.AppConfig;
 import cn.reghao.devops.web.mgr.app.service.PermissionCheck;
-import cn.reghao.devops.web.mgr.app.service.bd.AppStat;
+import cn.reghao.devops.web.mgr.app.service.bd.RunStat;
 import cn.reghao.devops.web.mgr.machine.service.MachineService;
 import cn.reghao.devops.web.ws.WsSender;
 import cn.reghao.jutil.jdk.event.message.EventMessage;
@@ -24,12 +24,12 @@ import java.util.List;
  */
 @Slf4j
 @Service
-public class AppStatImpl implements AppStat {
+public class RunStatImpl implements RunStat {
     private final WsSender wsSender;
     private final AppConfigRepository appConfigRepository;
     private final MachineService machineService;
 
-    public AppStatImpl(WsSender wsSender, AppConfigRepository appConfigRepository,
+    public RunStatImpl(WsSender wsSender, AppConfigRepository appConfigRepository,
                        MachineService machineService) {
         this.wsSender = wsSender;
         this.appConfigRepository = appConfigRepository;

+ 0 - 3
web/src/main/java/cn/reghao/devops/web/mgr/app/service/config/AppConfigService.java

@@ -5,8 +5,6 @@ import cn.reghao.devops.web.mgr.app.model.dto.AppConfigUpdateDto;
 import cn.reghao.devops.web.mgr.app.model.dto.CopyAppDto;
 import cn.reghao.jutil.jdk.result.Result;
 
-import java.util.List;
-
 /**
  * @author reghao
  * @date 2021-09-16 18:28:51
@@ -16,6 +14,5 @@ public interface AppConfigService {
     Result createByCopy(CopyAppDto copyAppDto);
     Result update(AppConfigUpdateDto appConfigUpdateDto);
     Result delete(String appId);
-    Result batchDelete(List<String> appIds);
     Result clearLocalRepo(String appId);
 }

+ 1 - 1
web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/config/AppDeployConfigPage.java → web/src/main/java/cn/reghao/devops/web/mgr/app/service/config/AppDeployConfigPage.java

@@ -1,4 +1,4 @@
-package cn.reghao.devops.web.mgr.app.service.page.config;
+package cn.reghao.devops.web.mgr.app.service.config;
 
 import cn.reghao.devops.web.mgr.app.model.po.config.AppConfig;
 import cn.reghao.devops.web.mgr.app.model.po.config.AppDeployConfig;

+ 0 - 20
web/src/main/java/cn/reghao/devops/web/mgr/app/service/config/AppDeployConfigService.java

@@ -1,20 +0,0 @@
-package cn.reghao.devops.web.mgr.app.service.config;
-
-import cn.reghao.devops.web.mgr.app.model.dto.DeployConfigDto;
-import cn.reghao.devops.web.mgr.app.model.po.config.AppConfig;
-import cn.reghao.devops.web.mgr.app.model.po.config.AppDeployConfig;
-import cn.reghao.devops.web.mgr.machine.model.po.MachineHost;
-import cn.reghao.jutil.jdk.result.Result;
-
-/**
- * @author reghao
- * @date 2021-09-16 18:28:51
- */
-public interface AppDeployConfigService {
-    Result add(DeployConfigDto deployConfigDto);
-    Result updateStartScript(DeployConfigDto deployConfigDto);
-    Result delete(int appDeployConfigId);
-    boolean delete(AppDeployConfig appDeployConfig);
-    boolean delete(AppConfig appConfig);
-    void delete(MachineHost machineHost);
-}

+ 1 - 1
web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/BuildDeployLogPage.java → web/src/main/java/cn/reghao/devops/web/mgr/app/service/config/BuildDeployLogPage.java

@@ -1,4 +1,4 @@
-package cn.reghao.devops.web.mgr.app.service.page;
+package cn.reghao.devops.web.mgr.app.service.config;
 
 import cn.reghao.devops.web.mgr.app.model.po.log.BuildLog;
 import cn.reghao.devops.web.mgr.app.model.vo.BuildLogVO;

+ 7 - 28
web/src/main/java/cn/reghao/devops/web/mgr/app/service/config/impl/AppConfigServiceImpl.java

@@ -5,14 +5,13 @@ import cn.reghao.devops.web.mgr.app.model.dto.AppConfigDto;
 import cn.reghao.devops.web.mgr.app.model.dto.AppConfigUpdateDto;
 import cn.reghao.devops.web.mgr.app.model.dto.CopyAppDto;
 import cn.reghao.devops.web.mgr.app.model.po.config.AppConfig;
+import cn.reghao.devops.web.mgr.app.service.bd.DeployStat;
 import cn.reghao.devops.web.mgr.builds.model.vo.BuildConfig;
-import cn.reghao.devops.web.mgr.app.service.bd.BuildLogService;
 import cn.reghao.devops.web.mgr.app.service.bd.BuildStat;
 import cn.reghao.devops.web.mgr.build.chain.BuildTools;
 import cn.reghao.devops.web.mgr.build.model.LocalBuildDir;
 import cn.reghao.devops.web.mgr.build.model.constant.RepoType;
 import cn.reghao.devops.web.mgr.app.service.config.AppConfigService;
-import cn.reghao.devops.web.mgr.app.service.config.AppDeployConfigService;
 import cn.reghao.devops.web.mgr.builds.service.impl.BuildConfigChecker;
 import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.jutil.jdk.result.ResultStatus;
@@ -23,7 +22,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.io.File;
 import java.io.IOException;
 import java.time.LocalDateTime;
-import java.util.List;
 
 /**
  * @author reghao
@@ -34,17 +32,14 @@ public class AppConfigServiceImpl implements AppConfigService {
     private final AppConfigRepository appConfigRepository;
     private final BuildConfigChecker buildConfigChecker;
     private final BuildStat buildStat;
-    private final AppDeployConfigService deployConfigService;
-    private final BuildLogService buildLogService;
+    private DeployStat deployStat;
 
     public AppConfigServiceImpl(AppConfigRepository appConfigRepository, BuildConfigChecker buildConfigChecker,
-                                BuildStat buildStat,
-                                AppDeployConfigService deployConfigService, BuildLogService buildLogService) {
+                                BuildStat buildStat, DeployStat deployStat) {
         this.appConfigRepository = appConfigRepository;
         this.buildConfigChecker = buildConfigChecker;
         this.buildStat = buildStat;
-        this.deployConfigService = deployConfigService;
-        this.buildLogService = buildLogService;
+        this.deployStat = deployStat;
     }
 
     @Override
@@ -159,16 +154,11 @@ public class AppConfigServiceImpl implements AppConfigService {
     @Transactional(rollbackFor = Exception.class)
     @Override
     public Result delete(String appId) {
-        AppConfig app = appConfigRepository.findByAppId(appId);
-        if (app == null) {
-            return Result.result(ResultStatus.FAIL, appId + " 不存在");
-        }
-
-        buildStat.delete(app);
-        buildLogService.delete(app);
+        appConfigRepository.deleteByAppId(appId);
+        /*buildStat.delete(app);
         deployConfigService.delete(app);
         appConfigRepository.delete(app);
-        BuildTools.removeApp(app.getAppId());
+        BuildTools.removeApp(app.getAppId());*/
         return Result.result(ResultStatus.SUCCESS);
     }
 
@@ -187,15 +177,4 @@ public class AppConfigServiceImpl implements AppConfigService {
             return Result.result(ResultStatus.FAIL, e.getMessage());
         }
     }
-
-    @Override
-    public Result batchDelete(List<String> appIds) {
-        for (String appId : appIds) {
-            Result result = delete(appId);
-            if (result.getCode() != 0) {
-                return result;
-            }
-        }
-        return Result.result(ResultStatus.SUCCESS);
-    }
 }

+ 2 - 1
web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/config/AppDeployConfigPageImpl.java → web/src/main/java/cn/reghao/devops/web/mgr/app/service/config/impl/AppDeployConfigPageImpl.java

@@ -1,4 +1,4 @@
-package cn.reghao.devops.web.mgr.app.service.page.config;
+package cn.reghao.devops.web.mgr.app.service.config.impl;
 
 import cn.reghao.devops.web.mgr.app.db.query.AppConfigQuery;
 import cn.reghao.devops.web.mgr.app.db.query.AppDeployConfigQuery;
@@ -6,6 +6,7 @@ import cn.reghao.devops.web.mgr.app.model.po.config.AppConfig;
 import cn.reghao.devops.web.mgr.app.model.po.config.AppDeployConfig;
 import cn.reghao.devops.web.mgr.app.model.vo.AppDeployConfigVo;
 import cn.reghao.devops.web.mgr.app.model.vo.KeyValue;
+import cn.reghao.devops.web.mgr.app.service.config.AppDeployConfigPage;
 import cn.reghao.devops.web.mgr.machine.db.repository.MachineHostRepository;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;

+ 0 - 170
web/src/main/java/cn/reghao/devops/web/mgr/app/service/config/impl/AppDeployConfigServiceImpl.java

@@ -1,170 +0,0 @@
-package cn.reghao.devops.web.mgr.app.service.config.impl;
-
-import cn.reghao.devops.web.mgr.app.db.query.AppDeployConfigQuery;
-import cn.reghao.devops.web.mgr.app.db.repository.config.AppConfigRepository;
-import cn.reghao.devops.web.mgr.app.db.repository.config.AppDeployConfigRepository;
-import cn.reghao.devops.web.mgr.app.model.dto.DeployConfigDto;
-import cn.reghao.devops.web.mgr.app.model.po.config.AppConfig;
-import cn.reghao.devops.web.mgr.app.model.po.config.AppDeployConfig;
-import cn.reghao.devops.web.mgr.app.service.bd.DeployStat;
-import cn.reghao.devops.web.mgr.machine.db.repository.MachineHostRepository;
-import cn.reghao.devops.web.mgr.machine.model.po.MachineHost;
-import cn.reghao.devops.common.docker.po.Config;
-import cn.reghao.devops.common.msg.constant.PackType;
-import cn.reghao.devops.web.mgr.app.service.config.AppDeployConfigService;
-import cn.reghao.jutil.jdk.result.Result;
-import cn.reghao.jutil.jdk.result.ResultStatus;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @author reghao
- * @date 2021-09-16 18:28:51
- */
-@Slf4j
-@Service
-public class AppDeployConfigServiceImpl implements AppDeployConfigService {
-    private final AppConfigRepository appConfigRepository;
-    private final AppDeployConfigRepository deployConfigRepository;
-    private final MachineHostRepository machineHostRepository;
-    private final AppDeployConfigQuery deployConfigQuery;
-    private final DeployStat deployStat;
-
-    public AppDeployConfigServiceImpl(AppConfigRepository appConfigRepository,
-                                      AppDeployConfigRepository deployConfigRepository,
-                                      MachineHostRepository machineHostRepository,
-                                      AppDeployConfigQuery deployConfigQuery,
-                                      DeployStat deployStat) {
-        this.appConfigRepository = appConfigRepository;
-        this.deployConfigRepository = deployConfigRepository;
-        this.machineHostRepository = machineHostRepository;
-        this.deployConfigQuery = deployConfigQuery;
-        this.deployStat = deployStat;
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public Result add(DeployConfigDto deployConfigDto) {
-        String appId = deployConfigDto.getAppId();
-        AppConfig appConfig = appConfigRepository.findByAppId(appId);
-        if (appConfig == null) {
-            String msg = String.format("%s 不存在", appId);
-            return Result.result(ResultStatus.ERROR, msg);
-        }
-
-        String machineId = deployConfigDto.getMachineId();
-        MachineHost machineHost = machineHostRepository.findByMachineId(machineId);
-        if (machineHost == null) {
-            String msg = String.format("%s 不存在", machineId);
-            return Result.result(ResultStatus.ERROR, msg);
-        }
-
-        String startScript = deployConfigDto.getStartScript();
-        String packType = deployConfigDto.getPackType();
-        if (packType.equals(PackType.docker.name())) {
-            Config containerConfig = JsonConverter.jsonToObject(startScript, Config.class);
-            if (startScript == null || startScript.isBlank()) {
-                startScript = "{}";
-            }
-        }
-
-        AppDeployConfig appDeployConfig = new AppDeployConfig(appConfig, machineHost, startScript);
-        appDeployConfig = deployConfigRepository.save(appDeployConfig);
-
-        deployStat.add(appDeployConfig);
-        return Result.result(ResultStatus.SUCCESS);
-    }
-
-    @Override
-    public Result updateStartScript(DeployConfigDto deployConfigDto) {
-        String appId = deployConfigDto.getAppId();
-        String machineId = deployConfigDto.getMachineId();
-        AppDeployConfig appDeployConfig = deployConfigQuery.findByAppIdAndMachineId(appId, machineId);
-        if (appDeployConfig == null) {
-            String msg = String.format("%s 在 %s 上的部署配置不存在", appId, machineId);
-            return Result.result(ResultStatus.ERROR, msg);
-        }
-
-        String startScript = deployConfigDto.getStartScript();
-        String packType = deployConfigDto.getPackType();
-        if (packType.equals(PackType.docker.name())) {
-            Config containerConfig = JsonConverter.jsonToObject(startScript, Config.class);
-            if (startScript == null || startScript.isBlank()) {
-                startScript = "{}";
-            }
-        }
-
-        appDeployConfig.setUnpackScript(deployConfigDto.getUnpackScript());
-        appDeployConfig.setStartHome(deployConfigDto.getStartHome());
-        appDeployConfig.setStartScript(startScript);
-        deployConfigRepository.save(appDeployConfig);
-        return Result.result(ResultStatus.SUCCESS);
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public Result delete(int appDeployConfigId) {
-        AppDeployConfig appDeployConfig = deployConfigQuery.findById(appDeployConfigId);
-        boolean ret = delete(appDeployConfig);
-        if (!ret) {
-            return Result.result(ResultStatus.FAIL, "应用正在节点上运行, 不能删除其部署配置");
-        }
-
-        return Result.result(ResultStatus.SUCCESS);
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public boolean delete(AppDeployConfig appDeployConfig) {
-        String appId = appDeployConfig.getAppConfig().getAppId();
-        String machineId = appDeployConfig.getMachineHost().getMachineId();
-        if (!deployStat.isRunning(appId, machineId)) {
-            deployStat.delete(appDeployConfig);
-            deployConfigRepository.delete(appDeployConfig);
-            return true;
-        }
-
-        return false;
-    }
-
-    @Override
-    public boolean delete(AppConfig appConfig) {
-        List<AppDeployConfig> deployConfigs = deployConfigRepository.findByAppConfig(appConfig);
-        if (!deployConfigs.isEmpty()) {
-            deployConfigs.forEach(this::delete);
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public void delete(MachineHost machineHost) {
-        List<AppDeployConfig> list = deployConfigRepository.findByMachineHost(machineHost);
-        List<String> apps = list.stream()
-                .map(appDeployConfig -> appDeployConfig.getAppConfig().getAppId())
-                .collect(Collectors.toList());
-
-        StringBuilder sb = new StringBuilder();
-        for (int i = 0; i < Math.min(3, list.size()); i++) {
-            sb.append(apps.get(i)).append(",");
-        }
-        String msg = sb.toString();
-        if (!msg.isBlank()) {
-            String errMsg = String.format("还有 %s 等应用部署在当前机器上", msg.substring(0, msg.length()-1));
-            log.error(errMsg);
-        }
-
-        for (AppDeployConfig appDeployConfig : list) {
-            String appId = appDeployConfig.getAppConfig().getAppId();
-            String machineId = appDeployConfig.getMachineHost().getMachineId();
-            deployStat.delete(appId, machineId);
-        }
-
-        deployConfigRepository.deleteByMachineHost(machineHost);
-    }
-}

+ 2 - 1
web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/BuildDeployLogPageImpl.java → web/src/main/java/cn/reghao/devops/web/mgr/app/service/config/impl/BuildDeployLogPageImpl.java

@@ -1,10 +1,11 @@
-package cn.reghao.devops.web.mgr.app.service.page;
+package cn.reghao.devops.web.mgr.app.service.config.impl;
 
 import cn.reghao.devops.web.mgr.app.db.repository.config.AppConfigRepository;
 import cn.reghao.devops.web.mgr.app.db.repository.log.BuildLogRepository;
 import cn.reghao.devops.web.mgr.app.model.po.config.AppConfig;
 import cn.reghao.devops.web.mgr.app.model.po.log.BuildLog;
 import cn.reghao.devops.web.mgr.app.model.vo.BuildLogVO;
+import cn.reghao.devops.web.mgr.app.service.config.BuildDeployLogPage;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.stereotype.Service;

+ 0 - 8
web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/AppStatusPage.java

@@ -1,8 +0,0 @@
-package cn.reghao.devops.web.mgr.app.service.page;
-
-/**
- * @author reghao
- * @date 2021-10-20 18:46:44
- */
-public interface AppStatusPage {
-}

+ 0 - 19
web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/BuildDeployPage.java

@@ -1,19 +0,0 @@
-package cn.reghao.devops.web.mgr.app.service.page;
-
-import cn.reghao.devops.web.mgr.app.model.vo.AppBuildingVO;
-import cn.reghao.devops.web.mgr.app.model.vo.AppDeployingVO;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2021-10-20 18:46:34
- */
-public interface BuildDeployPage {
-    Page<AppBuildingVO> indexPage(String env, PageRequest pageRequest);
-    Page<AppBuildingVO> searchResultPage(String appName);
-    @Deprecated
-    List<AppDeployingVO> deployStatus(String appId, String buildLogId);
-}

+ 0 - 76
web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/BuildDeployPageImpl.java

@@ -1,76 +0,0 @@
-package cn.reghao.devops.web.mgr.app.service.page;
-
-import cn.reghao.devops.web.mgr.app.db.query.AppDeployConfigQuery;
-import cn.reghao.devops.web.mgr.app.db.repository.config.AppConfigRepository;
-import cn.reghao.devops.web.mgr.app.db.repository.config.AppDeployConfigRepository;
-import cn.reghao.devops.web.mgr.app.db.repository.log.BuildLogRepository;
-import cn.reghao.devops.web.mgr.app.db.repository.log.DeployLogRepository;
-import cn.reghao.devops.web.mgr.app.model.po.AppBuilding;
-import cn.reghao.devops.web.mgr.app.model.po.config.AppConfig;
-import cn.reghao.devops.web.mgr.app.model.po.log.BuildLog;
-import cn.reghao.devops.web.mgr.app.model.vo.AppBuildingVO;
-import cn.reghao.devops.web.mgr.app.model.vo.AppDeployingVO;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Sort;
-import org.springframework.stereotype.Service;
-
-import java.util.*;
-
-/**
- * @author reghao
- * @date 2021-10-20 18:46:34
- */
-@Service
-public class BuildDeployPageImpl implements BuildDeployPage {
-    private final AppConfigRepository appConfigRepository;
-    private final BuildLogRepository buildLogRepository;
-    private final AppDeployConfigRepository appDeployConfigRepository;
-    private AppDeployConfigQuery appDeployConfigQuery;
-    private final DeployLogRepository deployLogRepository;
-
-    public BuildDeployPageImpl(AppConfigRepository appConfigRepository, BuildLogRepository buildLogRepository,
-                               AppDeployConfigRepository appDeployConfigRepository, DeployLogRepository deployLogRepository,
-                               AppDeployConfigQuery appDeployConfigQuery) {
-        this.appConfigRepository = appConfigRepository;
-        this.buildLogRepository = buildLogRepository;
-        this.appDeployConfigRepository = appDeployConfigRepository;
-        this.deployLogRepository = deployLogRepository;
-        this.appDeployConfigQuery = appDeployConfigQuery;
-    }
-
-    @Override
-    public Page<AppBuildingVO> indexPage(String env, PageRequest pageRequest) {
-        Page<AppConfig> page = appConfigRepository.findByEnv(env, pageRequest);
-        return page.map(appConfig -> {
-            AppBuilding appBuilding = getAppBuilding(appConfig);
-            //buildStat.add(appConfig.getAppId(), appBuilding);
-            return new AppBuildingVO(appBuilding);
-        });
-    }
-
-    private AppBuilding getAppBuilding(AppConfig appConfig) {
-        PageRequest pageRequest = PageRequest.of(0, 1, Sort.by(Sort.Direction.DESC, "createTime"));
-        Page<BuildLog> page1 = buildLogRepository.findByAppConfig(appConfig, pageRequest);
-        List<BuildLog> list = page1.getContent();
-
-        AppBuilding appBuilding;
-        if (list.size() == 1) {
-            appBuilding = new AppBuilding(list.get(0));
-        } else {
-            appBuilding = new AppBuilding(appConfig);
-        }
-        return appBuilding;
-    }
-
-    @Override
-    public Page<AppBuildingVO> searchResultPage(String appName) {
-        return new PageImpl<>(Collections.emptyList());
-    }
-
-    @Override
-    public List<AppDeployingVO> deployStatus(String appId, String buildLogId) {
-        return Collections.emptyList();
-    }
-}

+ 0 - 11
web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/config/AppConfigPage.java

@@ -1,11 +0,0 @@
-package cn.reghao.devops.web.mgr.app.service.page.config;
-
-/**
- * @author reghao
- * @date 2021-10-22 09:15:56
- */
-public interface AppConfigPage {
-    void addOrEditPage();
-    void copyPage();
-    void detailPage();
-}

+ 0 - 8
web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/config/BuildDirPage.java

@@ -1,8 +0,0 @@
-package cn.reghao.devops.web.mgr.app.service.page.config;
-
-/**
- * @author reghao
- * @date 2021-10-26 15:05:16
- */
-public interface BuildDirPage {
-}

+ 0 - 8
web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/config/CompilerConfigPage.java

@@ -1,8 +0,0 @@
-package cn.reghao.devops.web.mgr.app.service.page.config;
-
-/**
- * @author reghao
- * @date 2021-10-26 15:05:43
- */
-public interface CompilerConfigPage {
-}

+ 0 - 8
web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/config/PackerConfigPage.java

@@ -1,8 +0,0 @@
-package cn.reghao.devops.web.mgr.app.service.page.config;
-
-/**
- * @author reghao
- * @date 2021-10-26 15:06:04
- */
-public interface PackerConfigPage {
-}

+ 0 - 8
web/src/main/java/cn/reghao/devops/web/mgr/app/service/page/config/RepoAuthConfigPage.java

@@ -1,8 +0,0 @@
-package cn.reghao.devops.web.mgr.app.service.page.config;
-
-/**
- * @author reghao
- * @date 2021-10-26 15:06:31
- */
-public interface RepoAuthConfigPage {
-}

+ 3 - 7
web/src/main/java/cn/reghao/devops/web/mgr/builds/service/impl/CompilerConfigServiceImpl.java

@@ -52,13 +52,9 @@ public class CompilerConfigServiceImpl implements CompilerConfigService {
 
     @Override
     public Result delete(CompilerConfig compilerConfig) {
-        Result result = checkBeforeDelete(compilerConfig);
-        if (result.getCode() == ResultStatus.SUCCESS.getCode()) {
-            BuildTools.removeCodeCompiler(compilerConfig.getName());
-            compilerConfigRepository.delete(compilerConfig);
-        }
-
-        return result;
+        compilerConfigRepository.delete(compilerConfig);
+        BuildTools.removeCodeCompiler(compilerConfig.getName());
+        return Result.result(ResultStatus.SUCCESS);
     }
 
     private Result checkBeforeDelete(CompilerConfig compilerConfig) {

+ 1 - 17
web/src/main/java/cn/reghao/devops/web/mgr/builds/service/impl/PackerConfigServiceImpl.java

@@ -56,23 +56,7 @@ public class PackerConfigServiceImpl implements PackerConfigService {
 
     @Override
     public Result delete(PackerConfig packerConfig) {
-        Result result = checkBeforeDelete(packerConfig);
-        if (result.getCode() == ResultStatus.SUCCESS.getCode()) {
-            BuildTools.removeCodePacker(packerConfig.getName());
-            packerConfigRepository.delete(packerConfig);
-        }
-
-        return result;
-    }
-
-    private Result checkBeforeDelete(PackerConfig packerConfig) {
-        List<AppConfig> apps = appConfigQuery.findAllByPackerConfig(packerConfig);
-        if (!apps.isEmpty()) {
-            List<String> ids = apps.stream().map(AppConfig::getAppId).collect(Collectors.toList());
-            String msg = packerConfig.getName() + " 删除失败, " + ids + " 等应用正在使用";
-            return Result.result(ResultStatus.FAIL, msg);
-        }
-
+        packerConfigRepository.delete(packerConfig);
         BuildTools.removeCodePacker(packerConfig.getName());
         return Result.result(ResultStatus.SUCCESS);
     }

+ 1 - 17
web/src/main/java/cn/reghao/devops/web/mgr/builds/service/impl/RepoAuthConfigServiceImpl.java

@@ -59,23 +59,7 @@ public class RepoAuthConfigServiceImpl implements RepoAuthConfigService {
 
     @Override
     public Result delete(RepoAuthConfig repoAuthConfig) {
-        Result result = checkBeforeDelete(repoAuthConfig);
-        if (result.getCode() == ResultStatus.SUCCESS.getCode()) {
-            BuildTools.removeCodeUpdater(repoAuthConfig.getName());
-            repoAuthConfigRepository.delete(repoAuthConfig);
-        }
-
-        return result;
-    }
-
-    private Result checkBeforeDelete(RepoAuthConfig repoAuthConfig) {
-        List<AppConfig> apps = appConfigQuery.findAllByRepoAuthConfig(repoAuthConfig);
-        if (!apps.isEmpty()) {
-            List<String> ids = apps.stream().map(AppConfig::getAppId).collect(Collectors.toList());
-            String msg = repoAuthConfig.getName() + " 删除失败, " + ids + " 等应用正在使用";
-            return Result.result(ResultStatus.FAIL, msg);
-        }
-
+        repoAuthConfigRepository.delete(repoAuthConfig);
         BuildTools.removeCodeUpdater(repoAuthConfig.getName());
         return Result.result(ResultStatus.SUCCESS);
     }

+ 1 - 1
web/src/main/java/cn/reghao/devops/web/mgr/machine/controller/MachineHostController.java

@@ -60,7 +60,7 @@ public class MachineHostController {
 
     @PostMapping(value = "/deprecate", produces = MediaType.APPLICATION_JSON_VALUE)
     public String deleteAll(@RequestParam(value = "ids") List<String> machineIds) {
-        Result result = hostService.batchDelete(machineIds);
+        Result result = hostService.updateMachineStat(machineIds);
         return WebResult.result(result);
     }
 }

+ 3 - 0
web/src/main/java/cn/reghao/devops/web/mgr/machine/db/repository/MachineHostRepository.java

@@ -14,7 +14,10 @@ import java.util.List;
  */
 public interface MachineHostRepository
         extends JpaRepository<MachineHost, Integer>, JpaSpecificationExecutor<MachineHost> {
+    void deleteByMachineId(String machineId);
+
     MachineHost findByMachineId(String machineId);
+    MachineHost findByMachineIpv4(String machineIpv4);
     Page<MachineHost> findByEnv(String env, Pageable pageable);
     List<MachineHost> findByEnv(String env);
 }

+ 4 - 1
web/src/main/java/cn/reghao/devops/web/mgr/machine/db/repository/MachineInfoRepository.java

@@ -1,6 +1,9 @@
 package cn.reghao.devops.web.mgr.machine.db.repository;
 
+import cn.reghao.devops.web.mgr.machine.model.po.MachineHost;
 import cn.reghao.devops.web.mgr.machine.model.po.MachineInfo;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
@@ -14,10 +17,10 @@ import java.util.List;
  * @date 2020-01-21 14:53:03
  */
 public interface MachineInfoRepository extends JpaRepository<MachineInfo, Integer>, JpaSpecificationExecutor<MachineInfo> {
+    void deleteByMachineId(String machineId);
     @Query("update MachineInfo u set u.stat=:stat where u.machineId=:machineId")
     @Modifying
     void updateMachineInfoByMachineId(@Param("machineId") String machineId, @Param("stat") int stat);
-    void deleteByMachineId(String machineId);
 
     MachineInfo findByMachineId(String machineId);
     List<MachineInfo> findByStat(int stat);

+ 1 - 1
web/src/main/java/cn/reghao/devops/web/mgr/machine/service/MachineHostService.java

@@ -13,5 +13,5 @@ public interface MachineHostService {
     void setEnv(String machineId, String env);
     void setSshAuth(String machineId, SshAuth sshAuth);
     Result delete(String machineId);
-    Result batchDelete(List<String> machineIds);
+    Result updateMachineStat(List<String> machineIds);
 }

+ 13 - 21
web/src/main/java/cn/reghao/devops/web/mgr/machine/service/MachineHostServiceImpl.java

@@ -1,7 +1,6 @@
 package cn.reghao.devops.web.mgr.machine.service;
 
-import cn.reghao.devops.web.mgr.app.db.repository.log.DeployLogRepository;
-import cn.reghao.devops.web.mgr.app.service.config.AppDeployConfigService;
+import cn.reghao.devops.web.mgr.app.service.bd.DeployStat;
 import cn.reghao.devops.web.mgr.machine.db.repository.MachineHostRepository;
 import cn.reghao.devops.web.mgr.machine.db.repository.MachineInfoRepository;
 import cn.reghao.devops.web.mgr.machine.model.po.MachineHost;
@@ -25,16 +24,15 @@ public class MachineHostServiceImpl implements MachineHostService {
     private final MachineHostRepository machineHostRepository;
     private final MachineInfoRepository machineInfoRepository;
     private final MachineService machineService;
-    private final AppDeployConfigService deployConfigService;
-    private DeployLogRepository deployLogRepository;
+    private final DeployStat deployStat;
 
     public MachineHostServiceImpl(MachineHostRepository machineHostRepository,
                                   MachineInfoRepository machineInfoRepository,
-                                  MachineService machineService, AppDeployConfigService deployConfigService) {
+                                  MachineService machineService, DeployStat deployStat) {
         this.machineHostRepository = machineHostRepository;
         this.machineInfoRepository = machineInfoRepository;
         this.machineService = machineService;
-        this.deployConfigService = deployConfigService;
+        this.deployStat = deployStat;
     }
 
     @Override
@@ -61,30 +59,24 @@ public class MachineHostServiceImpl implements MachineHostService {
             return Result.result(ResultStatus.FAIL, "机器当前在线, 不能删除");
         }
 
-        MachineHost machineHost = machineHostRepository.findByMachineId(machineId);
-        // AppDeploying -> AppDeployConfig -> MachineInfo
-        if (machineHost != null) {
-            deployConfigService.delete(machineHost);
-            deleteMachine(machineHost);
-        }
-
+        machineHostRepository.deleteByMachineId(machineId);
+        machineInfoRepository.deleteByMachineId(machineId);
         return Result.result(ResultStatus.SUCCESS);
     }
 
-    private void checkDependencies(MachineHost machineHost) {
-        // AppDeploying -> AppDeployConfig -> DeployLog
-    }
+    private void deleteMachine(String machineId) {
+        MachineHost machineHost = machineHostRepository.findByMachineId(machineId);
 
-    private void deleteMachine(MachineHost machineHost) {
-        deployLogRepository.deleteByMachineHost(machineHost);
-        machineHostRepository.delete(machineHost);
-        String machineId = machineHost.getMachineId();
+        // AppDeploying -> AppDeployConfig -> MachineInfo
+        // AppDeploying -> AppDeployConfig -> DeployLog
+        deployStat.deleteByMachineHost(machineHost);
+        machineHostRepository.deleteByMachineId(machineId);
         machineInfoRepository.deleteByMachineId(machineId);
     }
 
     @Transactional
     @Override
-    public Result batchDelete(List<String> machineIds) {
+    public Result updateMachineStat(List<String> machineIds) {
         for (String machineId : machineIds) {
             MachineInfo machineInfo = machineInfoRepository.findByMachineId(machineId);
             if (machineInfo != null && machineInfo.getStat() != 1) {

+ 8 - 1
web/src/main/java/cn/reghao/devops/web/mgr/machine/service/MachineService.java

@@ -1,6 +1,7 @@
 package cn.reghao.devops.web.mgr.machine.service;
 
 import cn.reghao.devops.common.msg.constant.NodeStatus;
+import cn.reghao.devops.web.mgr.machine.db.repository.MachineHostRepository;
 import cn.reghao.devops.web.mgr.machine.db.repository.MachineInfoRepository;
 import cn.reghao.devops.web.mgr.machine.model.po.MachineHost;
 import cn.reghao.devops.web.mgr.machine.model.po.MachineInfo;
@@ -20,9 +21,11 @@ import java.util.stream.Collectors;
  */
 @Service
 public class MachineService {
+    private final MachineHostRepository machineHostRepository;
     private final MachineInfoRepository machineInfoRepository;
 
-    public MachineService(MachineInfoRepository machineInfoRepository) {
+    public MachineService(MachineHostRepository machineHostRepository, MachineInfoRepository machineInfoRepository) {
+        this.machineHostRepository = machineHostRepository;
         this.machineInfoRepository = machineInfoRepository;
     }
 
@@ -72,4 +75,8 @@ public class MachineService {
 
         return machineInfo.getStat() == 1;
     }
+
+    public MachineHost getMachineHost(String machineId) {
+        return machineHostRepository.findByMachineId(machineId);
+    }
 }

+ 1 - 4
web/src/main/java/cn/reghao/devops/web/mgr/machine/service/page/MachineHostPageImpl.java

@@ -27,13 +27,10 @@ import java.util.stream.Collectors;
 public class MachineHostPageImpl implements MachineHostPage {
     private final MachineHostRepository machineHostRepository;
     private final MachineInfoRepository machineInfoRepository;
-    private final MachineService machineService;
 
-    public MachineHostPageImpl(MachineHostRepository machineHostRepository, MachineInfoRepository machineInfoRepository,
-                               MachineService machineService) {
+    public MachineHostPageImpl(MachineHostRepository machineHostRepository, MachineInfoRepository machineInfoRepository) {
         this.machineHostRepository = machineHostRepository;
         this.machineInfoRepository = machineInfoRepository;
-        this.machineService = machineService;
     }
 
     @Override

+ 9 - 7
web/src/main/java/cn/reghao/devops/web/ws/event/MachineEventService.java

@@ -1,6 +1,6 @@
 package cn.reghao.devops.web.ws.event;
 
-import cn.reghao.devops.web.mgr.app.service.bd.AppStat;
+import cn.reghao.devops.web.mgr.app.service.bd.RunStat;
 import cn.reghao.devops.web.mgr.app.service.bd.DeployStat;
 import cn.reghao.devops.common.agent.app.dto.AppInfo;
 import cn.reghao.devops.common.msg.event.EvtAgentHeartbeat;
@@ -27,14 +27,14 @@ public class MachineEventService {
     private final MachineInfoRepository machineInfoRepository;
     private final MachineHostRepository machineHostRepository;
     private final DeployStat deployStat;
-    private final AppStat appStat;
+    private final RunStat runStat;
 
     public MachineEventService(MachineInfoRepository machineInfoRepository, MachineHostRepository machineHostRepository,
-                               DeployStat deployStat, AppStat appStat) {
+                               DeployStat deployStat, RunStat runStat) {
         this.machineInfoRepository = machineInfoRepository;
         this.machineHostRepository = machineHostRepository;
         this.deployStat = deployStat;
-        this.appStat = appStat;
+        this.runStat = runStat;
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -54,14 +54,16 @@ public class MachineEventService {
 
             MachineHost hostEntity = machineHostRepository.findByMachineId(machineId);
             String machineIpv4 = infoEntity.getMachineIpv4();
-            hostEntity.setMachineIpv4(machineIpv4);
-            machineHostRepository.save(hostEntity);
+            if (!hostEntity.getMachineIpv4().equals(machineIpv4)) {
+                hostEntity.setMachineIpv4(machineIpv4);
+                machineHostRepository.save(hostEntity);
+            }
         }
 
         // 向 agent 发送 EvtAppStat 事件, 获取应用的状态
         List<AppInfo> list = deployStat.getAppsByMachineId(machineId);
         if (!list.isEmpty()) {
-            appStat.getStat(machineId, list);
+            runStat.getStat(machineId, list);
         }
     }