大声道撒旦
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
|
||||
public class JenkinsSyncHistory extends Entity<Long> {
|
||||
|
||||
@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)
|
||||
@ -40,4 +40,7 @@ public class JenkinsSyncHistory extends Entity<Long> {
|
||||
@Column(name = "error_message", columnDefinition = "TEXT")
|
||||
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;
|
||||
|
||||
public enum ExternalSystemSyncStatus {
|
||||
|
||||
SUCCESS, // 同步成功
|
||||
|
||||
FAILED, // 同步失败
|
||||
|
||||
RUNNING // 同步中
|
||||
|
||||
}
|
||||
@ -1,8 +1,7 @@
|
||||
package com.qqchen.deploy.backend.deploy.enums;
|
||||
|
||||
public enum JenkinsSyncType {
|
||||
ALL, // 全量同步
|
||||
VIEW, // 同步视图
|
||||
JOB, // 同步作业
|
||||
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;
|
||||
|
||||
|
||||
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<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.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<JenkinsView, Jenkins
|
||||
@Resource
|
||||
private JenkinsViewConverter jenkinsViewConverter;
|
||||
|
||||
@Resource
|
||||
private IJenkinsSyncHistoryRepository jenkinsSyncHistoryRepository;
|
||||
|
||||
/**
|
||||
* 同步Jenkins视图
|
||||
*
|
||||
@ -52,8 +56,7 @@ public class JenkinsViewServiceImpl extends BaseServiceImpl<JenkinsView, Jenkins
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Integer syncViews(Long externalSystemId) {
|
||||
// 1. 查询外部系统
|
||||
ExternalSystem externalSystem = externalSystemRepository.findById(externalSystemId)
|
||||
.orElseThrow(() -> new BusinessException(ResponseCode.EXTERNAL_SYSTEM_NOT_FOUND));
|
||||
ExternalSystem externalSystem = externalSystemRepository.findById(externalSystemId).orElseThrow(() -> new BusinessException(ResponseCode.EXTERNAL_SYSTEM_NOT_FOUND));
|
||||
|
||||
// 2. 调用Jenkins API获取视图列表
|
||||
List<JenkinsViewResponse> viewResponses = jenkinsServiceIntegration.listViews(externalSystem);
|
||||
@ -88,9 +91,7 @@ public class JenkinsViewServiceImpl extends BaseServiceImpl<JenkinsView, Jenkins
|
||||
|
||||
// 4. 批量保存或更新
|
||||
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();
|
||||
}
|
||||
|
||||
@ -552,21 +552,13 @@ CREATE TABLE deploy_project_group
|
||||
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 '项目组类型',
|
||||
project_group_code VARCHAR(50) NOT NULL COMMENT '项目组编码',
|
||||
project_group_name VARCHAR(100) NOT NULL COMMENT '项目组名称',
|
||||
project_group_desc VARCHAR(255) NULL COMMENT '项目组描述',
|
||||
enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用(0:禁用,1:启用)',
|
||||
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)
|
||||
sort INT NOT NULL DEFAULT 0 COMMENT '排序号'
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci COMMENT ='项目组表';
|
||||
|
||||
Loading…
Reference in New Issue
Block a user