package com.yolo.keyboard.controller.admin.userinvites.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 KeyboardUserInvitesPageReqVO extends PageParam {

    @Schema(description = "邀请人用户ID", example = "11992")
    private Long inviterUserId;

    @Schema(description = "被邀请人用户ID（新注册用户）", example = "28499")
    private Long inviteeUserId;

    @Schema(description = "使用的邀请码ID", example = "30340")
    private Long inviteCodeId;

    @Schema(description = "绑定时关联的点击Token（通过邀请链接自动绑定时使用）")
    private String clickToken;

    @Schema(description = "绑定方式：1=手动填写邀请码，2=邀请链接自动绑定，3=其他方式", example = "2")
    private Short bindType;

    @Schema(description = "邀请关系绑定完成时间")
    private LocalDateTime boundAt;

    @Schema(description = "绑定 iP")
    private String bindIp;

    @Schema(description = "userAgent")
    private String bindUserAgent;

    @Schema(description = "邀请码类型快照：USER=普通用户邀请，AGENT=代理邀请", example = "2")
    private String inviteType;

    @Schema(description = "收益结算归属租户ID（代理结算用，绑定时固化）", example = "25223")
    private Long profitTenantId;

    @Schema(description = "收益归因员工ID（用于区分租户员工/渠道，绑定时固化）", example = "31236")
    private Long profitEmployeeId;

    @Schema(description = "邀请人所属租户ID快照（便于审计/对账，可选）", example = "17028")
    private Long inviterTenantId;

    @Schema(description = "邀请码字符串快照（便于排查，可选）")
    private String inviteCode;

}