61 lines
2.1 KiB
Java
61 lines
2.1 KiB
Java
|
|
package com.czlis.interfaceCommon.websocket;
|
|||
|
|
|
|||
|
|
import org.springframework.stereotype.Service;
|
|||
|
|
|
|||
|
|
import java.util.List;
|
|||
|
|
|
|||
|
|
@Service
|
|||
|
|
public class UserService {
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 示例1:获取所有在线管理员并推送通知
|
|||
|
|
*/
|
|||
|
|
public void pushNoticeToAdmin(String notice) {
|
|||
|
|
// 根据角色筛选在线管理员
|
|||
|
|
List<WebSocketUser> adminUsers = ChatWebSocketServer.getOnlineUsersByRole("ADMIN");
|
|||
|
|
if (adminUsers.isEmpty()) {
|
|||
|
|
System.out.println("当前无在线管理员");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
String message = "【管理员通知】" + notice;
|
|||
|
|
for (WebSocketUser admin : adminUsers) {
|
|||
|
|
ChatWebSocketServer.sendToUser(admin.getUserId(), message);
|
|||
|
|
System.out.println("已给管理员[" + admin.getUsername() + "]推送通知,IP:" + admin.getLoginIp());
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 示例2:获取指定用户的详细连接信息
|
|||
|
|
*/
|
|||
|
|
public void getUserConnectInfo(String userId) {
|
|||
|
|
WebSocketUser user = ChatWebSocketServer.getOnlineUser(userId);
|
|||
|
|
if (user == null) {
|
|||
|
|
System.out.println("用户[" + userId + "]不在线");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 获取身份属性
|
|||
|
|
System.out.println("用户名:" + user.getUsername());
|
|||
|
|
System.out.println("角色:" + user.getRole());
|
|||
|
|
System.out.println("登录IP:" + user.getLoginIp());
|
|||
|
|
System.out.println("连接时间:" + user.getConnectTime());
|
|||
|
|
System.out.println("是否在线:" + user.isConnected());
|
|||
|
|
|
|||
|
|
// 获取动态属性(如设备类型)
|
|||
|
|
String deviceType = (String) user.getDynamicAttr("deviceType");
|
|||
|
|
System.out.println("登录设备:" + (deviceType == null ? "未知" : deviceType));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 示例3:给在线用户设置动态属性(如设备类型)
|
|||
|
|
*/
|
|||
|
|
public void setUserDeviceAttr(String userId, String deviceType) {
|
|||
|
|
WebSocketUser user = ChatWebSocketServer.getOnlineUser(userId);
|
|||
|
|
if (user != null) {
|
|||
|
|
user.setDynamicAttr("deviceType", deviceType);
|
|||
|
|
System.out.println("已给用户[" + userId + "]设置设备类型:" + deviceType);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|