package com.m2pool.lease.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 支付消息记录表
 * </p>
 *
 * @author yyb
 * @since 2025-09-10
 */
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "交易流水返回对象",value = "TransactionRecordDto" )
public class TransactionRecordDto {


    /**
     * 消息ID
     */
    @ApiModelProperty(value = "消息ID")
    private String queueId;

    /**
     * 买家充值地址
     */
    @ApiModelProperty(value = "买家充值地址")
    private String fromAddress;

    /**
     * 卖家地址（卖家自定义地址）
     */
    @ApiModelProperty(value = "提现流水：用户提现地址  充值流水：不需要该字段 支付流水：卖家收款地址")
    private String toAddress;

    /**
     * 支付金额
     */
    @ApiModelProperty(value = "理论支付支付金额")
    private BigDecimal amount;

    /**
     *实际支付金额（根据一天内预估算力和实际算力差值计算得来，并且已经真实支付成功的金额）
     */
    @ApiModelProperty(value = "实际支付金额（根据一天内预估算力和实际算力差值计算得来，并且已经真实支付成功的金额）")
    private BigDecimal realAmount;

    /**
     *  钱包冻结金额
     */
    @ApiModelProperty(value = "钱包冻结金额")
    private BigDecimal blockAmount;
    /**
     * 卖家钱包币种
     */
    @ApiModelProperty(value = "提现流水：用户提现钱包币种  充值流水：不需要该字段  支付流水：卖家收款钱包币种")
    private String toSymbol;

    /**
     * 卖家钱包链名称
     */
    @ApiModelProperty(value = "提现流水：用户提现链链名称  充值流水：不需要该字段 支付流水：卖家收款链名称")
    private String toChain;


    /**
     * 买家钱包币种
     */
    @ApiModelProperty(value = "买家钱包币种")
    private String fromSymbol;

    /**
     * 买家钱包链名称
     */
    @ApiModelProperty(value = "买家钱包链名称")
    private String fromChain;

    /**
     * 交易hash
     */
    @ApiModelProperty(value = "交易hash")
    private String txHash;

    /**
     * 订单号
     */
    @ApiModelProperty(value = "订单号")
    private String orderId;

    /**
     * 支付时间
     */
    @ApiModelProperty(value = "流水建立时间")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "成功/失败/证书校验失败时间")
    private LocalDateTime updateTime;

    /**
     * 0 失败 1 成功 2 等待校验 3 证书校验失败
     */
    @ApiModelProperty(value = " 0 支付/充值/提现失败 1 支付/充值/提现成功 2 支付/充值/提现校验中 3 支付/充值/提现证书校验失败")
    private Integer status;
}
