package top.continew.admin.business.model.req;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import jakarta.validation.constraints.NotNull;

/**
 * 计费判断请求参数
 *
 * @author jiay
 * @since 2025/08/28 16:23
 */
@Data
public class BillingJudgeReq {

    /**
     * 平台编码
     */
    @Schema(description = "平台编码")
    private String platformCode;

    /**
     * 生成平台
     */
    @Schema(description = "生成平台id")
    @NotNull(message = "生成平台不能为空")
    private Long platformId;

    /**
     * 使用的模型
     */
    @Schema(description = "使用的模型")
    private String modelName;

    /**
     * 扣费编码
     */
    @Schema(description = "扣费编码", example = "C0001")
    @NotNull(message = "扣费编码不能为空")
    private String chargeCode;

    /**
     * 本次生成数量
     */
    @Schema(description = "本次生成数量", example = "1")
    @NotNull(message = "本次生成数量不能为空")
    private Integer quantity;

    /**
     * 本次生成数量
     */
    @Schema(description = "本次生成数量", example = "1")
    @NotNull(message = "本次生成数量不能为空")
    private Long tokens;

    /**
     * 计费类型(token：0, 图：1，音效生成：3，参考生视频：4, 白膜贴图：5)
     */
    @Schema(description = "计费类型(token：0, 图：1, 音效：3, 视频：4, 白膜贴图：5)")
    @NotNull(message = "计费类型不能为空")
    private Integer chargeType;

    /**
     * * 任务类型(token：0, 文生图：1，图生图：2，音效生成：3，参考生视频：4, 白膜贴图：5)
     */
    @Schema(description = "任务类型(token：0, 文生图：1，图生图：2，音效生成：3，参考生视频：4, 白膜贴图：5)")
    @NotNull(message = "任务类型不能为空")
    private Integer taskType;

    /**
     * 计费类型（0充点，1按次数，2按点数）
     */
    @Schema(description = "消费类型（0充点，1按次数，2按点数）")
    @NotNull(message = "消费类型不能为空")
    private Integer type;

}