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 io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

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

/**
 * <p>
 * 支付模块-提现操作日志表（审计追溯用，不可删除）
 * </p>
 *
 * @author ZS
 * @since 2025-09-17
 */
@Getter
@Setter
@ToString
@TableName("pay_merchant_withdrawal_operation_log")
@Schema(name = "PayWithdrawalOperationLogEntity对象", description = "支付模块-提现操作日志表（审计追溯用，不可删除）")
public class PayMerchantWithdrawalOperationLogEntity extends BaseEntity {

    private static final long serialVersionUID = 1L;


    /**
     * 关联提现订单号（withdrawal_apply.withdrawal_no）
     */
    @TableField("withdrawal_no")
    @Schema(description = "关联提现订单号（withdrawal_apply.withdrawal_no）")
    private String withdrawalNo;

    /**
     * 操作人类型：1-用户，2-财务，3-系统
     */
    @TableField("operator_type")
    @Schema(description = "操作人类型：1-用户，2-财务，3-系统")
    private Integer operatorType;

    /**
     * 操作人ID（用户ID/财务ID/系统标识：0=系统）
     */
    @TableField("operator_id")
    @Schema(description = "操作人ID（用户ID/财务ID/系统标识：0=系统）")
    private Long operatorId;

    /**
     * 操作内容（如“发起提现申请”“审核通过”“上传转账凭证”）
     */
    @TableField("operation_content")
    @Schema(description = "操作内容（如“发起提现申请”“审核通过”“上传转账凭证”）")
    private String operationContent;

    /**
     * 涉及的佣金ID（如1001,1002，审核时关联的佣金）
     */
    @TableField("related_settlement_ids")
    @Schema(description = "涉及的佣金ID（如1001,1002，审核时关联的佣金）")
    private String relatedSettlementIds;

    /**
     * 涉及的订单编号（如ORD20250917001,ORD20250917002，审计时快速定位）
     */
    @TableField("related_order_nos")
    @Schema(description = "涉及的订单编号（如ORD20250917001,ORD20250917002，审计时快速定位）")
    private String relatedOrderNos;

    /**
     * 操作IP（用户操作时记录，如192.168.1.1，财务操作记录内网IP）
     */
    @TableField("operation_ip")
    @Schema(description = "操作IP（用户操作时记录，如192.168.1.1，财务操作记录内网IP）")
    private String operationIp;

    /**
     * 操作时间
     */
    @Schema(description = "操作时间")
    @TableField("operation_time")
    private LocalDateTime operationTime;
}
