大声道撒旦

This commit is contained in:
dengqichen 2024-12-26 13:36:26 +08:00
parent 09a6a020ce
commit e8cd2575eb
7 changed files with 106 additions and 92 deletions

View File

@ -1,6 +1,10 @@
package com.qqchen.deploy.backend.deploy.dto; 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.framework.dto.BaseDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.persistence.Column;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
@ -10,9 +14,6 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class ApplicationDTO extends BaseDTO { public class ApplicationDTO extends BaseDTO {
@NotNull(message = "项目ID不能为空")
private Long projectGroupId;
@NotBlank(message = "应用编码不能为空") @NotBlank(message = "应用编码不能为空")
private String appCode; private String appCode;
@ -21,9 +22,17 @@ public class ApplicationDTO extends BaseDTO {
private String appDesc; private String appDesc;
@NotBlank(message = "应用状态不能为空") @NotBlank(message = "仓库URL不能为空")
private String appStatus; private String repoUrl;
@NotNull(message = "开发语言")
private DevelopmentLanguageTypeEnum language;
@Schema(description = "是否启用")
private Boolean enabled;
@NotNull(message = "排序号不能为空") @NotNull(message = "排序号不能为空")
private Integer sort; private Integer sort;
private ProjectGroupDTO projectGroup;
} }

View File

@ -31,8 +31,7 @@ public class ProjectGroupDTO extends BaseDTO {
private List<ApplicationDTO> applications; private List<ApplicationDTO> applications;
@NotBlank(message = "项目组状态不能为空") private Boolean enabled;
private String projectGroupStatus;
@NotNull(message = "排序号不能为空") @NotNull(message = "排序号不能为空")
private Integer sort; private Integer sort;

View File

@ -1,11 +1,20 @@
package com.qqchen.deploy.backend.deploy.entity; package com.qqchen.deploy.backend.deploy.entity;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.qqchen.deploy.backend.deploy.enums.DevelopmentLanguageTypeEnum;
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.FetchType;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.ArrayList;
import java.util.List;
/** /**
* 应用实体 * 应用实体
*/ */
@ -15,12 +24,6 @@ import lombok.EqualsAndHashCode;
@Table(name = "deploy_application") @Table(name = "deploy_application")
public class Application extends Entity<Long> { public class Application extends Entity<Long> {
/**
* 所属项目ID
*/
@Column(name = "project_group_id", nullable = false)
private Long projectGroupId;
/** /**
* 应用编码 * 应用编码
*/ */
@ -42,8 +45,8 @@ public class Application extends Entity<Long> {
/** /**
* 应用状态 * 应用状态
*/ */
@Column(name = "app_status", nullable = false) @Column(nullable = false)
private String appStatus; private Boolean enabled = true;
/** /**
* 代码仓库地址 * 代码仓库地址
@ -51,39 +54,25 @@ public class Application extends Entity<Long> {
@Column(name = "repo_url") @Column(name = "repo_url")
private String repoUrl; private String repoUrl;
/**
* 代码分支
*/
@Column(name = "repo_branch")
private String repoBranch;
/**
* 仓库类型(:Git/SVN)
*/
@Column(name = "repo_type")
private String repoType;
/**
* 构建类型(:Maven/Gradle)
*/
@Column(name = "build_type")
private String buildType;
/** /**
* 开发语言 * 开发语言
*/ */
@Column(name = "dev_language") @Column(name = "language")
private String devLanguage; private DevelopmentLanguageTypeEnum language;
/**
* 开发框架
*/
@Column(name = "dev_framework")
private String devFramework;
/** /**
* 排序号 * 排序号
*/ */
@Column(name = "sort", nullable = false) @Column(name = "sort", nullable = false)
private Integer sort; private Integer sort;
// /**
// * 所属项目ID
// */
// @Column(name = "project_group_id", nullable = false)
// private Long projectGroupId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "project_group_id")
private ProjectGroup projectGroup;
} }

View File

@ -1,7 +1,9 @@
package com.qqchen.deploy.backend.deploy.entity; package com.qqchen.deploy.backend.deploy.entity;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.qqchen.deploy.backend.deploy.enums.ProjectGroupTypeEnum; import com.qqchen.deploy.backend.deploy.enums.ProjectGroupTypeEnum;
import com.qqchen.deploy.backend.framework.domain.Entity; import com.qqchen.deploy.backend.framework.domain.Entity;
import com.qqchen.deploy.backend.system.entity.User;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -9,7 +11,9 @@ import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where; import org.hibernate.annotations.Where;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* 项目组实体 * 项目组实体
@ -54,8 +58,8 @@ public class ProjectGroup extends Entity<Long> {
/** /**
* 项目组状态 * 项目组状态
*/ */
@Column(name = "project_group_status", nullable = false) @Column(nullable = false)
private String projectGroupStatus; private Boolean enabled = true;
/** /**
* 排序号 * 排序号
@ -74,8 +78,6 @@ public class ProjectGroup extends Entity<Long> {
) )
private List<Environment> environments = new ArrayList<>(); private List<Environment> environments = new ArrayList<>();
@OneToMany(mappedBy = "projectGroup", fetch = FetchType.LAZY)
@OneToMany(fetch = FetchType.LAZY) private Set<Application> applications = new HashSet<>();
@JoinColumn(name = "project_group_id")
private List<Application> applications = new ArrayList<>();
} }

View File

@ -0,0 +1,18 @@
package com.qqchen.deploy.backend.deploy.enums;
import lombok.Getter;
@Getter
public enum DevelopmentLanguageTypeEnum {
JAVA("Java"),
NODE_JS("NodeJS"),
PYTHON("Python"),
GO("Go");
private final String code;
DevelopmentLanguageTypeEnum(String code) {
this.code = code;
}
}

View File

@ -6,5 +6,5 @@ import org.springframework.stereotype.Repository;
@Repository @Repository
public interface IApplicationRepository extends IBaseRepository<Application, Long> { public interface IApplicationRepository extends IBaseRepository<Application, Long> {
boolean existsByAppCodeAndProjectGroupIdAndDeletedFalse(String appCode, Long projectId);
} }

View File

@ -543,22 +543,22 @@ CREATE TABLE workflow_log
CREATE TABLE deploy_project_group CREATE TABLE deploy_project_group
( (
-- 基础字段 -- 基础字段
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
create_by VARCHAR(100) NULL COMMENT '创建人', create_by VARCHAR(100) NULL COMMENT '创建人',
create_time DATETIME(6) NULL COMMENT '创建时间', create_time DATETIME(6) NULL COMMENT '创建时间',
update_by VARCHAR(100) NULL COMMENT '更新人', update_by VARCHAR(100) NULL COMMENT '更新人',
update_time DATETIME(6) NULL COMMENT '更新时间', update_time DATETIME(6) NULL COMMENT '更新时间',
version INT NOT NULL DEFAULT 1 COMMENT '版本号', version INT NOT NULL DEFAULT 1 COMMENT '版本号',
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除0-未删除1-已删除', deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除0-未删除1-已删除',
-- 业务字段 -- 业务字段
tenant_code BIGINT DEFAULT NULL COMMENT '租户CODE', tenant_code BIGINT DEFAULT NULL COMMENT '租户CODE',
type VARCHAR(50) NULL COMMENT '项目组类型', type VARCHAR(50) NULL COMMENT '项目组类型',
project_group_code VARCHAR(50) NOT NULL COMMENT '项目组编码', project_group_code VARCHAR(50) NOT NULL COMMENT '项目组编码',
project_group_name VARCHAR(100) NOT NULL COMMENT '项目组名称', project_group_name VARCHAR(100) NOT NULL COMMENT '项目组名称',
project_group_desc VARCHAR(255) NULL COMMENT '项目组描述', project_group_desc VARCHAR(255) NULL COMMENT '项目组描述',
project_group_status VARCHAR(50) NOT NULL DEFAULT 'ENABLED' COMMENT '项目组状态ENABLED-启用DISABLED-禁用', enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用0禁用1启用',
sort INT NOT NULL DEFAULT 0 COMMENT '排序号', sort INT NOT NULL DEFAULT 0 COMMENT '排序号',
-- 索引 -- 索引
INDEX idx_tenant_id (tenant_code) COMMENT '租户ID索引', INDEX idx_tenant_id (tenant_code) COMMENT '租户ID索引',
@ -574,37 +574,34 @@ CREATE TABLE deploy_project_group
-- 应用表 -- 应用表
CREATE TABLE deploy_application CREATE TABLE deploy_application
( (
-- 基础字段 id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', -- 业务字段
create_by VARCHAR(100) NULL COMMENT '创建人', app_code VARCHAR(50) NOT NULL COMMENT '应用编码',
create_time DATETIME(6) NULL COMMENT '创建时间', app_name VARCHAR(100) NOT NULL COMMENT '应用名称',
update_by VARCHAR(100) NULL COMMENT '更新人', app_desc VARCHAR(255) NULL COMMENT '应用描述',
update_time DATETIME(6) NULL COMMENT '更新时间', repo_url VARCHAR(255) NULL COMMENT '代码仓库地址',
version INT NOT NULL DEFAULT 1 COMMENT '版本号', language VARCHAR(50) NULL COMMENT '开发语言JAVA、PYTHON、NODEJS',
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除0-未删除1-已删除', enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用0禁用1启用',
sort INT NOT NULL DEFAULT 0 COMMENT '排序号',
project_group_id BIGINT NOT NULL COMMENT '所属项目组ID',
-- 基础字段
create_by VARCHAR(100) NULL COMMENT '创建人',
create_time DATETIME(6) NULL COMMENT '创建时间',
update_by VARCHAR(100) NULL COMMENT '更新人',
update_time DATETIME(6) NULL COMMENT '更新时间',
version INT NOT NULL DEFAULT 1 COMMENT '版本号',
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除0-未删除1-已删除',
-- 业务字段 -- 索引
project_group_id BIGINT NOT NULL COMMENT '所属项目组ID', INDEX idx_project_group_id (project_group_id) COMMENT '项目ID索引',
app_code VARCHAR(50) NOT NULL COMMENT '应用编码', UNIQUE INDEX uk_app_code (project_group_id, app_code) COMMENT '项目下应用编码唯一',
app_name VARCHAR(100) NOT NULL COMMENT '应用名称',
app_desc VARCHAR(255) NULL COMMENT '应用描述',
app_status VARCHAR(50) NOT NULL DEFAULT 'ENABLED' COMMENT '应用状态ENABLED-启用DISABLED-禁用',
repo_url VARCHAR(255) NULL COMMENT '代码仓库地址',
repo_branch VARCHAR(100) NULL COMMENT '代码仓库分支',
repo_type VARCHAR(50) NULL COMMENT '代码仓库类型GIT、SVN',
build_type VARCHAR(50) NULL COMMENT '构建类型MAVEN、GRADLE、NPM',
dev_language VARCHAR(50) NULL COMMENT '开发语言JAVA、PYTHON、NODEJS',
dev_framework VARCHAR(50) NULL COMMENT '开发框架SPRING_BOOT、DJANGO、EXPRESS',
sort INT NOT NULL DEFAULT 0 COMMENT '排序号',
-- 索引 -- 外键约束
INDEX idx_project_group_id (project_group_id) COMMENT '项目ID索引', CONSTRAINT fk_application_project_group FOREIGN KEY (project_group_id)
UNIQUE INDEX uk_app_code (project_group_id, app_code) COMMENT '项目下应用编码唯一', REFERENCES deploy_project_group (id)
) ENGINE = InnoDB
-- 外键约束 DEFAULT CHARSET = utf8mb4
CONSTRAINT fk_application_project_group FOREIGN KEY (project_group_id) COLLATE = utf8mb4_unicode_ci COMMENT ='应用表';
REFERENCES deploy_project_group (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应用表';
-- 环境表 -- 环境表
CREATE TABLE deploy_environment CREATE TABLE deploy_environment