package com.ktg.system.service;

import com.ktg.common.core.domain.model.LoginUser;
import com.ktg.system.domain.SysUserOnline;

import java.util.List;

/**
 * 在线用户 服务层
 *
 * @author guoruan
 */
public interface ISysUserOnlineService
{
    /**
     * 通过登录地址查询信息
     *
     * @param ipaddr 登录地址
     * @param user 用户信息
     * @return 在线用户信息
     */
    public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user);

    /**
     * 通过用户名称查询信息
     *
     * @param userName 用户名称
     * @param user 用户信息
     * @return 在线用户信息
     */
    public SysUserOnline selectOnlineByUserName(String userName, LoginUser user);

    /**
     * 通过登录地址/用户名称查询信息
     *
     * @param ipaddr 登录地址
     * @param userName 用户名称
     * @param user 用户信息
     * @return 在线用户信息
     */
    public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user);

    /**
     * 设置在线用户信息
     *
     * @param user 用户信息
     * @return 在线用户
     */
    public SysUserOnline loginUserToUserOnline(LoginUser user);

    List<SysUserOnline> getOnlineList(String ipaddr, String userName);

    Boolean forceLogout(String tokenId);

    /**
     * 根据登录名清除多余的登录地
     * @param userName
     * @return
     */
    Boolean forceLogoutByName(String userName);

}
