package com.fs.lotus.param;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.List;

/**
 * 荷叶接口 - 三方理赔数据回传 参数
 */
@Data
public class LotusClaimParam {
    /** 操作类型：ADD-新增（目前只支持新增） */
    private String operationType = "ADD";

    /** 三方权益 ID，与 receiveId、orderNo 做新增唯一性校验 */
    private String thirdPartyReceiveId;

    /** 荷叶权益 激活码，用于校验权益关系是否存在 */
    private String activationCode;

    /** 三方订单号 */
    private String orderNo;

    /** 订单状态：50-已完成 */
    private Integer orderStatus = 50;

    /** 订单总金额，单位元，精确到小数点后 2 位 */
    private BigDecimal orderTotalAmount;

    /** 商品总金额，单位元，精确到小数点后 2 位 (必须等于发票金额 invoiceAmt) */
    private BigDecimal productTotalAmount;

    /** 订单优惠金额，单位元，不包含其他优惠，权益优惠金额 */
    private BigDecimal channelProductDiscountAmount;

    /** 运费/实付运费，单位元，免运费传 0 */
    private BigDecimal deliveryAmount;

    /** 运费原价，单位元，免运费传 0 */
    private BigDecimal deliveryOriginAmount;

    /** 优惠券金额，单位元，无优惠传 0 */
    private BigDecimal couponAmount;

    /** 实付金额，单位元 (商品总金额 + 运费 - 订单优惠金额 - 优惠券金额) */
    private BigDecimal payAmount;

    /** 订单创建时间，格式：yyyy-MM-dd HH:mm:ss */
    private String orderCreateTime;

    /** 订单完成时间，格式：yyyy-MM-dd HH:mm:ss */
    private String orderCompletedTime;

    /** 问诊单号 */
    private String inquiryNo;

    /** 处方单号 */
    private String prescriptionNo;

    /** 诊断名称，按荷叶提供的 ICD 编码对应名称回传 */
    private String icdName;

    /** 诊断编码，按荷叶提供的 ICD 编码回传 */
    private String icd;

    /** 开方时间，格式：yyyy-MM-dd HH:mm:ss */
    private String prescriptionTime;

    /** 问诊开始时间，格式：yyyy-MM-dd HH:mm:ss */
    private String visitStartTime;

    /** 问诊结束时间，格式：yyyy-MM-dd HH:mm:ss */
    private String visitEndTime;

    /** 互联网医院名称/就诊医院 */
    private String hospital = "御君方互联网医院";

    /** 互联网医院地址/出险地点详情 */
    private String address = "四川省成都市温江区";

    /** 医院所属省编码 */
    private String provinceCode = "510000";

    /** 医院所属省名称 */
    private String provinceName = "四川省";

    /** 医院所属市编码 */
    private String cityCode = "510100";

    /** 医院所属市名称 */
    private String cityName = "成都市";

    /** 医院所属区/县编码 */
    private String countryCode = "510115";

    /** 医院所属区/县名称 */
    private String countryName = "温江区";

    /** 门诊-医疗费票据-发票号码 */
    private String receiptNumber;

    /** 门诊-医疗费票据-发票金额，单位元 (须等于 productTotalAmount) */
    private BigDecimal invoiceAmt;

    /** 门诊-医疗费票据-发票类型，固定传 "1"（电子发票） */
    private String invoiceTypeCd = "1";

    /** 门诊-医疗费票据-电子票据代码，已废弃，默认传空字符串 */
    private String electronicBillCode = "";

    /** 门诊-医疗费票据-开票日期，格式：yyyy-MM-dd */
    private String invoiceDate;

    /** 门诊-医疗费票据-校验码，已废弃，默认传空字符串 */
    private String verificationCode = "";

    /** 理赔影像资料列表 (必须包含处方笺、问诊聊天记录、发票影像) */
    private List<ClaimDocument> claimDocuments;

    /**
     * 内部类：理赔影像资料对象
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class ClaimDocument {
        /** 文件类型：1-图片、2-pdf、3-excel */
        private Integer type;

        /** 影像类型：PRESCRIPTION-处方笺、CHAT_RECORD-问诊聊天记录、PRODUCT_INVOICE-发票影像 */
        private String imageType;

        /** 文件链接，可公网访问的 URL */
        private String fileLink;

        /** 文件名称 */
        private String fileName;
    }
}
