package com.yc.ship.module.trade.api.insurance.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotBlank;

@Schema(description = "RPC 服务 - Insurance 投保订单信息 Request DTO")
@Data
public class InsuranceOrderInfoDTO {

    /** 必填 - 字符串 - 贵方的订单号 */
    @Schema(description = "贵方的订单号")
    @NotBlank
    private String externalOrderNo;

    /** 团保必填 - 字符串 - 贵方系统中的投保单号,必须唯一 */
    @Schema(description = "贵方系统中的投保单号,必须唯一")
    private String externalPolicyNumber;

    /** 可选 - 字符串 - 团号 */
    @Schema(description = "团队代码")
    private String teamCode;

    /** 可选 - 字符串 - 出行路线 */
    @Schema(description = "航线")
    private String line;

    /** 可选 - 字符串 - 目的地所属洲 */
    @Schema(description = "大洲")
    private String continent;

    /** 可选 - 字符串 - 目的地所属国家 */
    @Schema(description = "国家")
    private String nation;

    /** 可选 - 字符串 - 目的地所属区域 */
    @Schema(description = "地区")
    private String area;

    /** 可选 - 字符串 - 目的地州或省 */
    @Schema(description = "州/省")
    private String state;

    /** 可选 - 字符串 - 目的地所属城市 */
    @Schema(description = "目的地")
    private String destination;

    /** 可选 - 字符串 - 出发地城市 */
    @Schema(description = "城市名称")
    private String cityName;

    /** 必填 - 字符串 - 产品代码, 由阳光指定 */
    @Schema(description = "产品代码, 由阳光指定")
    private String productNo;

    /** 必填 - 字符串 - 起保日期时间 yyyy-MM-dd */
    @Schema(description = "开始日期")
    private String beginDate;

    /** 必填 - 字符串 - 止保日期时间 yyyy-MM-dd */
    @Schema(description = "结束日期")
    private String endDate;

    /** 在线支付必填, 且必须与阳光计算的待支付金额相等  */
    @Schema(description = "费用")
    private String cost;

    /** 必填 - 字符串 - 价格单位,目前固定为CNY */
    @Schema(description = "货币代码")
    private String currencyCode;

    /** 必填 - 数字 - 业务方式,非O2O为0,O2O为1; */
    @Schema(description = "业务类型")
    private Integer bizType;

    /** 必填 - 数字 - 投保人类别, 值有0/1/2, 详情见“注释1” 团保时，此值只能为1 */
    @Schema(description = "投保人类型")
    private Integer applicantType;

    /** 必填 - 字符串 - 投保人姓名 */
    @Schema(description = "投保人姓名")
    private String applicant;

    /** 可选 - 字符串 - 投保人姓拼音 */
    @Schema(description = "投保人名字")
    private String applicantFirstName;

    /** 可选 - 字符串 - 投保人名拼音 */
    @Schema(description = "投保人姓氏")
    private String applicantLastName;

    /** 必填 - 数字 - 投保人证件类型
     1	身份证
     2	军人证
     3	护照
     4	学生证
     5	港澳通行证
     6	其他
     */
    @Schema(description = "投保人证件类型")
    private Integer applicantCertificateType;

    /** 必填 - 字符串 - 投保人证件号码 */
    @Schema(description = "投保人证件号码")
    private String applicantCertificateNo;

    /** 必填 - 字符串 - 投保人生日 yyyy-MM-dd  */
    @Schema(description = "投保人出生日期")
    private String applicantBirthday;

    /** 可选 - 数字 - 投保人性别 */
    @Schema(description = "投保人性别")
    private Integer applicantSex;

    /** 可选 - 字符串 - 投保人手机  */
    @Schema(description = "投保人手机号")
    private String applicantMobile;

    /** 可选 - 字符串 - 投保人邮箱(上海太保 - 必填) */
    @Schema(description = "投保人邮箱")
    private String applicantEmail;

    /** 可选 - 字符串 - 投保人固定电话 */
    @Schema(description = "投保人电话")
    private String applicantPhone;

    /** 可选 - 字符串 - 投保人联系地址 */
    @Schema(description = "投保人地址")
    private String applicantAddress;

    /** 可选 - 字符串 - 投保人联系邮编 */
    @Schema(description = "投保人邮编")
    private String applicantZip;

    /** 可选 - 数字 - 如上投保人与被保人的关系
     * 0	是保单持有人，非被保险人
     * 1	是保单持有人，且是被保险人
     * 2	不是保单持有人，只是被保险人
     * */
    @Schema(description = "关系")
    private Integer relation;

    /** 必填 - 字符串 - 销售公司 */
    @Schema(description = "销售公司")
    private String sellCorp;

    /** 必填 - 字符串 - 销售部门 */
    @Schema(description = "销售部门")
    private String sellDept;

    /** 必填 - 字符串 - 销售人员姓名 */
    @Schema(description = "销售人员")
    private String sellUser;

    /** 可选 - 字符串 - 销售人员编号 */
    @Schema(description = "销售代码")
    private String sellCode;

    /** 可选 - 字符串 - 紧急联系人 */
    @Schema(description = "紧急联系人")
    private String emergencyContact;

    /** 可选 - 字符串 - 紧急联系人电话 */
    @Schema(description = "紧急联系电话")
    private String emergencyPhone;

    /** 可选 - 字符串 - 邮寄地址，比如发票邮寄 */
    @Schema(description = "信函地址")
    private String letterAddress;

    /** 信函邮编 */
    @Schema(description = "信函邮编")
    private String letterZip;

    /** 航班号 */
    @Schema(description = "航班号")
    private String flightNo;

    /** 出发机场 */
    @Schema(description = "出发机场")
    private String flightOriginAirport;

    /** 到达机场 */
    @Schema(description = "到达机场")
    private String flightArriveAirport;

    /** 航班出发日期 */
    @Schema(description = "航班出发日期")
    private String flightBeginDate;

    /** 航班到达日期 */
    @Schema(description = "航班到达日期")
    private String flightArriveDate;
}
