大声道撒旦
This commit is contained in:
parent
426297ebbc
commit
05cc791af5
@ -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<JenkinsSyncHistory, JenkinsSyncHistoryDTO, Long, JenkinsSyncHistoryQuery> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void exportData(HttpServletResponse response, List<JenkinsSyncHistoryDTO> data) {
|
||||||
|
// TODO: 实现导出逻辑
|
||||||
|
log.info("导出Jenkin同步日志数据,数据量:{}", data.size());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1 +0,0 @@
|
|||||||
|
|
||||||
@ -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<JenkinsSyncHistory, JenkinsSyncHistoryDTO> {
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
@ -20,8 +20,8 @@ import java.time.LocalDateTime;
|
|||||||
@LogicDelete
|
@LogicDelete
|
||||||
public class JenkinsSyncHistory extends Entity<Long> {
|
public class JenkinsSyncHistory extends Entity<Long> {
|
||||||
|
|
||||||
@Column(name = "external_system_id", nullable = false)
|
@Column(name = "sync_history_number", nullable = false)
|
||||||
private Long external_system_id;
|
private String number;
|
||||||
|
|
||||||
@Column(name = "sync_type", nullable = false)
|
@Column(name = "sync_type", nullable = false)
|
||||||
@Enumerated(EnumType.STRING)
|
@Enumerated(EnumType.STRING)
|
||||||
@ -40,4 +40,7 @@ public class JenkinsSyncHistory extends Entity<Long> {
|
|||||||
@Column(name = "error_message", columnDefinition = "TEXT")
|
@Column(name = "error_message", columnDefinition = "TEXT")
|
||||||
private String errorMessage;
|
private String errorMessage;
|
||||||
|
|
||||||
|
@Column(name = "external_system_id", nullable = false)
|
||||||
|
private Long external_system_id;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,7 +1,11 @@
|
|||||||
package com.qqchen.deploy.backend.deploy.enums;
|
package com.qqchen.deploy.backend.deploy.enums;
|
||||||
|
|
||||||
public enum ExternalSystemSyncStatus {
|
public enum ExternalSystemSyncStatus {
|
||||||
|
|
||||||
SUCCESS, // 同步成功
|
SUCCESS, // 同步成功
|
||||||
|
|
||||||
FAILED, // 同步失败
|
FAILED, // 同步失败
|
||||||
|
|
||||||
RUNNING // 同步中
|
RUNNING // 同步中
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,8 +1,7 @@
|
|||||||
package com.qqchen.deploy.backend.deploy.enums;
|
package com.qqchen.deploy.backend.deploy.enums;
|
||||||
|
|
||||||
public enum JenkinsSyncType {
|
public enum JenkinsSyncType {
|
||||||
ALL, // 全量同步
|
VIEW, // 同步视图
|
||||||
VIEW, // 同步视图
|
JOB, // 同步作业
|
||||||
JOB, // 同步作业
|
BUILD // 同步构建记录
|
||||||
BUILD // 同步构建记录
|
}
|
||||||
}
|
|
||||||
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,12 +1,13 @@
|
|||||||
package com.qqchen.deploy.backend.deploy.repository;
|
package com.qqchen.deploy.backend.deploy.repository;
|
||||||
|
|
||||||
|
|
||||||
import com.qqchen.deploy.backend.framework.repository.IBaseRepository;
|
import com.qqchen.deploy.backend.framework.repository.IBaseRepository;
|
||||||
import com.qqchen.deploy.backend.deploy.entity.JenkinsSyncHistory;
|
import com.qqchen.deploy.backend.deploy.entity.JenkinsSyncHistory;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.util.List;
|
/**
|
||||||
|
* Jenkin同步日志 Repository
|
||||||
|
*/
|
||||||
@Repository
|
@Repository
|
||||||
public interface IJenkinsSyncHistoryRepository extends IBaseRepository<JenkinsSyncHistory, Long> {
|
public interface IJenkinsSyncHistoryRepository extends IBaseRepository<JenkinsSyncHistory, Long> {
|
||||||
List<JenkinsSyncHistory> findTop50ByOrderByStartTimeDesc();
|
JenkinsSyncHistory findByNumber(String number);
|
||||||
}
|
}
|
||||||
@ -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<JenkinsSyncHistory, JenkinsSyncHistoryDTO, JenkinsSyncHistoryQuery, Long> {
|
||||||
|
|
||||||
|
|
||||||
|
void saveOrUpdateHistory(JenkinsSyncHistoryDTO syncHistory);
|
||||||
|
|
||||||
|
}
|
||||||
@ -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<JenkinsSyncHistory, JenkinsSyncHistoryDTO, JenkinsSyncHistoryQuery, Long> implements IJenkinsSyncHistoryService {
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IJenkinsSyncHistoryRepository jenkinsSyncHistoryRepository;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveOrUpdateHistory(JenkinsSyncHistoryDTO syncHistory) {
|
||||||
|
jenkinsSyncHistoryRepository.save(super.converter.toEntity(syncHistory));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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.IJenkinsServiceIntegration;
|
||||||
import com.qqchen.deploy.backend.deploy.integration.response.JenkinsViewResponse;
|
import com.qqchen.deploy.backend.deploy.integration.response.JenkinsViewResponse;
|
||||||
import com.qqchen.deploy.backend.deploy.repository.IExternalSystemRepository;
|
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.repository.IJenkinsViewRepository;
|
||||||
import com.qqchen.deploy.backend.deploy.service.IJenkinsViewService;
|
import com.qqchen.deploy.backend.deploy.service.IJenkinsViewService;
|
||||||
import com.qqchen.deploy.backend.framework.enums.ResponseCode;
|
import com.qqchen.deploy.backend.framework.enums.ResponseCode;
|
||||||
@ -42,6 +43,9 @@ public class JenkinsViewServiceImpl extends BaseServiceImpl<JenkinsView, Jenkins
|
|||||||
@Resource
|
@Resource
|
||||||
private JenkinsViewConverter jenkinsViewConverter;
|
private JenkinsViewConverter jenkinsViewConverter;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IJenkinsSyncHistoryRepository jenkinsSyncHistoryRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 同步Jenkins视图
|
* 同步Jenkins视图
|
||||||
*
|
*
|
||||||
@ -52,8 +56,7 @@ public class JenkinsViewServiceImpl extends BaseServiceImpl<JenkinsView, Jenkins
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Integer syncViews(Long externalSystemId) {
|
public Integer syncViews(Long externalSystemId) {
|
||||||
// 1. 查询外部系统
|
// 1. 查询外部系统
|
||||||
ExternalSystem externalSystem = externalSystemRepository.findById(externalSystemId)
|
ExternalSystem externalSystem = externalSystemRepository.findById(externalSystemId).orElseThrow(() -> new BusinessException(ResponseCode.EXTERNAL_SYSTEM_NOT_FOUND));
|
||||||
.orElseThrow(() -> new BusinessException(ResponseCode.EXTERNAL_SYSTEM_NOT_FOUND));
|
|
||||||
|
|
||||||
// 2. 调用Jenkins API获取视图列表
|
// 2. 调用Jenkins API获取视图列表
|
||||||
List<JenkinsViewResponse> viewResponses = jenkinsServiceIntegration.listViews(externalSystem);
|
List<JenkinsViewResponse> viewResponses = jenkinsServiceIntegration.listViews(externalSystem);
|
||||||
@ -88,9 +91,7 @@ public class JenkinsViewServiceImpl extends BaseServiceImpl<JenkinsView, Jenkins
|
|||||||
|
|
||||||
// 4. 批量保存或更新
|
// 4. 批量保存或更新
|
||||||
jenkinsViewRepository.saveAll(jenkinsViews);
|
jenkinsViewRepository.saveAll(jenkinsViews);
|
||||||
|
log.info("Successfully synchronized {} Jenkins views for external system: {}", jenkinsViews.size(), externalSystemId);
|
||||||
log.info("Successfully synchronized {} Jenkins views for external system: {}",
|
|
||||||
jenkinsViews.size(), externalSystemId);
|
|
||||||
|
|
||||||
return jenkinsViews.size();
|
return jenkinsViews.size();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -552,21 +552,13 @@ CREATE TABLE deploy_project_group
|
|||||||
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除:0-未删除,1-已删除',
|
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除:0-未删除,1-已删除',
|
||||||
|
|
||||||
-- 业务字段
|
-- 业务字段
|
||||||
tenant_code BIGINT DEFAULT NULL COMMENT '租户CODE',
|
tenant_code VARCHAR(50) DEFAULT NULL COMMENT '租户CODE',
|
||||||
type VARCHAR(50) NULL COMMENT '项目组类型',
|
type VARCHAR(50) NULL COMMENT '项目组类型',
|
||||||
project_group_code VARCHAR(50) NOT NULL COMMENT '项目组编码',
|
project_group_code VARCHAR(50) NOT NULL COMMENT '项目组编码',
|
||||||
project_group_name VARCHAR(100) NOT NULL COMMENT '项目组名称',
|
project_group_name VARCHAR(100) NOT NULL COMMENT '项目组名称',
|
||||||
project_group_desc VARCHAR(255) NULL COMMENT '项目组描述',
|
project_group_desc VARCHAR(255) NULL COMMENT '项目组描述',
|
||||||
enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用(0:禁用,1:启用)',
|
enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用(0:禁用,1:启用)',
|
||||||
sort INT NOT NULL DEFAULT 0 COMMENT '排序号',
|
sort INT NOT NULL DEFAULT 0 COMMENT '排序号'
|
||||||
|
|
||||||
-- 索引
|
|
||||||
INDEX idx_tenant_id (tenant_code) COMMENT '租户ID索引',
|
|
||||||
UNIQUE INDEX uk_project_group_code (tenant_code, project_group_code) COMMENT '租户下项目组编码唯一',
|
|
||||||
|
|
||||||
-- 外键约束
|
|
||||||
CONSTRAINT fk_project_tenant FOREIGN KEY (tenant_code)
|
|
||||||
REFERENCES sys_tenant (id)
|
|
||||||
) ENGINE = InnoDB
|
) ENGINE = InnoDB
|
||||||
DEFAULT CHARSET = utf8mb4
|
DEFAULT CHARSET = utf8mb4
|
||||||
COLLATE = utf8mb4_unicode_ci COMMENT ='项目组表';
|
COLLATE = utf8mb4_unicode_ci COMMENT ='项目组表';
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user