package com.gkhy.system.service.impl;
|
|
import cn.hutool.core.util.ObjectUtil;
|
import com.gkhy.common.core.domain.entity.SysDept;
|
import org.springframework.stereotype.Service;
|
import com.gkhy.common.core.domain.model.LoginUser;
|
import com.gkhy.common.utils.StringUtils;
|
import com.gkhy.system.domain.SysUserOnline;
|
import com.gkhy.system.service.ISysUserOnlineService;
|
|
import java.util.List;
|
import java.util.Objects;
|
import java.util.stream.Collectors;
|
|
/**
|
* 在线用户 服务层处理
|
*
|
* @author gkhy
|
*/
|
@Service
|
public class SysUserOnlineServiceImpl implements ISysUserOnlineService
|
{
|
/**
|
* 通过登录地址查询信息
|
*
|
* @param ipaddr 登录地址
|
* @param user 用户信息
|
* @return 在线用户信息
|
*/
|
@Override
|
public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user)
|
{
|
if (StringUtils.equals(ipaddr, user.getIpaddr()))
|
{
|
return loginUserToUserOnline(user);
|
}
|
return null;
|
}
|
|
/**
|
* 通过用户名称查询信息
|
*
|
* @param userName 用户名称
|
* @param user 用户信息
|
* @return 在线用户信息
|
*/
|
@Override
|
public SysUserOnline selectOnlineByUserName(String userName, LoginUser user)
|
{
|
if (StringUtils.equals(userName, user.getUsername()))
|
{
|
return loginUserToUserOnline(user);
|
}
|
return null;
|
}
|
|
/**
|
* 通过登录地址/用户名称查询信息
|
*
|
* @param ipaddr 登录地址
|
* @param userName 用户名称
|
* @param user 用户信息
|
* @return 在线用户信息
|
*/
|
@Override
|
public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user)
|
{
|
if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername()))
|
{
|
return loginUserToUserOnline(user);
|
}
|
return null;
|
}
|
|
/**
|
* 设置在线用户信息
|
*
|
* @param user 用户信息
|
* @return 在线用户
|
*/
|
@Override
|
public SysUserOnline loginUserToUserOnline(LoginUser user)
|
{
|
if (StringUtils.isNull(user) || StringUtils.isNull(user.getUser()))
|
{
|
return null;
|
}
|
SysUserOnline sysUserOnline = new SysUserOnline();
|
sysUserOnline.setTokenId(user.getToken());
|
sysUserOnline.setUserName(user.getUsername());
|
sysUserOnline.setIpaddr(user.getIpaddr());
|
sysUserOnline.setLoginLocation(user.getLoginLocation());
|
sysUserOnline.setBrowser(user.getBrowser());
|
sysUserOnline.setOs(user.getOs());
|
sysUserOnline.setLoginTime(user.getLoginTime());
|
if (ObjectUtil.isNotEmpty(user.getUser().getDepts()))
|
{
|
List<SysDept> depts = user.getUser().getDepts();
|
String deptNames = depts == null ? "" : depts.stream()
|
.map(SysDept::getDeptName)
|
.filter(Objects::nonNull)
|
.collect(Collectors.joining(","));
|
sysUserOnline.setDepts(user.getUser().getDepts());
|
sysUserOnline.setDeptName(deptNames);
|
}
|
return sysUserOnline;
|
}
|
}
|