package com.sptg.estate.api.entity;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.sptg.common.core.constant.OperationConstant;
import com.sptg.estate.api.dto.BaseUser;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * title: User
 * package: com.sptg.estate.api.entity
 * description: 用户 实体类
 *
 *
 *
 */
@Setter
@Getter
@TableName(value = "estate_user")
public class User extends BaseUser {

    /**
     * 人脸url处理标识
     */
    @TableField(value = "i_sign")
    private Integer sign;

    /**
     * 所属房间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;

    /**
     * 所属楼栋Id
     */
    @TableField(value = "l_floor_id")
    private Long floorId;

    /**
     * 所属楼栋名称
     */
    @TableField(value = "s_floor_name")
    private String floorName;

    /**
     * 人脸审核状态：0-待审核 1-审核通过 2-审核不通过
     */
    @TableField(value = "i_check_state")
    private Integer checkState;

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

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


    /**
     * 人脸生效时间
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField(value = "t_face_begin_date")
    private Date faceBeginDate;

    /**
     * 人脸失效时间
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField(value = "t_face_end_date")
    private Date faceEndDate;


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

    /**
     * 图片创建来源类型，0-小程序添加 1-后台人脸采集或上传 2-app添加
     */
    @TableField(value = "i_create_face_image_type")
    private Integer createFaceImageType;

    /**
     * 所属单元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;

    /**
     * 住户来源创建类型，0-小程序添加 1-后台添加  2-后台导入 3-app添加
     */
    @TableField(value = "i_create_type")
    private Integer createType;

    /**
     * 创建人id  当i_create_type=0/3时，存储的是userId 当s_create_type=1/2 存储得是accountId
     */
    @TableField(value = "l_create_id")
    private Long createId;

    /**
     * 国籍，0 中国大陆 1 中国香港/澳门 2 中国台湾 3海外
     */
    @TableField(value = "i_nationality")
    private Integer nationality;

    /**
     * 证件号码 中国大陆:身份证；中国香港/澳门:港澳居民来往内地通行证；中国台湾:台湾居民来往内地通行证；海外:护照
     */
    @TableField(value = "s_id_card")
    private String idCard;

    /**
     * 籍贯（nationality = 0时,国籍为中国大陆）
     */
    @TableField(value = "s_birth_place")
    private String birthPlace;

    /**
     * 护照照片url（没有域名，nationality = 3时,国籍为海外）
     */
    @TableField(value = "s_passport_img_uri")
    private String passportImgUri;

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

    /**
     * 人脸启用状态：0-待启用 1-已启用 2-已禁用
     */
    @TableField(value = "i_face_enable")
    private Integer faceEnable;

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

    /**
     * 是否激活APP会员
     *  0：未激活
     *  1：已激活
     */
    @TableField(value = "i_is_member")
    private Integer isMember;

    /**
     * 原数据的Id
     */
    @TableField(value = "old_id")
    private String oldId;

    /**
     * 原数据关联的会员Id
     */
    @TableField(value = "old_customer_id")
    private String oldCustomerId;

    /* -------------------------------------------------------------------------------------------------------------- */
    //  以下为字段非表字段
    /* -------------------------------------------------------------------------------------------------------------- */

    /**
     * 出入卡
     */
    @TableField(exist = false)
    private AccessCard accessCard;

    /**
     * 门禁卡号
     */
    @TableField(exist = false)
    private String cardNo;

    @TableField(exist = false)
    private String fastDfsServer;

    /**
     * 是否有人脸套餐
     */
    @TableField(exist = false)
    private boolean hasFaceCharge = true;

    /**
     * 是否可下发人脸
     */
    @TableField(exist = false)
    private boolean hasFace = true;

    public User() {
        this.isAdmin = OperationConstant.TWO;
    }
}
