package com.seer.teach.pay.entity;

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

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

/**
 * <p>
 * 提现申请表
 * </p>
 *
 * @author ZS
 * @since 2025-09-17
 */
@Getter
@Setter
@ToString
@TableName("pay_merchant_withdrawal_apply")
public class

PayMerchantWithdrawalApplyEntity extends BaseEntity {

    private static final long serialVersionUID = 1L;


    /**
     * 提现订单号（格式：WT+YYYYMMDD+6位随机数，如WT20250917000001）
     */
    @TableField("withdrawal_no")
    private String withdrawalNo;

    /**
     * 关联user表主键（申请人ID）
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 关联收款账户表user_bank_account的account_id
     */
    @TableField("account_id")
    private Integer accountId;

    /**
     * 申请提现金额（元，≤user_withdrawal_balance.available_balance）
     */
    @TableField("apply_amount")
    private BigDecimal applyAmount;

    /**
     * 申请时间
     */
    @TableField("apply_time")
    private LocalDateTime applyTime;
    /**
     * 平台手续费（元）= apply_amount * withdrawal_config.platform_fee_rate / 100
     */
    @TableField("platform_fee")
    private BigDecimal platformFee;

    /**
     * 待缴税费（元）= (apply_amount + platform_fee) * withdrawal_config.tax_rate / 100
     */
    @TableField("tax_amount")
    private BigDecimal taxAmount;

    /**
     * 实际到账金额（元）= apply_amount - platform_fee - tax_amount
     */
    @TableField("actual_amount")
    private BigDecimal actualAmount;

    /**
     * 提现金额拆分说明（如“申请1000元=佣金1052.63元-手续费5.26元-税费47.37元”）
     */
    @TableField("amount_split_desc")
    private String amountSplitDesc;

    /**
     * 关联的结算记录ID（多个用逗号分隔，如1001,1002，需与订单一一对应）
     */
    @TableField("settlement_ids")
    private String settlementIds;

    /**
     * 申请状态：0-待审核，1-审核通过，2-审核拒绝，3-待转账，4-转账中，5-提现完成，6-转账失败，7-已撤销
     */
    @TableField("apply_status")
    private Integer applyStatus;

    /**
     * 审核人ID（关联user表，财务用户ID）
     */
    @TableField("audit_user_id")
    private Long auditUserId;

    /**
     * 审核时间（apply_status=1/2时赋值）
     */
    @TableField("audit_time")
    private LocalDateTime auditTime;

    /**
     * 审核备注（拒绝时必填原因，如“账户信息不一致”）
     */
    @TableField("audit_remark")
    private String auditRemark;

    /**
     * 转账凭证URL（云存储地址，如OSS链接，apply_status=4时上传）
     */
    @TableField("transfer_voucher_url")
    private String transferVoucherUrl;

    /**
     * 转账时间（apply_status=4时赋值）
     */
    @TableField("transfer_time")
    private Date transferTime;
}
