package com.fzm.mall.midea.pay.params;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.NotBlank;
import java.util.Map;

/**
 * @author tangtuo
 * @date 2021/5/24 13:51
 */

@Data
@Accessors(chain = true)
public class WechatPayBatchTradeParam extends BaseParam {

    @NotBlank(message = "担保交易标志不能为空")
    @ApiModelProperty("担保交易标志：TRUE-担保交易 FALSE-即时到账交易（默认）")
    private String is_guarantee;

    @NotBlank(message = "订单号不能为空")
    @ApiModelProperty("美的支付合作商户网站唯一订单号（确保在合作伙伴系统中唯一）")
    private String out_trade_no;

    @NotBlank(message = "订单提交时间不能为空")
    @ApiModelProperty("商户发起交易，提交订单的时间，格式yyyyMMddHHmmss")
    private String out_trade_time;

    /**
     * SCAN_CODE：扫码
     * OFFICIAL_ACCT：公众号/服务窗
     * MINI_PROGRAM：小程序
     * APP：app
     * H5：H5支付
     */
    @NotBlank(message = "支付方式不能为空")
    @ApiModelProperty(value = "支付方式")
    private String bar_code;

    @ApiModelProperty("公众号id 注：公众号、app、小程序支付时，必填")
    private String app_id;

    @ApiModelProperty("用户id 公众号或小程序支付时，必填")
    private String open_id;

    @ApiModelProperty("货币类型：CNY-人民币")
    private String currency_type;

    @ApiModelProperty(value = "订单总金额等于支付金额加营销金额，单位分 （3.4.0不可空）")
    private String total_order_amount;

    @NotBlank(message = "交易支付金额不能为空")
    @ApiModelProperty("交易的支付金额，单位分")
    private String total_amount;

    @NotBlank(message = "订单总数不能为空")
    @ApiModelProperty(value = "订单总数（最大50笔）")
    private String total_count;

    /**
     * DC：借记卡
     * DOC：借记卡和信用卡（双卡)
     */
    @ApiModelProperty("支付卡限定")
    private String limit_acct_type;

    /**
     * 单位：分，时间范围：1-30，不传默认为30
     * 接口版本号大于等于3.3.0，表示订单关单时间，小于3.3.0版本无关单功能
     */
    @ApiModelProperty("交易超时时间")
    private String pay_expire_time;

    @NotBlank(message = "产品标识不能为空")
    @ApiModelProperty("产品标识：TRUE-虚拟交易 FALSE-实物交易")
    private String is_virtual_product;

    @NotBlank(message = "商品名称不可为空")
    @ApiModelProperty("商品名称")
    private String product_name;

    @NotBlank(message = "商品的描述不可为空")
    @ApiModelProperty("商品的描述")
    private String product_info;

    @ApiModelProperty("商户自定义的信息，回调通知的时候美的支付平台会原值返回给商户")
    private String attach;

    @NotBlank(message = "风控参数不可为空")
    @ApiModelProperty("风控参数")
    private String risk_params;

    @ApiModelProperty("商户网站url（H5支付方式必传）")
    private String wap_url;

    @ApiModelProperty("商户网站名称（H5支付方式必传）")
    private String wap_name;

    @NotBlank(message = "子单列表不可为空")
    @ApiModelProperty("子单列表，格式为json字符串")
    private String sub_orders;

    @Data
    public static class SubOrder {

        @ApiModelProperty("签约商户号，由美的支付生成，由10位数字组成")
        @NotBlank(message = "签约商户号不可为空")
        private String partner;

        @ApiModelProperty("营销金额出款商户号")
        private String market_acc_partner;

        @ApiModelProperty("子B2C订单商户订单号")
        @NotBlank(message = "子B2C订单商户订单号不能为空")
        private String sub_out_trade_no;

        @ApiModelProperty("子B2C订单金额，单位: 分")
        @NotBlank(message = "子B2C订单金额不可为空")
        private String pay_amount;

        @ApiModelProperty("子单营销金额，单位分")
        private String market_amount;

        @ApiModelProperty("商品名称")
        @NotBlank(message = "商品名称不可为空")
        private String sub_product_name;

        @ApiModelProperty("商品描述信息")
        @NotBlank(message = "商品描述信息不可为空")
        private String sub_product_info;

        @ApiModelProperty("商品数量")
        private String sub_product_count;

        @ApiModelProperty("商品单价，单位：分")
        private String sub_product_price;

        @ApiModelProperty("交易意图")
        private String sub_trade_purpose;

        @ApiModelProperty("商户自定义信息")
        private String sub_attach;

        @ApiModelProperty("分润参数")
        private String profit_params;

        @ApiModelProperty("多级分账标志")
        private String profit_sharing;
    }
}

