😎代码优化
This commit is contained in:
parent
eb249a2ed1
commit
1d35abaacb
@ -18,9 +18,9 @@
|
||||
<PackageReference Include="AspectCore.Extensions.Reflection" Version="2.4.0" />
|
||||
<PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" />
|
||||
<PackageReference Include="Elastic.Clients.Elasticsearch" Version="8.15.0" />
|
||||
<PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.5.1" />
|
||||
<PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.5.1" />
|
||||
<PackageReference Include="Furion.Pure" Version="4.9.5.1" />
|
||||
<PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.5.2" />
|
||||
<PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.5.2" />
|
||||
<PackageReference Include="Furion.Pure" Version="4.9.5.2" />
|
||||
<PackageReference Include="Hardware.Info" Version="100.1.0.1" />
|
||||
<PackageReference Include="IPTools.China" Version="1.6.0" />
|
||||
<PackageReference Include="IPTools.International" Version="1.6.0" />
|
||||
|
||||
@ -4,8 +4,6 @@
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
using Org.BouncyCastle.Crypto;
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
@ -71,11 +69,13 @@ public partial class SysOnlineUser : EntityTenantId
|
||||
/// <summary>
|
||||
/// 登录模式
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "登陆模式")]
|
||||
[SugarColumn(ColumnDescription = "登录模式")]
|
||||
public LoginModeEnum? LoginMode { get; set; }
|
||||
|
||||
[SugarColumn(ColumnDescription = "设备")]
|
||||
/// <summary>
|
||||
/// 登录设备
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "登录设备", Length = 256)]
|
||||
[MaxLength(256)]
|
||||
public string? Device { get; set; }
|
||||
|
||||
}
|
||||
@ -65,18 +65,15 @@ public class OnlineUserHub : Hub<IOnlineUserHub>
|
||||
};
|
||||
await _sysOnlineUerRep.InsertAsync(user);
|
||||
|
||||
// _sysCacheService.HashAdd(CacheConst.KeyUserOnline, user.UserId.ToString(), user);
|
||||
|
||||
// 是否开启单用户登录
|
||||
if (await _sysConfigService.GetConfigValue<bool>(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<IOnlineUserHub>
|
||||
if (await _sysConfigService.GetConfigValue<bool>(ConfigConst.SysSingleLogin))
|
||||
{
|
||||
_sysCacheService.HashDel<SysOnlineUser>(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<SysOnlineUser>(CacheConst.KeyUserOnline, user.UserId + device);
|
||||
// _sysCacheService.Remove(CacheConst.KeyUserOnline + user.UserId + device);
|
||||
// _sysCacheService.Remove(CacheConst.KeyUserOnline + user.UserId + device);
|
||||
}
|
||||
|
||||
// 通知当前组用户变动
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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<SysOnlineUser>(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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -61,8 +60,8 @@ public class SysMessageService : IDynamicApiController, ITransient
|
||||
public async Task SendUser(MessageInput input)
|
||||
{
|
||||
var hashKey = _sysCacheService.HashGetAll<SysOnlineUser>(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));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -74,7 +73,7 @@ public class SysMessageService : IDynamicApiController, ITransient
|
||||
public async Task SendUsers(MessageInput input)
|
||||
{
|
||||
var hashKey = _sysCacheService.HashGetAll<SysOnlineUser>(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));
|
||||
}
|
||||
}
|
||||
@ -302,7 +302,7 @@ public class SysOrgService : IDynamicApiController, ITransient
|
||||
[NonAction]
|
||||
public async Task<List<long>> 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);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user