package com.liquidnet.common.third.sqb.param.response.data;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.liquidnet.common.third.sqb.param.request.CommonRequest;


import lombok.Data;

import java.util.List;

/**
 * 收银台查询Data
 */

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class CashierQueryData {

    /** 支付工具列表 */
    private List<PayTool> payTools;

    /** 已选中的支付工具签名 */
    private String selectedSignature;

    /** 全局提示 */
    private List<String> globalTips;

    /** 响应唯一序列号 */
    private String seq;

    /** 收单金额 */
    private Long amount;

    /** 收款方信息 */
    private Payee payee;

    /** 业务信息 */
    private BizInfo bizInfo;

    /** 金额模型 */
    private CashierAmount cashierAmount;

    @Data
    /**
 * 支付工具详情
 */
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class PayTool {
        /** 支付工具id */
        private Long id;

        /** 支付工具代码 */
        private String code;

        /** 支付工具名称 */
        private String name;

        /** 支付工具类型 (0表示微信) */
        private Integer type;

        /** 是否可选 */
        private Boolean selectable;

        /** 是否选中 */
        private Boolean selected;

        /** 展示金额 */
        private Long showAmount;

        /** 提示列表 */
        private List<String> tips;

        /** 金额构成 */
        private CommonRequest.AmountComposition amountComposition;
    }



    @Data
    /**
 * 收款方信息
 */
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Payee {
        /** 商户id */
        private String merchantId;

        /** 商户名称 */
        private String merchantName;

        /** 门店id */
        private String storeId;

        /** 门店名称 */
        private String storeName;

        /** 终端号 */
        private String terminalSn;
    }

    @Data
    /**
 * 业务信息
 */
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class BizInfo {
        /** 业务方 */
        private String bizParty;

        /** 交易应用 */
        private String tradeApp;
    }

    @Data
    /**
 * 金额明细模型
 */
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class CashierAmount {
        /** 原始支付金额 */
        private Long oriPaymentAmount;

        /** 实际支付金额 */
        private Long discPaymentAmount;

        /** 优惠金额 */
        private Long discAmount;
    }

}
