diff --git a/Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj b/Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj
index 517fd894..ab71dab5 100644
--- a/Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj
+++ b/Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj
@@ -18,9 +18,9 @@
-
-
-
+
+
+
diff --git a/Admin.NET/Admin.NET.Core/Entity/SysOnlineUser.cs b/Admin.NET/Admin.NET.Core/Entity/SysOnlineUser.cs
index 28cc53c1..4f960f7d 100644
--- a/Admin.NET/Admin.NET.Core/Entity/SysOnlineUser.cs
+++ b/Admin.NET/Admin.NET.Core/Entity/SysOnlineUser.cs
@@ -4,8 +4,6 @@
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
-using Org.BouncyCastle.Crypto;
-
namespace Admin.NET.Core;
///
@@ -71,11 +69,13 @@ public partial class SysOnlineUser : EntityTenantId
///
/// 登录模式
///
- [SugarColumn(ColumnDescription = "登陆模式")]
+ [SugarColumn(ColumnDescription = "登录模式")]
public LoginModeEnum? LoginMode { get; set; }
- [SugarColumn(ColumnDescription = "设备")]
+ ///
+ /// 登录设备
+ ///
+ [SugarColumn(ColumnDescription = "登录设备", Length = 256)]
[MaxLength(256)]
public string? Device { get; set; }
-
}
\ No newline at end of file
diff --git a/Admin.NET/Admin.NET.Core/Hub/OnlineUserHub.cs b/Admin.NET/Admin.NET.Core/Hub/OnlineUserHub.cs
index c00ffdd1..8bef0735 100644
--- a/Admin.NET/Admin.NET.Core/Hub/OnlineUserHub.cs
+++ b/Admin.NET/Admin.NET.Core/Hub/OnlineUserHub.cs
@@ -65,18 +65,15 @@ public class OnlineUserHub : Hub
};
await _sysOnlineUerRep.InsertAsync(user);
- // _sysCacheService.HashAdd(CacheConst.KeyUserOnline, user.UserId.ToString(), user);
-
// 是否开启单用户登录
if (await _sysConfigService.GetConfigValue(ConfigConst.SysSingleLogin))
{
- _sysCacheService.HashAdd(CacheConst.KeyUserOnline,""+user.UserId + loginMode, user);
+ _sysCacheService.HashAdd(CacheConst.KeyUserOnline, "" + user.UserId + loginMode, user);
}
- else //非单用户登录则绑定用户设备信息
+ else // 非单用户登录则绑定用户设备信息
{
_sysCacheService.HashAdd(CacheConst.KeyUserOnline, user.UserId + device, user);
}
-
// 以租户Id进行分组
var groupName = $"{GROUP_ONLINE}{user.TenantId}";
@@ -112,13 +109,13 @@ public class OnlineUserHub : Hub
if (await _sysConfigService.GetConfigValue(ConfigConst.SysSingleLogin))
{
_sysCacheService.HashDel(CacheConst.KeyUserOnline, "" + user.UserId + user.LoginMode);
- // _sysCacheService.Remove(CacheConst.KeyUserOnline + user.UserId);
+ // _sysCacheService.Remove(CacheConst.KeyUserOnline + user.UserId);
}
else
{
var device = httpContext.GetClientDeviceInfo().Trim();
_sysCacheService.HashDel(CacheConst.KeyUserOnline, user.UserId + device);
- // _sysCacheService.Remove(CacheConst.KeyUserOnline + user.UserId + device);
+ // _sysCacheService.Remove(CacheConst.KeyUserOnline + user.UserId + device);
}
// 通知当前组用户变动
diff --git a/Admin.NET/Admin.NET.Core/Service/Cache/SysCacheService.cs b/Admin.NET/Admin.NET.Core/Service/Cache/SysCacheService.cs
index 6c699aca..7637d7cc 100644
--- a/Admin.NET/Admin.NET.Core/Service/Cache/SysCacheService.cs
+++ b/Admin.NET/Admin.NET.Core/Service/Cache/SysCacheService.cs
@@ -4,7 +4,6 @@
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
-using NewLife.Caching.Models;
using NewLife.Reflection;
using Newtonsoft.Json;
@@ -276,7 +275,6 @@ public class SysCacheService : IDynamicApiController, ISingleton
foreach (var v in dic)
{
hash.Add(v);
-
}
return true;
}
diff --git a/Admin.NET/Admin.NET.Core/Service/Message/SysMessageService.cs b/Admin.NET/Admin.NET.Core/Service/Message/SysMessageService.cs
index f46e4579..adae3c31 100644
--- a/Admin.NET/Admin.NET.Core/Service/Message/SysMessageService.cs
+++ b/Admin.NET/Admin.NET.Core/Service/Message/SysMessageService.cs
@@ -5,7 +5,6 @@
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
using Microsoft.AspNetCore.SignalR;
-using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
namespace Admin.NET.Core.Service;
@@ -48,8 +47,8 @@ public class SysMessageService : IDynamicApiController, ITransient
public async Task SendOtherUser(MessageInput input)
{
var hashKey = _sysCacheService.HashGetAll(CacheConst.KeyUserOnline);
- var exceptRecevieUsers = hashKey.Where(t => t.Value.UserId == input.ReceiveUserId).Select(t => t.Value).ToList();
- await _chatHubContext.Clients.AllExcept(exceptRecevieUsers.Select(t=>t.ConnectionId)).ReceiveMessage(input);
+ var exceptRecevieUsers = hashKey.Where(u => u.Value.UserId == input.ReceiveUserId).Select(u => u.Value).ToList();
+ await _chatHubContext.Clients.AllExcept(exceptRecevieUsers.Select(t => t.ConnectionId)).ReceiveMessage(input);
}
///
@@ -61,8 +60,8 @@ public class SysMessageService : IDynamicApiController, ITransient
public async Task SendUser(MessageInput input)
{
var hashKey = _sysCacheService.HashGetAll(CacheConst.KeyUserOnline);
- var recevieUsers = hashKey.Where(t => t.Value.UserId == input.ReceiveUserId).Select(t => t.Value).ToList();
- await recevieUsers.ForEachAsync(t => _chatHubContext.Clients.Client(t.ConnectionId).ReceiveMessage(input));
+ var recevieUsers = hashKey.Where(u => u.Value.UserId == input.ReceiveUserId).Select(u => u.Value).ToList();
+ await recevieUsers.ForEachAsync(u => _chatHubContext.Clients.Client(u.ConnectionId).ReceiveMessage(input));
}
///
@@ -74,7 +73,7 @@ public class SysMessageService : IDynamicApiController, ITransient
public async Task SendUsers(MessageInput input)
{
var hashKey = _sysCacheService.HashGetAll(CacheConst.KeyUserOnline);
- var recevieUsers = hashKey.Where(t => input.UserIds.Any(c => c == t.Value.UserId)).Select(t => t.Value).ToList();
- await recevieUsers.ForEachAsync(t => _chatHubContext.Clients.Client(t.ConnectionId).ReceiveMessage(input));
+ var recevieUsers = hashKey.Where(u => input.UserIds.Any(a => a == u.Value.UserId)).Select(u => u.Value).ToList();
+ await recevieUsers.ForEachAsync(u => _chatHubContext.Clients.Client(u.ConnectionId).ReceiveMessage(input));
}
}
\ No newline at end of file
diff --git a/Admin.NET/Admin.NET.Core/Service/Org/SysOrgService.cs b/Admin.NET/Admin.NET.Core/Service/Org/SysOrgService.cs
index 06e9e9b7..e92a1489 100644
--- a/Admin.NET/Admin.NET.Core/Service/Org/SysOrgService.cs
+++ b/Admin.NET/Admin.NET.Core/Service/Org/SysOrgService.cs
@@ -302,7 +302,7 @@ public class SysOrgService : IDynamicApiController, ITransient
[NonAction]
public async Task> GetUserOrgIdList(long userId, long userOrgId)
{
- return await _sysCacheService.AdGetAsync(CacheConst.KeyUserOrg, async (i1, i2) =>
+ return await _sysCacheService.AdGetAsync(CacheConst.KeyUserOrg, async (_, _) =>
{
// 本人创建机构集合
var orgList0 = await _sysOrgRep.AsQueryable().Where(u => u.CreateUserId == userId).Select(u => u.Id).ToListAsync();
@@ -311,7 +311,11 @@ public class SysOrgService : IDynamicApiController, ITransient
// 角色机构集合
var orgList2 = await GetUserRoleOrgIdList(userId, userOrgId);
// 机构并集
- return orgList1.Select(u => u.OrgId).Union(orgList2).Union(orgList0).ToList();
+ var orgIdList = orgList1.Select(u => u.OrgId).Union(orgList2).Union(orgList0).ToList();
+ // 当前所属机构
+ if (!orgIdList.Contains(userOrgId))
+ orgIdList.Add(userOrgId);
+ return orgIdList;
}, userId, userOrgId);
}