package com.sptg.estate.api.entity;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.List;

/**
 * title: ApplyUser
 * package: com.sptg.estate.api.entity
 * description: 申请用户
 *
 *
 *
 */
@Setter
@Getter
@TableName(value = "app_apply_user")
public class ApplyUser {

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

    /**
     * 住户id--修改时有值
     */
    @TableField(value = "l_user_id")
    private Long userId;
    /**
     * 申请的会员id
     */
    @TableField(value = "l_member_id")
    private Long memberId;

    /**
     * 住户名字--和user表对应
     */
    @TableField(value = "s_name")
    private String name;

    /**
     * 所属房间id
     */
    @TableField(value = "l_room_id")
    private Long roomId;

    /**
     * 所属房间名字
     */
    @TableField(value = "s_room_name")
    private String roomName;

    /**
     * 所属楼栋id
     */
    @TableField(value = "l_building_id")
    private Long buildingId;

    /**
     * 所属房间名字
     */
    @TableField(value = "s_building_name")
    private String buildingName;

    /**
     * 存储位置
     */
    @TableField(value = "s_org_position")
    private String orgPosition;

    /**
     * 物业位置
     */
    @TableField(value = "s_estate_position")
    private String estatePosition;

    /**
     *  申请记录审核状态：0-待审核 1-审核通过 2-审核不通过 3-已注销（销毁）
     */
    @TableField(value = "i_check_state")
    private Integer checkState;

    /**
     *  i_check_state=2(审核不通过)时必填
     */
    @TableField(value = "s_check_opinion")
    private String checkOpinion;

    /**
     * 审核时间
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @TableField(value = "t_check_date")
    private Date checkDate;

    /**
     * 人员类型
     * 住户类型：0-业主 1-成员 2-租户
     */
    @TableField(value = "i_type")
    private Integer type;
    /**
     * 国籍，0 中国大陆 1 中国香港/澳门 2 中国台湾 3 海外
     */
    @TableField(value = "i_nationality")
    private Integer nationality;
    /**
     * 身份证
     */
    @TableField(value = "s_id_card")
    private String idCard;
    /**
     * 护照照片url（没有域名，nationality = 3时,国籍为海外）
     */
    @TableField(value = "s_passport_img_uri")
    private String passportImgUri;

    /**
     * 入境证明url（没有域名，nationality = 3时,国籍为海外）
     */
    @TableField(value = "s_entry_img_uri")
    private String entryImgUri;

    /**
     * 联系电话
     */
    @TableField(value = "s_tel")
    private String tel;

    /**
     * 性别  0-未定义  1-男 2-女
     */
    @TableField(value = "i_sex")
    private Integer sex;

    /**
     * 所属单元id
     */
    @TableField(value = "l_unit_id")
    private Long unitId;

    /**
     * 单元名称
     */
    @TableField(value = "s_unit_name")
    private String unitName;

    /**
     * 所属小区id
     */
    @TableField(value = "l_residential_id")
    private Long residentialId;

    /**
     * 小区名称
     */
    @TableField(value = "s_residential_name")
    private String residentialName;

    /**
     * 根机构id
     */
    @TableField(value = "l_root_org_id")
    private Long rootOrgId;

    /**
     * 申请来源0-小程序添加 1-后台添加  2-后台导入 3-app添加
     */
    @TableField(value = "i_create_type")
    private Integer createType;

    /**
     * 创建时间
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @TableField(value = "t_create_date")
    private Date createDate;

    /**
     * 脸部照片url（没有域名）
     */
    @TableField(value = "s_image_uri")
    private String imageUri;

    /**
     * 脸部旧照片
     */
    @TableField(value = "s_old_image_uri")
    private String oldImageUri;

    /**
     * 根据图片生成的faceId--图片的md5
     */
    @TableField(value = "s_face_code")
    private String faceCode;

    /**
     * 申请的记录类型 0--认证类型 1--新增类型 2--编辑类型(通过user编辑生成的) 3--编辑类型(通过applyUser编辑生成)
     */
    @TableField(value = "i_record_type")
    private Integer recordType;

    /**
     * 审核人类型：1-业主，2-后台
     */
    @TableField(value = "i_operator_type")
    private Integer operatorType;

    /**
     * 审核人姓名
     */
    @TableField(value = "i_operator_name")
    private String operatorName;

    /**
     * 扩展属性
     */
    @TableField(exist = false)
    private String userImageUri;
}
