package com.yolo.keyboard.controller.admin.tenantbalance.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.math.BigDecimal;

/**
 * 管理后台 - 租户余额提现 Request VO
 */
@Schema(description = "管理后台 - 租户余额提现 Request VO")
@Data
public class TenantBalanceWithdrawReqVO {

    @Schema(description = "提现金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000")
    @NotNull(message = "提现金额不能为空")
    @DecimalMin(value = "0.01", message = "提现金额必须大于0")
    private BigDecimal amount;

    @Schema(description = "打款渠道：BANK/ALIPAY/WECHAT", requiredMode = Schema.RequiredMode.REQUIRED, example = "BANK")
    @NotEmpty(message = "打款渠道不能为空")
    private String payChannel;

    @Schema(description = "收款方类型：PERSON（个人）/COMPANY（企业）", requiredMode = Schema.RequiredMode.REQUIRED, example = "PERSON")
    @NotEmpty(message = "收款方类型不能为空")
    private String payeeType;

    @Schema(description = "收款人姓名或公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
    @NotEmpty(message = "收款人姓名不能为空")
    private String payeeName;

    @Schema(description = "收款账号（银行卡/支付宝等）", requiredMode = Schema.RequiredMode.REQUIRED, example = "6222021234567890123")
    @NotEmpty(message = "收款账号不能为空")
    private String payeeAccount;

    @Schema(description = "收款银行名称（银行渠道必填）", example = "中国工商银行")
    private String payeeBankName;

    @Schema(description = "银行编码", example = "ICBC")
    private String payeeBankCode;

    @Schema(description = "银行支行名称", example = "北京分行朝阳支行")
    private String payeeBankBranch;

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