package com.yolo.keyboard.dal.dataobject.userinvitecodes;

import com.yolo.keyboard.framework.tenant.core.aop.TenantIgnore;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.yolo.keyboard.framework.mybatis.core.dataobject.BaseDO;

/**
 * 用户生成的邀请码表，用于邀请新用户注册/安装并建立邀请关系 DO
 *
 * @author ziin
 */
@TableName("keyboard_user_invite_codes")
@KeySequence("invite_codes_id_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TenantIgnore
public class KeyboardUserInviteCodesDO {

    /**
     * 邀请码主键ID
     */
    @TableId
    private Long id;
    /**
     * 邀请码字符串，对外展示，唯一
     */
    private String code;
    /**
     * 邀请码所属用户ID（邀请人）
     */
    private Long ownerUserId;
    /**
     * 邀请码状态：1=启用，0=停用
     */
    private Short status;
    /**
     * 邀请码创建时间
     */
    private LocalDateTime createdAt;
    /**
     * 邀请码过期时间，NULL表示永久有效
     */
    private LocalDateTime expiresAt;
    /**
     * 邀请码最大可使用次数，NULL表示不限次数
     */
    private Integer maxUses;
    /**
     * 邀请码已使用次数
     */
    private Integer usedCount;
    /**
     * 邀请码所属租户
     */
    private Long ownerTenantId;
    /**
     * 邀请码所属系统用户
     */
    private Long ownerSystemUserId;
    /**
     * 邀请码类型
     */
    private String inviteType;


}