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

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import cn.idev.excel.annotation.*;

@Schema(description = "管理后台 - 用户免费功能永久总次数额度表（所有功能共用） Response VO")
@Data
@ExcelIgnoreUnannotated
public class KeyboardUserQuotaTotalRespVO {

    @Schema(description = "用户唯一ID，对应系统用户", requiredMode = Schema.RequiredMode.REQUIRED, example = "19113")
    @ExcelProperty("用户唯一ID，对应系统用户")
    private Long userId;

    @Schema(description = "免费体验的永久总次数上限（可通过运营活动增加）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("免费体验的永久总次数上限（可通过运营活动增加）")
    private Integer totalQuota;

    @Schema(description = "已消耗的免费次数", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("已消耗的免费次数")
    private Integer usedQuota;

    @Schema(description = "乐观锁版本号（并发控制预留字段）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("乐观锁版本号（并发控制预留字段）")
    private Integer version;

    @Schema(description = "首次创建额度记录的时间（通常为注册时间）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("首次创建额度记录的时间（通常为注册时间）")
    private LocalDateTime createdAt;

    @Schema(description = "最近一次额度发生变化的时间（消耗或赠送）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("最近一次额度发生变化的时间（消耗或赠送）")
    private LocalDateTime updatedAt;

}