From 2c97f9adf61f846edbce4ef458400416f0003ff8 Mon Sep 17 00:00:00 2001
From: liusuyi <13324259@qq.com>
Date: 星期五, 28 七月 2023 23:16:31 +0800
Subject: [PATCH] 修改exe程序调用方式 修改推送app实时位置为传参开启

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RongCloudTask.java                    |    7 +
 /dev/null                                                                              |   37 -----
 ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java       |  117 ++++++++++++----
 ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java        |    2 
 ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPushService.java |   97 +++++++++++++
 ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java                 |   58 ++++++++
 ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java                  |   48 +++++-
 7 files changed, 287 insertions(+), 79 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java
index 7294c55..fc5f294 100644
--- a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java
+++ b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java
@@ -23,7 +23,7 @@
 import java.util.stream.Collectors;
 
 /**
- * @Description: app浣嶇疆鎺ㄩ��
+ * @Description: app浣嶇疆鎺ㄩ�侊紙寮冪敤锛�
  * @ClassName: AppPositionPush
  * @Author: 鍒樿嫃涔�
  * @Date: 2023骞�07鏈�25鏃�16:07:04
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
new file mode 100644
index 0000000..5fad187
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPushService.java
@@ -0,0 +1,97 @@
+package com.ruoyi.app.position.service.impl;
+
+import com.ruoyi.app.position.domain.ArdAppPosition;
+import com.ruoyi.app.position.service.IArdAppPositionService;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.utils.websocket.util.WebSocketUtils;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @ClassName AppPositionPushService
+ * @Description: app浣嶇疆鎺ㄩ��
+ * @Author 鍒樿嫃涔�
+ * @Date 2023/7/28 19:18
+ * @Version 1.0
+ * {"enabled":false,"frequency":1000,"userId":"69cf75f289424a48ba10cf33fa324206"}
+ */
+@Slf4j
+public class AppPositionPushService {
+    public static Map<String, List<ArdAppPosition>> dataMap = new HashMap<>();//甯歌鏁版嵁 姣忎釜鐢ㄦ埛鍏宠仈
+    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 Timer startTimerTask(String userId, Integer period) {
+        Timer timer = new Timer();
+        timer.schedule(new TimerTask() {
+            @Override
+            public void run() {
+                List<ArdAppPosition> data = dataMap.get(userId);
+                if (data.size() > 0) {
+                    Map newMap = new HashMap<>();
+                    newMap.put("50000", data);
+                    WebSocketUtils.sendMessage(WebSocketUtils.ONLINE_USER_SESSIONS.get(userId), newMap);
+                }
+            }
+        }, 0, period);
+
+        return timer;
+    }
+
+    //鍚姩寮曞瀹氭椂鍣�
+    public static Timer startTempTimerTask(String userId, Integer period) {
+        Timer timer = new Timer();
+        timer.schedule(new TimerTask() {
+            @Override
+            public void run() {
+                //寰幆
+                List<ArdAppPosition> data = tempDataMap.get(userId);
+                if (data.size() > 0) {
+                    Map newMap = new HashMap<>();
+                    newMap.put("50000", data);
+                    WebSocketUtils.sendMessage(WebSocketUtils.ONLINE_USER_SESSIONS.get(userId), newMap);
+                }
+            }
+        }, 0, period);
+
+        return timer;
+    }
+
+    //鍋滄瀹氭椂鍣�
+    public static void stopTimerTask(Timer timer) {
+        if (timer != null) {
+            timer.cancel();
+            log.info("鍋滄杩愯");
+        }
+    }
+
+    //鏌ヨ鎵�鏈塧pp鐢ㄦ埛鐨勪綅缃俊鎭�
+    public static List<ArdAppPosition> getAppPositionList() {
+        List<ArdAppPosition> ArdAppPositions = new ArrayList<>();
+        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) {
+            IArdAppPositionService ardAppPositionService = SpringUtils.getBean(IArdAppPositionService.class);
+            ArdAppPosition ardAppPosition = ardAppPositionService.selectLastArdAppPositionByUserId(sysUser.getUserId());
+            ArdAppPositions.add(ardAppPosition);
+        }
+        return ArdAppPositions;
+    }
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java
index b28201b..31a8fe7 100644
--- a/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java
+++ b/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java
@@ -15,8 +15,10 @@
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
+import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.regex.Matcher;
@@ -43,20 +45,42 @@
         if (Platform.isWindows()) {
             String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "mediamtx" + File.separator + "mediamtx.exe";
             String ymlPath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "mediamtx" + File.separator + "mediamtx.yml";
-            try {
-                // 鏋勫缓鍚姩鍛戒护锛屼娇鐢╟md /c start鍛戒护鏉ュ惎鍔ㄥ彲鎵ц绋嬪簭骞舵樉绀哄懡浠ゆ彁绀虹绐楀彛
-                String[] cmd = {"cmd", "/c", "start", exePath,ymlPath};
-                ProcessBuilder processBuilder = new ProcessBuilder(cmd);
-                processBuilder.redirectErrorStream(true); // 灏嗛敊璇緭鍑洪噸瀹氬悜鍒版爣鍑嗚緭鍑�
-                Process process = processBuilder.start();
-                // 濡傛灉浣犳兂绛夊緟绋嬪簭瀹屾垚
-                int exitCode = process.waitFor();
-            } catch (IOException | InterruptedException e) {
-                e.printStackTrace();
-            }
+            // 鏋勫缓鍚姩鍛戒护锛屼娇鐢╟md /c start鍛戒护鏉ュ惎鍔ㄥ彲鎵ц绋嬪簭骞舵樉绀哄懡浠ゆ彁绀虹绐楀彛
+//                String[] cmd = {"cmd", "/c", "start", exePath,ymlPath};
+//                ProcessBuilder processBuilder = new ProcessBuilder(cmd);
+//                processBuilder.redirectErrorStream(true); // 灏嗛敊璇緭鍑洪噸瀹氬悜鍒版爣鍑嗚緭鍑�
+//                Process process = processBuilder.start();
+            // 濡傛灉浣犳兂绛夊緟绋嬪簭瀹屾垚
+            //  int exitCode = process.waitFor();
+            List<String> cmd = new ArrayList<>();
+            cmd.add(exePath);
+            cmd.add(ymlPath);
+            commandStart(cmd);
+
         }
     }
