diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/ApplicationDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/ApplicationDTO.java index 5dba66c7..21e29801 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/ApplicationDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/ApplicationDTO.java @@ -1,11 +1,9 @@ package com.qqchen.deploy.backend.deploy.dto; -import com.qqchen.deploy.backend.deploy.entity.ProjectGroup; import com.qqchen.deploy.backend.deploy.enums.DevelopmentLanguageTypeEnum; import com.qqchen.deploy.backend.framework.dto.BaseDTO; import com.qqchen.deploy.backend.system.model.ExternalSystemDTO; import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.persistence.Column; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -29,27 +27,27 @@ public class ApplicationDTO extends BaseDTO { @NotNull(message = "三方系统ID不能为空") private Long externalSystemId; - private ExternalSystemDTO externalSystem; - @NotNull(message = "代码仓库组ID不能为空") private Long repoGroupId; - private RepositoryGroupDTO repositoryGroup; - @NotNull(message = "代码仓库项目ID不能为空") private Long repoProjectId; - private RepositoryProjectDTO repositoryProject; - @NotNull(message = "所属项目组ID不能为空") private Long projectGroupId; - private ProjectGroupDTO projectGroup; - @Schema(description = "是否启用") private Boolean enabled; @NotNull(message = "排序号不能为空") private Integer sort; + private ExternalSystemDTO externalSystem; + + private RepositoryGroupDTO repositoryGroup; + + private RepositoryProjectDTO repositoryProject; + + private ProjectGroupDTO projectGroup; + } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryBranchDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryBranchDTO.java index 24638b5f..da60bf0f 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryBranchDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryBranchDTO.java @@ -15,10 +15,6 @@ public class RepositoryBranchDTO extends BaseDTO { private String name; - private Long projectId; - - private Long externalSystemId; - private Boolean isDefaultBranch; private Boolean isProtected; @@ -29,13 +25,17 @@ public class RepositoryBranchDTO extends BaseDTO { private Boolean developersCanMerge; - private String commitId; + private String lastCommitId; - private String commitMessage; + private String lastCommitMessage; private String commitAuthor; private LocalDateTime commitDate; private String webUrl; + + private Long repoProjectId; + + private Long externalSystemId; } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryGroupDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryGroupDTO.java index c00dc40e..0a91cff3 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryGroupDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryGroupDTO.java @@ -23,11 +23,6 @@ public class RepositoryGroupDTO extends BaseDTO { */ private String description; - /** - * 外部系统中的组ID - */ - private Long groupId; - /** * 父级仓库组ID */ @@ -38,11 +33,6 @@ public class RepositoryGroupDTO extends BaseDTO { */ private String path; - /** - * 外部系统ID - */ - private Long externalSystemId; - /** * 头像URL */ @@ -72,4 +62,15 @@ public class RepositoryGroupDTO extends BaseDTO { private Boolean enabled; + + /** + * 外部系统中的组ID + */ + private Long repoGroupId; + + /** + * 外部系统ID + */ + private Long externalSystemId; + } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryProjectDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryProjectDTO.java index 5be20f4c..7a8a3c44 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryProjectDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/RepositoryProjectDTO.java @@ -21,8 +21,6 @@ public class RepositoryProjectDTO extends BaseDTO { private String visibility; - private Long groupId; - private String isDefaultBranch; private String webUrl; @@ -35,5 +33,7 @@ public class RepositoryProjectDTO extends BaseDTO { private Long externalSystemId; - private Long projectId; + private Long repoGroupId; + + private Long repoProjectId; } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsBaseBuildVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsBaseBuildVariables.java index 65a0b770..0aff7ebc 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsBaseBuildVariables.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/build/JenkinsBaseBuildVariables.java @@ -80,7 +80,7 @@ public class JenkinsBaseBuildVariables { format = "monaco-editor", // 使用 Monaco Editor defaultValue = "#!/bin/bash\n\necho \"Hello World\"", codeEditor = @CodeEditorConfig( - language = "shell", + language = "groovy", theme = "vs-dark", minimap = false, lineNumbers = true, diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/DeployAppConfig.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/DeployAppConfig.java index 402d8135..914c43e2 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/DeployAppConfig.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/DeployAppConfig.java @@ -19,7 +19,6 @@ import org.hibernate.annotations.Type; @EqualsAndHashCode(callSuper = true) @jakarta.persistence.Entity @Table(name = "deploy_app_config") -@LogicDelete public class DeployAppConfig extends Entity { diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/ProjectGroupEnvironment.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/ProjectGroupEnvironment.java deleted file mode 100644 index c5498df9..00000000 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/ProjectGroupEnvironment.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.qqchen.deploy.backend.deploy.entity; - -import com.qqchen.deploy.backend.framework.domain.Entity; -import jakarta.persistence.Column; -import jakarta.persistence.Table; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * 项目环境关联实体 - */ -@Data -@EqualsAndHashCode(callSuper = true) -@jakarta.persistence.Entity -@Table(name = "deploy_project_group_environment") -public class ProjectGroupEnvironment extends Entity { - - @Column(name = "project_group_id") - private Long projectGroupId; - - @Column(name = "environment_id") - private Long environmentId; - -} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/RepositoryBranch.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/RepositoryBranch.java index 3a4b4c96..ba081242 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/RepositoryBranch.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/RepositoryBranch.java @@ -19,8 +19,8 @@ public class RepositoryBranch extends Entity { @Column(nullable = false) private String name; - @Column(name = "commit_id") - private String commitId; + @Column(name = "last_commit_id") + private String lastCommitId; @Column(name = "commit_message", columnDefinition = "TEXT") private String commitMessage; @@ -55,8 +55,8 @@ public class RepositoryBranch extends Entity { @Column(name = "project_id", nullable = false) private Long projectId; // 我们数据库的project表的ID - @Column(name = "git_project_id", nullable = false) - private Long gitProjectId; // GitLab的真实project_id + @Column(name = "repo_project_id", nullable = false) + private Long repoProjectId; // GitLab的真实project_id @Column(name = "external_system_id", nullable = false) private Long externalSystemId; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/RepositoryGroup.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/RepositoryGroup.java index 8f6da067..06a70832 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/RepositoryGroup.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/RepositoryGroup.java @@ -42,8 +42,8 @@ public class RepositoryGroup extends Entity { @Column(name = "external_system_id") private Long externalSystemId; - @Column(name = "group_id", nullable = false) - private Long groupId; + @Column(name = "repo_group_id", nullable = false) + private Long repoGroupId; @Column(name = "full_name") private String fullName; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/RepositoryProject.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/RepositoryProject.java index 2668cc15..26084383 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/RepositoryProject.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/RepositoryProject.java @@ -26,9 +26,6 @@ public class RepositoryProject extends Entity { private String visibility; - @Column(name = "group_id") - private Long groupId; - @Column(name = "default_branch") private String defaultBranch; @@ -56,6 +53,10 @@ public class RepositoryProject extends Entity { @Column(name = "external_system_id") private Long externalSystemId; - @Column(name = "project_id", nullable = false) - private Long projectId; -} \ No newline at end of file + @Column(name = "repo_group_id") + private Long repoGroupId; + + @Column(name = "repo_project_id", nullable = false) + private Long repoProjectId; + +} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/IRepositoryProjectRepository.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/IRepositoryProjectRepository.java index 450eb13d..d21fe746 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/IRepositoryProjectRepository.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/IRepositoryProjectRepository.java @@ -1,6 +1,5 @@ package com.qqchen.deploy.backend.deploy.repository; -import com.qqchen.deploy.backend.deploy.dto.RepositoryProjectDTO; import com.qqchen.deploy.backend.framework.repository.IBaseRepository; import com.qqchen.deploy.backend.deploy.entity.RepositoryProject; import org.springframework.stereotype.Repository; @@ -17,7 +16,7 @@ public interface IRepositoryProjectRepository extends IBaseRepository findByExternalSystemIdAndGroupId(Long externalSystemId, Long groupId); + List findByExternalSystemIdAndRepoGroupId(Long externalSystemId, Long groupId); /** * 统计指定外部系统下的项目数量 diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/RepositoryBranchServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/RepositoryBranchServiceImpl.java index 49197a48..4fada8dc 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/RepositoryBranchServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/RepositoryBranchServiceImpl.java @@ -18,7 +18,6 @@ import com.qqchen.deploy.backend.framework.exception.BusinessException; import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl; import com.qqchen.deploy.backend.deploy.dto.RepositorySyncHistoryDTO; import com.qqchen.deploy.backend.deploy.service.IRepositorySyncHistoryService; -import com.qqchen.deploy.backend.deploy.repository.IRepositorySyncHistoryRepository; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.orm.ObjectOptimisticLockingFailureException; @@ -140,10 +139,10 @@ public class RepositoryBranchServiceImpl extends BaseServiceImpl> future = CompletableFuture.supplyAsync(() -> { try { - log.info("Syncing branches for project: {} (ID: {}, GitLab ID: {})", project.getName(), project.getId(), project.getProjectId()); + log.info("Syncing branches for project: {} (ID: {}, GitLab ID: {})", project.getName(), project.getId(), project.getRepoProjectId()); // 5.1 获取当前项目在GitLab上的所有分支 - List remoteBranches = gitServiceIntegration.branches(externalSystem, project.getProjectId()); + List remoteBranches = gitServiceIntegration.branches(externalSystem, project.getRepoProjectId()); log.info("Found {} remote branches for project: {}", remoteBranches.size(), project.getName()); List branchesToUpdate = new ArrayList<>(); @@ -157,13 +156,13 @@ public class RepositoryBranchServiceImpl extends BaseServiceImpl map.values().stream()) .filter(b -> b.getProjectId().equals(project.getId())) .collect(Collectors.toMap(RepositoryBranch::getName, Function.identity())); - + for (RepositoryBranch branch : projectBranches.values()) { if (!processedBranches.contains(branch.getName())) { branch.setDeleted(true); @@ -185,8 +184,7 @@ public class RepositoryBranchServiceImpl extends BaseServiceImpl existingGroups = repositoryGroupRepository.findByExternalSystemIdAndDeletedFalse(externalSystemId); Map existingGroupMap = existingGroups.stream() - .collect(Collectors.toMap(RepositoryGroup::getGroupId, Function.identity())); + .collect(Collectors.toMap(RepositoryGroup::getRepoGroupId, Function.identity())); // 4. 处理每个远程仓库组 List groupsToSave = new ArrayList<>(); @@ -71,7 +71,7 @@ public class RepositoryGroupServiceImpl extends BaseServiceImpl { - log.warn("Duplicate project found with ID: {}, path: {}", - existing.getProjectId(), existing.getPathWithNamespace()); + log.warn("Duplicate project found with ID: {}, path: {}", existing.getRepoProjectId(), existing.getPathWithNamespace()); return existing; } )) @@ -135,14 +134,12 @@ public class RepositoryProjectServiceImpl extends BaseServiceImpl future = CompletableFuture.runAsync(() -> { try { - List projectResponses = gitServiceIntegration.projectsByGroup(externalSystem, group.getGroupId()); - log.info("Processing group: {} (ID: {}), found {} projects", - group.getName(), group.getGroupId(), projectResponses.size()); + List projectResponses = gitServiceIntegration.projectsByGroup(externalSystem, group.getRepoGroupId()); + log.info("Processing group: {} (ID: {}), found {} projects", group.getName(), group.getRepoGroupId(), projectResponses.size()); for (GitProjectResponse projectResponse : projectResponses) { if (!processedProjectIds.add(projectResponse.getId())) { - log.info("Project already processed: {} (ID: {}) in group: {}", - projectResponse.getPathWithNamespace(), projectResponse.getId(), group.getName()); + log.info("Project already processed: {} (ID: {}) in group: {}", projectResponse.getPathWithNamespace(), projectResponse.getId(), group.getName()); continue; } @@ -150,7 +147,7 @@ public class RepositoryProjectServiceImpl extends BaseServiceImpl