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;
    }

}
