package com.yida.data.common.core.entity.system;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yida.data.common.core.entity.system.enums.DeptTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author MrBird
 */
@Data
@ToString
@TableName("t_dept")
public class Dept implements Serializable {

    public static final Long TOP_DEPT_ID = 0L;
    public final static String TYPE_QYWX = "0";
    public final static String TYPE_YIDA_APP = "1";
    public final static String TYPE_DAHUA = "2";
    private static final long serialVersionUID = -7790334862410409053L;
    @TableId(value = "DEPT_ID", type = IdType.AUTO)
    private Long deptId;
    @TableField(value = "PARENT_ID")
    private Long parentId;
    @NotBlank(message = "{required}")
    @Size(max = 20, message = "{noMoreThan}")
    private String deptName;

    /**
     * 在父部门中的次序值。order值大的排序靠前。有效的值范围是[0, 2^32)
     */
    @TableField(value = "ORDER_NUM")
    private Integer orderNum;
    @TableField(value = "CREATE_TIME", fill = FieldFill.INSERT)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createDate;
    @TableField(value = "MODIFY_TIME", fill = FieldFill.UPDATE)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateDate;
    /**
     * 部门简称
     */
    @ApiModelProperty("部门简称")
    private String deptAbbreviation;
    /**
     * 部门类型，0表示学校，5公司，6部门, 7教育局, 8代理商 {@link DeptTypeEnum}
     */
    @ApiModelProperty("部门类型，0表示学校，5公司，6部门, 7教育局, 8代理商")
    private Integer deptType;
    private Long areaId;
    private String corpId;
    /**
     * 微信回调token，每个学校唯一确定
     */
    private String wxCallToken;
    /**
     * 微信回调编码aes key，每个学校唯一确定
     */
    private String wxAesKey;
    @ApiModelProperty("学校关联类型类型，0-企业微信，1-易达app，2-大华平台  多类型使用','连接")
    private String schoolType;

    @ApiModelProperty("学校性质：0小学，1中学，2九年一贯，3十二年一贯，4：高校")
    @TableField(value = "school_nature")
    private Integer schoolNature;

    private Long wxId;
    private Long parentWxId;
    /**
     * 是否显示，0-显示，1-不显示   前台不可显示！！！
     */
    private Integer visible;
    @ApiModelProperty("微信公众号appId")
    private String wxPublicAppId;
    @ApiModelProperty("微信公众号secret")
    private String wxPublicSecret;
    /**
     * 组织机构的图标
     */
    @TableField(value = "icon")
    private String icon;
    /**
     * 升级时对应的年级id，添加年级时需要
     */
    @TableField(value = "update_grade_id")
    private Integer updateGradeId;
    /**
     * 经纬度中的经度
     */
    @TableField(value = "lng")
    private String lng;
    /**
     * 经纬度中的维度
     */
    @TableField(value = "lat")
    private String lat;
    private String yidaAppColId;
    @ApiModelProperty("易达appId")
    private Long yidaAppId;
    @ApiModelProperty("大华学籍id")
    private String dahuaId;
    private transient String createTimeFrom;
    private transient String createTimeTo;

    @TableField(exist = false)
    @ApiModelProperty("教育局关联学校id集合")
    private List<Long> relationSchoolList;

    /**
     * 树节点禁用状态
     */
    @TableField(exist = false)
    private boolean disableStatus = false;
}
