package com.liquidnet.common.third.sqb.param.callback;



import lombok.Data;

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

@Data
/**
 * SqbVoucherStatusDTO
 */
public class CouponCallbackContent {

    /** 订单Sn */
    private String orderSn;

    /** 商城Sn */
    private String mallSn;

    /** 商户Sn */
    private String merchantSn;

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

    /**
     * 券列表（收钱吧字段名为 orderVoucherList；单 SKU 场景取首条即可，多券需后续扩展结构）
     */
    private List<VoucherItem> orderVoucherList;

    @Data
    /**
 * VoucherItem
 */
    public static class VoucherItem {
        /** 券号 */
        private String voucherNo;

        /** 类型 */
        private Integer type;

        /** 券状态 (0未核销, 1已核销, 2未核销退款, 3已核销退款中, 4未核销退款完成, 5已核销退款完成, 6已失效) */
        private Byte targetState;

        /** 券原状态 */
        private Byte sourceState;

        /** 券名称 */
        private String voucherName;

        /** 操作时间 (yyyy-MM-dd HH:mm:ss) */
        private String operationTime;

        /** 券对应的商品信息 */
        private VoucherProductInfo item;

        /** 券二维码地址 */
        private String qrCodeUrl;

        /** 券二维码内容 */
        private String qrCodeContent;

        /** 原金额 (单位：分) */
        private Long oriAmount;

        /** 实收金额 (单位：分) */
        private Long receivedAmount;

        /** 核销信息 (已核销会有这部分) */
        private RedeemInfo redeemInfo;
    }

    @Data
    /**
 * VoucherProductInfo
 */
    public static class VoucherProductInfo {
        /** spuId（回调里可能是字符串数字） */
        private String spuId;

        /** skuId */
        private String skuId;

        /** 商品标题 */
        private String title;

        /** 商品图片 */
        private String image;

        private String qrCodeUrl;
        private String qrCodeContent;
        private BigDecimal oriAmount;
        private BigDecimal receivedAmount;
    }

    @Data
    /**
 * RedeemInfo
 */
    public static class RedeemInfo {
        /** 操作来源 (如: EXTERN) */
        private String redeemSource;

        /** 操作appId */
        private String redeemAppId;

        /** 客户端编码 */
        private String redeemClientSn;

        /** 外部编码 (appId + 请求号) */
        private String redeemExternalOrderSn;

        /** 操作商户 (userId) */
        private String operatorMerchantId;
    }

}
