package com.jeesharp.business.modules.pay.payfundwithdraw.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.jeesharp.framework.mybatis.core.dataobject.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 账户资金预约提现记录，映射表 {@code biz_pay_fund_withdraw}。
 *
 * @author jeesharp
 * @since 2026-06-12
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("biz_pay_fund_withdraw")
@Schema(description = "预约提现记录")
public class PayFundWithdraw extends BaseEntity<PayFundWithdraw> {

    @Schema(description = "范围：PLATFORM/MERCHANT")
    private String scopeType;

    @Schema(description = "关联进件主表 ID")
    private String applymentId;

    @Schema(description = "进件所属租户ID")
    private String applymentTenantId;

    @Schema(description = "特约商户号")
    private String subMchId;

    @Schema(description = "服务商商户号")
    private String spMchId;

    @Schema(description = "商户预约提现单号")
    private String outRequestNo;

    @Schema(description = "微信支付预约提现单号")
    private String withdrawId;

    @Schema(description = "出款账户类型：BASIC/OPERATION/FEES")
    private String accountType;

    @Schema(description = "提现金额（分）")
    private Long amount;

    @Schema(description = "提现备注")
    private String remark;

    @Schema(description = "银行附言")
    private String bankMemo;

    @Schema(description = "预约提现单状态")
    private String withdrawStatus;

    @Schema(description = "状态说明")
    private String withdrawStatusDesc;

    @Schema(description = "微信 reason")
    private String reason;

    @Schema(description = "提现结果通知地址")
    private String notifyUrl;

    @Schema(description = "提交请求 JSON")
    private String submitJson;

    @Schema(description = "最近查单响应 JSON")
    private String queryJson;

    @Schema(description = "微信 create_time")
    private String wxCreateTime;

    @Schema(description = "微信 update_time")
    private String wxUpdateTime;

    @Schema(description = "提交时间")
    private LocalDateTime submitDate;

    @Schema(description = "最近同步时间")
    private LocalDateTime lastSyncDate;
}
