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

import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yolo.keyboard.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

import static com.yolo.keyboard.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 用户生成的邀请码表，用于邀请新用户注册/安装并建立邀请关系分页 Request VO")
@Data
public class KeyboardUserInviteCodesPageReqVO extends PageParam {

    @Schema(description = "邀请码字符串，对外展示，唯一")
    private String code;

    @Schema(description = "邀请码所属用户ID（邀请人）", example = "14170")
    private Long ownerUserId;

    @Schema(description = "邀请码状态：1=启用，0=停用", example = "2")
    private Short status;

    @Schema(description = "邀请码创建时间")
    private LocalDateTime createdAt;

    @Schema(description = "邀请码过期时间，NULL表示永久有效")
    private LocalDateTime expiresAt;

    @Schema(description = "邀请码最大可使用次数，NULL表示不限次数")
    private Integer maxUses;

    @Schema(description = "邀请码已使用次数", example = "25037")
    private Integer usedCount;

    @Schema(description = "邀请码所属系统用户ID（邀请人）", example = "20047")
    private Long systemUserId;

    @Schema(description = "邀请码所属租户", example = "17355")
    private Long ownerTenantId;

    @Schema(description = "邀请码所属系统用户", example = "772")
    private Long owenrSystemUserId;

    @Schema(description = "邀请码类型", example = "1")
    private String inviteType;

}