增加生成后端服务代码。

This commit is contained in:
asp_ly 2024-12-29 19:31:49 +08:00
parent 6078c0228b
commit 7bfc716eb5
11 changed files with 123 additions and 0 deletions

View File

@ -1,5 +1,6 @@
package com.qqchen.deploy.backend.deploy.api; package com.qqchen.deploy.backend.deploy.api;
import com.qqchen.deploy.backend.deploy.dto.JenkinsInstanceDTO;
import com.qqchen.deploy.backend.deploy.service.IJenkinsManagerService; import com.qqchen.deploy.backend.deploy.service.IJenkinsManagerService;
import com.qqchen.deploy.backend.framework.api.Response; import com.qqchen.deploy.backend.framework.api.Response;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -56,4 +57,10 @@ public class JenkinsManagerApiController {
jenkinsManagerService.syncBuilds(externalSystemId); jenkinsManagerService.syncBuilds(externalSystemId);
return Response.success(); return Response.success();
} }
@Operation(summary = "获取Jenkins实例信息")
@GetMapping("/{externalSystemId}/instance")
public Response<JenkinsInstanceDTO> instance(@Parameter(description = "外部系统ID", required = true) @PathVariable Long externalSystemId) {
return Response.success(jenkinsManagerService.instance(externalSystemId));
}
} }

View File

@ -0,0 +1,29 @@
package com.qqchen.deploy.backend.deploy.dto;
import com.qqchen.deploy.backend.deploy.entity.JenkinsJob;
import com.qqchen.deploy.backend.deploy.entity.JenkinsView;
import com.qqchen.deploy.backend.framework.dto.BaseDTO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
import java.util.List;
/**
* Jenkins工作 DTO
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class JenkinsInstanceDTO extends BaseDTO {
private int totalViews;
private int totalJobs;
private int totalBuilds;
private List<JenkinsViewDTO> jenkinsViewList;
private List<JenkinsJobDTO> jenkinsJobList;
}

View File

@ -38,4 +38,12 @@ public interface IJenkinsBuildService extends IBaseService<JenkinsBuild, Jenkins
* @return 同步的构建总数 * @return 同步的构建总数
*/ */
Integer syncAllBuilds(Long externalSystemId); Integer syncAllBuilds(Long externalSystemId);
/**
* 根据外部系统ID统计构建总数
*
* @param externalSystemId 外部系统ID
* @return 构建总数
*/
Long countByExternalSystemId(Long externalSystemId);
} }

View File

@ -6,6 +6,7 @@ import com.qqchen.deploy.backend.framework.service.IBaseService;
import com.qqchen.deploy.backend.deploy.entity.JenkinsJob; import com.qqchen.deploy.backend.deploy.entity.JenkinsJob;
import com.qqchen.deploy.backend.deploy.dto.JenkinsJobDTO; import com.qqchen.deploy.backend.deploy.dto.JenkinsJobDTO;
import com.qqchen.deploy.backend.deploy.query.JenkinsJobQuery; import com.qqchen.deploy.backend.deploy.query.JenkinsJobQuery;
import java.util.List;
/** /**
* Jenkins任务 Service接口 * Jenkins任务 Service接口
@ -28,4 +29,12 @@ public interface IJenkinsJobService extends IBaseService<JenkinsJob, JenkinsJobD
* @return 同步的任务总数 * @return 同步的任务总数
*/ */
Integer syncJobs(Long externalSystemId); Integer syncJobs(Long externalSystemId);
/**
* 根据外部系统ID查询所有任务
*
* @param externalSystemId 外部系统ID
* @return 任务列表
*/
List<JenkinsJobDTO> findByExternalSystemId(Long externalSystemId);
} }

View File

@ -1,5 +1,7 @@
package com.qqchen.deploy.backend.deploy.service; package com.qqchen.deploy.backend.deploy.service;
import com.qqchen.deploy.backend.deploy.dto.JenkinsInstanceDTO;
/** /**
* Jenkins管理服务接口 * Jenkins管理服务接口
*/ */
@ -32,4 +34,6 @@ public interface IJenkinsManagerService {
* @param externalSystemId 外部系统ID * @param externalSystemId 外部系统ID
*/ */
void syncBuilds(Long externalSystemId); void syncBuilds(Long externalSystemId);
JenkinsInstanceDTO instance(Long externalSystemId);
} }

View File

