反序列化问题。

This commit is contained in:
dengqichen 2024-12-23 18:22:27 +08:00
parent 434d21d501
commit 899ce66e36
9 changed files with 83 additions and 61 deletions

View File

@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
@Tag(name = "项目管理", description = "项目管理相关接口") @Tag(name = "项目管理", description = "项目管理相关接口")
@RestController @RestController
@RequestMapping("/api/v1/project-group") @RequestMapping("/api/v1/project-group")
public class ProjectGroupApiController extends BaseController<ProjectGroup, ProjectGroupDTO, Long, ProjectGroupQuery> { public class ProjectGroupApiController extends BaseController<ProjectGroup, ProjectGroupDTO, Long, ProjectGroupQuery> {

View File

@ -6,11 +6,13 @@ import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.List;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class ProjectGroupDTO extends BaseDTO { public class ProjectGroupDTO extends BaseDTO {
// @NotNull(message = "租户ID不能为空") // @NotNull(message = "租户ID不能为空")
private Long tenantCode; private Long tenantCode;
@NotBlank(message = "项目组编码不能为空") @NotBlank(message = "项目组编码不能为空")
@ -21,6 +23,8 @@ public class ProjectGroupDTO extends BaseDTO {
private String projectGroupDesc; private String projectGroupDesc;
private List<EnvironmentDTO> environments;
@NotBlank(message = "项目组状态不能为空") @NotBlank(message = "项目组状态不能为空")
private String projectGroupStatus; private String projectGroupStatus;

View File

@ -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.BuildTypeEnum;
import com.qqchen.deploy.backend.deploy.enums.DeployTypeEnum; import com.qqchen.deploy.backend.deploy.enums.DeployTypeEnum;
import com.qqchen.deploy.backend.framework.domain.Entity; import com.qqchen.deploy.backend.framework.domain.Entity;
import jakarta.persistence.Column; import jakarta.persistence.*;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.Table;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.List;
/** /**
* 环境实体 * 环境实体
*/ */
@ -62,4 +61,11 @@ public class Environment extends Entity<Long> {
*/ */
@Column(name = "sort", nullable = false) @Column(name = "sort", nullable = false)
private Integer sort; private Integer sort;
/**
* 关联的项目组列表
*/
// @ManyToMany(mappedBy = "environments")
@ManyToMany(mappedBy = "environments")
private List<ProjectGroup> projectGroups;
} }

View File

@ -1,10 +1,15 @@
package com.qqchen.deploy.backend.deploy.entity; package com.qqchen.deploy.backend.deploy.entity;
import com.qqchen.deploy.backend.framework.domain.Entity; import com.qqchen.deploy.backend.framework.domain.Entity;
import jakarta.persistence.Column; import jakarta.persistence.*;
import jakarta.persistence.Table;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; 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<Long> {
private Long tenantCode; private Long tenantCode;
/** /**
* 项目组状态 * 项目组编码
*/ */
@Column(name = "project_group_code", nullable = false) @Column(name = "project_group_code", nullable = false)
private String projectGroupCode; private String projectGroupCode;
/** /**
* 项目组状态 * 项目组名称
*/ */
@Column(name = "project_group_name", nullable = false) @Column(name = "project_group_name", nullable = false)
private String projectGroupName; private String projectGroupName;
/** /**
* 项目组状态 * 项目组描述
*/ */
@Column(name = "project_group_desc") @Column(name = "project_group_desc")
private String projectGroupDesc; private String projectGroupDesc;
@ -50,4 +55,21 @@ public class ProjectGroup extends Entity<Long> {
*/ */
@Column(name = "sort", nullable = false) @Column(name = "sort", nullable = false)
private Integer sort; private Integer sort;
}
/**
* 关联的环境列表
*/
// @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<Environment> environments;
}

View File

@ -1,35 +1,34 @@
package com.qqchen.deploy.backend.deploy.entity; //package com.qqchen.deploy.backend.deploy.entity;
//
import com.qqchen.deploy.backend.framework.domain.Entity; //import com.qqchen.deploy.backend.framework.domain.Entity;
import jakarta.persistence.Column; //import jakarta.persistence.Column;
import jakarta.persistence.Table; //import jakarta.persistence.JoinColumn;
import lombok.Data; //import jakarta.persistence.ManyToOne;
import lombok.EqualsAndHashCode; //import jakarta.persistence.Table;
//import lombok.Data;
/** //import lombok.EqualsAndHashCode;
* 项目环境关联实体 //
*/ ///**
@Data // * 项目环境关联实体
@EqualsAndHashCode(callSuper = true) // */
@jakarta.persistence.Entity //@Data
@Table(name = "deploy_project_group_environment") //@EqualsAndHashCode(callSuper = true)
public class ProjectGroupEnvironment extends Entity<Long> { //@jakarta.persistence.Entity
//@Table(name = "deploy_project_group_environment")
/** //public class ProjectGroupEnvironment extends Entity<Long> {
* 项目ID //
*/ // /**
@Column(name = "project_group_id", nullable = false) // * 项目ID
private Long projectGroupId; // */
// @ManyToOne
/** // @JoinColumn(name = "project_group_id", nullable = false)
* 环境ID // private ProjectGroup projectGroup;
*/ //
@Column(name = "environment_id", nullable = false) // /**
private Long environmentId; // * 环境ID
// */
/** // @ManyToOne
* 是否启用 // @JoinColumn(name = "environment_id", nullable = false)
*/ // private Environment environment;
@Column(name = "enabled", nullable = false) //
private Boolean enabled = true; //}
}

View File

@ -19,8 +19,8 @@ public class ApplicationQuery extends BaseQuery {
@QueryField(field = "appStatus") @QueryField(field = "appStatus")
private String appStatus; private String appStatus;
@QueryField(field = "projectId") @QueryField(field = "projectGroupId")
private Long projectId; private Long projectGroupId;
@QueryField(field = "repoType") @QueryField(field = "repoType")
private String repoType; private String repoType;

View File

@ -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.dto.EnvironmentDTO;
import com.qqchen.deploy.backend.deploy.entity.Environment; import com.qqchen.deploy.backend.deploy.entity.Environment;
import com.qqchen.deploy.backend.deploy.entity.QEnvironment; 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.repository.IEnvironmentRepository;
import com.qqchen.deploy.backend.deploy.service.IEnvironmentService; import com.qqchen.deploy.backend.deploy.service.IEnvironmentService;
import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl; import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl;
@ -34,19 +32,13 @@ public class EnvironmentServiceImpl extends BaseServiceImpl<Environment, Environ
@Override @Override
public List<EnvironmentDTO> getProjectEnvironments(Long projectGroupId) { public List<EnvironmentDTO> getProjectEnvironments(Long projectGroupId) {
QEnvironment environment = QEnvironment.environment; QEnvironment environment = QEnvironment.environment;
QProjectGroupEnvironment projectEnvironment = QProjectGroupEnvironment.projectGroupEnvironment;
JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager); JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager);
List<Environment> environments = queryFactory List<Environment> environments = queryFactory
.select(environment) .select(environment)
.from(environment) .from(environment)
.innerJoin(projectEnvironment) .on(environment.id.eq(environment.id))
.on(projectEnvironment.environmentId.eq(environment.id))
.where(
projectEnvironment.projectGroupId.eq(projectGroupId),
projectEnvironment.enabled.isTrue()
)
.orderBy(environment.sort.asc()) .orderBy(environment.sort.asc())
.fetch(); .fetch();

View File

@ -19,7 +19,7 @@ public class BaseDTO implements Serializable {
private String updateBy; private String updateBy;
private Integer version; private Integer version = 1;
private Boolean deleted = false; private Boolean deleted = false;

View File

@ -634,7 +634,6 @@ CREATE TABLE deploy_project_group_environment
-- 业务字段 -- 业务字段
project_group_id BIGINT NOT NULL COMMENT '项目ID', project_group_id BIGINT NOT NULL COMMENT '项目ID',
environment_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', id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',