😎优化清理在线用户逻辑

This commit is contained in:
zuohuaijun 2025-02-20 02:35:44 +08:00
parent 08ae183e56
commit 8adfd623d4

View File

@ -119,14 +119,15 @@ public class SysOnlineUserService : IDynamicApiController, ITransient
if (await _sysConfigService.GetConfigValueByCode<bool>(ConfigConst.SysSingleLogin)) return; if (await _sysConfigService.GetConfigValueByCode<bool>(ConfigConst.SysSingleLogin)) return;
// 相同账号最后登录的用户Id集合 // 相同账号最后登录的用户Id集合
var onlineUserIds = await _sysOnlineUerRep.AsQueryable().GroupBy(u => u.UserId) var onlineUsers = await _sysOnlineUerRep.AsQueryable().GroupBy(u => u.UserId)
.Select(u => new .Select(u => new
{ {
UserId = u.UserId, UserId = u.UserId,
Count = SqlFunc.AggregateCount(u.UserId), Count = SqlFunc.AggregateCount(u.UserId),
Id = SqlFunc.AggregateMax(u.Id) Id = SqlFunc.AggregateMax(u.Id)
}) })
.ToListAsync(u => u.Id); .ToListAsync();
var onlineUserIds = onlineUsers.Select(u => u.Id).ToList();
// 无效登录用户集合 // 无效登录用户集合
var offlineUsers = await _sysOnlineUerRep.AsQueryable().Where(u => !onlineUserIds.Contains(u.Id)).ToListAsync(); var offlineUsers = await _sysOnlineUerRep.AsQueryable().Where(u => !onlineUserIds.Contains(u.Id)).ToListAsync();