package com.sonic.lion.domain.req;

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

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

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

    /**
     * 平台代码(Balance 钱包余额)
     */
    @NotBlank
    private String platform = "Balance";

    /**
     * 平台抽成费用
     */
    private Long platformFee;

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

    /**
     * 外部交易号关联单号
     */
    private String outTradeNoRelationNo;

    /**
     * 业务类型
     */
    @NotNull
    private BizType bizType;

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

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

    /**
     * 对方账户
     */
    private Long desAccountId;

    /**
     * 商品金额,单位:分
     */
    @Min(1)
    @NotNull
    private Long productAmount;

    /**
     * 优惠金额,单位:分
     */
    @NotNull
    private Long promoAmount;

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

    /**
     * 交易关闭时间
     */
    private LocalDateTime closeTime;

    /**
     * 资源key
     */
    private String resourceKey;

    /**
     * 资源数量
     */
    private Integer resourceNum;

    /**
     * 扩展信息
     */
    private String extend;

    /**
     * ip 地址
     */
    private String ip;
}
