😎优化在线用户处理

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("获取在线用户列表")]
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);
}
@ -58,7 +58,7 @@ public class SysOnlineUserService : IDynamicApiController, ITransient
[NonAction]
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)
{
await ForceOffline(user);
@ -74,9 +74,7 @@ public class SysOnlineUserService : IDynamicApiController, ITransient
[NonAction]
public async Task PublicNotice(SysNotice notice, List<long> userIds)
{
var userList = SysCacheService.HashGetAll<OnlineUser>(CacheConst.KeyUserOnline)
.Where(u => userIds.Contains(u.Value.UserId))
.Select(u => u.Value).ToList();
var userList = SysCacheService.HashGetAll<OnlineUser>(CacheConst.KeyUserOnline).Values.Where(u => userIds.Contains(u.UserId)).ToList();
if (userList.Count == 0) return;
foreach (var item in userList)
@ -96,7 +94,7 @@ public class SysOnlineUserService : IDynamicApiController, ITransient
{
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)
{
if (user.LoginMode == loginMode)