😎优化在线用户处理

This commit is contained in:
zuohuaijun 2025-09-02 15:40:00 +08:00
parent 7879c315cb
commit 55f887752f

View File

@ -34,7 +34,7 @@ public class SysOnlineUserService : IDynamicApiController, ITransient
[DisplayName("获取在线用户列表")] [DisplayName("获取在线用户列表")]
public async Task<List<OnlineUser>> GetOnlineUserList() public async Task<List<OnlineUser>> GetOnlineUserList()
{ {
var userList = SysCacheService.HashGetAll<OnlineUser>(CacheConst.KeyUserOnline).Where(u => u.Value.TenantId == _userManager.TenantId).Select(u => u.Value).ToList(); var userList = SysCacheService.HashGetAll<OnlineUser>(CacheConst.KeyUserOnline).Values.Where(u => u.TenantId == _userManager.TenantId).ToList();
return await Task.FromResult(userList); return await Task.FromResult(userList);
} }
@ -58,7 +58,7 @@ public class SysOnlineUserService : IDynamicApiController, ITransient
[NonAction] [NonAction]
public async Task ForceOfflineByUserId(long userId) public async Task ForceOfflineByUserId(long userId)
{ {
var users = SysCacheService.HashGetAll<OnlineUser>(CacheConst.KeyUserOnline).Where(u => u.Value.UserId == userId).Select(u => u.Value).ToList(); var users = SysCacheService.HashGetAll<OnlineUser>(CacheConst.KeyUserOnline).Values.Where(u => u.UserId == userId).ToList();
foreach (var user in users) foreach (var user in users)
{ {
await ForceOffline(user); await ForceOffline(user);
@ -74,9 +74,7 @@ public class SysOnlineUserService : IDynamicApiController, ITransient
[NonAction] [NonAction]
public async Task PublicNotice(SysNotice notice, List<long> userIds) public async Task PublicNotice(SysNotice notice, List<long> userIds)
{ {
var userList = SysCacheService.HashGetAll<OnlineUser>(CacheConst.KeyUserOnline) var userList = SysCacheService.HashGetAll<OnlineUser>(CacheConst.KeyUserOnline).Values.Where(u => userIds.Contains(u.UserId)).ToList();
.Where(u => userIds.Contains(u.Value.UserId))
.Select(u => u.Value).ToList();
if (userList.Count == 0) return; if (userList.Count == 0) return;
foreach (var item in userList) foreach (var item in userList)
@ -96,7 +94,7 @@ public class SysOnlineUserService : IDynamicApiController, ITransient
{ {
if (!await _sysConfigService.GetConfigValueByCode<bool>(ConfigConst.SysSingleLogin)) return; if (!await _sysConfigService.GetConfigValueByCode<bool>(ConfigConst.SysSingleLogin)) return;
var users = SysCacheService.HashGetAll<OnlineUser>(CacheConst.KeyUserOnline).Where(u => u.Value.UserId == userId).Select(u => u.Value).ToList(); var users = SysCacheService.HashGetAll<OnlineUser>(CacheConst.KeyUserOnline).Values.Where(u => u.UserId == userId).ToList();
foreach (var user in users) foreach (var user in users)
{ {
if (user.LoginMode == loginMode) if (user.LoginMode == loginMode)