😎代码优化

This commit is contained in:
zuohuaijun 2024-08-12 02:49:51 +08:00
parent eb249a2ed1
commit 1d35abaacb
6 changed files with 24 additions and 26 deletions

View File

@ -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" />

View File

@ -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; }
}

View File

@ -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);
}
// 通知当前组用户变动

View File

@ -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;
}

View File

@ -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));
}
}

View File

@ -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);
}