package com.seer.teach.pay.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.seer.teach.common.entity.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

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

/**
 * <p>
 * 线下转账流水表
 * </p>
 *
 * @author ZS
 * @since 2025-09-29
 */
@Getter
@Setter
@ToString
@TableName("pay_offline_transfer_record")
public class PayOfflineTransferRecordEntity extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 关联提现订单号
     */
    @TableField("withdrawal_no")
    private String withdrawalNo;

    /**
     * 转账方式：1-企业网银，2-银行柜台，3-手机银行
     */
    @TableField("transfer_type")
    private Integer transferType;

    /**
     * 付款账户（平台企业账户）
     */
    @TableField("payer_account")
    private String payerAccount;

    /**
     * 收款账户（用户账户，）
     */
    @TableField("payee_account_id")
    private Integer payeeAccountId;

    /**
     * 转账金额（元，与withdrawal_apply.actual_amount一致）
     */
    @TableField("transfer_amount")
    private BigDecimal transferAmount;

    /**
     * 银行流水号
     */
    @TableField("bank_flow_no")
    private String bankFlowNo;

    /**
     * 转账时间（财务操作时间，如2025-09-17 14:30:00）
     */
    @TableField("transfer_time")
    private LocalDateTime transferTime;

    /**
     * 转账操作人ID（关联user表，财务用户ID）
     */
    @TableField("operator_id")
    private Long operatorId;

    /**
     * 转账状态：0-待转账， 1-已发起， 2-银行确认，3-转账失败
     */
    @TableField("transfer_status")
    private Integer transferStatus;

    /**
     * 失败原因（如“账号错误被银行退回”“开户行填写错误”）
     */
    @TableField("failure_reason")
    private String failureReason;

    /**
     * 转账凭证（如网银截图、柜台回执照片，OSS存储链接）
     */
    @TableField("voucher_url")
    private String voucherUrl;
}
