From e94241fc70d1308ea88fec5b57e771c6ecad1cee Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期六, 29 七月 2023 10:37:57 +0800
Subject: [PATCH] 推送app位置优化在线离线

---
 ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPushService.java |   42 ++++++++++++++++++++++++++++--------------
 1 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPushService.java b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPushService.java
index 5fad187..1fe8209 100644
--- a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPushService.java
+++ b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPushService.java
@@ -26,11 +26,7 @@
     public static Map<String, List<ArdAppPosition>> tempDataMap = new HashMap<>();//涓存椂鏁版嵁 姣忎釜鐢ㄦ埛鍏宠仈
     public static Map<String, Timer> userTimerMap = new HashMap();//瀹氭椂鍣� 姣忎釜鐢ㄦ埛鍏宠仈
     public static Map<String, Timer> tempUserTimerMap = new HashMap();//涓存椂瀹氭椂鍣� 姣忎釜鐢ㄦ埛鍏宠仈
-    public static List<ArdAppPosition> initDataList;
-
-    static {
-        initDataList = getAppPositionList();
-    }
+//    public static List<ArdAppPosition> initDataList;
 
     //鍚姩鍏ㄥ眬瀹氭椂鍣�
     public static Timer startTimerTask(String userId, Integer period) {
@@ -39,9 +35,10 @@
             @Override
             public void run() {
                 List<ArdAppPosition> data = dataMap.get(userId);
-                if (data.size() > 0) {
+                List<ArdAppPosition> onlineData = isOnlie(data);
+                if (onlineData.size() > 0) {
                     Map newMap = new HashMap<>();
-                    newMap.put("50000", data);
+                    newMap.put("50000", onlineData);
                     WebSocketUtils.sendMessage(WebSocketUtils.ONLINE_USER_SESSIONS.get(userId), newMap);
                 }
             }
@@ -58,9 +55,10 @@
             public void run() {
                 //寰幆
                 List<ArdAppPosition> data = tempDataMap.get(userId);
-                if (data.size() > 0) {
+                List<ArdAppPosition> onlineData = isOnlie(data);
+                if (onlineData.size() > 0) {
                     Map newMap = new HashMap<>();
-                    newMap.put("50000", data);
+                    newMap.put("50000", onlineData);
                     WebSocketUtils.sendMessage(WebSocketUtils.ONLINE_USER_SESSIONS.get(userId), newMap);
                 }
             }
@@ -83,15 +81,31 @@
         ISysUserService sysUserService = SpringUtils.getBean(ISysUserService.class);
         //鑾峰彇鎵�鏈塧pp鐢ㄦ埛
         List<SysUser> list = sysUserService.selectAllAppUserList(new SysUser());
-        List<SysUser> onlineList = list.stream()
-                .filter(obj -> obj.getAppOnlineState().equals("1"))
-                .collect(Collectors.toList());
-        for (SysUser sysUser : onlineList) {
+//        List<SysUser> onlineList = list.stream()
+//                .filter(obj -> obj.getAppOnlineState().equals("1"))
+//                .collect(Collectors.toList());
+        for (SysUser sysUser : list) {
             IArdAppPositionService ardAppPositionService = SpringUtils.getBean(IArdAppPositionService.class);
             ArdAppPosition ardAppPosition = ardAppPositionService.selectLastArdAppPositionByUserId(sysUser.getUserId());
-            ArdAppPositions.add(ardAppPosition);
+            if (StringUtils.isNotNull(ardAppPosition)) {
+                ArdAppPositions.add(ardAppPosition);
+            }
         }
         return ArdAppPositions;
     }
 
+    public static List<ArdAppPosition> isOnlie(List<ArdAppPosition> data) {
+        List<ArdAppPosition> onlineList = new ArrayList<>();
+        if (data.size() > 0) {
+            for (ArdAppPosition ardAppPosition : data) {
+                ISysUserService sysUserService = SpringUtils.getBean(ISysUserService.class);
+                SysUser sysUser = sysUserService.selectUserById(ardAppPosition.getUserId());
+                if (sysUser.getAppOnlineState().equals("1")) {
+                    onlineList.add(ardAppPosition);
+                }
+            }
+        }
+        return onlineList;
+    }
+
 }

--
Gitblit v1.9.3