diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/ProjectGroupApiController.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/ProjectGroupApiController.java index 2b9e4411..50239556 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/ProjectGroupApiController.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/api/ProjectGroupApiController.java @@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; -@Tag(name = "项目管理", description = "项目管理相关接口") +@Tag(name = "项目组管理", description = "项目组管理相关接口") @RestController @RequestMapping("/api/v1/project-group") public class ProjectGroupApiController extends BaseController { diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/ProjectGroupDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/ProjectGroupDTO.java index bbb07146..bbf0c74e 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/ProjectGroupDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/ProjectGroupDTO.java @@ -6,11 +6,13 @@ import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; +import java.util.List; + @Data @EqualsAndHashCode(callSuper = true) public class ProjectGroupDTO extends BaseDTO { -// @NotNull(message = "租户ID不能为空") + // @NotNull(message = "租户ID不能为空") private Long tenantCode; @NotBlank(message = "项目组编码不能为空") @@ -21,6 +23,8 @@ public class ProjectGroupDTO extends BaseDTO { private String projectGroupDesc; + private List environments; + @NotBlank(message = "项目组状态不能为空") private String projectGroupStatus; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/Environment.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/Environment.java index b4a4b69b..8c4bdda9 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/Environment.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/Environment.java @@ -3,13 +3,12 @@ package com.qqchen.deploy.backend.deploy.entity; import com.qqchen.deploy.backend.deploy.enums.BuildTypeEnum; import com.qqchen.deploy.backend.deploy.enums.DeployTypeEnum; import com.qqchen.deploy.backend.framework.domain.Entity; -import jakarta.persistence.Column; -import jakarta.persistence.EnumType; -import jakarta.persistence.Enumerated; -import jakarta.persistence.Table; +import jakarta.persistence.*; import lombok.Data; import lombok.EqualsAndHashCode; +import java.util.List; + /** * 环境实体 */ @@ -62,4 +61,11 @@ public class Environment extends Entity { */ @Column(name = "sort", nullable = false) private Integer sort; + + /** + * 关联的项目组列表 + */ +// @ManyToMany(mappedBy = "environments") + @ManyToMany(mappedBy = "environments") + private List projectGroups; } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/ProjectGroup.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/ProjectGroup.java index ab3619eb..2b408c6f 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/ProjectGroup.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/entity/ProjectGroup.java @@ -1,10 +1,15 @@ package com.qqchen.deploy.backend.deploy.entity; import com.qqchen.deploy.backend.framework.domain.Entity; -import jakarta.persistence.Column; -import jakarta.persistence.Table; +import jakarta.persistence.*; import lombok.Data; import lombok.EqualsAndHashCode; +import org.hibernate.annotations.OnDelete; +import org.hibernate.annotations.OnDeleteAction; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import java.util.List; /** * 项目组实体 @@ -22,19 +27,19 @@ public class ProjectGroup extends Entity { private Long tenantCode; /** - * 项目组状态 + * 项目组编码 */ @Column(name = "project_group_code", nullable = false) private String projectGroupCode; /** - * 项目组状态 + * 项目组名称 */ @Column(name = "project_group_name", nullable = false) private String projectGroupName; /** - * 项目组状态 + * 项目组描述 */ @Column(name = "project_group_desc") private String projectGroupDesc; @@ -50,4 +55,21 @@ public class ProjectGroup extends Entity { */ @Column(name = "sort", nullable = false) private Integer sort; -} \ No newline at end of file + + /** + * 关联的环境列表 + */ +// @ManyToMany(cascade = CascadeType.REMOVE) +// @JoinTable( +// name = "deploy_project_group_environment", +// joinColumns = @JoinColumn(name = "project_group_id"), +// inverseJoinColumns = @JoinColumn(name = "environment_id") +// ) + @ManyToMany + @JoinTable( + name = "deploy_project_group_environment", + joinColumns = @JoinColumn(name = "project_group_id"), + inverseJoinColumns = @JoinColumn(name = "environment_id") + ) + private List environments; +} \ No newline at end of file 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 index 28ad6bab..ba4f6d04 100644 --- 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 @@ -1,35 +1,34 @@ -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 { - - /** - * 项目ID - */ - @Column(name = "project_group_id", nullable = false) - private Long projectGroupId; - - /** - * 环境ID - */ - @Column(name = "environment_id", nullable = false) - private Long environmentId; - - /** - * 是否启用 - */ - @Column(name = "enabled", nullable = false) - private Boolean enabled = true; -} \ No newline at end of file +//package com.qqchen.deploy.backend.deploy.entity; +// +//import com.qqchen.deploy.backend.framework.domain.Entity; +//import jakarta.persistence.Column; +//import jakarta.persistence.JoinColumn; +//import jakarta.persistence.ManyToOne; +//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 { +// +// /** +// * 项目ID +// */ +// @ManyToOne +// @JoinColumn(name = "project_group_id", nullable = false) +// private ProjectGroup projectGroup; +// +// /** +// * 环境ID +// */ +// @ManyToOne +// @JoinColumn(name = "environment_id", nullable = false) +// private Environment environment; +// +//} \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/query/ApplicationQuery.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/query/ApplicationQuery.java index 136ceff8..d1df76c6 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/query/ApplicationQuery.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/query/ApplicationQuery.java @@ -19,8 +19,8 @@ public class ApplicationQuery extends BaseQuery { @QueryField(field = "appStatus") private String appStatus; - @QueryField(field = "projectId") - private Long projectId; + @QueryField(field = "projectGroupId") + private Long projectGroupId; @QueryField(field = "repoType") private String repoType; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/EnvironmentServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/EnvironmentServiceImpl.java index dcefa8ec..e7c2cf90 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/EnvironmentServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/EnvironmentServiceImpl.java @@ -4,8 +4,6 @@ import com.qqchen.deploy.backend.deploy.converter.EnvironmentConverter; import com.qqchen.deploy.backend.deploy.dto.EnvironmentDTO; import com.qqchen.deploy.backend.deploy.entity.Environment; import com.qqchen.deploy.backend.deploy.entity.QEnvironment; -import com.qqchen.deploy.backend.deploy.entity.QProjectGroup; -import com.qqchen.deploy.backend.deploy.entity.QProjectGroupEnvironment; import com.qqchen.deploy.backend.deploy.repository.IEnvironmentRepository; import com.qqchen.deploy.backend.deploy.service.IEnvironmentService; import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl; @@ -34,19 +32,13 @@ public class EnvironmentServiceImpl extends BaseServiceImpl getProjectEnvironments(Long projectGroupId) { QEnvironment environment = QEnvironment.environment; - QProjectGroupEnvironment projectEnvironment = QProjectGroupEnvironment.projectGroupEnvironment; - + JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager); List environments = queryFactory .select(environment) .from(environment) - .innerJoin(projectEnvironment) - .on(projectEnvironment.environmentId.eq(environment.id)) - .where( - projectEnvironment.projectGroupId.eq(projectGroupId), - projectEnvironment.enabled.isTrue() - ) + .on(environment.id.eq(environment.id)) .orderBy(environment.sort.asc()) .fetch(); diff --git a/backend/src/main/java/com/qqchen/deploy/backend/framework/dto/BaseDTO.java b/backend/src/main/java/com/qqchen/deploy/backend/framework/dto/BaseDTO.java index e00f7766..9ef7947a 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/framework/dto/BaseDTO.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/framework/dto/BaseDTO.java @@ -19,7 +19,7 @@ public class BaseDTO implements Serializable { private String updateBy; - private Integer version; + private Integer version = 1; private Boolean deleted = false; diff --git a/backend/src/main/resources/db/migration/V1.0.0__init_schema.sql b/backend/src/main/resources/db/migration/V1.0.0__init_schema.sql index c186b83b..4960b65f 100644 --- a/backend/src/main/resources/db/migration/V1.0.0__init_schema.sql +++ b/backend/src/main/resources/db/migration/V1.0.0__init_schema.sql @@ -634,7 +634,6 @@ CREATE TABLE deploy_project_group_environment -- 业务字段 project_group_id BIGINT NOT NULL COMMENT '项目ID', environment_id BIGINT NOT NULL COMMENT '环境ID', - enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用', -- 基础字段 id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',