Browse Source

新增踢出人员操作

xiaochan 2 years ago
parent
commit
2efdc91573

+ 5 - 0
src/main/java/thyyxxk/webserver/controller/zhuyuanyizheng/emr/EmrWebSocketController.java

@@ -51,5 +51,10 @@ public class EmrWebSocketController {
         return emrWebSocketServerV2.isBeingEditing(sid);
     }
 
+    @GetMapping("/forcedKickingOutOfPersonnelByDocumentId")
+    public void forcedKickingOutOfPersonnelByDocumentId(@RequestParam("documentId") String documentId) {
+        emrWebSocketServerV2.forcedKickingOutOfPersonnelByDocumentId(documentId);
+    }
+
 
 }

+ 29 - 5
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/emr/EmrWebSocketServiceV2.java

@@ -1,5 +1,6 @@
 package thyyxxk.webserver.service.zhuyuanyisheng.emr;
 
+import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -9,14 +10,22 @@ import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrSocketParam;
 import thyyxxk.webserver.service.redislike.RedisLikeService;
 import thyyxxk.webserver.utils.ResultVoUtil;
 
+import javax.websocket.Session;
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 
 @Slf4j
 @Service
 public class EmrWebSocketServiceV2 {
+
+    @Data
+    public static class Edit {
+        private Session session;
+        private String userCode;
+    }
+
     private final RedisLikeService redisLikeService;
-    private static final ConcurrentHashMap<String, String> EDITOR_USER = new ConcurrentHashMap<>();
+    private static final ConcurrentHashMap<String, Edit> EDITOR_USER = new ConcurrentHashMap<>();
 
     @Autowired
     public EmrWebSocketServiceV2(RedisLikeService redisLikeService) {
@@ -25,19 +34,22 @@ public class EmrWebSocketServiceV2 {
 
     public ResultVo<UserInfo> isBeingEditing(String documentId) {
         if (EDITOR_USER.containsKey(documentId)) {
-            String code = EDITOR_USER.get(documentId);
+            Edit code = EDITOR_USER.get(documentId);
             if (code == null) {
                 return ResultVoUtil.success();
             }
-            UserInfo us = redisLikeService.getUserInfoByCode(code);
+            UserInfo us = redisLikeService.getUserInfoByCode(code.getUserCode());
             return ResultVoUtil.success(us);
         }
         return ResultVoUtil.success();
     }
 
-    public static void open(String sid) {
+    public static void open(String sid, Session session) {
         EmrSocketParam param = parameterParsing(sid);
-        EDITOR_USER.put(param.getId(), param.getUserCode());
+        Edit edit = new Edit();
+        edit.setSession(session);
+        edit.setUserCode(param.getUserCode());
+        EDITOR_USER.put(param.getId(), edit);
     }
 
     public static void close(String sid) {
@@ -53,4 +65,16 @@ public class EmrWebSocketServiceV2 {
                 .setUserCode(sids[2]);
         return param;
     }
+
+    public void forcedKickingOutOfPersonnelByDocumentId(String documentId) {
+        Edit edit = EDITOR_USER.get(documentId);
+        if (edit == null) return;
+        try {
+            edit.getSession().getBasicRemote().sendText("{\"forceRefresh\":\"true\"}");
+        } catch (Exception e) {
+            log.error("封禁用户失败", e);
+        }
+        EDITOR_USER.remove(documentId);
+    }
+
 }

+ 1 - 1
src/main/java/thyyxxk/webserver/websocket/WebSocketServer.java

@@ -45,7 +45,7 @@ public class WebSocketServer {
         }
 
         if (sid.startsWith("documentEmr")) {
-            EmrWebSocketServiceV2.open(sid);
+            EmrWebSocketServiceV2.open(sid, session);
             return;
         }