/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.person.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import org.springblade.person.entity.Veterans;
import lombok.Data;
import lombok.EqualsAndHashCode;
import io.swagger.annotations.ApiModel;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDate;
import java.util.Date;

/**
 * 视图实体类
 *
 * @author BladeX
 * @since 2021-05-28
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "VeteransVO对象", description = "VeteransVO对象")
public class VeteransVO extends Veterans {
	private static final long serialVersionUID = 1L;

	/**
	 * 姓名
	 */
	@ApiModelProperty(value = "姓名")
	private String name;
	/**
	 * 手机号码
	 */
	@ApiModelProperty(value = "手机号码")
	private String phone;
	/**
	 * 身份证号码
	 */
	@ApiModelProperty(value = "身份证号码")
	private String idCard;
	/**
	 * 性别（0未定义，1男，2女）
	 */
	@ApiModelProperty(value = "性别（0未定义，1男，2女）")
	private Integer sex;
	/**
	 * 生日
	 */
	@ApiModelProperty(value = "生日")
	private LocalDate birthday;
	/**
	 * 民族
	 */
	@ApiModelProperty(value = "民族")
	private Integer nation;
	/**
	 * 籍贯
	 */
	@ApiModelProperty(value = "籍贯")
	private String nativePlace;
	/**
	 * 国籍
	 */
	@ApiModelProperty(value = "国籍 0 中国大陆 1 中国香港/澳门 2 中国台湾 3海外")
	private Integer nationality;
	/**
	 * 入境证明url（没有域名，nationality = 3时,国籍为海外）
	 */
	@ApiModelProperty(value = "入境证明url（没有域名，nationality = 3时,国籍为海外）")
	private String entryImgUri;
	/**
	 * 护照照片url（没有域名，nationality = 3时,国籍为海外）
	 */
	@ApiModelProperty(value = "护照照片url（没有域名，nationality = 3时,国籍为海外）")
	private String passportImgUri;
	/**
	 * 政治面貌
	 */
	@ApiModelProperty(value = "政治面貌")
	private Integer political;
	/**
	 * 婚姻状况：1未婚；2已婚；3丧偶；4离婚
	 */
	@ApiModelProperty(value = "婚姻状况：1未婚；2已婚；3丧偶；4离婚")
	private Integer maritalStatus;
	/**
	 * 教育水平：1小学；2初中；3高中；大学专科；大学本科；研究生
	 */
	@ApiModelProperty(value = "教育水平：1小学；2初中；3高中；大学专科；大学本科；研究生")
	private Integer educationalLevel;
	/**
	 * 工作单位
	 */
	@ApiModelProperty(value = "工作单位")
	private String workplace;
	/**
	 * 小程序openId
	 */
	@ApiModelProperty(value = "小程序openId")
	private String openId;
	/**
	 * 邮箱
	 */
	@ApiModelProperty(value = "邮箱")
	private String email;
	/**
	 * 标签
	 */
	@ApiModelProperty(value = "标签")
	private String tags;
	/**
	 * 备注
	 */
	@ApiModelProperty(value = "备注")
	private String remark;
	/**
	 * 园区Id
	 */
	@ApiModelProperty(value = "园区Id")
	@JsonSerialize(using= ToStringSerializer.class)
	private Long agencyId;
	/**
	 * 园区
	 */
	@ApiModelProperty(value = "园区名称")
	private String agencyName;
	/**
	 * 小区Id
	 */
	@ApiModelProperty(value = "小区Id")
	@JsonSerialize(using= ToStringSerializer.class)
	private Long residentialId;
	/**
	 * 小区
	 */
	@ApiModelProperty(value = "小区名称")
	private String residentialName;
	/**
	 * 楼栋Id
	 */
	@ApiModelProperty(value = "楼栋Id")
	@JsonSerialize(using= ToStringSerializer.class)
	private Long buildingId;
	/**
	 * 楼栋
	 */
	@ApiModelProperty(value = "楼栋名称")
	private String buildingName;
	/**
	 * 单元Id
	 */
	@ApiModelProperty(value = "单元Id")
	@JsonSerialize(using= ToStringSerializer.class)
	private Long unitId;
	/**
	 * 单元
	 */
	@ApiModelProperty(value = "单元名称")
	private String unitName;
	/**
	 * 楼层Id
	 */
	@ApiModelProperty(value = "楼层Id")
	@JsonSerialize(using= ToStringSerializer.class)
	private Long floorId;
	/**
	 * 楼层
	 */
	@ApiModelProperty(value = "楼层名称")
	private String floorName;
	/**
	 * 房间名称
	 */
	@ApiModelProperty(value = "房间名称")
	private String roomName;
	/**
	 * 房间Id
	 */
	@ApiModelProperty(value = "房间Id")
	@JsonSerialize(using= ToStringSerializer.class)
	private Long roomId;
	/**
	 * 1:小程序添加;2:后台添加;3:后台导入;4:app添加
	 */
	@ApiModelProperty(value = "1:小程序添加;2:后台添加;3:后台导入;4:app添加")
	private Integer createType;
	/**
	 * 1-业主；2-成员；3-租户
	 */
	@ApiModelProperty(value = "1-业主；2-成员；3-租户")
	private Integer type;
	/**
	 * 人脸图片
	 */
	@ApiModelProperty("人脸图片")
	private String imageUri;
	/**
	 * 人脸图片加密
	 */
	@ApiModelProperty("人脸图片")
	private String imageMd5;
	/**
	 * 人脸审核状态：0-待审核 1-审核通过 2-审核不通过
	 */
	@ApiModelProperty(value = "人脸审核状态：0-待审核 1-审核通过 2-审核不通过")
	private Integer checkState;
	/**
	 * 人脸是否启用
	 */
	@ApiModelProperty("人脸是否启用")
	private Integer faceEnable;

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

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

	/**
	 * 旧平台Id
	 */
	@ApiModelProperty("旧平台Id")
	private String oldId;

	/**
	 * 是否会员
	 */
	@ApiModelProperty("是否会员")
	private Integer isMember;

	/**
	 * 小区省id
	 */
	@ApiModelProperty("小区省id")
	private String regionProvince;

	/**
	 * 小区市id
	 */
	@ApiModelProperty("小区市id")
	private String regionCity;

	/**
	 * 小区区/县id
	 */
	@ApiModelProperty("小区区/县id")
	private String regionArea;
}