@ -4,6 +4,7 @@ import com.qqchen.deploy.backend.deploy.entity.JenkinsView;
import com.qqchen.deploy.backend.deploy.dto.JenkinsViewDTO; import com.qqchen.deploy.backend.deploy.dto.JenkinsViewDTO;
import com.qqchen.deploy.backend.deploy.query.JenkinsViewQuery; import com.qqchen.deploy.backend.deploy.query.JenkinsViewQuery;
import com.qqchen.deploy.backend.framework.service.IBaseService; import com.qqchen.deploy.backend.framework.service.IBaseService;
import java.util.List;
/** /**
* Jenkins视图 Service接口 * Jenkins视图 Service接口
@ -17,4 +18,12 @@ public interface IJenkinsViewService extends IBaseService<JenkinsView, JenkinsVi
* @return 同步的视图数量 * @return 同步的视图数量
*/ */
Integer syncViews(Long externalSystemId); Integer syncViews(Long externalSystemId);
/**
* 根据外部系统ID查询所有视图
*
* @param externalSystemId 外部系统ID
* @return 视图列表
*/
List<JenkinsViewDTO> findByExternalSystemId(Long externalSystemId);
} }

View File

@ -7,6 +7,7 @@ import com.qqchen.deploy.backend.deploy.entity.JenkinsBuild;
import com.qqchen.deploy.backend.deploy.entity.JenkinsJob; import com.qqchen.deploy.backend.deploy.entity.JenkinsJob;
import com.qqchen.deploy.backend.deploy.entity.JenkinsView; import com.qqchen.deploy.backend.deploy.entity.JenkinsView;
import com.qqchen.deploy.backend.deploy.dto.JenkinsBuildDTO; import com.qqchen.deploy.backend.deploy.dto.JenkinsBuildDTO;
import com.qqchen.deploy.backend.deploy.entity.QJenkinsBuild;
import com.qqchen.deploy.backend.deploy.query.JenkinsBuildQuery; import com.qqchen.deploy.backend.deploy.query.JenkinsBuildQuery;
import com.qqchen.deploy.backend.deploy.integration.IJenkinsServiceIntegration; import com.qqchen.deploy.backend.deploy.integration.IJenkinsServiceIntegration;
import com.qqchen.deploy.backend.deploy.integration.response.JenkinsBuildResponse; import com.qqchen.deploy.backend.deploy.integration.response.JenkinsBuildResponse;
@ -179,4 +180,10 @@ public class JenkinsBuildServiceImpl extends BaseServiceImpl<JenkinsBuild, Jenki
jenkinsBuild.setActions("{}"); jenkinsBuild.setActions("{}");
} }
} }
@Override
public Long countByExternalSystemId(Long externalSystemId) {
QJenkinsBuild qJenkinsBuild = QJenkinsBuild.jenkinsBuild;
return super.repository.count(qJenkinsBuild.externalSystemId.eq(externalSystemId).and(qJenkinsBuild.deleted.eq(false)));
}
} }

View File

