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_financial_reconciliation_detail")
public class PayFinancialReconciliationDetailEntity extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 关联对账主表ID（financial_reconciliation.reconciliation_id）
     */
    @TableField("reconciliation_id")
    private Long reconciliationId;

    /**
     * 对账对象类型：1-佣金记录，2-提现记录
     */
    @TableField("target_type")
    private Integer targetType;

    /**
     * 对账对象ID（commission_id/withdrawal_id）
     */
    @TableField("target_id")
    private Long targetId;

    /**
     * 对账对象编号（佣金无编号填“-”，提现填withdrawal_no）
     */
    @TableField("target_no")
    private String targetNo;

    /**
     * 平台记录金额（元：佣金=commission_amount，提现=actual_amount）
     */
    @TableField("platform_amount")
    private BigDecimal platformAmount;

    /**
     * 平台记录时间（佣金=settlement_time，提现=transfer_time）
     */
    @TableField("platform_time")
    private LocalDateTime platformTime;

    /**
     * 第三方记录金额（元：银行流水/支付平台的金额）
     */
    @TableField("third_party_amount")
    private BigDecimal thirdPartyAmount;

    /**
     * 第三方记录时间（如银行转账时间、支付平台结算时间）
     */
    @TableField("third_party_time")
    private LocalDateTime thirdPartyTime;

    /**
     * 第三方流水号（如银行流水号、支付平台订单号）
     */
    @TableField("third_party_no")
    private String thirdPartyNo;

    /**
     * 对账结果：1-一致，2-差异（金额/时间不符），3-平台有第三方无，4-第三方有平台无
     */
    @TableField("reconciliation_result")
    private Integer reconciliationResult;

    /**
     * 差异原因（如“银行到账延迟1天”“系统漏记佣金”）
     */
    @TableField("difference_reason")
    private String differenceReason;
}
