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

web 模块更改为 restful 服

reghao 3 месяцев назад
Родитель
Сommit
49c00ba108

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/devops/app/controller/AppConfigController.java

@@ -1,5 +1,6 @@
 package cn.reghao.bnt.web.devops.app.controller;
 
+import cn.reghao.bnt.web.devops.app.model.vo.AppConfigDetail;
 import cn.reghao.bnt.web.util.SelectOption;
 import cn.reghao.bnt.web.devops.app.model.dto.AppConfigDto;
 import cn.reghao.bnt.web.devops.app.model.dto.AppConfigUpdateDto;
@@ -20,7 +21,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.http.MediaType;
-import org.springframework.ui.Model;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
@@ -101,9 +101,9 @@ public class AppConfigController {
 
     @Operation(summary = "应用配置详情页面", description = "N")
     @GetMapping("/detail")
-    public String appConfigPage(@RequestParam("appId") String appId, Model model) {
+    public String appConfigPage(@RequestParam("appId") String appId) {
         AppConfig app = appBuildQuery.getAppConfig(appId);
-        return WebResult.success(app);
+        return WebResult.success(new AppConfigDetail(app));
     }
 
     @Operation(summary = "应用绑定的域名", description = "N")

+ 38 - 69
web/src/main/java/cn/reghao/bnt/web/devops/app/controller/BuildDeployController.java

@@ -16,7 +16,6 @@ import cn.reghao.bnt.web.devops.app.service.bd.BuildApp;
 import cn.reghao.bnt.web.util.StringUtil;
 import cn.reghao.jutil.jdk.web.result.Result;
 import cn.reghao.jutil.web.WebResult;
-import cn.reghao.jutil.web.ServletUtil;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
@@ -24,7 +23,6 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Sort;
 import org.springframework.http.MediaType;
-import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -68,13 +66,6 @@ public class BuildDeployController {
         PageRequest pageRequest = PageRequest.of(pageNumber-1, pageSize, sort);
         Page<AppBuildingVO> page = appBuildQuery.getByPage(env, appType, pageRequest);
         PageList<AppBuildingVO> pageList = getPageList(page);
-        /*model.addAttribute("env", env);
-        model.addAttribute("type", type);
-        model.addAttribute("envList", envList);
-        model.addAttribute("appTypes", appTypes);
-        model.addAttribute("page", page);
-        model.addAttribute("list", page.getContent());
-        model.addAttribute("query", queryParams.toString());*/
         return WebResult.success(pageList);
     }
 
@@ -88,27 +79,35 @@ public class BuildDeployController {
 
     @Operation(summary = "构建任务页面", description = "N")
     @GetMapping(value = "/task")
-    public String buildTaskPage(Model model) {
+    public String buildTaskPage() {
         List<BuildTask> list = buildApp.getBuildTasks();
-        model.addAttribute("list", list);
-        return "/admin/devops/app/bd_task";
+        return WebResult.success(list);
+    }
+
+    @Operation(summary = "重置应用构建状态", description = "N")
+    @PostMapping(value = "/reset", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String resetState() {
+        appBuildService.resetBuildStat();
+        return WebResult.success("构建状态已重置");
+    }
+
+    @Operation(summary = "取消构建任务", description = "N")
+    @PostMapping(value = "/cancel_task", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String cancelTask(String appId) {
+        //buildApp.cancelTask(appId);
+        return WebResult.failWithMsg("接口未实现");
     }
 
     @Operation(summary = "应用部署页面", description = "N")
     @GetMapping("/deploy")
-    public String deployPage(@RequestParam("appId") String appId,
-                             @RequestParam("buildLogId") String buildLogId,
-                             Model model) {
+    public String deployPage(@RequestParam("appId") String appId) {
         List<AppDeployingNodeVO> list = appDeployQuery.get(appId);
-        model.addAttribute("appId", appId);
-        model.addAttribute("buildLogId", buildLogId);
-        model.addAttribute("list", list);
-        return "/admin/devops/app/bd_deploy";
+        return WebResult.success(list);
     }
 
     @Operation(summary = "构建结果页面", description = "N")
     @GetMapping("/result")
-    public String buildLogResultPage(@RequestParam("buildLogId") String buildLogId, Model model) {
+    public String buildLogResultPage(@RequestParam("buildLogId") String buildLogId) {
         String content;
         if (NotAvailable.na.getDesc().equals(buildLogId)) {
             content = "构建结果暂不可用";
@@ -117,47 +116,45 @@ public class BuildDeployController {
         }
 
         String html = StringUtil.txtToHtml(content);
-        model.addAttribute("content", html);
-        return "/admin/devops/app/bd_result";
+        return WebResult.success(html);
     }
 
     @Operation(summary = "历史构建页面", description = "N")
     @GetMapping("/history")
-    public String buildLogPage(@RequestParam("appId") String appId, Model model) {
-        int pageNumber = Integer.parseInt(ServletUtil.getRequestParam("pageNo", "1"));
+    public String buildLogPage(@RequestParam("pn") int pageNumber, @RequestParam("appId") String appId) {
         Sort sort = Sort.by(Sort.Direction.DESC, "createTime");
         PageRequest pageRequest = PageRequest.of(pageNumber-1, pageSize, sort);
         Page<BuildLogVO> buildLogs = appBuildQuery.buildLogVOs(appId, pageRequest);
+        PageList<BuildLogVO> pageList = getPageList1(buildLogs);
+        return WebResult.success(pageList);
+    }
 
-        String queryParams = "?appId=" + appId;
-        model.addAttribute("appId", appId);
-        model.addAttribute("page", buildLogs);
-        model.addAttribute("list", buildLogs.getContent());
-        model.addAttribute("query", queryParams);
-        return "/admin/devops/app/bd_history";
+    private PageList<BuildLogVO> getPageList1(Page<BuildLogVO> page) {
+        int pageNumber = page.getNumber() + 1;
+        int pageSize = page.getSize();
+        long total = page.getTotalElements();
+        List<BuildLogVO> list = page.getContent();
+        return PageList.pageList(pageNumber, pageSize, (int) total, list);
     }
 
     @Operation(summary = "构建配置页面", description = "N")
     @GetMapping("/config")
-    public String buildConfigPage(@RequestParam("buildLogId") String buildLogId, Model model) {
+    public String buildConfigPage(@RequestParam("buildLogId") String buildLogId) {
         BuildLog buildLog = appBuildQuery.getBuildLog(buildLogId);
         BuildConfigSnapshot buildConfigSnapshot = buildLog.getBuildConfigSnapshot();
-        model.addAttribute("buildConfigSnapshot", buildConfigSnapshot);
-        return "/admin/devops/app/bd_config";
+        return WebResult.success(buildConfigSnapshot);
     }
 
     @Operation(summary = "构建耗时页面", description = "N")
     @GetMapping("/consumed")
-    public String buildTimePage(@RequestParam("buildLogId") String buildLogId, Model model) {
+    public String buildTimePage(@RequestParam("buildLogId") String buildLogId) {
         BuildLog buildLog = appBuildQuery.getBuildLog(buildLogId);
         BuildConsumed buildConsumed = buildLog.getBuildConsumed();
-        model.addAttribute("buildConsumed", buildConsumed);
-        return "/admin/devops/app/bd_consumed";
+        return WebResult.success(buildConsumed);
     }
 
     @Operation(summary = "构建部署应用", description = "N")
     @PostMapping(value = "/update", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ResponseBody
     public String buildAndDeploy(String appId) throws Exception {
         Result result = buildApp.buildAndDeploy(appId, true);
         return WebResult.result(result);
@@ -165,7 +162,6 @@ public class BuildDeployController {
 
     @Operation(summary = "构建应用", description = "N")
     @PostMapping(value = "/build", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ResponseBody
     public String build(String appId) throws Exception {
         Result result = buildApp.buildAndDeploy(appId, false);
         return WebResult.result(result);
@@ -173,7 +169,6 @@ public class BuildDeployController {
 
     @Operation(summary = "部署应用", description = "N")
     @PostMapping(value = "/deploy", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ResponseBody
     public String deploy(String buildLogId, String machineId)
             throws Exception {
         if (buildLogId == null || buildLogId.equals("null")) {
@@ -185,55 +180,29 @@ public class BuildDeployController {
     }
 
     @Operation(summary = "构建包下载接口", description = "N")
-    @GetMapping("/dl")
-    public String dlPackage(String buildLogId) {
+    @GetMapping(value = "/package_url", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String packageUrl(@RequestParam("buildLogId") String buildLogId) throws Exception {
         /*try {
             String filename = buildLogId;
             getApp.dlPackage(filename);
         } catch (Exception e) {
             log.error(e.getMessage());
         }*/
-        return "redirect:/bg/app/bd/build";
+        String packageUrl = getApp.packageUrl(buildLogId);
+        return WebResult.successWithMsg(packageUrl);
     }
 
     @Operation(summary = "删除构建", description = "N")
     @PostMapping(value = "/delete", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ResponseBody
     public String deleteBuild(String buildLogId) throws Exception {
         appBuildService.deleteBuildLog(buildLogId);
         return WebResult.success();
     }
 
-    @Operation(summary = "重置应用构建状态", description = "N")
-    @PostMapping(value = "/reset", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ResponseBody
-    public String resetState() {
-        appBuildService.resetBuildStat();
-        return WebResult.success("构建状态已重置");
-    }
-
-    @Operation(summary = "取消构建任务", description = "N")
-    @PostMapping(value = "/cancel_task", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ResponseBody
-    public String cancelTask(String appId) {
-        //buildApp.cancelTask(appId);
-        return WebResult.failWithMsg("接口未实现");
-    }
-
     @Operation(summary = "webhook 自动构建部署", description = "N")
     @PostMapping("/hook")
-    @ResponseBody
     public String hook(@RequestBody String body) throws Exception {
         webhookService.handle(body);
         return WebResult.success();
     }
-
-    @Operation(summary = "构建包下载接口", description = "N")
-    @GetMapping(value = "/packageurl", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ResponseBody
-    @Deprecated
-    public String packageUrl(@RequestParam("buildLogId") String buildLogId) throws Exception {
-        String packageUrl = getApp.packageUrl(buildLogId);
-        return WebResult.successWithMsg(packageUrl);
-    }
 }

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

@@ -0,0 +1,45 @@
+package cn.reghao.bnt.web.devops.app.model.vo;
+
+import cn.reghao.bnt.web.devops.app.model.po.config.AppConfig;
+
+/**
+ * @author reghao
+ * @date 2025-12-02 10:03:22
+ */
+public class AppConfigDetail {
+    private String appId;
+    private String appName;
+    private String appType;
+    private String env;
+    private String appRepo;
+    private String repoBranch;
+
+    /* 构建配置 */
+    private String projDirname;
+    private String appRootPath;
+    private String bindPorts;
+    private String healthCheck;
+    private String domains;
+
+    // buildConfig
+    private String repoAuthConfig;
+    private String compilerConfig;
+    private String packerConfig;
+    private String dockerfile;
+
+    public AppConfigDetail(AppConfig appConfig) {
+        this.appId = appConfig.getAppId();
+        this.appName = appConfig.getAppName();
+        this.appType = appConfig.getAppType();
+        this.env = appConfig.getEnv();
+        this.appRepo = appConfig.getAppRepo();
+        this.repoBranch = appConfig.getRepoBranch();
+        this.appRootPath = appConfig.getAppRootPath();
+        this.bindPorts = appConfig.getBindPorts();
+
+        this.repoAuthConfig = appConfig.getRepoAuthConfig().getName();
+        this.compilerConfig = appConfig.getCompilerConfig().getName();
+        this.packerConfig = appConfig.getPackerConfig().getName();
+        this.dockerfile = appConfig.getDockerfile();
+    }
+}

+ 2 - 2
web/src/main/java/cn/reghao/bnt/web/devops/app/model/vo/BuildTask.java

@@ -10,13 +10,13 @@ import lombok.Getter;
 @Getter
 public class BuildTask {
     private String appId;
-    private String type;
+    private String appType;
     private String env;
     private String stat;
 
     public BuildTask(AppDto appDto, String stat) {
         this.appId = appDto.getAppId();
-        this.type = appDto.getAppType();
+        this.appType = appDto.getAppType();
         this.env = appDto.getEnv();
         this.stat = stat;
     }

+ 6 - 2
web/src/main/java/cn/reghao/bnt/web/devops/app/service/bd/impl/DeployAppImpl.java

@@ -64,8 +64,12 @@ public class DeployAppImpl implements DeployApp {
         BuildLog buildLog = appBuildQuery.getBuildLog(buildLogId);
         AppBuilding appBuilding = new AppBuilding(buildLog);
         String appId = appBuilding.getAppConfig().getAppId();
-        AppDeployConfig appDeployConfig = appDeployQuery.getByAppIdAndMachineId(appId, machineId);
-        deploy(appBuilding, appDeployConfig);
+        if (machineId == null || machineId.isBlank()) {
+            log.info("deploy app to all machines");
+        } else {
+            AppDeployConfig appDeployConfig = appDeployQuery.getByAppIdAndMachineId(appId, machineId);
+            deploy(appBuilding, appDeployConfig);
+        }
     }
 
     @Override