大声道撒旦

This commit is contained in:
dengqichen 2024-12-31 15:10:51 +08:00
parent dfccf732ab
commit 0b40047fc6
6 changed files with 89 additions and 12 deletions

View File

@ -1,6 +1,7 @@
package com.qqchen.deploy.backend.deploy.api; package com.qqchen.deploy.backend.deploy.api;
import com.qqchen.deploy.backend.deploy.dto.BuildConfigDefinedDTO; 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.dto.DeployAppConfigDTO;
import com.qqchen.deploy.backend.deploy.entity.DeployAppConfig; import com.qqchen.deploy.backend.deploy.entity.DeployAppConfig;
import com.qqchen.deploy.backend.deploy.query.DeployAppConfigQuery; 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.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; 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.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -41,4 +45,11 @@ public class DeployAppConfigApiController extends BaseController<DeployAppConfig
protected void exportData(HttpServletResponse response, List<DeployAppConfigDTO> data) { protected void exportData(HttpServletResponse response, List<DeployAppConfigDTO> data) {
} }
@Operation(summary = "部署服务")
@PostMapping("/deploy")
public Response<Void> deploy(@Validated @RequestBody DeployAppBuildDTO dto) {
deployAppConfigService.deploy(dto);
return Response.success();
}
} }

View File

@ -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;
}

View File

@ -33,6 +33,9 @@ public class DeployAppConfigDTO extends BaseDTO {
@Schema(description = "已发布的流程定义") @Schema(description = "已发布的流程定义")
private WorkflowDefinitionDTO publishedWorkflowDefinition; private WorkflowDefinitionDTO publishedWorkflowDefinition;
@Schema(description = "表单配置")
private JsonNode formVariablesSchema;
@Schema(description = "构建配置") @Schema(description = "构建配置")
@NotNull(message = "构建配置不能为空") @NotNull(message = "构建配置不能为空")
private JsonNode buildVariables; private JsonNode buildVariables;

View File

@ -1,6 +1,7 @@
package com.qqchen.deploy.backend.deploy.service; package com.qqchen.deploy.backend.deploy.service;
import com.qqchen.deploy.backend.deploy.dto.BuildConfigDefinedDTO; 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.dto.DeployAppConfigDTO;
import com.qqchen.deploy.backend.deploy.entity.DeployAppConfig; import com.qqchen.deploy.backend.deploy.entity.DeployAppConfig;
import com.qqchen.deploy.backend.deploy.query.DeployAppConfigQuery; import com.qqchen.deploy.backend.deploy.query.DeployAppConfigQuery;
@ -20,4 +21,6 @@ public interface IDeployAppConfigService extends IBaseService<DeployAppConfig, D
* @return Schema定义列表 * @return Schema定义列表
*/ */
List<BuildConfigDefinedDTO> defined(); List<BuildConfigDefinedDTO> defined();
void deploy(DeployAppBuildDTO dto);
} }

View File

@ -1,29 +1,32 @@
package com.qqchen.deploy.backend.deploy.service.impl; 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.converter.ApplicationConverter;
import com.qqchen.deploy.backend.deploy.dto.BuildConfigDefinedDTO; 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.dto.DeployAppConfigDTO;
import com.qqchen.deploy.backend.deploy.entity.Application; import com.qqchen.deploy.backend.deploy.entity.Application;
import com.qqchen.deploy.backend.deploy.entity.DeployAppConfig; 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.BuildTypeEnum;
import com.qqchen.deploy.backend.deploy.enums.DevelopmentLanguageTypeEnum; import com.qqchen.deploy.backend.deploy.enums.DevelopmentLanguageTypeEnum;
import com.qqchen.deploy.backend.deploy.query.DeployAppConfigQuery; import com.qqchen.deploy.backend.deploy.query.DeployAppConfigQuery;
import com.qqchen.deploy.backend.deploy.repository.IApplicationRepository; 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.deploy.service.IDeployAppConfigService;
import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl; import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl;
import com.qqchen.deploy.backend.workflow.converter.WorkflowDefinitionConverter; 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.entity.WorkflowDefinition;
import com.qqchen.deploy.backend.workflow.repository.IWorkflowDefinitionRepository; 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 jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -46,9 +49,16 @@ public class DeployAppConfigServiceImpl extends BaseServiceImpl<DeployAppConfig,
@Resource @Resource
private IWorkflowDefinitionRepository workflowDefinitionRepository; private IWorkflowDefinitionRepository workflowDefinitionRepository;
@Resource
private IWorkflowInstanceService workflowInstanceService;
@Resource @Resource
private WorkflowDefinitionConverter workflowDefinitionConverter; private WorkflowDefinitionConverter workflowDefinitionConverter;
@Resource
private IEnvironmentRepository environmentRepository;
@Override @Override
public Page<DeployAppConfigDTO> page(DeployAppConfigQuery query) { public Page<DeployAppConfigDTO> page(DeployAppConfigQuery query) {
Page<DeployAppConfigDTO> page = super.page(query); Page<DeployAppConfigDTO> page = super.page(query);
@ -91,6 +101,19 @@ public class DeployAppConfigServiceImpl extends BaseServiceImpl<DeployAppConfig,
return result; return result;
} }
@Override
@Transactional
public void deploy(DeployAppBuildDTO dto) {
WorkflowDefinition workflowDefinition = workflowDefinitionRepository.findById(dto.getWorkflowDefinitionId()).orElseThrow(() -> 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 @Override
public DeployAppConfigDTO create(DeployAppConfigDTO dto) { public DeployAppConfigDTO create(DeployAppConfigDTO dto) {
DeployAppConfig entity = converter.toEntity(dto); DeployAppConfig entity = converter.toEntity(dto);

View File

@ -1,23 +1,14 @@
package com.qqchen.deploy.backend.workflow.dto; 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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime;
@Data @Data
@Schema(description = "工作流实例启动入参") @Schema(description = "工作流实例启动入参")
public class WorkflowInstanceStartRequest { public class WorkflowInstanceStartRequest {
private String processKey; private String processKey;
/**
* 业务标识
*/
private String businessKey; private String businessKey;