|
@@ -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);
|
|
|
+ }
|
|
|
+
|
|
|
}
|