修改成application分类
This commit is contained in:
parent
d499d6b759
commit
24eab092da
@ -0,0 +1,29 @@
|
||||
package com.qqchen.deploy.backend.deploy.api;
|
||||
|
||||
import com.qqchen.deploy.backend.deploy.dto.ApplicationCategoryDTO;
|
||||
import com.qqchen.deploy.backend.deploy.entity.ApplicationCategory;
|
||||
import com.qqchen.deploy.backend.deploy.query.ApplicationCategoryQuery;
|
||||
import com.qqchen.deploy.backend.framework.controller.BaseController;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 应用分类API控制器
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/application-category")
|
||||
@Tag(name = "应用分类管理", description = "应用分类的增删改查接口")
|
||||
public class ApplicationCategoryApiController extends BaseController<ApplicationCategory, ApplicationCategoryDTO, Long, ApplicationCategoryQuery> {
|
||||
|
||||
@Override
|
||||
protected void exportData(HttpServletResponse response, List<ApplicationCategoryDTO> data) {
|
||||
// TODO: 实现导出功能
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,23 +0,0 @@
|
||||
package com.qqchen.deploy.backend.deploy.api;
|
||||
|
||||
import com.qqchen.deploy.backend.deploy.dto.ProjectGroupDTO;
|
||||
import com.qqchen.deploy.backend.deploy.entity.ProjectGroup;
|
||||
import com.qqchen.deploy.backend.deploy.query.ProjectGroupQuery;
|
||||
import com.qqchen.deploy.backend.framework.controller.BaseController;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Tag(name = "项目组管理", description = "项目组管理相关接口")
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/project-group")
|
||||
public class ProjectGroupApiController extends BaseController<ProjectGroup, ProjectGroupDTO, Long, ProjectGroupQuery> {
|
||||
|
||||
@Override
|
||||
protected void exportData(HttpServletResponse response, List<ProjectGroupDTO> data) {
|
||||
// TODO: 实现导出逻辑
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.qqchen.deploy.backend.deploy.converter;
|
||||
|
||||
import com.qqchen.deploy.backend.deploy.dto.ApplicationCategoryDTO;
|
||||
import com.qqchen.deploy.backend.deploy.entity.ApplicationCategory;
|
||||
import com.qqchen.deploy.backend.framework.converter.BaseConverter;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
/**
|
||||
* 应用分类Converter
|
||||
*/
|
||||
@Mapper(config = BaseConverter.class)
|
||||
public interface ApplicationCategoryConverter extends BaseConverter<ApplicationCategory, ApplicationCategoryDTO> {
|
||||
}
|
||||
|
||||
@ -1,10 +0,0 @@
|
||||
package com.qqchen.deploy.backend.deploy.converter;
|
||||
|
||||
import com.qqchen.deploy.backend.deploy.dto.ProjectGroupDTO;
|
||||
import com.qqchen.deploy.backend.deploy.entity.ProjectGroup;
|
||||
import com.qqchen.deploy.backend.framework.converter.BaseConverter;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
@Mapper(config = BaseConverter.class)
|
||||
public interface ProjectGroupConverter extends BaseConverter<ProjectGroup, ProjectGroupDTO> {
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
package com.qqchen.deploy.backend.deploy.dto;
|
||||
|
||||
import com.qqchen.deploy.backend.framework.dto.BaseDTO;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 应用分类DTO
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Schema(description = "应用分类DTO")
|
||||
public class ApplicationCategoryDTO extends BaseDTO {
|
||||
|
||||
@Schema(description = "分类编码")
|
||||
@NotBlank(message = "分类编码不能为空")
|
||||
private String code;
|
||||
|
||||
@Schema(description = "分类名称")
|
||||
@NotBlank(message = "分类名称不能为空")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "分类描述")
|
||||
private String description;
|
||||
|
||||
@Schema(description = "图标")
|
||||
private String icon;
|
||||
|
||||
@Schema(description = "是否启用")
|
||||
@NotNull(message = "启用状态不能为空")
|
||||
private Boolean enabled;
|
||||
|
||||
@Schema(description = "排序号")
|
||||
@NotNull(message = "排序号不能为空")
|
||||
private Integer sort;
|
||||
|
||||
@Schema(description = "应用数量")
|
||||
private Long applicationCount;
|
||||
}
|
||||
|
||||
@ -29,8 +29,8 @@ public class ApplicationDTO extends BaseDTO {
|
||||
@Schema(description = "代码仓库项目ID")
|
||||
private Long repoProjectId;
|
||||
|
||||
@NotNull(message = "所属项目组ID不能为空")
|
||||
private Long projectGroupId;
|
||||
@Schema(description = "应用分类ID")
|
||||
private Long applicationCategoryId;
|
||||
|
||||
@Schema(description = "是否启用")
|
||||
private Boolean enabled;
|
||||
@ -42,6 +42,6 @@ public class ApplicationDTO extends BaseDTO {
|
||||
|
||||
private RepositoryProjectDTO repositoryProject;
|
||||
|
||||
private ProjectGroupDTO projectGroup;
|
||||
private ApplicationCategoryDTO applicationCategory;
|
||||
|
||||
}
|
||||
@ -1,38 +0,0 @@
|
||||
package com.qqchen.deploy.backend.deploy.dto;
|
||||
|
||||
import com.qqchen.deploy.backend.deploy.enums.ProjectGroupTypeEnum;
|
||||
import com.qqchen.deploy.backend.framework.dto.BaseDTO;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
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不能为空")
|
||||
private String tenantCode;
|
||||
|
||||
@NotNull(message = "项目组类型不能为空")
|
||||
private ProjectGroupTypeEnum type;
|
||||
|
||||
@NotBlank(message = "项目组编码不能为空")
|
||||
private String projectGroupCode;
|
||||
|
||||
@NotBlank(message = "项目组名称不能为空")
|
||||
private String projectGroupName;
|
||||
|
||||
private String projectGroupDesc;
|
||||
|
||||
private Integer totalEnvironments;
|
||||
|
||||
private Integer totalApplications;
|
||||
|
||||
private Boolean enabled;
|
||||
|
||||
@NotNull(message = "排序号不能为空")
|
||||
private Integer sort;
|
||||
}
|
||||
@ -55,10 +55,10 @@ public class Application extends Entity<Long> {
|
||||
private Long repoProjectId;
|
||||
|
||||
/**
|
||||
* 项目组ID
|
||||
* 应用分类ID
|
||||
*/
|
||||
@Column(name = "project_group_id", nullable = false)
|
||||
private Long projectGroupId;
|
||||
@Column(name = "application_category_id")
|
||||
private Long applicationCategoryId;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
|
||||
@ -0,0 +1,54 @@
|
||||
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_application_category")
|
||||
public class ApplicationCategory extends Entity<Long> {
|
||||
|
||||
/**
|
||||
* 分类编码
|
||||
*/
|
||||
@Column(name = "code", nullable = false)
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 分类名称
|
||||
*/
|
||||
@Column(name = "name", nullable = false)
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 分类描述
|
||||
*/
|
||||
@Column(name = "description")
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 图标
|
||||
*/
|
||||
@Column(name = "icon")
|
||||
private String icon;
|
||||
|
||||
/**
|
||||
* 是否启用
|
||||
*/
|
||||
@Column(nullable = false)
|
||||
private Boolean enabled = true;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@Column(name = "sort", nullable = false)
|
||||
private Integer sort = 0;
|
||||
}
|
||||
|
||||
@ -1,60 +0,0 @@
|
||||
package com.qqchen.deploy.backend.deploy.entity;
|
||||
|
||||
import com.qqchen.deploy.backend.deploy.enums.ProjectGroupTypeEnum;
|
||||
import com.qqchen.deploy.backend.framework.annotation.LogicDelete;
|
||||
import com.qqchen.deploy.backend.framework.domain.Entity;
|
||||
import jakarta.persistence.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 项目组实体
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@jakarta.persistence.Entity
|
||||
@Table(name = "deploy_project_group")
|
||||
public class ProjectGroup extends Entity<Long> {
|
||||
|
||||
/**
|
||||
* 租户ID
|
||||
*/
|
||||
@Column(name = "tenant_code")
|
||||
private String tenantCode;
|
||||
|
||||
@Column(name = "type", nullable = false)
|
||||
@Enumerated(EnumType.STRING)
|
||||
private ProjectGroupTypeEnum type;
|
||||
|
||||
/**
|
||||
* 项目组编码
|
||||
*/
|
||||
@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;
|
||||
|
||||
/**
|
||||
* 项目组状态
|
||||
*/
|
||||
@Column(nullable = false)
|
||||
private Boolean enabled = true;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@Column(name = "sort", nullable = false)
|
||||
private Integer sort;
|
||||
|
||||
}
|
||||
@ -1,19 +0,0 @@
|
||||
package com.qqchen.deploy.backend.deploy.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public enum ProjectGroupTypeEnum {
|
||||
|
||||
PRODUCT("PRODUCT", "产品"),
|
||||
PROJECT("PROJECT", "项目");
|
||||
|
||||
private final String code;
|
||||
|
||||
private final String description;
|
||||
|
||||
ProjectGroupTypeEnum(String code, String description) {
|
||||
this.code = code;
|
||||
this.description = description;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
package com.qqchen.deploy.backend.deploy.query;
|
||||
|
||||
import com.qqchen.deploy.backend.framework.annotation.QueryField;
|
||||
import com.qqchen.deploy.backend.framework.enums.QueryType;
|
||||
import com.qqchen.deploy.backend.framework.query.BaseQuery;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 应用分类查询条件
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Schema(description = "应用分类查询条件")
|
||||
public class ApplicationCategoryQuery extends BaseQuery {
|
||||
|
||||
@QueryField(field = "code", type = QueryType.LIKE)
|
||||
@Schema(description = "分类编码(模糊查询)")
|
||||
private String code;
|
||||
|
||||
@QueryField(field = "name", type = QueryType.LIKE)
|
||||
@Schema(description = "分类名称(模糊查询)")
|
||||
private String name;
|
||||
|
||||
@QueryField(field = "enabled")
|
||||
@Schema(description = "是否启用")
|
||||
private Boolean enabled;
|
||||
}
|
||||
|
||||
@ -1,24 +0,0 @@
|
||||
package com.qqchen.deploy.backend.deploy.query;
|
||||
|
||||
import com.qqchen.deploy.backend.framework.annotation.QueryField;
|
||||
import com.qqchen.deploy.backend.framework.enums.QueryType;
|
||||
import com.qqchen.deploy.backend.framework.query.BaseQuery;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ProjectGroupQuery extends BaseQuery {
|
||||
|
||||
@QueryField(field = "projectGroupCode", type = QueryType.LIKE)
|
||||
private String projectGroupCode;
|
||||
|
||||
@QueryField(field = "projectGroupName", type = QueryType.LIKE)
|
||||
private String projectGroupName;
|
||||
|
||||
@QueryField(field = "projectGroupStatus")
|
||||
private String projectGroupStatus;
|
||||
|
||||
@QueryField(field = "tenantCode")
|
||||
private Long tenantCode;
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
package com.qqchen.deploy.backend.deploy.repository;
|
||||
|
||||
import com.qqchen.deploy.backend.deploy.entity.ApplicationCategory;
|
||||
import com.qqchen.deploy.backend.framework.repository.IBaseRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* 应用分类Repository
|
||||
*/
|
||||
@Repository
|
||||
public interface IApplicationCategoryRepository extends IBaseRepository<ApplicationCategory, Long> {
|
||||
|
||||
/**
|
||||
* 根据编码查询(忽略已删除)
|
||||
*/
|
||||
Optional<ApplicationCategory> findByCodeAndDeletedFalse(String code);
|
||||
|
||||
/**
|
||||
* 检查编码是否存在
|
||||
*/
|
||||
boolean existsByCodeAndDeletedFalse(String code);
|
||||
}
|
||||
|
||||
@ -9,6 +9,9 @@ import java.util.List;
|
||||
@Repository
|
||||
public interface IApplicationRepository extends IBaseRepository<Application, Long> {
|
||||
|
||||
Integer countByProjectGroupId(Long projectGroupId);
|
||||
/**
|
||||
* 统计应用分类下的应用数量
|
||||
*/
|
||||
Long countByApplicationCategoryIdAndDeletedFalse(Long applicationCategoryId);
|
||||
|
||||
}
|
||||
@ -1,16 +0,0 @@
|
||||
package com.qqchen.deploy.backend.deploy.repository;
|
||||
|
||||
import com.qqchen.deploy.backend.deploy.entity.ProjectGroup;
|
||||
import com.qqchen.deploy.backend.framework.repository.IBaseRepository;
|
||||
import com.querydsl.core.types.Predicate;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Repository
|
||||
public interface IProjectGroupRepository extends IBaseRepository<ProjectGroup, Long> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
package com.qqchen.deploy.backend.deploy.service;
|
||||
|
||||
import com.qqchen.deploy.backend.deploy.dto.ApplicationCategoryDTO;
|
||||
import com.qqchen.deploy.backend.deploy.entity.ApplicationCategory;
|
||||
import com.qqchen.deploy.backend.deploy.query.ApplicationCategoryQuery;
|
||||
import com.qqchen.deploy.backend.framework.service.IBaseService;
|
||||
|
||||
/**
|
||||
* 应用分类Service
|
||||
*/
|
||||
public interface IApplicationCategoryService extends IBaseService<ApplicationCategory, ApplicationCategoryDTO, ApplicationCategoryQuery, Long> {
|
||||
}
|
||||
|
||||
@ -1,12 +0,0 @@
|
||||
package com.qqchen.deploy.backend.deploy.service;
|
||||
|
||||
import com.qqchen.deploy.backend.deploy.dto.ProjectGroupDTO;
|
||||
import com.qqchen.deploy.backend.deploy.entity.ProjectGroup;
|
||||
import com.qqchen.deploy.backend.deploy.query.ProjectGroupQuery;
|
||||
import com.qqchen.deploy.backend.framework.service.IBaseService;
|
||||
import org.springframework.data.domain.Page;
|
||||
|
||||
public interface IProjectGroupService extends IBaseService<ProjectGroup, ProjectGroupDTO, ProjectGroupQuery, Long> {
|
||||
|
||||
Page<ProjectGroupDTO> page(ProjectGroupQuery query);
|
||||
}
|
||||
@ -0,0 +1,61 @@
|
||||
package com.qqchen.deploy.backend.deploy.service.impl;
|
||||
|
||||
import com.qqchen.deploy.backend.deploy.dto.ApplicationCategoryDTO;
|
||||
import com.qqchen.deploy.backend.deploy.entity.ApplicationCategory;
|
||||
import com.qqchen.deploy.backend.deploy.query.ApplicationCategoryQuery;
|
||||
import com.qqchen.deploy.backend.deploy.repository.IApplicationCategoryRepository;
|
||||
import com.qqchen.deploy.backend.deploy.repository.IApplicationRepository;
|
||||
import com.qqchen.deploy.backend.deploy.service.IApplicationCategoryService;
|
||||
import com.qqchen.deploy.backend.framework.enums.ResponseCode;
|
||||
import com.qqchen.deploy.backend.framework.exception.BusinessException;
|
||||
import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 应用分类Service实现
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class ApplicationCategoryServiceImpl extends BaseServiceImpl<ApplicationCategory, ApplicationCategoryDTO, ApplicationCategoryQuery, Long>
|
||||
implements IApplicationCategoryService {
|
||||
|
||||
@Resource
|
||||
private IApplicationCategoryRepository applicationCategoryRepository;
|
||||
|
||||
@Resource
|
||||
private IApplicationRepository applicationRepository;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public ApplicationCategoryDTO create(ApplicationCategoryDTO dto) {
|
||||
// 检查编码唯一性
|
||||
if (applicationCategoryRepository.existsByCodeAndDeletedFalse(dto.getCode())) {
|
||||
throw new RuntimeException("分类编码已存在: " + dto.getCode());
|
||||
}
|
||||
return super.create(dto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<ApplicationCategoryDTO> page(ApplicationCategoryQuery query) {
|
||||
Page<ApplicationCategoryDTO> page = super.page(query);
|
||||
|
||||
// 统计每个分类的应用数量
|
||||
List<ApplicationCategoryDTO> content = page.getContent().stream()
|
||||
.peek(category -> {
|
||||
Long count = applicationRepository.countByApplicationCategoryIdAndDeletedFalse(category.getId());
|
||||
category.setApplicationCount(count);
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
|
||||
return new PageImpl<>(content, page.getPageable(), page.getTotalElements());
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,21 +1,18 @@
|
||||
package com.qqchen.deploy.backend.deploy.service.impl;
|
||||
|
||||
import com.qqchen.deploy.backend.deploy.converter.ExternalSystemConverter;
|
||||
import com.qqchen.deploy.backend.deploy.converter.ProjectGroupConverter;
|
||||
import com.qqchen.deploy.backend.deploy.converter.ApplicationCategoryConverter;
|
||||
import com.qqchen.deploy.backend.deploy.converter.RepositoryGroupConverter;
|
||||
import com.qqchen.deploy.backend.deploy.converter.RepositoryProjectConverter;
|
||||
import com.qqchen.deploy.backend.deploy.dto.ApplicationDTO;
|
||||
import com.qqchen.deploy.backend.deploy.dto.DevelopmentLanguageTypeDTO;
|
||||
import com.qqchen.deploy.backend.deploy.entity.Application;
|
||||
import com.qqchen.deploy.backend.deploy.entity.ExternalSystem;
|
||||
import com.qqchen.deploy.backend.deploy.entity.ProjectGroup;
|
||||
import com.qqchen.deploy.backend.deploy.entity.ApplicationCategory;
|
||||
import com.qqchen.deploy.backend.deploy.entity.RepositoryGroup;
|
||||
import com.qqchen.deploy.backend.deploy.entity.RepositoryProject;
|
||||
import com.qqchen.deploy.backend.deploy.enums.DevelopmentLanguageTypeEnum;
|
||||
import com.qqchen.deploy.backend.deploy.query.ApplicationQuery;
|
||||
import com.qqchen.deploy.backend.deploy.repository.IApplicationCategoryRepository;
|
||||
import com.qqchen.deploy.backend.deploy.repository.IApplicationRepository;
|
||||
import com.qqchen.deploy.backend.deploy.repository.IExternalSystemRepository;
|
||||
import com.qqchen.deploy.backend.deploy.repository.IProjectGroupRepository;
|
||||
import com.qqchen.deploy.backend.deploy.repository.IRepositoryGroupRepository;
|
||||
import com.qqchen.deploy.backend.deploy.repository.IRepositoryProjectRepository;
|
||||
import com.qqchen.deploy.backend.deploy.service.IApplicationService;
|
||||
@ -36,10 +33,10 @@ import static java.util.stream.Collectors.toList;
|
||||
public class ApplicationServiceImpl extends BaseServiceImpl<Application, ApplicationDTO, ApplicationQuery, Long> implements IApplicationService {
|
||||
|
||||
@Resource
|
||||
private IProjectGroupRepository projectGroupRepository;
|
||||
private IApplicationCategoryRepository applicationCategoryRepository;
|
||||
|
||||
@Resource
|
||||
private ProjectGroupConverter projectGroupConverter;
|
||||
private ApplicationCategoryConverter applicationCategoryConverter;
|
||||
|
||||
@Resource
|
||||
private IRepositoryGroupRepository repositoryGroupRepository;
|
||||
@ -53,21 +50,17 @@ public class ApplicationServiceImpl extends BaseServiceImpl<Application, Applica
|
||||
@Resource
|
||||
private RepositoryProjectConverter repositoryProjectConverter;
|
||||
|
||||
@Resource
|
||||
private IExternalSystemRepository externalSystemRepository;
|
||||
|
||||
@Resource
|
||||
private ExternalSystemConverter externalSystemConverter;
|
||||
|
||||
@Resource
|
||||
private IApplicationRepository applicationRepository;
|
||||
|
||||
public Page<ApplicationDTO> page(ApplicationQuery query) {
|
||||
Page<ApplicationDTO> page = super.page(query);
|
||||
List<ApplicationDTO> result = page.getContent().stream().peek(application -> {
|
||||
// 查询并设置项目组信息
|
||||
Optional<ProjectGroup> projectGroupOptional = projectGroupRepository.findById(application.getProjectGroupId());
|
||||
projectGroupOptional.ifPresent(projectGroup -> application.setProjectGroup(projectGroupConverter.toDto(projectGroup)));
|
||||
// 查询并设置应用分类信息
|
||||
if (application.getApplicationCategoryId() != null) {
|
||||
Optional<ApplicationCategory> categoryOptional = applicationCategoryRepository.findById(application.getApplicationCategoryId());
|
||||
categoryOptional.ifPresent(category -> application.setApplicationCategory(applicationCategoryConverter.toDto(category)));
|
||||
}
|
||||
|
||||
// 查询并设置代码仓库组信息
|
||||
if (application.getRepoGroupId() != null) {
|
||||
|
||||
@ -1,63 +0,0 @@
|
||||
package com.qqchen.deploy.backend.deploy.service.impl;
|
||||
|
||||
import com.qqchen.deploy.backend.deploy.dto.ProjectGroupDTO;
|
||||
import com.qqchen.deploy.backend.deploy.entity.Application;
|
||||
import com.qqchen.deploy.backend.deploy.entity.ProjectGroup;
|
||||
import com.qqchen.deploy.backend.deploy.query.ProjectGroupQuery;
|
||||
import com.qqchen.deploy.backend.deploy.repository.IApplicationRepository;
|
||||
import com.qqchen.deploy.backend.deploy.repository.IEnvironmentRepository;
|
||||
import com.qqchen.deploy.backend.deploy.repository.IProjectGroupRepository;
|
||||
import com.qqchen.deploy.backend.deploy.service.IEnvironmentService;
|
||||
import com.qqchen.deploy.backend.deploy.service.IProjectGroupService;
|
||||
import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.persistence.Query;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
@Service
|
||||
public class ProjectGroupServiceImpl extends BaseServiceImpl<ProjectGroup, ProjectGroupDTO, ProjectGroupQuery, Long> implements IProjectGroupService {
|
||||
|
||||
@Resource
|
||||
private IProjectGroupRepository projectGroupRepository;
|
||||
|
||||
@Resource
|
||||
private IApplicationRepository applicationRepository;
|
||||
|
||||
@Resource
|
||||
private IEnvironmentRepository environmentRepository;
|
||||
|
||||
|
||||
@Override
|
||||
public Page<ProjectGroupDTO> page(ProjectGroupQuery query) {
|
||||
Page<ProjectGroupDTO> page = super.page(query);
|
||||
List<ProjectGroupDTO> result = page.getContent().stream().map(projectGroupDTO -> {
|
||||
projectGroupDTO.setTotalApplications(applicationRepository.countByProjectGroupId(projectGroupDTO.getId()));
|
||||
projectGroupDTO.setTotalEnvironments(environmentRepository.countByProjectGroupId(projectGroupDTO.getId()));
|
||||
return projectGroupDTO;
|
||||
}).collect(toList());
|
||||
return new PageImpl<>(result, page.getPageable(), page.getTotalElements());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void delete(Long id) {
|
||||
// 1. 先删除中间表数据
|
||||
Query query = entityManager.createNativeQuery(
|
||||
"DELETE FROM deploy_project_group_environment WHERE project_group_id = :projectGroupId"
|
||||
);
|
||||
query.setParameter("projectGroupId", id);
|
||||
query.executeUpdate();
|
||||
|
||||
// 2. 再调用父类的删除方法(逻辑删除ProjectGroup)
|
||||
super.delete(id);
|
||||
}
|
||||
}
|
||||
@ -675,8 +675,8 @@ CREATE TABLE workflow_log
|
||||
-- 项目管理相关表
|
||||
-- --------------------------------------------------------------------------------------
|
||||
|
||||
-- 项目组表
|
||||
CREATE TABLE deploy_project_group
|
||||
-- 应用分类表
|
||||
CREATE TABLE deploy_application_category
|
||||
(
|
||||
-- 基础字段
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
|
||||
@ -688,16 +688,17 @@ CREATE TABLE deploy_project_group
|
||||
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除:0-未删除,1-已删除',
|
||||
|
||||
-- 业务字段
|
||||
tenant_code VARCHAR(50) DEFAULT NULL COMMENT '租户CODE',
|
||||
type VARCHAR(50) NULL COMMENT '项目组类型',
|
||||
project_group_code VARCHAR(50) NOT NULL COMMENT '项目组编码',
|
||||
project_group_name VARCHAR(100) NOT NULL COMMENT '项目组名称',
|
||||
project_group_desc VARCHAR(255) NULL COMMENT '项目组描述',
|
||||
code VARCHAR(50) NOT NULL COMMENT '分类编码',
|
||||
name VARCHAR(100) NOT NULL COMMENT '分类名称',
|
||||
description VARCHAR(500) NULL COMMENT '分类描述',
|
||||
icon VARCHAR(50) NULL COMMENT '图标',
|
||||
enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用(0:禁用,1:启用)',
|
||||
sort INT NOT NULL DEFAULT 0 COMMENT '排序号'
|
||||
sort INT NOT NULL DEFAULT 0 COMMENT '排序号',
|
||||
|
||||
UNIQUE INDEX uk_code (code)
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci COMMENT ='项目组表';
|
||||
COLLATE = utf8mb4_unicode_ci COMMENT ='应用分类表';
|
||||
|
||||
-- 应用表
|
||||
CREATE TABLE deploy_application
|
||||
@ -710,7 +711,7 @@ CREATE TABLE deploy_application
|
||||
language VARCHAR(50) NULL COMMENT '开发语言:JAVA、PYTHON、NODEJS',
|
||||
repo_group_id BIGINT NULL COMMENT '代码仓库组ID',
|
||||
repo_project_id BIGINT NULL COMMENT '代码仓库项目ID',
|
||||
project_group_id BIGINT NOT NULL COMMENT '所属项目组ID',
|
||||
application_category_id BIGINT NULL COMMENT '所属应用分类ID',
|
||||
enabled BIT NOT NULL DEFAULT 1 COMMENT '是否启用(0:禁用,1:启用)',
|
||||
sort INT NOT NULL DEFAULT 0 COMMENT '排序号',
|
||||
-- 基础字段
|
||||
@ -722,11 +723,11 @@ CREATE TABLE deploy_application
|
||||
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除:0-未删除,1-已删除',
|
||||
|
||||
-- 索引
|
||||
INDEX idx_project_group_id (project_group_id) COMMENT '项目ID索引',
|
||||
UNIQUE INDEX uk_app_code (project_group_id, app_code) COMMENT '项目下应用编码唯一',
|
||||
INDEX idx_application_category_id (application_category_id) COMMENT '应用分类ID索引',
|
||||
UNIQUE INDEX uk_app_code (application_category_id, app_code) COMMENT '分类下应用编码唯一',
|
||||
|
||||
-- 外键约束
|
||||
CONSTRAINT fk_application_project_group FOREIGN KEY (project_group_id) REFERENCES deploy_project_group (id)
|
||||
CONSTRAINT fk_application_category FOREIGN KEY (application_category_id) REFERENCES deploy_application_category (id)
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci COMMENT ='应用表';
|
||||
@ -754,34 +755,6 @@ CREATE TABLE deploy_environment
|
||||
-- 索引
|
||||
UNIQUE INDEX uk_env_code (env_code) COMMENT '环境编码唯一'
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='环境表';
|
||||
|
||||
-- 项目环境关联表
|
||||
CREATE TABLE deploy_project_group_environment
|
||||
(
|
||||
-- 业务字段
|
||||
project_group_id BIGINT NOT NULL COMMENT '项目ID',
|
||||
environment_id BIGINT NOT NULL COMMENT '环境ID',
|
||||
|
||||
-- 基础字段
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY 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 '是否删除',
|
||||
|
||||
-- 索引
|
||||
UNIQUE INDEX uk_project_group_environment (project_group_id, environment_id) COMMENT '项目组环境关联唯一',
|
||||
|
||||
-- 外键约束
|
||||
CONSTRAINT fk_project_env_project FOREIGN KEY (project_group_id)
|
||||
REFERENCES deploy_project_group (id),
|
||||
CONSTRAINT fk_project_env_environment FOREIGN KEY (environment_id)
|
||||
REFERENCES deploy_environment (id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='项目组环境关联表';
|
||||
|
||||
|
||||
CREATE TABLE deploy_log
|
||||
(
|
||||
-- 基础字段
|
||||
|
||||
Loading…
Reference in New Issue
Block a user