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

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

/**
 * 用户邀请关系绑定台账表，记录新用户最终归属的邀请人 DO
 *
 * @author ziin
 */
@TableName("keyboard_user_invites")
@KeySequence("keyboard_user_invites_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TenantIgnore
public class KeyboardUserInvitesDO {

    /**
     * 邀请绑定记录主键ID
     */
    @TableId
    private Long id;
    /**
     * 邀请人用户ID
     */
    private Long inviterUserId;
    /**
     * 被邀请人用户ID（新注册用户）
     */
    private Long inviteeUserId;
    /**
     * 使用的邀请码ID
     */
    private Long inviteCodeId;
    /**
     * 绑定时关联的点击Token（通过邀请链接自动绑定时使用）
     */
    private String clickToken;
    /**
     * 绑定方式：1=手动填写邀请码，2=邀请链接自动绑定，3=其他方式
     */
    private Short bindType;
    /**
     * 邀请关系绑定完成时间
     */
    private LocalDateTime boundAt;
    /**
     * 绑定 iP
     */
    private String bindIp;
    /**
     * userAgent
     */
    private String bindUserAgent;
    /**
     * 邀请码类型快照：USER=普通用户邀请，AGENT=代理邀请
     */
    private String inviteType;
    /**
     * 收益结算归属租户ID（代理结算用，绑定时固化）
     */
    private Long profitTenantId;
    /**
     * 收益归因员工ID（用于区分租户员工/渠道，绑定时固化）
     */
    private Long profitEmployeeId;
    /**
     * 邀请人所属租户ID快照（便于审计/对账，可选）
     */
    private Long inviterTenantId;
    /**
     * 邀请码字符串快照（便于排查，可选）
     */
    private String inviteCode;


}