Add WebSocket methods for sending messages to specific tenants

This commit is contained in:
Cursor Agent
2025-06-16 06:24:54 +00:00
parent d5bda87435
commit e454bfd959
2 changed files with 44 additions and 0 deletions

View File

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

View File

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