package com.ruoyi.payment.domain;

import java.math.BigDecimal;
import java.util.Date;

import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 支付记录对象 dc_payment_record
 * 
 * @author ruoyi
 * @date 2025-12-17
 */
public class PaymentRecord extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 支付记录ID */
    private Long paymentId;

    /** 支付编号 */
    @Excel(name = "支付编号")
    @NotBlank(message = "支付编号不能为空")
    @Size(max = 50, message = "支付编号长度不能超过50个字符")
    private String paymentNumber;

    /** 合同ID */
    @Excel(name = "合同ID")
    @NotNull(message = "合同ID不能为空")
    private Long contractId;

    /** 支付方ID */
    @Excel(name = "支付方ID")
    @NotNull(message = "支付方ID不能为空")
    private Long payerId;

    /** 收款方ID */
    @Excel(name = "收款方ID")
    @NotNull(message = "收款方ID不能为空")
    private Long payeeId;

    /** 支付金额 */
    @Excel(name = "支付金额")
    @NotNull(message = "支付金额不能为空")
    @DecimalMin(value = "0.01", message = "支付金额必须大于0")
    private BigDecimal paymentAmount;

    /** 支付方式 */
    @Excel(name = "支付方式")
    @NotBlank(message = "支付方式不能为空")
    @Size(max = 20, message = "支付方式长度不能超过20个字符")
    private String paymentMethod;

    /** 支付状态 */
    @Excel(name = "支付状态")
    @NotBlank(message = "支付状态不能为空")
    @Size(max = 20, message = "支付状态长度不能超过20个字符")
    private String paymentStatus;

    /** 支付时间 */
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "支付时间不能为空")
    private Date paymentTime;

    /** 确认时间 */
    @Excel(name = "确认时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date confirmTime;

    /** 交易流水号 */
    @Excel(name = "交易流水号")
    @Size(max = 100, message = "交易流水号长度不能超过100个字符")
    private String transactionId;

    /** 备注 */
    @Excel(name = "备注")
    @Size(max = 500, message = "备注长度不能超过500个字符")
    private String remarks;

    public void setPaymentId(Long paymentId) 
    {
        this.paymentId = paymentId;
    }

    public Long getPaymentId() 
    {
        return paymentId;
    }
    public void setPaymentNumber(String paymentNumber) 
    {
        this.paymentNumber = paymentNumber;
    }

    public String getPaymentNumber() 
    {
        return paymentNumber;
    }
    public void setContractId(Long contractId) 
    {
        this.contractId = contractId;
    }

    public Long getContractId() 
    {
        return contractId;
    }
    public void setPayerId(Long payerId) 
    {
        this.payerId = payerId;
    }

    public Long getPayerId() 
    {
        return payerId;
    }
    public void setPayeeId(Long payeeId) 
    {
        this.payeeId = payeeId;
    }

    public Long getPayeeId() 
    {
        return payeeId;
    }
    public void setPaymentAmount(BigDecimal paymentAmount) 
    {
        this.paymentAmount = paymentAmount;
    }

    public BigDecimal getPaymentAmount() 
    {
        return paymentAmount;
    }
    public void setPaymentMethod(String paymentMethod) 
    {
        this.paymentMethod = paymentMethod;
    }

    public String getPaymentMethod() 
    {
        return paymentMethod;
    }
    public void setPaymentStatus(String paymentStatus) 
    {
        this.paymentStatus = paymentStatus;
    }

    public String getPaymentStatus() 
    {
        return paymentStatus;
    }
    public void setPaymentTime(Date paymentTime) 
    {
        this.paymentTime = paymentTime;
    }

    public Date getPaymentTime() 
    {
        return paymentTime;
    }
    public void setConfirmTime(Date confirmTime) 
    {
        this.confirmTime = confirmTime;
    }

    public Date getConfirmTime() 
    {
        return confirmTime;
    }
    public void setTransactionId(String transactionId) 
    {
        this.transactionId = transactionId;
    }

    public String getTransactionId() 
    {
        return transactionId;
    }
    public void setRemarks(String remarks) 
    {
        this.remarks = remarks;
    }

    public String getRemarks() 
    {
        return remarks;
    }

    @Override
    public String toString() {
        return "PaymentRecord{" +
                "paymentId=" + paymentId +
                ", paymentNumber='" + paymentNumber + '\'' +
                ", contractId=" + contractId +
                ", payerId=" + payerId +
                ", payeeId=" + payeeId +
                ", paymentAmount=" + paymentAmount +
                ", paymentMethod='" + paymentMethod + '\'' +
                ", paymentStatus='" + paymentStatus + '\'' +
                ", paymentTime=" + paymentTime +
                ", confirmTime=" + confirmTime +
                ", transactionId='" + transactionId + '\'' +
                ", remarks='" + remarks + '\'' +
                '}';
    }
}