From cc25bc0eec2d50da39d62f9896ed4d5e66805366 Mon Sep 17 00:00:00 2001 From: zjh <1084500556@qq.com> Date: 星期五, 11 七月 2025 18:04:05 +0800 Subject: [PATCH] zjh20250711 --- ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java | 55 +++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 43 insertions(+), 12 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java b/ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java index e1efb33..b929174 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java @@ -1,7 +1,14 @@ package com.ltkj.web.websocket; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ltkj.common.core.domain.model.LoginUser; +import com.ltkj.hosp.domain.SysNoticeUser; +import com.ltkj.hosp.service.SysNoticeUserService; +import com.ltkj.system.domain.SysNotice; +import com.ltkj.system.service.ISysNoticeService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.TextMessage; @@ -9,7 +16,11 @@ import org.springframework.web.socket.handler.TextWebSocketHandler; import redis.clients.jedis.util.SafeEncoder; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; /** * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃 @@ -20,20 +31,24 @@ @Component public class WebSockerManager extends TextWebSocketHandler { - private static final ConcurrentHashMap<Long, ClientSessionInfo> userSessions = new ConcurrentHashMap<>(); + @Autowired + private SysNoticeUserService noticeUserService; + @Autowired + private ISysNoticeService noticeService; + + public final ConcurrentHashMap<String, ClientSessionInfo> userSessions = new ConcurrentHashMap<>(); private static final ConcurrentHashMap<String, WebSocketClientInfo> sessions = new ConcurrentHashMap<>(); private WebSocketClientInfo getUser(WebSocketSession session) { -// long uid = Long.parseLong(session.getAttributes().get("uid").toString()); -// String hospId = session.getAttributes().get("hospId").toString(); -// WebSocketClientInfo info = new WebSocketClientInfo(); -// info.setUid(uid); -// info.setHospId(hospId); -// return info; - WebSocketClientInfo clientInfo = new WebSocketClientInfo(); - clientInfo.setUid(123L); - clientInfo.setHospId("hosp"); - return clientInfo; + LoginUser loginUser = (LoginUser) session.getAttributes().get("user"); + WebSocketClientInfo info = new WebSocketClientInfo(); + info.setUid(Long.parseLong(loginUser.getUserId())); + info.setHospId(loginUser.getHospName()); + return info; +// WebSocketClientInfo clientInfo = new WebSocketClientInfo(); +// clientInfo.setUid(123L); +// clientInfo.setHospId("hosp"); +// return clientInfo; } @Override @@ -41,8 +56,22 @@ WebSocketClientInfo clientInfo = getUser(session); // userSessions.put(clientInfo.getUid(), new ClientSessionInfo(session, clientInfo.getHospId())); sessions.put(session.getId(),clientInfo); - log.info(JSONUtil.toJsonStr(sessions)); + ClientSessionInfo sessionInfo = new ClientSessionInfo(); + sessionInfo.setSession(session); + sessionInfo.setCode(clientInfo.getHospId()); + userSessions.put(String.valueOf(clientInfo.getUid()), sessionInfo); session.sendMessage(new TextMessage("杩炴帴鎴愬姛")); + log.info("[WebSocket] 鍦ㄧ嚎鍒楄〃UserIds\n{}",JSONUtil.toJsonStr(new ArrayList<>(userSessions.keySet()))); + LambdaQueryWrapper<SysNoticeUser> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysNoticeUser::getUserId,clientInfo.getUid()); + wrapper.eq(SysNoticeUser::getIsRead,0); + List<SysNoticeUser> list = noticeUserService.list(wrapper); + if (list != null && !list.isEmpty()){ + List<Long> noticeIds = list.stream().map(SysNoticeUser::getNoticeId).collect(Collectors.toList()); + for (Long noticeId : noticeIds) { + session.sendMessage(new TextMessage(JSONUtil.toJsonStr(noticeService.getById(noticeId)))); + } + } } @Override @@ -62,5 +91,7 @@ @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { log.info("[WebSocket] 杩炴帴鍏抽棴: " + status); + WebSocketClientInfo clientInfo = sessions.get(session.getId()); + userSessions.remove(String.valueOf(clientInfo.getUid())); } } -- Gitblit v1.8.0