package com.m2pool.lease.dto;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

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

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


    /**
     * 消息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 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;
}
