package com.red.circle.other.infra.database.mongo.entity.user.status;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.red.circle.common.business.enums.SVIPLevelEnum;
import com.red.circle.other.inner.enums.user.UserOnlineStatusEnum;
import java.io.Serial;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Date;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

/**
 * 在线用户.
 *
 * @author pengliang on 2020/8/14
 */
@Data
@Accessors(chain = true)
@Document("online_user_v2")
public class OnlineUser implements Serializable {

  private static final long serialVersionUID = 1L;

  @Id
  Long id;

  /**
   * 时序id.
   */
  Long timingId;

  /**
   * 来源系统.
   */
  String sysOrigin;

  /**
   * 用户id.
   */
  @JsonSerialize(using = ToStringSerializer.class)
  Long userId;

  /**
   * 账号.
   */
  String account;

  /**
   * 年龄.
   */
  Integer age;

  /**
   * 用户头像.
   */
  String userAvatar;

  /**
   * 用户昵称.
   */
  String userNickname;

  /**
   * 性别.
   */
  Integer gender;

  /**
   * 国家code.
   */
  String countryCode;

  /**
   * 区域CODE编码.
   */
  private String regionCode;

  /**
   * 状态.
   */
  UserOnlineStatusEnum status;

  /**
   * 过期时间.
   */
  Timestamp expiredTime;

  /**
   * 创建时间.
   */
  Timestamp createTime;

  /**
   * 权重.
   */
  Integer weights;

  /**
   * status = 直播相关的有效.
   */
  Long sessionId;

  /**
   * svip等级.
   */
  private SVIPLevelEnum svipLevel;

}
