package com.spot.entity.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 请求头中的用户信息实体，用于解析请求头 "user" 中的 JSON 对象
 *
 * @author jean
 * @date 2026-05-06
 */
@Data
public class UserHeader implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /** 用户ID */
    private Long id;

    /** 认证级别 */
    @JsonProperty("authLevel")
    private Integer authLevel;

    /** 认证类型 */
    @JsonProperty("authType")
    private Integer authType;

    /** 资金密码 */
    @JsonProperty("capitalPword")
    private String capitalPword;

    /** 证书时间 */
    @JsonProperty("certificateTime")
    private LocalDateTime certificateTime;

    /** 国家代码 */
    @JsonProperty("countryCode")
    private String countryCode;

    /** 创建时间 */
    @JsonProperty("ctime")
    private LocalDateTime ctime;

    /** 删除状态 */
    @JsonProperty("deleteStatus")
    private Integer deleteStatus;

    /** 邮箱 */
    @JsonProperty("email")
    private String email;

    /** 交易状态：0-冻结，1-正常 */
    @JsonProperty("excStatus")
    private Integer excStatus;

    /** 交易过期时间 */
    @JsonProperty("excexpireTime")
    private LocalDateTime excexpireTime;

    /** Google验证器密钥 */
    @JsonProperty("googleAuthenticatorKey")
    private String googleAuthenticatorKey;

    /** Google验证器状态 */
    @JsonProperty("googleAuthenticatorStatus")
    private Integer googleAuthenticatorStatus;

    /** 是否子账号 */
    @JsonProperty("isSub")
    private Integer isSub;

    /** 最后登录时间 */
    @JsonProperty("lastLoginTime")
    private LocalDateTime lastLoginTime;

    /** 级别类型 */
    @JsonProperty("levelType")
    private Integer levelType;

    /** 锁定过期时间 */
    @JsonProperty("lockexpireTime")
    private LocalDateTime lockexpireTime;

    /** 登录密码 */
    @JsonProperty("loginPword")
    private String loginPword;

    /** 登录状态 */
    @JsonProperty("loginStatus")
    private Integer loginStatus;

    /** 登录过期时间 */
    @JsonProperty("loginexpireTime")
    private LocalDateTime loginexpireTime;

    /** 手机验证器状态 */
    @JsonProperty("mobileAuthenticatorStatus")
    private Integer mobileAuthenticatorStatus;

    /** 手机号 */
    @JsonProperty("mobileNumber")
    private String mobileNumber;

    /** 修改时间 */
    @JsonProperty("mtime")
    private LocalDateTime mtime;

    /** 昵称 */
    @JsonProperty("nickname")
    private String nickname;

    /** 实名时间 */
    @JsonProperty("realnameTime")
    private LocalDateTime realnameTime;

    /** 根用户ID */
    @JsonProperty("rootUid")
    private Integer rootUid;

    /** 显示的手机号 */
    @JsonProperty("showMobileNumber")
    private String showMobileNumber;

    /** 用户类型 */
    @JsonProperty("userType")
    private Integer userType;

    /** 提现状态 */
    @JsonProperty("withdrawStatus")
    private Integer withdrawStatus;

    /** 提现过期时间 */
    @JsonProperty("withdrawexpireTime")
    private LocalDateTime withdrawexpireTime;
}
