UserOnlineServiceImpl.java 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package jnpf.base.service.impl;
  2. import jnpf.base.Pagination;
  3. import jnpf.base.UserInfo;
  4. import jnpf.base.service.UserOnlineService;
  5. import jnpf.message.model.UserOnlineModel;
  6. import jnpf.util.*;
  7. import org.jetbrains.annotations.NotNull;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Service;
  10. import java.util.ArrayList;
  11. import java.util.Comparator;
  12. import java.util.List;
  13. import java.util.stream.Collectors;
  14. /**
  15. * 在线用户
  16. *
  17. * @author JNPF开发平台组
  18. * @version V3.1.0
  19. * @copyright 引迈信息技术有限公司
  20. * @date 2019年9月26日 上午9:18
  21. */
  22. @Service
  23. public class UserOnlineServiceImpl implements UserOnlineService {
  24. @Autowired
  25. private RedisUtil redisUtil;
  26. @Autowired
  27. private CacheKeyUtil cacheKeyUtil;
  28. @Override
  29. public List<UserOnlineModel> getList(Pagination page) {
  30. List<UserOnlineModel> userOnlineList = getUserOnlineModels();
  31. if(!StringUtil.isEmpty(page.getKeyword())){
  32. userOnlineList=userOnlineList.stream().filter(t->t.getUserName().contains(page.getKeyword())).collect(Collectors.toList());
  33. }
  34. userOnlineList.sort(Comparator.comparing(UserOnlineModel::getLoginTime).reversed());
  35. page.setTotal(userOnlineList.size());
  36. userOnlineList = PageUtil.getListPage((int) page.getCurrentPage(), (int) page.getPageSize(), userOnlineList);
  37. return userOnlineList;
  38. }
  39. @NotNull
  40. public static List<UserOnlineModel> getUserOnlineModels() {
  41. List<UserOnlineModel> userOnlineList = new ArrayList<>();
  42. List<String> tokens = UserProvider.getLoginUserListToken();
  43. for (String token : tokens) {
  44. UserInfo userInfo = UserProvider.getUser(token);
  45. if(userInfo.getId() != null){
  46. if(UserProvider.isTempUser(userInfo)){
  47. //临时用户不显示
  48. continue;
  49. }
  50. UserOnlineModel userOnlineModel = new UserOnlineModel();
  51. userOnlineModel.setUserId(userInfo.getUserId());
  52. userOnlineModel.setUserName((userInfo.getUserName()) + "/" + userInfo.getUserAccount());
  53. userOnlineModel.setLoginIPAddress(userInfo.getLoginIpAddress());
  54. userOnlineModel.setLoginAddress(userInfo.getLoginIpAddressName());
  55. userOnlineModel.setOrganize(userInfo.getOrganize());
  56. userOnlineModel.setLoginTime(userInfo.getLoginTime());
  57. userOnlineModel.setTenantId(userInfo.getTenantId());
  58. userOnlineModel.setToken(token);
  59. userOnlineModel.setDevice(userInfo.getLoginDevice());
  60. userOnlineModel.setLoginBrowser(userInfo.getBrowser());
  61. userOnlineModel.setLoginSystem(userInfo.getLoginPlatForm());
  62. userOnlineList.add(userOnlineModel);
  63. }
  64. }
  65. String tenantId =UserProvider.getUser().getTenantId();
  66. userOnlineList = userOnlineList.stream().filter(t -> String.valueOf(t.getTenantId()).equals(String.valueOf(tenantId))).collect(Collectors.toList());
  67. return userOnlineList;
  68. }
  69. @Override
  70. public void delete(String... token) {
  71. AuthUtil.kickoutByToken(token);
  72. }
  73. }