content: package com.ruoyi.system.service.impl;
  
  import org.springframework.stereotype.Service;
  import com.ruoyi.common.core.domain.model.LoginUser;
  import com.ruoyi.common.utils.StringUtils;
  import com.ruoyi.system.domain.SysUserOnline;
  import com.ruoyi.system.service.ISysUserOnlineService;
  
  /**
   * 在线用户 服务层处理
   * 
   * @author ruoyi
   */
  @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 (StringUtils.isNotNull(user.getUser().getDept()))
          {
              sysUserOnline.setDeptName(user.getUser().getDept().getDeptName());
          }
          return sysUserOnline;
      }
  }
  