package com.ruoyi.payment.domain;

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

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_transaction_log
 * 
 * @author ruoyi
 * @date 2025-12-17
 */
public class TransactionLog extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 日志ID */
    private Long logId;

    /** 交易ID */
    @Excel(name = "交易ID")
    @NotNull(message = "交易ID不能为空")
    private Long transactionId;

    /** 交易类型 */
    @Excel(name = "交易类型")
    @NotBlank(message = "交易类型不能为空")
    @Size(max = 20, message = "交易类型长度不能超过20个字符")
    private String transactionType;

    /** 账户ID */
    @Excel(name = "账户ID")
    @NotNull(message = "账户ID不能为空")
    private Long accountId;

    /** 交易金额 */
    @Excel(name = "交易金额")
    @NotNull(message = "交易金额不能为空")
    private BigDecimal amount;

    /** 交易前余额 */
    @Excel(name = "交易前余额")
    @NotNull(message = "交易前余额不能为空")
    private BigDecimal balanceBefore;

    /** 交易后余额 */
    @Excel(name = "交易后余额")
    @NotNull(message = "交易后余额不能为空")
    private BigDecimal balanceAfter;

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

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

    /** 操作员ID */
    @Excel(name = "操作员ID")
    private Long operatorId;

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

    public void setLogId(Long logId) 
    {
        this.logId = logId;
    }

    public Long getLogId() 
    {
        return logId;
    }
    public void setTransactionId(Long transactionId) 
    {
        this.transactionId = transactionId;
    }

    public Long getTransactionId() 
    {
        return transactionId;
    }
    public void setTransactionType(String transactionType) 
    {
        this.transactionType = transactionType;
    }

    public String getTransactionType() 
    {
        return transactionType;
    }
    public void setAccountId(Long accountId) 
    {
        this.accountId = accountId;
    }

    public Long getAccountId() 
    {
        return accountId;
    }
    public void setAmount(BigDecimal amount) 
    {
        this.amount = amount;
    }

    public BigDecimal getAmount() 
    {
        return amount;
    }
    public void setBalanceBefore(BigDecimal balanceBefore) 
    {
        this.balanceBefore = balanceBefore;
    }

    public BigDecimal getBalanceBefore() 
    {
        return balanceBefore;
    }
    public void setBalanceAfter(BigDecimal balanceAfter) 
    {
        this.balanceAfter = balanceAfter;
    }

    public BigDecimal getBalanceAfter() 
    {
        return balanceAfter;
    }
    public void setTransactionStatus(String transactionStatus) 
    {
        this.transactionStatus = transactionStatus;
    }

    public String getTransactionStatus() 
    {
        return transactionStatus;
    }
    public void setTransactionTime(Date transactionTime) 
    {
        this.transactionTime = transactionTime;
    }

    public Date getTransactionTime() 
    {
        return transactionTime;
    }
    public void setOperatorId(Long operatorId) 
    {
        this.operatorId = operatorId;
    }

    public Long getOperatorId() 
    {
        return operatorId;
    }
    public void setRemarks(String remarks) 
    {
        this.remarks = remarks;
    }

    public String getRemarks() 
    {
        return remarks;
    }

    @Override
    public String toString() {
        return "TransactionLog{" +
                "logId=" + logId +
                ", transactionId=" + transactionId +
                ", transactionType='" + transactionType + '\'' +
                ", accountId=" + accountId +
                ", amount=" + amount +
                ", balanceBefore=" + balanceBefore +
                ", balanceAfter=" + balanceAfter +
                ", transactionStatus='" + transactionStatus + '\'' +
                ", transactionTime=" + transactionTime +
                ", operatorId=" + operatorId +
                ", remarks='" + remarks + '\'' +
                '}';
    }
}