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.math.BigDecimal;

/**
 * <p>
 * 支付模块-提现规则配置表（动态调整提现政策）
 * </p>
 *
 * @author ZS
 * @since 2025-09-17
 */
@Getter
@Setter
@ToString
@TableName("pay_withdrawal_config")
@Schema(name = "PayWithdrawalConfig对象", description = "支付模块-提现规则配置表")
public class PayWithdrawalConfigEntity extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 用户类型（关联user.user_type：1-个人，2-企业）
     */
    @TableField("user_type")
    @Schema(description = "用户类型（关联user.user_type：1-个人，2-企业）")
    private Integer userType;

    /**
     * 最低提现金额（元，个人≥1元，企业≥100元）
     */
    @TableField("min_withdrawal_amount")
    @Schema(description = "最低提现金额（元，个人≥1元，企业≥100元）")
    private BigDecimal minWithdrawalAmount;

    /**
     * 单日最高提现金额（元：个人≤50000，企业≤1000000）
     */
    @TableField("max_withdrawal_amount")
    @Schema(description = "单日最高提现金额（元：个人≤50000，企业≤1000000）")
    private BigDecimal maxWithdrawalAmount;

    /**
     * 平台手续费比例（%，如0.5%即100元收0.5元）
     */
    @TableField("platform_fee_rate")
    @Schema(description = "平台手续费比例（%，如0.5%即100元收0.5元）")
    private BigDecimal platformFeeRate;

    /**
     * 平台手续费起征金额（元，提现金额超过该值时才收取平台手续费，0表示任何金额都收取）
     */
    @TableField("platform_fee_threshold")
    @Schema(description = "平台手续费起征金额（元，提现金额超过该值时才收取平台手续费，0表示任何金额都收取）")
    private BigDecimal platformFeeThreshold;

    /**
     * 平台手续费收费模式：1-按单次提现金额收费，2-按累计提现总额收费
     */
    @TableField("platform_fee_charge_mode")
    @Schema(description = "平台手续费收费模式：1-按单次提现金额收费，2-按累计提现总额收费")
    private Integer platformFeeChargeMode;

    /**
     * 税费比例（%：个人20%，企业13%，免税则为0）
     */
    @TableField("tax_rate")
    @Schema(description = "税费比例（%：个人20%，企业13%，免税则为0）")
    private BigDecimal taxRate;

    /**
     * 到账周期（线下转账：T+1=次日到账）
     */
    @TableField("withdrawal_cycle")
    @Schema(description = "到账周期（线下转账：T+1=次日到账）")
    private String withdrawalCycle;

    /**
     * 配置状态：1-启用，0-禁用（调整规则时先禁用再修改）
     */
    @TableField("status")
    @Schema(description = "配置状态：1-启用，0-禁用（调整规则时先禁用再修改）")
    private Integer status;

}
