package com.xinelu.applet.dto.appletlogin;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.core.domain.BaseDomain;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.manage.domain.patientdiseaseinfo.PatientDiseaseInfo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

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

/**
 * @Description
 * @Author 纪寒
 * @Date 2022-09-02 16:09:47
 * @Version 1.0
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class AppletUserInfoDTO extends BaseDomain implements Serializable {
    private static final long serialVersionUID = -8543322521752828306L;

    /**
     * 用户id
     */
    private Long patientId;

    /**
     * 护理人编号
     */
    private String patientCode;

    /**
     * 姓名
     */
    @NotBlank(message = "姓名不能为空", groups = {Insert.class})
    @Length(max = 20, message = "姓名不能超过20字符", groups = {Insert.class})
    private String patientName;

    /**
     * 手机号
     */
    @NotBlank(message = "手机号不能为空", groups = {Insert.class})
    @Length(max = 11, message = "手机号码不能超过11位", groups = {Insert.class})
    private String phone;

    /**
     * 所属区域地址
     */
    @NotBlank(message = "所属区域不能为空", groups = {Insert.class})
    private String areaCode;

    /**
     * 身份证号
     */
    @NotBlank(message = "身份证号不能为空", groups = {Insert.class})
    @Length(max = 18, message = "身份证号不能超过18位", groups = {Insert.class})
    private String cardNo;

    /**
     * 居住地址
     */
    @NotBlank(message = "居住地址不能为空", groups = {Insert.class})
    private String address;

    /**
     * 个人头像地址
     */
    private String headPictureUrl;

    /**
     * 小区名称
     */
    private String communityAliasName;

    /**
     * 居住地址经度
     */
    private String homeLongitude;

    /**
     * 居住地址纬度
     */
    private String homeLatitude;

    /**
     * 用户微信unionid
     */
    private String unionid;

    /**
     * 用户微信openid
     */
    private String openid;

    /**
     * 所在位置名称
     */
    private String locationName;

    /**
     * 疾病类型id集合
     */
    private List<Long> diseaseIdList;

    /**
     * 护理id类型
     */
    private List<Long> nurseTypeIdList;

    /**
     * 登录标识
     */
    private Integer loginFlag;

    /**
     * 会员疾病信息集合
     */
    private List<PatientDiseaseInfo> diseaseInfoList;

    /**
     * 会员完善信息来源
     */
    private String source;

    /**
     * 邀请好友完善信息方式-邀请人id
     */
    private Long invitationPatientId;

    /**
     * 累计签到次数
     */
    private Integer totalSignInDays;

    /**
     * 性别
     */
    private String sex;

    /**
     * 出生日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate birthDate;

    /**
     * 优惠券id
     */
    private Long couponId;
}
