package com.sonic.lion.domain.req;

import com.sonic.lion.enums.BindDataType;
import com.sonic.lion.enums.PayChannel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * @author: code
 * @date: 2025/05/11
 * @Description:
 * @version: 1.0.0
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WithdrawReq {

    /**
     * 平台代码
     */
    @NotBlank
    private String platform;

    /**
     * 外部交易号(如订单号)
     */
    @NotBlank
    private String outTradeNo;

    /**
     * 交易标题或名称
     */
    @NotBlank
    private String name;

    /**
     * 本方(发起方)账户(account .id)
     */
    @NotNull
    private Long uid;

    /**
     * 渠道ID
     */
    @NotNull
    private PayChannel payChannel;

    /**
     * 交易金额,单位:分
     */
    @NotNull
    private Long amount;

    /**
     * 备注
     */
    private String remark;

    /**
     * payChannel为braintree等聚合支付渠道时，转账需要选择所绑定的具体账户类型
     */
    private BindDataType bindDataType;
}
