package cn.lihu.jh.module.infra.controller.admin.codegen.vo.table; 
 | 
  
 | 
import cn.hutool.core.util.ObjectUtil; 
 | 
import cn.lihu.jh.module.infra.enums.codegen.CodegenSceneEnum; 
 | 
import cn.lihu.jh.module.infra.enums.codegen.CodegenTemplateTypeEnum; 
 | 
import com.fasterxml.jackson.annotation.JsonIgnore; 
 | 
import io.swagger.v3.oas.annotations.media.Schema; 
 | 
import lombok.Data; 
 | 
  
 | 
import javax.validation.constraints.AssertTrue; 
 | 
import javax.validation.constraints.NotNull; 
 | 
  
 | 
@Schema(description = "管理后台 - 代码生成表定义创建/修改 Response VO") 
 | 
@Data 
 | 
public class CodegenTableSaveReqVO { 
 | 
  
 | 
    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 
 | 
    private Long id; 
 | 
  
 | 
    @Schema(description = "生成场景,参见 CodegenSceneEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 
 | 
    @NotNull(message = "导入类型不能为空") 
 | 
    private Integer scene; 
 | 
  
 | 
    @Schema(description = "表名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "jh") 
 | 
    @NotNull(message = "表名称不能为空") 
 | 
    private String tableName; 
 | 
  
 | 
    @Schema(description = "表描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") 
 | 
    @NotNull(message = "表描述不能为空") 
 | 
    private String tableComment; 
 | 
  
 | 
    @Schema(description = "备注", example = "我是备注") 
 | 
    private String remark; 
 | 
  
 | 
    @Schema(description = "模块名", requiredMode = Schema.RequiredMode.REQUIRED, example = "system") 
 | 
    @NotNull(message = "模块名不能为空") 
 | 
    private String moduleName; 
 | 
  
 | 
    @Schema(description = "业务名", requiredMode = Schema.RequiredMode.REQUIRED, example = "codegen") 
 | 
    @NotNull(message = "业务名不能为空") 
 | 
    private String businessName; 
 | 
  
 | 
    @Schema(description = "类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "CodegenTable") 
 | 
    @NotNull(message = "类名称不能为空") 
 | 
    private String className; 
 | 
  
 | 
    @Schema(description = "类描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "代码生成器的表定义") 
 | 
    @NotNull(message = "类描述不能为空") 
 | 
    private String classComment; 
 | 
  
 | 
    @Schema(description = "作者", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码") 
 | 
    @NotNull(message = "作者不能为空") 
 | 
    private String author; 
 | 
  
 | 
    @Schema(description = "模板类型,参见 CodegenTemplateTypeEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 
 | 
    @NotNull(message = "模板类型不能为空") 
 | 
    private Integer templateType; 
 | 
  
 | 
    @Schema(description = "前端类型,参见 CodegenFrontTypeEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "20") 
 | 
    @NotNull(message = "前端类型不能为空") 
 | 
    private Integer frontType; 
 | 
  
 | 
    @Schema(description = "父菜单编号", example = "1024") 
 | 
    private Long parentMenuId; 
 | 
  
 | 
    @Schema(description = "主表的编号", example = "2048") 
 | 
    private Long masterTableId; 
 | 
    @Schema(description = "子表关联主表的字段编号", example = "4096") 
 | 
    private Long subJoinColumnId; 
 | 
    @Schema(description = "主表与子表是否一对多", example = "4096") 
 | 
    private Boolean subJoinMany; 
 | 
  
 | 
    @Schema(description = "树表的父字段编号", example = "8192") 
 | 
    private Long treeParentColumnId; 
 | 
    @Schema(description = "树表的名字字段编号", example = "16384") 
 | 
    private Long treeNameColumnId; 
 | 
  
 | 
    @AssertTrue(message = "上级菜单不能为空,请前往 [修改生成配置 -> 生成信息] 界面,设置“上级菜单”字段") 
 | 
    @JsonIgnore 
 | 
    public boolean isParentMenuIdValid() { 
 | 
        // 生成场景为管理后台时,必须设置上级菜单,不然生成的菜单 SQL 是无父级菜单的 
 | 
        return ObjectUtil.notEqual(getScene(), CodegenSceneEnum.ADMIN.getScene()) 
 | 
                || getParentMenuId() != null; 
 | 
    } 
 | 
  
 | 
    @AssertTrue(message = "关联的父表信息不全") 
 | 
    @JsonIgnore 
 | 
    public boolean isSubValid() { 
 | 
        return ObjectUtil.notEqual(getTemplateType(), CodegenTemplateTypeEnum.SUB) 
 | 
                || (ObjectUtil.isAllNotEmpty(masterTableId, subJoinColumnId, subJoinMany)); 
 | 
    } 
 | 
  
 | 
    @AssertTrue(message = "关联的树表信息不全") 
 | 
    @JsonIgnore 
 | 
    public boolean isTreeValid() { 
 | 
        return ObjectUtil.notEqual(templateType, CodegenTemplateTypeEnum.TREE) 
 | 
                || (ObjectUtil.isAllNotEmpty(treeParentColumnId, treeNameColumnId)); 
 | 
    } 
 | 
  
 | 
} 
 |