package com.ff.api.request;


import com.ff.validation.ListSizeCheck;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;


/**
 * 游戏赠送免费的局数
 *
 * @author shi
 * @date 2025/02/12
 */
@Data
public class GameCreateFreeSpinRequest implements Serializable {
    private final  static long serialVersionUID = -8079805496329012394L;

    /**
     * 玩家账号 (JILI 新玩家则会自动创立账号)
     */
    @NotBlank(message = "account不能为空")
    private String account;

    /**
     * 玩家游戏平台
     */
    @NotBlank(message = "platformCode不能为空")
    private String platformCode;

    /**
     * 玩家使用货币
     */
    @NotBlank(message = "currencyCode不能为空")
    private String currencyCode;

    /**
     * 免费局数序号, 长度上限 40
     */
    @NotBlank(message = "referenceId不能为空")
    @Length(min = 1, max = 40, message = "referenceId长度不能超过40")
    private String referenceId;

    /**
     * 有效期限
     *
     *
     */
    @NotNull(message = "freeSpinValidity不能为空")
    private Long freeSpinValidity;

    /**
     * 局数
     */
    @NotNull(message = "numberOfRounds不能为空")
    private  Integer numberOfRounds;

    /**
     * 可使用游戏 ID,
     * 长度 上限 200
     */
    @NotNull(message = "gameIds不能为空")
    @ListSizeCheck(message = "gameIds不得超过200", maxSize = 200)
    private List<Long> gameIds;

    /**
     * 指定投注额;
     * 未指定时, 一律使用游戏中的最小投注额
     */
    private BigDecimal betValue;

    /**
     * 免费游戏局数可使用的开始时间
     * 未带此参数时, 赠送后玩家可以立即使用
     */
    private Long startTime;
}
