package com.vetti.hotake.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.vetti.common.annotation.Excel;
import com.vetti.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Date;

/**
 * 用户登录会话对象 hotake_security_login_sessions
 *
 * @author vetti
 * @date 2026-02-02
 */
@Data
@Accessors(chain = true)
@ApiModel("用户登录会话")
public class HotakeSecurityLoginSessions extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    @ApiModelProperty("主键ID")
    private Long id;

    /** 用户ID */
    @ApiModelProperty("用户ID")
    @Excel(name = "用户ID")
    private Long userId;

    /** 会话ID */
    @ApiModelProperty("会话ID")
    @Excel(name = "会话ID")
    private String sessionId;

    /** 会话令牌 */
    @ApiModelProperty("会话令牌")
    private String sessionToken;

    /** 设备类型 Desktop/Mobile/Tablet */
    @ApiModelProperty("设备类型")
    @Excel(name = "设备类型")
    private String deviceType;

    /** 设备名称 */
    @ApiModelProperty("设备名称")
    @Excel(name = "设备名称")
    private String deviceName;

    /** 浏览器 */
    @ApiModelProperty("浏览器")
    @Excel(name = "浏览器")
    private String browser;

    /** 浏览器版本 */
    @ApiModelProperty("浏览器版本")
    private String browserVersion;

    /** 操作系统 */
    @ApiModelProperty("操作系统")
    @Excel(name = "操作系统")
    private String os;

    /** 操作系统版本 */
    @ApiModelProperty("操作系统版本")
    private String osVersion;

    /** IP地址 */
    @ApiModelProperty("IP地址")
    @Excel(name = "IP地址")
    private String ipAddress;

    /** 国家 */
    @ApiModelProperty("国家")
    @Excel(name = "国家")
    private String locationCountry;

    /** 城市 */
    @ApiModelProperty("城市")
    @Excel(name = "城市")
    private String locationCity;

    /** 是否活跃 0-否 1-是 */
    @ApiModelProperty("是否活跃")
    @Excel(name = "是否活跃", readConverterExp = "0=否,1=是")
    private Integer isActive;

    /** 最后活动时间 */
    @ApiModelProperty("最后活动时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "最后活动时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date lastActivityTime;

    /** 登录时间 */
    @ApiModelProperty("登录时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date loginTime;

    /** 登出时间 */
    @ApiModelProperty("登出时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "登出时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date logoutTime;

    /** 会话过期时间 */
    @ApiModelProperty("会话过期时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "会话过期时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date expiresAt;
}
