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

import java.io.Serializable;
import java.util.Date;

import com.yida.data.common.core.enums.RegistrationStatusEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;
import java.time.LocalDate;
import java.time.LocalTime;

/**
 * 智慧迎新指南花名册表Entity
 *
 * @author ZYJ
 * @date 2023-05-16 15:06:19
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("edu_smart_welcome_guide_roster")
public class EduSmartWelcomeGuideRoster implements Serializable {

    private static final long serialVersionUID = 1885471695813947514L;

    /**
     * 主键id
     */
    @ApiModelProperty(value = "主键id")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 是否删除，1删除0未删除，默认0
     */
    @ApiModelProperty(value = "是否删除，1删除0未删除，默认0")
    @TableField("del_flag")
    @TableLogic(value = "0", delval = "1")
    private Integer delFlag;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @TableField(value = "create_date", 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;

    /**
     * 创建人id
     */
    @ApiModelProperty(value = "创建人id")
    @TableField(value = "create_id", fill = FieldFill.INSERT)
    private Long createId;

    /**
     * 最后修改时间
     */
    @ApiModelProperty(value = "最后修改时间")
    @TableField(value = "update_date", 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;

    /**
     * 最后修改人id
     */
    @ApiModelProperty(value = "最后修改人id")
    @TableField(value = "update_id", fill = FieldFill.UPDATE)
    private Long updateId;

    /**
     * 部门id
     */
    @ApiModelProperty(value = "部门id")
    @TableField("dept_id")
    private Long deptId;

    /**
     * 指南id
     */
    @ApiModelProperty(value = "指南id")
    @TableField("guide_id")
    private Long guideId;

    /**
     * 毕业院校
     */
    @ApiModelProperty(value = "毕业院校")
    @TableField("graduate_school")
    private String graduateSchool;

    /**
     * 姓名
     */
    @ApiModelProperty(value = "姓名")
    @TableField("full_name")
    private String fullName;

    /**
     * 身份证号码
     */
    @ApiModelProperty(value = "身份证号码")
    @TableField("id_number")
    private String idNumber;

    /**
     * 性别：0男1女
     */
    @ApiModelProperty(value = "性别：0男1女")
    @TableField("gender")
    private Integer gender;


    /**
     * 人脸寸照URL地址
     */
    @ApiModelProperty(value = "人脸寸照URL地址")
    @TableField("avatar")
    private String avatar;

    /**
     * 录取专业
     */
    @ApiModelProperty(value = "录取专业")
    @TableField("admitted_major")
    private String admittedMajor;

    /**
     * 手机号码
     */
    @ApiModelProperty(value = "手机号码")
    @TableField("mobile")
    private String mobile;

    /**
     * 二维码地址
     */
    @ApiModelProperty(value = "二维码地址")
    @TableField("qr_code_url")
    private String qrCodeUrl;

    @ApiModelProperty(value = "录取专业ID")
    @TableField("admitted_major_id")
    private Long admittedMajorId;

    @ApiModelProperty(value = "录取系部")
    @TableField("admitted_department")
    private String admittedDepartment;

    @ApiModelProperty(value = "录取系部ID")
    @TableField("admitted_department_id")
    private Long admittedDepartmentId;

    @ApiModelProperty(value = "身份证正面照片")
    @TableField("id_card_right")
    private String idCardRight;

    @ApiModelProperty(value = "身份证反面照片")
    @TableField("id_card_reverse")
    private String idCardReverse;

    @ApiModelProperty(value = "录取通知书照片")
    @TableField("admission_letter")
    private String admissionLetter;

    @ApiModelProperty(value = "没有二维码时的提示")
    private transient String qrCodeNoticeMessage;

    @ApiModelProperty(value = "是否完成支付：1=是，0=否")
    @TableField("pay_status")
    private Integer payStatus;

    /**
     * {@link RegistrationStatusEnum}
     */
    @ApiModelProperty(value = "报到状态. 0-未报到,1-报到成功(全部步骤通过)")
    @TableField("registration_status")
    private Integer registrationStatus;


    /**
     * 学区id
     */
    @ApiModelProperty(value = "学区id")
    @TableField("campus_id")
    private Long campusId;


    /**
     * 学区
     */
    @ApiModelProperty(value = "学区")
    @TableField("campus_name")
    private String campusName;

    /**
     * 学段id
     */
    @ApiModelProperty(value = "学段id")
    @TableField("section_id")
    private Long sectionId;


    /**
     * 学段
     */
    @ApiModelProperty(value = "学段")
    @TableField("section_name")
    private String sectionName;


    /**
     * 年级id
     */
    @ApiModelProperty(value = "年级id")
    @TableField("grade_id")
    private Long gradeId;


    /**
     * 年级
     */
    @ApiModelProperty(value = "年级")
    @TableField("grade_name")
    private String gradeName;


    /**
     * 班级id
     */
    @ApiModelProperty(value = "班级id")
    @TableField("class_id")
    private Long classId;


    /**
     * 班级
     */
    @ApiModelProperty(value = "班级")
    @TableField("class_name")
    private String className;

    /**
     * 宿舍楼ID
     */
    @ApiModelProperty(value = "宿舍楼ID")
    @TableField("dormitory_id")
    private Long dormitoryId;


    /**
     * 宿舍楼名称
     */
    @ApiModelProperty(value = "宿舍楼名称")
    @TableField("dormitory")
    private String dormitory;


    /**
     * 寝室号ID
     */
    @ApiModelProperty(value = "寝室号ID")
    @TableField("dormitory_room_id")
    private Long dormitoryRoomId;


    /**
     * 寝室名称
     */
    @ApiModelProperty(value = "寝室名称")
    @TableField("dormitory_room")
    private String dormitoryRoom;

}