package cn.ey.biz.module.system.dal.dataobject.category;

import cn.ey.biz.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.*;
import lombok.*;

import java.util.List;

/**
 * 字典分类 DO
 */
@TableName("system_category")
@KeySequence("system_category_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CategoryDO extends BaseDO {

    /**
     * 主键
     */
    @TableId("category_id")
    private Long id;
    /**
     * 类型
     */
    @TableField("category_type")
    private String type;
    /**
     * 类型编码
     */

    @TableField("category_code")
    private String code;
    /**
     * 类型名称
     */
    @TableField("category_name")
    private String name;
    /**
     * 系统数据标识
     */
    private String sysFlag;
    /**
     * 状态（0正常 1停用）
     */
    @TableField("category_status")
    private Integer status;
    /**
     * 备注
     */
    @TableField("category_remark")
    private String remark;

    /**
     * 所属主题
     */
    private String categoryTheme;

    /**
     * 所属应用
     */
    private String ownerApp;

    /**
     * 存储类型（0聚合 1独立）
     */
    private Integer storeType;

    /**
     * 存储表名
     */
    private String storeTableName;

    /**
     * 版本号
     */
    private Long categoryVersion;

    /**
     * 是否最新版本 0-否 1-是
     */
    private Integer isNewVersion;

    /**
     * 是否最新版本  0-不可修改 1-可修改
     */
    private Integer isModify;

    /**
     * 是否版本控制 0-否 1-是
     */
    private Integer isVersionControl;

    // 解决逻辑删除与唯一键冲突问题
    @TableLogic(value = "0", delval = "NULL")
    private Boolean deleted;

    @TableField(exist = false)
    private List<String> app;

    @TableField(exist = false)
    private List<CategoryAppDO> apps;

}