@ -1,5 +1,6 @@
package com.qqchen.deploy.backend.deploy.service.impl; package com.qqchen.deploy.backend.deploy.service.impl;
import com.qqchen.deploy.backend.deploy.converter.JenkinsJobConverter;
import com.qqchen.deploy.backend.deploy.entity.ExternalSystem; import com.qqchen.deploy.backend.deploy.entity.ExternalSystem;
import com.qqchen.deploy.backend.deploy.entity.JenkinsJob; import com.qqchen.deploy.backend.deploy.entity.JenkinsJob;
import com.qqchen.deploy.backend.deploy.entity.JenkinsView; import com.qqchen.deploy.backend.deploy.entity.JenkinsView;
@ -50,6 +51,8 @@ public class JenkinsJobServiceImpl extends BaseServiceImpl<JenkinsJob, JenkinsJo
@Resource @Resource
private IJenkinsServiceIntegration jenkinsServiceIntegration; private IJenkinsServiceIntegration jenkinsServiceIntegration;
@Resource
private JenkinsJobConverter jenkinsJobConverter;
/** /**
* 同步外部系统下所有视图的Jenkins任务 * 同步外部系统下所有视图的Jenkins任务
@ -238,4 +241,11 @@ public class JenkinsJobServiceImpl extends BaseServiceImpl<JenkinsJob, JenkinsJo
default -> 0; default -> 0;
}; };
} }
@Override
public List<JenkinsJobDTO> findByExternalSystemId(Long externalSystemId) {
JenkinsJobQuery query = new JenkinsJobQuery();
query.setExternalSystemId(externalSystemId);
return super.findAll(query);
}
} }

View File

@ -1,5 +1,10 @@
package com.qqchen.deploy.backend.deploy.service.impl; package com.qqchen.deploy.backend.deploy.service.impl;
import com.qqchen.deploy.backend.deploy.dto.JenkinsInstanceDTO;
import com.qqchen.deploy.backend.deploy.dto.JenkinsJobDTO;
import com.qqchen.deploy.backend.deploy.dto.JenkinsViewDTO;
import com.qqchen.deploy.backend.deploy.entity.JenkinsJob;
import com.qqchen.deploy.backend.deploy.entity.JenkinsView;
import com.qqchen.deploy.backend.deploy.service.IJenkinsManagerService; import com.qqchen.deploy.backend.deploy.service.IJenkinsManagerService;
import com.qqchen.deploy.backend.deploy.service.IJenkinsViewService; import com.qqchen.deploy.backend.deploy.service.IJenkinsViewService;
import com.qqchen.deploy.backend.deploy.service.IJenkinsJobService; import com.qqchen.deploy.backend.deploy.service.IJenkinsJobService;
@ -8,6 +13,7 @@ import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/** /**
* Jenkins管理服务实现 * Jenkins管理服务实现
@ -67,4 +73,26 @@ public class JenkinsManagerServiceImpl implements IJenkinsManagerService {
Integer buildCount = jenkinsBuildService.syncAllBuilds(externalSystemId); Integer buildCount = jenkinsBuildService.syncAllBuilds(externalSystemId);
log.info("Successfully synchronized {} builds", buildCount); log.info("Successfully synchronized {} builds", buildCount);
} }
@Override
public JenkinsInstanceDTO instance(Long externalSystemId) {
// 1. 创建返回对象
JenkinsInstanceDTO instanceDTO = new JenkinsInstanceDTO();
// 2. 获取视图列表
List<JenkinsViewDTO> views = jenkinsViewService.findByExternalSystemId(externalSystemId);
instanceDTO.setJenkinsViewList(views);
instanceDTO.setTotalViews(views.size());
// 3. 获取任务列表
List<JenkinsJobDTO> jobs = jenkinsJobService.findByExternalSystemId(externalSystemId);
instanceDTO.setJenkinsJobList(jobs);
instanceDTO.setTotalJobs(jobs.size());
// 4. 获取构建总数
Long totalBuilds = jenkinsBuildService.countByExternalSystemId(externalSystemId);
instanceDTO.setTotalBuilds(totalBuilds.intValue());
return instanceDTO;
}
} }

View File

@ -1,5 +1,6 @@
package com.qqchen.deploy.backend.deploy.service.impl; package com.qqchen.deploy.backend.deploy.service.impl;
import com.qqchen.deploy.backend.deploy.converter.JenkinsViewConverter;
import com.qqchen.deploy.backend.deploy.entity.ExternalSystem; import com.qqchen.deploy.backend.deploy.entity.ExternalSystem;
import com.qqchen.deploy.backend.deploy.entity.JenkinsView; import com.qqchen.deploy.backend.deploy.entity.JenkinsView;
import com.qqchen.deploy.backend.deploy.dto.JenkinsViewDTO; import com.qqchen.deploy.backend.deploy.dto.JenkinsViewDTO;
@ -38,6 +39,9 @@ public class JenkinsViewServiceImpl extends BaseServiceImpl<JenkinsView, Jenkins
@Resource @Resource
private IJenkinsServiceIntegration jenkinsServiceIntegration; private IJenkinsServiceIntegration jenkinsServiceIntegration;
@Resource
private JenkinsViewConverter jenkinsViewConverter;
/** /**
* 同步Jenkins视图 * 同步Jenkins视图
* *
@ -98,4 +102,11 @@ public class JenkinsViewServiceImpl extends BaseServiceImpl<JenkinsView, Jenkins
jenkinsView.setDescription(response.getDescription()); jenkinsView.setDescription(response.getDescription());
jenkinsView.setViewUrl(response.getUrl()); jenkinsView.setViewUrl(response.getUrl());
} }
@Override
public List<JenkinsViewDTO> findByExternalSystemId(Long externalSystemId) {
JenkinsViewQuery query = new JenkinsViewQuery();
query.setExternalSystemId(externalSystemId);
return super.findAll(query);
}
} }