-
+    public static void commandStart(List<String> command) {
+        command.forEach(v -> System.out.print(v + " "));
+        System.out.println();
+        System.out.println();
+        ProcessBuilder builder = new ProcessBuilder();
+        //姝e父淇℃伅鍜岄敊璇俊鎭悎骞惰緭鍑�
+        builder.redirectErrorStream(true);
+        builder.command(command);
+        //寮�濮嬫墽琛屽懡浠�
+        Process process = null;
+        try {
+            process = builder.start();
+            //濡傛灉浣犳兂鑾峰彇鍒版墽琛屽畬鍚庣殑淇℃伅锛岄偅涔堜笅闈㈢殑浠g爜涔熸槸闇�瑕佺殑
+//            String line = "";
+//            BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
+//            while ((line = br.readLine()) != null) {
+//                System.out.println(line);
+//            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
     @Override
     public String addPath(String name, String rtspPath, String mode) {
         String rtspUrl = "rtsp://" + mediamtxHost + ":7554/";
diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java
new file mode 100644
index 0000000..299d2e3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java
@@ -0,0 +1,58 @@
+package com.ruoyi.media.service.impl;
+
+import com.sun.jna.Platform;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description:
+ * @ClassName: webrtcService
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�07鏈�26鏃�13:43:07
+ * @Version: 1.0
+ **/
+@Component
+public class WebrtcService {
+    @PostConstruct
+    public void init() {
+        if (Platform.isWindows()) {
+            // String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "webrtc" + File.separator + "setup.bat";
+            // String[] cmd = {"cmd", "/c", "start", exePath};
+            String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "webrtc" + File.separator + "webrtc-streamer.exe";
+            List<String> cmd = new ArrayList<>();
+            cmd.add(exePath);
+            cmd.add("-o");
+            cmd.add("-H127.0.0.1:8000");
+            commandStart(cmd);
+        }
+    }
+    public static void commandStart(List<String> command) {
+        command.forEach(v -> System.out.print(v + " "));
+        System.out.println();
+        System.out.println();
+        ProcessBuilder builder = new ProcessBuilder();
+        //姝e父淇℃伅鍜岄敊璇俊鎭悎骞惰緭鍑�
+        builder.redirectErrorStream(true);
+        builder.command(command);
+        //寮�濮嬫墽琛屽懡浠�
+        Process process = null;
+        try {
+           process = builder.start();
+//            //濡傛灉浣犳兂鑾峰彇鍒版墽琛屽畬鍚庣殑淇℃伅锛岄偅涔堜笅闈㈢殑浠g爜涔熸槸闇�瑕佺殑
+//            String line = "";
+//            BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
+//            while ((line = br.readLine()) != null) {
+//                System.out.println(line);
+//            }
+       } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/webrtcService.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/webrtcService.java
deleted file mode 100644
index a4bf6a4..0000000
--- a/ard-work/src/main/java/com/ruoyi/media/service/impl/webrtcService.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.ruoyi.media.service.impl;
-
-import com.sun.jna.Platform;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.PostConstruct;
-import java.io.File;
-import java.io.IOException;
-
-/**
- * @Description:
- * @ClassName: webrtcService
- * @Author: 鍒樿嫃涔�
- * @Date: 2023骞�07鏈�26鏃�13:43:07
- * @Version: 1.0
- **/
-@Component
-public class webrtcService {
-    @PostConstruct
-    public void init() {
-        if (Platform.isWindows()) {
-            String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "webrtc" + File.separator + "setup.bat";
-
-            try {
-                // 鏋勫缓鍚姩鍛戒护锛屼娇鐢╟md /c start鍛戒护鏉ュ惎鍔ㄥ彲鎵ц绋嬪簭骞舵樉绀哄懡浠ゆ彁绀虹绐楀彛
-                String[] cmd = {"cmd", "/c", "start", exePath};
-                ProcessBuilder processBuilder = new ProcessBuilder(cmd);
-                processBuilder.redirectErrorStream(true); // 灏嗛敊璇緭鍑洪噸瀹氬悜鍒版爣鍑嗚緭鍑�
-                Process process = processBuilder.start();
-                // 濡傛灉浣犳兂绛夊緟绋嬪簭瀹屾垚
-                int exitCode = process.waitFor();
-            } catch (IOException | InterruptedException e) {
-                e.printStackTrace();
-            }
-        }
-    }
-}
diff --git a/ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java b/ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java
index f4186b2..6050250 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java
@@ -4,6 +4,7 @@
 import com.ruoyi.app.position.domain.ArdAppPosition;
 import com.ruoyi.app.position.service.IArdAppPositionService;
 import com.ruoyi.app.position.service.impl.AppPositionPush;
+import com.ruoyi.app.position.service.impl.AppPositionPushService;
 import com.ruoyi.app.position.service.impl.ArdAppPositionServiceImpl;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.spring.SpringUtils;
@@ -18,10 +19,7 @@
 import javax.websocket.server.PathParam;
 import javax.websocket.server.ServerEndpoint;
 import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -36,45 +34,93 @@
 @Slf4j(topic = "websocket")
 @ServerEndpoint("/websocket/{userId}")
 public class ChatServerEndpoint {
-
     @OnOpen
     public void openSession(@PathParam("userId") String userId, Session session) {
         WebSocketUtils.ONLINE_USER_SESSIONS.put(userId, session);
         String message = "鐢ㄦ埛[" + userId + "] 鎴愬姛杩炴帴锛�";
         log.info("鐢ㄦ埛鐧诲綍锛�" + message);
         WebSocketUtils.sendMessage(session, message);
-        //姣忎釜鐢ㄦ埛杩炴帴鏃讹紝鍚姩鍒濆鎵�鏈塧pp鐢ㄦ埛浣嶇疆鍙戦��
-        AppPositionPush.initDataMap.put(userId,AppPositionPush.getAppPositionList());
-        AppPositionPush.initPushTask(userId,session,3000);
+        //region 鏃ф柟娉�
+//        //姣忎釜鐢ㄦ埛杩炴帴鏃讹紝鍚姩鍒濆鎵�鏈塧pp鐢ㄦ埛浣嶇疆鍙戦��
+//        AppPositionPush.initDataMap.put(userId,AppPositionPush.getAppPositionList());
+//        AppPositionPush.initPushTask(userId,session,3000);
+        //endregion
     }
 
     @OnMessage
     public void onMessage(@PathParam("userId") String userId, String message) {
         log.info("鏀跺埌娑堟伅锛�" + message);
         Session session = WebSocketUtils.ONLINE_USER_SESSIONS.get(userId);
-       // WebSocketUtils.sendMessage(session, message);
+        WebSocketUtils.sendMessage(session, message);
 //        sendMessageAll("鐢ㄦ埛[" + userid + "] : " + message);
         // 鏍规嵁鐢ㄦ埛鏂扮殑棰戠巼閲嶆柊璋冩暣瀹氭椂浠诲姟
-        Map<String,Object> map = JSONObject.parseObject(message, Map.class);
-        if(map.size()>0) {
-            Integer frequency = (Integer)map.get("frequency");
+        Map<String, Object> map = JSONObject.parseObject(message, Map.class);
+        if (map.size() > 0) {
+            Boolean enabled = (Boolean) map.get("enabled");
+            if (enabled) {
+                //鍚姩鍏ㄥ眬鎺ㄩ��
+                List<ArdAppPosition> newList = new ArrayList<>(AppPositionPushService.initDataList);
+                AppPositionPushService.dataMap.put(userId, newList);
+                if (!AppPositionPushService.userTimerMap.containsKey(userId)) {
+                    Timer timer = AppPositionPushService.startTimerTask(userId, 3000);
+                    AppPositionPushService.userTimerMap.put(userId, timer);//灏嗗畾鏃跺櫒鍏宠仈鐢ㄦ埛
+                }
+            } else {
+                //鍋滄鍏ㄥ眬鎺ㄩ��
+                if (AppPositionPushService.userTimerMap.containsKey(userId)) {
+                    Timer timer = AppPositionPushService.userTimerMap.get(userId);
+                    AppPositionPushService.stopTimerTask(timer);
+                    AppPositionPushService.userTimerMap.remove(userId);
+                }
+                if (AppPositionPushService.tempUserTimerMap.containsKey(userId)) {
+                    Timer temptimer = AppPositionPushService.tempUserTimerMap.get(userId);
+                    AppPositionPushService.stopTimerTask(temptimer);
+                    AppPositionPushService.tempUserTimerMap.remove(userId);
+                }
+                AppPositionPushService.dataMap.remove(userId);
+                AppPositionPushService.tempDataMap.remove(userId);
+            }
+
+            Integer frequency = (Integer) map.get("frequency");
             String uId = (String) map.get("userId");
-            Map<String, List<ArdAppPosition>> dataMap = new HashMap<>();
-            List<ArdAppPosition> positionList = AppPositionPush.initDataMap.get(userId);//鑾峰彇褰撳墠鐢ㄦ埛鐨勯粯璁ゅ彂閫佺殑鏁版嵁map
-            if(frequency>0)
-            {
-                //鎺ユ敹鍒伴鐜囧ぇ浜�0锛屽睘浜庣敵璇峰紩瀵硷紝鑾峰彇闄ゅ紩瀵煎鐨勫叾浠朼pp鐢ㄦ埛鐨勪綅缃甃ist
-                List<ArdAppPosition> appPositionList = positionList.stream()
+            if (frequency > 0) {
+                List<ArdAppPosition> List = AppPositionPushService.initDataList.stream()
                         .filter(obj -> !obj.getUserId().equals(uId))
-                        .collect(Collectors.toList());
-                dataMap.put(userId,appPositionList);
+                        .collect(Collectors.toList());//鍘婚櫎寮曞鍚庣殑list
+                AppPositionPushService.dataMap.put(userId,List);
+
+                List<ArdAppPosition> tempList = AppPositionPushService.initDataList.stream()
+                        .filter(obj -> obj.getUserId().equals(uId))
+                        .collect(Collectors.toList());//鑾峰彇寮曞鐨刲ist
+                AppPositionPushService.tempDataMap.put(userId, tempList);
+                Timer timer = AppPositionPushService.startTempTimerTask(userId, frequency);
+                AppPositionPushService.tempUserTimerMap.put(userId, timer);
+            } else {
+                List<ArdAppPosition> newList = new ArrayList<>(AppPositionPushService.initDataList);
+                AppPositionPushService.dataMap.put(userId, newList);
+                Timer timer = AppPositionPushService.tempUserTimerMap.get(userId);
+                AppPositionPushService.stopTimerTask(timer);
+                AppPositionPushService.tempUserTimerMap.remove(userId);
+                AppPositionPushService.tempDataMap.remove(userId);
             }
-           else {
-                //鎺ユ敹鍒伴鐜囩瓑浜�0锛屽睘浜庨噴鏀惧紩瀵硷紝鑾峰彇鍒板叏閮╝pp鐢ㄦ埛鐨勪綅缃甃ist
-                dataMap.put(userId,AppPositionPush.getAppPositionList());
-            }
-            AppPositionPush.initDataMap.putAll(dataMap);//鏇存柊鍒濆浼氳瘽榛樿鏁版嵁map
-            AppPositionPush.startLocationPushTask(userId,session,uId, frequency);//寮�鍚柊浠诲姟
+            //region 鏃ф柟娉�
+//            Map<String, List<ArdAppPosition>> dataMap = new HashMap<>();
+//            List<ArdAppPosition> positionList = AppPositionPush.initDataMap.get(userId);//鑾峰彇褰撳墠鐢ㄦ埛鐨勯粯璁ゅ彂閫佺殑鏁版嵁map
+//            if(frequency>0)
+//            {
+//                //鎺ユ敹鍒伴鐜囧ぇ浜�0锛屽睘浜庣敵璇峰紩瀵硷紝鑾峰彇闄ゅ紩瀵煎鐨勫叾浠朼pp鐢ㄦ埛鐨勪綅缃甃ist
+//                List<ArdAppPosition> appPositionList = positionList.stream()
+//                        .filter(obj -> !obj.getUserId().equals(uId))
+//                        .collect(Collectors.toList());
+//                dataMap.put(userId,appPositionList);
+//            }
+//           else {
+//                //鎺ユ敹鍒伴鐜囩瓑浜�0锛屽睘浜庨噴鏀惧紩瀵硷紝鑾峰彇鍒板叏閮╝pp鐢ㄦ埛鐨勪綅缃甃ist
+//                dataMap.put(userId,AppPositionPush.getAppPositionList());
+//            }
+//            AppPositionPush.initDataMap.putAll(dataMap);//鏇存柊鍒濆浼氳瘽榛樿鏁版嵁map
+//            AppPositionPush.startLocationPushTask(userId,session,uId, frequency);//寮�鍚柊浠诲姟
+            //endregion
         }
     }
 
@@ -83,12 +129,25 @@
         //褰撳墠鐨凷ession 绉婚櫎
         WebSocketUtils.ONLINE_USER_SESSIONS.remove(userId);
 //        //骞朵笖閫氱煡鍏朵粬浜哄綋鍓嶇敤鎴峰凡缁忕寮�鑱婂ぉ瀹や簡
-       String message="鐢ㄦ埛[" + userId + "] 鏂紑杩炴帴锛�";
+        String message = "鐢ㄦ埛[" + userId + "] 鏂紑杩炴帴锛�";
 //        sendMessage(session,message);
-        log.info("娑堟伅锛�"+message);
+        log.info("娑堟伅锛�" + message);
         try {
             session.close();
-            AppPositionPush.stopLocationPushTask(session);
+            //鍋滄鍏ㄥ眬鎺ㄩ��
+            if (AppPositionPushService.userTimerMap.containsKey(userId)) {
+                Timer timer = AppPositionPushService.userTimerMap.get(userId);
+                AppPositionPushService.stopTimerTask(timer);
+                AppPositionPushService.userTimerMap.remove(userId);
+            }
+            if (AppPositionPushService.tempUserTimerMap.containsKey(userId)) {
+                Timer temptimer = AppPositionPushService.tempUserTimerMap.get(userId);
+                AppPositionPushService.stopTimerTask(temptimer);
+                AppPositionPushService.tempUserTimerMap.remove(userId);
+            }
+            AppPositionPushService.dataMap.remove(userId);
+            AppPositionPushService.tempDataMap.remove(userId);
+            // AppPositionPush.stopLocationPushTask(session);//鏃ф柟娉�
         } catch (IOException e) {
             log.error("onClose error", e);
         }
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RongCloudTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RongCloudTask.java
index e4b8c25..aa5a322 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RongCloudTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RongCloudTask.java
@@ -4,6 +4,7 @@
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.rongcloud.service.RongCloudService;
 import com.ruoyi.system.service.ISysUserService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
@@ -20,6 +21,7 @@
  * @Version: 1.0
  **/
 @Component("RongCloudTask")
+@Slf4j
 public class RongCloudTask {
 
     @Resource
@@ -29,6 +31,7 @@
 
     public void getAppUserOnlineStateTask()
     {
+        try{
         List<SysUser> SysUserList = sysUserService.selectAllAppUserList(new SysUser());
         if(SysUserList.size()>0) {
             for (SysUser sysUser : SysUserList) {
@@ -40,6 +43,10 @@
                 }
                 sysUserService.updateUserProfile(sysUser);
             }
+        }}
+        catch (Exception ex)
+        {
+            log.error("铻嶄簯鍦ㄧ嚎鎺ュ彛寮傚父锛�"+ex.getMessage());
         }
     }
 }

--
Gitblit v1.9.3