From e454bfd959b5e4286227200dd791a167cc58afca Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 16 Jun 2025 06:24:54 +0000 Subject: [PATCH] Add WebSocket methods for sending messages to specific tenants --- .../api/websocket/WebSocketSenderApi.java | 29 +++++++++++++++++++ .../api/websocket/WebSocketSenderApiImpl.java | 15 ++++++++++ 2 files changed, 44 insertions(+) diff --git a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/api/websocket/WebSocketSenderApi.java b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/api/websocket/WebSocketSenderApi.java index 38582c2f32..9466628a92 100644 --- a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/api/websocket/WebSocketSenderApi.java +++ b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/api/websocket/WebSocketSenderApi.java @@ -39,6 +39,27 @@ public interface WebSocketSenderApi { */ void send(String sessionId, String messageType, String messageContent); + /** + * 发送消息给指定租户的指定用户 + * + * @param tenantId 租户编号 + * @param userType 用户类型 + * @param userId 用户编号 + * @param messageType 消息类型 + * @param messageContent 消息内容,JSON 格式 + */ + void sendToTenant(Long tenantId, Integer userType, Long userId, String messageType, String messageContent); + + /** + * 发送消息给指定租户的指定用户类型 + * + * @param tenantId 租户编号 + * @param userType 用户类型 + * @param messageType 消息类型 + * @param messageContent 消息内容,JSON 格式 + */ + void sendToTenant(Long tenantId, Integer userType, String messageType, String messageContent); + default void sendObject(Integer userType, Long userId, String messageType, Object messageContent) { send(userType, userId, messageType, JsonUtils.toJsonString(messageContent)); } @@ -51,4 +72,12 @@ public interface WebSocketSenderApi { send(sessionId, messageType, JsonUtils.toJsonString(messageContent)); } + default void sendObjectToTenant(Long tenantId, Integer userType, Long userId, String messageType, Object messageContent) { + sendToTenant(tenantId, userType, userId, messageType, JsonUtils.toJsonString(messageContent)); + } + + default void sendObjectToTenant(Long tenantId, Integer userType, String messageType, Object messageContent) { + sendToTenant(tenantId, userType, messageType, JsonUtils.toJsonString(messageContent)); + } + } diff --git a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/api/websocket/WebSocketSenderApiImpl.java b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/api/websocket/WebSocketSenderApiImpl.java index 046cd2fc19..a13d79a6f9 100644 --- a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/api/websocket/WebSocketSenderApiImpl.java +++ b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/api/websocket/WebSocketSenderApiImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.infra.api.websocket; +import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils; import cn.iocoder.yudao.framework.websocket.core.sender.WebSocketMessageSender; import org.springframework.stereotype.Component; @@ -31,4 +32,18 @@ public class WebSocketSenderApiImpl implements WebSocketSenderApi { webSocketMessageSender.send(sessionId, messageType, messageContent); } + @Override + public void sendToTenant(Long tenantId, Integer userType, Long userId, String messageType, String messageContent) { + TenantUtils.execute(tenantId, () -> { + webSocketMessageSender.send(userType, userId, messageType, messageContent); + }); + } + + @Override + public void sendToTenant(Long tenantId, Integer userType, String messageType, String messageContent) { + TenantUtils.execute(tenantId, () -> { + webSocketMessageSender.send(userType, messageType, messageContent); + }); + } + }