From 0b40047fc64f204f6130eae938256871f505b190 Mon Sep 17 00:00:00 2001 From: dengqichen Date: Tue, 31 Dec 2024 15:10:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=A3=B0=E9=81=93=E6=92=92=E6=97=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/DeployAppConfigApiController.java | 11 +++++ .../backend/deploy/dto/DeployAppBuildDTO.java | 46 +++++++++++++++++++ .../deploy/dto/DeployAppConfigDTO.java | 3 ++ .../service/IDeployAppConfigService.java | 3 ++ .../impl/DeployAppConfigServiceImpl.java | 29 ++++++++++-- .../dto/WorkflowInstanceStartRequest.java | 9 ---- 6 files changed, 89 insertions(+), 12 deletions(-) create mode 100644 backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/DeployAppBuildDTO.java diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/DeployAppConfigApiController.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/DeployAppConfigApiController.java index 494664d8..bf859625 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/DeployAppConfigApiController.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/DeployAppConfigApiController.java @@ -1,6 +1,7 @@ package com.qqchen.deploy.backend.deploy.api; import com.qqchen.deploy.backend.deploy.dto.BuildConfigDefinedDTO; +import com.qqchen.deploy.backend.deploy.dto.DeployAppBuildDTO; import com.qqchen.deploy.backend.deploy.dto.DeployAppConfigDTO; import com.qqchen.deploy.backend.deploy.entity.DeployAppConfig; import com.qqchen.deploy.backend.deploy.query.DeployAppConfigQuery; @@ -12,7 +13,10 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -41,4 +45,11 @@ public class DeployAppConfigApiController extends BaseController data) { } + + @Operation(summary = "部署服务") + @PostMapping("/deploy") + public Response deploy(@Validated @RequestBody DeployAppBuildDTO dto) { + deployAppConfigService.deploy(dto); + return Response.success(); + } } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/DeployAppBuildDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/DeployAppBuildDTO.java new file mode 100644 index 00000000..8a984399 --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/DeployAppBuildDTO.java @@ -0,0 +1,46 @@ +package com.qqchen.deploy.backend.deploy.dto; + +import com.fasterxml.jackson.databind.JsonNode; +import com.qqchen.deploy.backend.deploy.enums.BuildTypeEnum; +import com.qqchen.deploy.backend.deploy.enums.DevelopmentLanguageTypeEnum; +import com.qqchen.deploy.backend.framework.dto.BaseDTO; +import com.qqchen.deploy.backend.workflow.dto.WorkflowDefinitionDTO; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用配置DTO + */ +@Data +@Schema(description = "应用配置") +@EqualsAndHashCode(callSuper = true) +public class DeployAppBuildDTO extends BaseDTO { + + @Schema(description = "构建类型") + @NotNull(message = "构建类型不能为空") + private BuildTypeEnum buildType; + + @NotNull(message = "应用语言不能为空") + private DevelopmentLanguageTypeEnum languageType; + + @Schema(description = "表单配置") + private JsonNode formVariables; + + @Schema(description = "构建配置") + @NotNull(message = "构建配置不能为空") + private JsonNode buildVariables; + + @Schema(description = "环境ID") + @NotNull(message = "环境ID不能为空") + private Long environmentId; + + @Schema(description = "应用ID") + @NotNull(message = "应用ID不能为空") + private Long applicationId; + + @NotNull(message = "已发布的流程定义ID") + private Long workflowDefinitionId; + +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/DeployAppConfigDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/DeployAppConfigDTO.java index c207dd14..a538b33c 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/DeployAppConfigDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/DeployAppConfigDTO.java @@ -33,6 +33,9 @@ public class DeployAppConfigDTO extends BaseDTO { @Schema(description = "已发布的流程定义") private WorkflowDefinitionDTO publishedWorkflowDefinition; + @Schema(description = "表单配置") + private JsonNode formVariablesSchema; + @Schema(description = "构建配置") @NotNull(message = "构建配置不能为空") private JsonNode buildVariables; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IDeployAppConfigService.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IDeployAppConfigService.java index 2da64e7d..7ae702cc 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IDeployAppConfigService.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IDeployAppConfigService.java @@ -1,6 +1,7 @@ package com.qqchen.deploy.backend.deploy.service; import com.qqchen.deploy.backend.deploy.dto.BuildConfigDefinedDTO; +import com.qqchen.deploy.backend.deploy.dto.DeployAppBuildDTO; import com.qqchen.deploy.backend.deploy.dto.DeployAppConfigDTO; import com.qqchen.deploy.backend.deploy.entity.DeployAppConfig; import com.qqchen.deploy.backend.deploy.query.DeployAppConfigQuery; @@ -20,4 +21,6 @@ public interface IDeployAppConfigService extends IBaseService defined(); + + void deploy(DeployAppBuildDTO dto); } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployAppConfigServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployAppConfigServiceImpl.java index 040323d7..754e5625 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployAppConfigServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployAppConfigServiceImpl.java @@ -1,29 +1,32 @@ package com.qqchen.deploy.backend.deploy.service.impl; -import com.fasterxml.jackson.databind.node.ObjectNode; import com.qqchen.deploy.backend.deploy.converter.ApplicationConverter; import com.qqchen.deploy.backend.deploy.dto.BuildConfigDefinedDTO; +import com.qqchen.deploy.backend.deploy.dto.DeployAppBuildDTO; import com.qqchen.deploy.backend.deploy.dto.DeployAppConfigDTO; import com.qqchen.deploy.backend.deploy.entity.Application; import com.qqchen.deploy.backend.deploy.entity.DeployAppConfig; +import com.qqchen.deploy.backend.deploy.entity.Environment; import com.qqchen.deploy.backend.deploy.enums.BuildTypeEnum; import com.qqchen.deploy.backend.deploy.enums.DevelopmentLanguageTypeEnum; import com.qqchen.deploy.backend.deploy.query.DeployAppConfigQuery; import com.qqchen.deploy.backend.deploy.repository.IApplicationRepository; +import com.qqchen.deploy.backend.deploy.repository.IEnvironmentRepository; import com.qqchen.deploy.backend.deploy.service.IDeployAppConfigService; import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl; import com.qqchen.deploy.backend.workflow.converter.WorkflowDefinitionConverter; +import com.qqchen.deploy.backend.workflow.dto.WorkflowInstanceStartRequest; import com.qqchen.deploy.backend.workflow.entity.WorkflowDefinition; import com.qqchen.deploy.backend.workflow.repository.IWorkflowDefinitionRepository; -import com.qqchen.deploy.backend.workflow.util.GenerateSchemaUtils; +import com.qqchen.deploy.backend.workflow.service.IWorkflowInstanceService; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Optional; @@ -46,9 +49,16 @@ public class DeployAppConfigServiceImpl extends BaseServiceImpl page(DeployAppConfigQuery query) { Page page = super.page(query); @@ -91,6 +101,19 @@ public class DeployAppConfigServiceImpl extends BaseServiceImpl new RuntimeException("Workflow definition not found: " + dto.getWorkflowDefinitionId())); + Environment environment = environmentRepository.findById(dto.getEnvironmentId()).orElseThrow(() -> new RuntimeException("Environment not found: " + dto.getEnvironmentId())); + Application application = applicationRepository.findById(dto.getApplicationId()).orElseThrow(() -> new RuntimeException("Application not found: " + dto.getApplicationId())); + + WorkflowInstanceStartRequest request = new WorkflowInstanceStartRequest(); + request.setProcessKey(workflowDefinition.getKey()); + request.setBusinessKey(environment.getEnvCode() + "_" + application.getAppCode() + "_" + System.currentTimeMillis() / 1000); + workflowInstanceService.startWorkflow(request); + } + @Override public DeployAppConfigDTO create(DeployAppConfigDTO dto) { DeployAppConfig entity = converter.toEntity(dto); diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowInstanceStartRequest.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowInstanceStartRequest.java index 875e863f..0e31a34b 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowInstanceStartRequest.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/WorkflowInstanceStartRequest.java @@ -1,23 +1,14 @@ package com.qqchen.deploy.backend.workflow.dto; -import com.qqchen.deploy.backend.framework.dto.BaseDTO; -import com.qqchen.deploy.backend.workflow.enums.WorkflowInstanceStatusEnums; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import java.time.LocalDateTime; - @Data @Schema(description = "工作流实例启动入参") public class WorkflowInstanceStartRequest { - private String processKey; - - /** - * 业务标识 - */ private String businessKey;