😎代码优化
This commit is contained in:
parent
eb249a2ed1
commit
1d35abaacb
@ -18,9 +18,9 @@
|
|||||||
<PackageReference Include="AspectCore.Extensions.Reflection" Version="2.4.0" />
|
<PackageReference Include="AspectCore.Extensions.Reflection" Version="2.4.0" />
|
||||||
<PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" />
|
<PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" />
|
||||||
<PackageReference Include="Elastic.Clients.Elasticsearch" Version="8.15.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.Authentication.JwtBearer" Version="4.9.5.2" />
|
||||||
<PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.5.1" />
|
<PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.5.2" />
|
||||||
<PackageReference Include="Furion.Pure" Version="4.9.5.1" />
|
<PackageReference Include="Furion.Pure" Version="4.9.5.2" />
|
||||||
<PackageReference Include="Hardware.Info" Version="100.1.0.1" />
|
<PackageReference Include="Hardware.Info" Version="100.1.0.1" />
|
||||||
<PackageReference Include="IPTools.China" Version="1.6.0" />
|
<PackageReference Include="IPTools.China" Version="1.6.0" />
|
||||||
<PackageReference Include="IPTools.International" Version="1.6.0" />
|
<PackageReference Include="IPTools.International" Version="1.6.0" />
|
||||||
|
|||||||
@ -4,8 +4,6 @@
|
|||||||
//
|
//
|
||||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||||
|
|
||||||
using Org.BouncyCastle.Crypto;
|
|
||||||
|
|
||||||
namespace Admin.NET.Core;
|
namespace Admin.NET.Core;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -71,11 +69,13 @@ public partial class SysOnlineUser : EntityTenantId
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 登录模式
|
/// 登录模式
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarColumn(ColumnDescription = "登陆模式")]
|
[SugarColumn(ColumnDescription = "登录模式")]
|
||||||
public LoginModeEnum? LoginMode { get; set; }
|
public LoginModeEnum? LoginMode { get; set; }
|
||||||
|
|
||||||
[SugarColumn(ColumnDescription = "设备")]
|
/// <summary>
|
||||||
|
/// 登录设备
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnDescription = "登录设备", Length = 256)]
|
||||||
[MaxLength(256)]
|
[MaxLength(256)]
|
||||||
public string? Device { get; set; }
|
public string? Device { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -65,18 +65,15 @@ public class OnlineUserHub : Hub<IOnlineUserHub>
|
|||||||
};
|
};
|
||||||
await _sysOnlineUerRep.InsertAsync(user);
|
await _sysOnlineUerRep.InsertAsync(user);
|
||||||
|
|
||||||
// _sysCacheService.HashAdd(CacheConst.KeyUserOnline, user.UserId.ToString(), user);
|
|
||||||
|
|
||||||
// 是否开启单用户登录
|
// 是否开启单用户登录
|
||||||
if (await _sysConfigService.GetConfigValue<bool>(ConfigConst.SysSingleLogin))
|
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);
|
_sysCacheService.HashAdd(CacheConst.KeyUserOnline, user.UserId + device, user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 以租户Id进行分组
|
// 以租户Id进行分组
|
||||||
var groupName = $"{GROUP_ONLINE}{user.TenantId}";
|
var groupName = $"{GROUP_ONLINE}{user.TenantId}";
|
||||||
@ -112,13 +109,13 @@ public class OnlineUserHub : Hub<IOnlineUserHub>
|
|||||||
if (await _sysConfigService.GetConfigValue<bool>(ConfigConst.SysSingleLogin))
|
if (await _sysConfigService.GetConfigValue<bool>(ConfigConst.SysSingleLogin))
|
||||||
{
|
{
|
||||||
_sysCacheService.HashDel<SysOnlineUser>(CacheConst.KeyUserOnline, "" + user.UserId + user.LoginMode);
|
_sysCacheService.HashDel<SysOnlineUser>(CacheConst.KeyUserOnline, "" + user.UserId + user.LoginMode);
|
||||||
// _sysCacheService.Remove(CacheConst.KeyUserOnline + user.UserId);
|
// _sysCacheService.Remove(CacheConst.KeyUserOnline + user.UserId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var device = httpContext.GetClientDeviceInfo().Trim();
|
var device = httpContext.GetClientDeviceInfo().Trim();
|
||||||
_sysCacheService.HashDel<SysOnlineUser>(CacheConst.KeyUserOnline, user.UserId + device);
|
_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 NewLife.Reflection;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
@ -276,7 +275,6 @@ public class SysCacheService : IDynamicApiController, ISingleton
|
|||||||
foreach (var v in dic)
|
foreach (var v in dic)
|
||||||
{
|
{
|
||||||
hash.Add(v);
|
hash.Add(v);
|
||||||
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,6 @@
|
|||||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||||
|
|
||||||
using Microsoft.AspNetCore.SignalR;
|
using Microsoft.AspNetCore.SignalR;
|
||||||
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
|
|
||||||
|
|
||||||
namespace Admin.NET.Core.Service;
|
namespace Admin.NET.Core.Service;
|
||||||
|
|
||||||
@ -48,8 +47,8 @@ public class SysMessageService : IDynamicApiController, ITransient
|
|||||||
public async Task SendOtherUser(MessageInput input)
|
public async Task SendOtherUser(MessageInput input)
|
||||||
{
|
{
|
||||||
var hashKey = _sysCacheService.HashGetAll<SysOnlineUser>(CacheConst.KeyUserOnline);
|
var hashKey = _sysCacheService.HashGetAll<SysOnlineUser>(CacheConst.KeyUserOnline);
|
||||||
var exceptRecevieUsers = hashKey.Where(t => t.Value.UserId == input.ReceiveUserId).Select(t => t.Value).ToList();
|
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);
|
await _chatHubContext.Clients.AllExcept(exceptRecevieUsers.Select(t => t.ConnectionId)).ReceiveMessage(input);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -61,8 +60,8 @@ public class SysMessageService : IDynamicApiController, ITransient
|
|||||||
public async Task SendUser(MessageInput input)
|
public async Task SendUser(MessageInput input)
|
||||||
{
|
{
|
||||||
var hashKey = _sysCacheService.HashGetAll<SysOnlineUser>(CacheConst.KeyUserOnline);
|
var hashKey = _sysCacheService.HashGetAll<SysOnlineUser>(CacheConst.KeyUserOnline);
|
||||||
var recevieUsers = hashKey.Where(t => t.Value.UserId == input.ReceiveUserId).Select(t => t.Value).ToList();
|
var recevieUsers = hashKey.Where(u => u.Value.UserId == input.ReceiveUserId).Select(u => u.Value).ToList();
|
||||||
await recevieUsers.ForEachAsync(t => _chatHubContext.Clients.Client(t.ConnectionId).ReceiveMessage(input));
|
await recevieUsers.ForEachAsync(u => _chatHubContext.Clients.Client(u.ConnectionId).ReceiveMessage(input));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -74,7 +73,7 @@ public class SysMessageService : IDynamicApiController, ITransient
|
|||||||
public async Task SendUsers(MessageInput input)
|
public async Task SendUsers(MessageInput input)
|
||||||
{
|
{
|
||||||
var hashKey = _sysCacheService.HashGetAll<SysOnlineUser>(CacheConst.KeyUserOnline);
|
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();
|
var recevieUsers = hashKey.Where(u => input.UserIds.Any(a => a == u.Value.UserId)).Select(u => u.Value).ToList();
|
||||||
await recevieUsers.ForEachAsync(t => _chatHubContext.Clients.Client(t.ConnectionId).ReceiveMessage(input));
|
await recevieUsers.ForEachAsync(u => _chatHubContext.Clients.Client(u.ConnectionId).ReceiveMessage(input));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -302,7 +302,7 @@ public class SysOrgService : IDynamicApiController, ITransient
|
|||||||
[NonAction]
|
[NonAction]
|
||||||
public async Task<List<long>> GetUserOrgIdList(long userId, long userOrgId)
|
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();
|
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);
|
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);
|
}, userId, userOrgId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user