package com.crm.rely.backend.core.dto.wasabi;

import lombok.Data;

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

/**
 *
 * @author gao
 * @date 2025/10/17 13:49
 */
@Data
public class WasabiTransactionTransferDto extends WasabiCurrencyTransferTypeDto{

    /**
     * 转账地区. ISO 3166-1 alpha-3码
     */
    private String country;

    /**
     * 商户订单号
     */
    private String merchantOrderNo;

    /**
     * 平台订单号
     */
    private String orderNo;

    /**
     * 付款币种。只有USD
     */
    private String sendCurrency;

    /**
     * 付款金额。扣用户的账户资金
     */
    private BigDecimal sendAmount;

    /**
     * 平台手续费金额。
     * 币种单位sendCurrency
     */
    private BigDecimal fee;

    /**
     * 收款金额。收款人收到的金额
     */
    private BigDecimal transferAmount;

    /**
     * 汇率
     */
    private String exchangeRate;

    /**
     * 交易状态。
     * wait_process=待处理
     * success=成功
     * fail=失败
     * processing=处理中
     * partner_processing = 合作伙伴处理中
     */
    private String status;

    /**
     * 交易状态描述
     */
    private String statusStr;

    /**
     * 合规性检查状态。
     * no_process: 无需合规性检查，
     * pending_check: 待提交合规性检查资料，
     * pending: 合规性检查中，
     * approved: 合规性检查通过，
     * rejected: 合规性检查拒绝
     */
    private String complianceStatus;

    /**
     * 交易失败原因
     */
    private String error;

    /**
     * 合规性检查需要提供的资料
     */
    private List<WasabiRfiInfosDto> rfiInfos;

    /**
     * 付款人信息
     */
    private WasabiSenderDetailDto senderDetail;

    /**
     * 收款人信息
     */
    private WasabiReceiverDetailDto receiverDetail;

    /**
     * 状态流处理时间对象。当交易的状态发生变更时的时间快照
     * key:状态值。可用值如下：
     *      wait_process: 待处理
     *      processing: 处理中
     *      partner_processing: 银行支付中
     *      success: 成功
     *      fail: 失败
     * value:状态变更时的时间
     */
    private Map<String, Long> processTimeMetadata;

    /**
     * 订单创建时间。毫秒时间戳
     */
    private Long createTime;

    /**
     * 订单更新时间。毫秒时间戳
     */
    private Long updateTime;

}
