package com.ruoyi.bst.withdraw.domain;

import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.validate.ValidGroup;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 提现对象 bst_withdraw
 *
 * @author ruoyi
 * @date 2025-04-07
 */
@Data
public class Withdraw extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    private Long id;

    @Excel(name = "提现单号")
    private String no;

    @Excel(name = "申请用户ID")
    @ApiModelProperty("申请用户ID")
    private Long userId;

    @Excel(name = "提现状态")
    @ApiModelProperty("提现状态")
    private String status;

    @Excel(name = "账户ID")
    @ApiModelProperty("账户ID")
    @NotBlank(message = "账户ID不允许为空", groups = {ValidGroup.Create.class})
    private Long accountId;

    @Excel(name = "账户类型")
    @ApiModelProperty("账户类型")
    private String accountType;

    @Excel(name = "账号")
    @ApiModelProperty("账号")
    private String accountNo;

    @Excel(name = "账号姓名")
    @ApiModelProperty("账号姓名")
    private String accountName;

    @Excel(name = "账户手机号")
    @ApiModelProperty("账户手机号")
    private String accountMobile;

    @Excel(name = "账户身份证号")
    @ApiModelProperty("账户身份证号")
    private String accountIdCard;

    @Excel(name = "银行名称")
    @ApiModelProperty("银行名称")
    private String bankName;

    @Excel(name = "银行卡面名称")
    @ApiModelProperty("银行卡面名称")
    private String bankCardName;

    @Excel(name = "银行卡面类型")
    @ApiModelProperty("银行卡面类型")
    private String bankType;

    @Excel(name = "审核人ID")
    @ApiModelProperty("审核人ID")
    private Long verifyUserId;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("审核时间")
    private LocalDateTime verifyTime;

    @Excel(name = "审核意见")
    @ApiModelProperty("审核意见")
    private String verifyRemark;

    @Excel(name = "服务费类型")
    @ApiModelProperty("服务费类型")
    @NotBlank(message = "服务费类型不允许为空", groups = {ValidGroup.Create.class})
    private String serviceType;

    @Excel(name = "服务费金额")
    @ApiModelProperty("服务费金额")
    @NotBlank(message = "服务费金额不允许为空", groups = {ValidGroup.Create.class})
    private BigDecimal serviceCharge;

    @Excel(name = "服务费比例")
    @ApiModelProperty("服务费比例")
    @Min(value = 0, message = "服务费比例不允许小于0")
    private BigDecimal servicePoint;

    @Excel(name = "申请金额")
    @ApiModelProperty("申请金额")
    @DecimalMin(value = "0.01", message = "申请金额不允许小于0")
    private BigDecimal amount;

    @Excel(name = "到账金额")
    @ApiModelProperty("到账金额")
    @Min(value = 0, message = "到账金额不允许小于0")
    private BigDecimal arrivalAmount;

}
