From 05cc791af5843e71d68ee03c5e75a7dee50c97ad Mon Sep 17 00:00:00 2001 From: dengqichen Date: Mon, 30 Dec 2024 11:10:13 +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/JenkinsSyncHistoryApiController.java | 28 ++++++++++++++ .../JenkinsManagerApiController.java | 1 - .../JenkinsSyncHistoryConverter.java | 13 +++++++ .../deploy/dto/JenkinsSyncHistoryDTO.java | 31 +++++++++++++++ .../deploy/entity/JenkinsSyncHistory.java | 21 +++++----- .../enums/ExternalSystemSyncStatus.java | 4 ++ .../backend/deploy/enums/JenkinsSyncType.java | 9 ++--- .../deploy/query/JenkinsSyncHistoryQuery.java | 38 +++++++++++++++++++ .../IJenkinsSyncHistoryRepository.java | 7 ++-- .../service/IJenkinsSyncHistoryService.java | 18 +++++++++ .../impl/JenkinsSyncHistoryServiceImpl.java | 32 ++++++++++++++++ .../service/impl/JenkinsViewServiceImpl.java | 11 +++--- .../db/migration/V1.0.0__init_schema.sql | 12 +----- 13 files changed, 192 insertions(+), 33 deletions(-) create mode 100644 backend/src/main/java/com/qqchen/deploy/backend/deploy/api/JenkinsSyncHistoryApiController.java delete mode 100644 backend/src/main/java/com/qqchen/deploy/backend/deploy/controller/JenkinsManagerApiController.java create mode 100644 backend/src/main/java/com/qqchen/deploy/backend/deploy/converter/JenkinsSyncHistoryConverter.java create mode 100644 backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/JenkinsSyncHistoryDTO.java create mode 100644 backend/src/main/java/com/qqchen/deploy/backend/deploy/query/JenkinsSyncHistoryQuery.java create mode 100644 backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IJenkinsSyncHistoryService.java create mode 100644 backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsSyncHistoryServiceImpl.java diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/JenkinsSyncHistoryApiController.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/JenkinsSyncHistoryApiController.java new file mode 100644 index 00000000..ac88b426 --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/JenkinsSyncHistoryApiController.java @@ -0,0 +1,28 @@ +package com.qqchen.deploy.backend.deploy.api; + +import com.qqchen.deploy.backend.framework.controller.BaseController; +import com.qqchen.deploy.backend.deploy.entity.JenkinsSyncHistory; +import com.qqchen.deploy.backend.deploy.dto.JenkinsSyncHistoryDTO; +import com.qqchen.deploy.backend.deploy.query.JenkinsSyncHistoryQuery; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import jakarta.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * Jenkin同步日志 Controller + */ +@Slf4j +@RestController +@RequestMapping("/api/v1//api/v1/jenkins-sync-history") +@Tag(name = "Jenkin同步日志管理", description = "Jenkin同步日志管理相关接口") +public class JenkinsSyncHistoryApiController extends BaseController { + + @Override + protected void exportData(HttpServletResponse response, List data) { + // TODO: 实现导出逻辑 + log.info("导出Jenkin同步日志数据,数据量:{}", data.size()); + } +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/controller/JenkinsManagerApiController.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/controller/JenkinsManagerApiController.java deleted file mode 100644 index 0519ecba..00000000 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/controller/JenkinsManagerApiController.java +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/converter/JenkinsSyncHistoryConverter.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/converter/JenkinsSyncHistoryConverter.java new file mode 100644 index 00000000..1ea6a252 --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/converter/JenkinsSyncHistoryConverter.java @@ -0,0 +1,13 @@ +package com.qqchen.deploy.backend.deploy.converter; + +import com.qqchen.deploy.backend.framework.converter.BaseConverter; +import com.qqchen.deploy.backend.deploy.entity.JenkinsSyncHistory; +import com.qqchen.deploy.backend.deploy.dto.JenkinsSyncHistoryDTO; +import org.mapstruct.Mapper; + +/** + * Jenkin同步日志 Converter + */ +@Mapper(config = BaseConverter.class) +public interface JenkinsSyncHistoryConverter extends BaseConverter { +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/JenkinsSyncHistoryDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/JenkinsSyncHistoryDTO.java new file mode 100644 index 00000000..6503e00e --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/JenkinsSyncHistoryDTO.java @@ -0,0 +1,31 @@ +package com.qqchen.deploy.backend.deploy.dto; + +import com.qqchen.deploy.backend.deploy.enums.ExternalSystemSyncStatus; +import com.qqchen.deploy.backend.deploy.enums.JenkinsSyncType; +import com.qqchen.deploy.backend.framework.dto.BaseDTO; +import jakarta.persistence.Column; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; + +/** + * Jenkin同步日志 DTO + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class JenkinsSyncHistoryDTO extends BaseDTO { + + private String number; + + private LocalDateTime endTime; + + private String errorMessage; + + private ExternalSystemSyncStatus status; + + private JenkinsSyncType syncType; + + private Long externalSystemId; + +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/JenkinsSyncHistory.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/JenkinsSyncHistory.java index 3a96a597..7630a811 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/JenkinsSyncHistory.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/JenkinsSyncHistory.java @@ -19,25 +19,28 @@ import java.time.LocalDateTime; @Table(name = "deploy_jenkins_sync_history") @LogicDelete public class JenkinsSyncHistory extends Entity { - - @Column(name = "external_system_id", nullable = false) - private Long external_system_id; - + + @Column(name = "sync_history_number", nullable = false) + private String number; + @Column(name = "sync_type", nullable = false) @Enumerated(EnumType.STRING) private JenkinsSyncType syncType; - + @Column(nullable = false) @Enumerated(EnumType.STRING) private ExternalSystemSyncStatus status; - + @Column(name = "start_time", nullable = false) private LocalDateTime startTime; - + @Column(name = "end_time") private LocalDateTime endTime; - + @Column(name = "error_message", columnDefinition = "TEXT") private String errorMessage; - + + @Column(name = "external_system_id", nullable = false) + private Long external_system_id; + } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/enums/ExternalSystemSyncStatus.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/enums/ExternalSystemSyncStatus.java index 8daa053a..d2c01186 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/enums/ExternalSystemSyncStatus.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/enums/ExternalSystemSyncStatus.java @@ -1,7 +1,11 @@ package com.qqchen.deploy.backend.deploy.enums; public enum ExternalSystemSyncStatus { + SUCCESS, // 同步成功 + FAILED, // 同步失败 + RUNNING // 同步中 + } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/enums/JenkinsSyncType.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/enums/JenkinsSyncType.java index a645ad1d..9047c995 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/enums/JenkinsSyncType.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/enums/JenkinsSyncType.java @@ -1,8 +1,7 @@ package com.qqchen.deploy.backend.deploy.enums; public enum JenkinsSyncType { - ALL, // 全量同步 - VIEW, // 同步视图 - JOB, // 同步作业 - BUILD // 同步构建记录 - } \ No newline at end of file + VIEW, // 同步视图 + JOB, // 同步作业 + BUILD // 同步构建记录 +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/query/JenkinsSyncHistoryQuery.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/query/JenkinsSyncHistoryQuery.java new file mode 100644 index 00000000..90c7f05d --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/query/JenkinsSyncHistoryQuery.java @@ -0,0 +1,38 @@ +package com.qqchen.deploy.backend.deploy.query; + +import com.qqchen.deploy.backend.deploy.enums.ExternalSystemSyncStatus; +import com.qqchen.deploy.backend.deploy.enums.JenkinsSyncType; +import com.qqchen.deploy.backend.framework.annotation.QueryField; +import com.qqchen.deploy.backend.framework.enums.QueryType; +import com.qqchen.deploy.backend.framework.query.BaseQuery; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; + +/** + * Jenkin同步日志查询对象 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class JenkinsSyncHistoryQuery extends BaseQuery { + + @QueryField(field = "end_time") + private LocalDateTime endTime; + + @QueryField(field = "error_message", type = QueryType.LIKE) + private String errorMessage; + + @QueryField(field = "external_system_id") + private Long externalSystemId; + + @QueryField(field = "start_time") + private LocalDateTime startTime; + + @QueryField(field = "status", type = QueryType.LIKE) + private ExternalSystemSyncStatus status; + + @QueryField(field = "sync_type", type = QueryType.LIKE) + private JenkinsSyncType syncType; + +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/IJenkinsSyncHistoryRepository.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/IJenkinsSyncHistoryRepository.java index 81ef2777..e3d2cd5b 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/IJenkinsSyncHistoryRepository.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/IJenkinsSyncHistoryRepository.java @@ -1,12 +1,13 @@ package com.qqchen.deploy.backend.deploy.repository; - import com.qqchen.deploy.backend.framework.repository.IBaseRepository; import com.qqchen.deploy.backend.deploy.entity.JenkinsSyncHistory; import org.springframework.stereotype.Repository; -import java.util.List; +/** + * Jenkin同步日志 Repository + */ @Repository public interface IJenkinsSyncHistoryRepository extends IBaseRepository { - List findTop50ByOrderByStartTimeDesc(); + JenkinsSyncHistory findByNumber(String number); } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IJenkinsSyncHistoryService.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IJenkinsSyncHistoryService.java new file mode 100644 index 00000000..ba068461 --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/IJenkinsSyncHistoryService.java @@ -0,0 +1,18 @@ +package com.qqchen.deploy.backend.deploy.service; + +import com.qqchen.deploy.backend.deploy.enums.ExternalSystemSyncStatus; +import com.qqchen.deploy.backend.deploy.enums.JenkinsSyncType; +import com.qqchen.deploy.backend.framework.service.IBaseService; +import com.qqchen.deploy.backend.deploy.entity.JenkinsSyncHistory; +import com.qqchen.deploy.backend.deploy.dto.JenkinsSyncHistoryDTO; +import com.qqchen.deploy.backend.deploy.query.JenkinsSyncHistoryQuery; + +/** + * Jenkin同步日志 Service接口 + */ +public interface IJenkinsSyncHistoryService extends IBaseService { + + + void saveOrUpdateHistory(JenkinsSyncHistoryDTO syncHistory); + +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsSyncHistoryServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsSyncHistoryServiceImpl.java new file mode 100644 index 00000000..c68cc275 --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsSyncHistoryServiceImpl.java @@ -0,0 +1,32 @@ +package com.qqchen.deploy.backend.deploy.service.impl; + +import com.qqchen.deploy.backend.deploy.enums.ExternalSystemSyncStatus; +import com.qqchen.deploy.backend.deploy.enums.JenkinsSyncType; +import com.qqchen.deploy.backend.deploy.repository.IJenkinsSyncHistoryRepository; +import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl; +import com.qqchen.deploy.backend.deploy.entity.JenkinsSyncHistory; +import com.qqchen.deploy.backend.deploy.dto.JenkinsSyncHistoryDTO; +import com.qqchen.deploy.backend.deploy.query.JenkinsSyncHistoryQuery; +import com.qqchen.deploy.backend.deploy.service.IJenkinsSyncHistoryService; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; + +/** + * Jenkin同步日志 Service实现 + */ +@Slf4j +@Service +public class JenkinsSyncHistoryServiceImpl extends BaseServiceImpl implements IJenkinsSyncHistoryService { + + + @Resource + private IJenkinsSyncHistoryRepository jenkinsSyncHistoryRepository; + + @Override + public void saveOrUpdateHistory(JenkinsSyncHistoryDTO syncHistory) { + jenkinsSyncHistoryRepository.save(super.converter.toEntity(syncHistory)); + } +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsViewServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsViewServiceImpl.java index e193bad8..0c47e7ad 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsViewServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/JenkinsViewServiceImpl.java @@ -8,6 +8,7 @@ import com.qqchen.deploy.backend.deploy.query.JenkinsViewQuery; import com.qqchen.deploy.backend.deploy.integration.IJenkinsServiceIntegration; import com.qqchen.deploy.backend.deploy.integration.response.JenkinsViewResponse; import com.qqchen.deploy.backend.deploy.repository.IExternalSystemRepository; +import com.qqchen.deploy.backend.deploy.repository.IJenkinsSyncHistoryRepository; import com.qqchen.deploy.backend.deploy.repository.IJenkinsViewRepository; import com.qqchen.deploy.backend.deploy.service.IJenkinsViewService; import com.qqchen.deploy.backend.framework.enums.ResponseCode; @@ -42,6 +43,9 @@ public class JenkinsViewServiceImpl extends BaseServiceImpl new BusinessException(ResponseCode.EXTERNAL_SYSTEM_NOT_FOUND)); + ExternalSystem externalSystem = externalSystemRepository.findById(externalSystemId).orElseThrow(() -> new BusinessException(ResponseCode.EXTERNAL_SYSTEM_NOT_FOUND)); // 2. 调用Jenkins API获取视图列表 List viewResponses = jenkinsServiceIntegration.listViews(externalSystem); @@ -88,9 +91,7 @@ public class JenkinsViewServiceImpl extends BaseServiceImpl