From a39f792edd9b32995d88713a11edbe12cdc740f6 Mon Sep 17 00:00:00 2001 From: Kurris <791444095@qq.com> Date: Sat, 25 May 2024 01:53:59 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E6=95=B0=E6=8D=AE=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Dlhis.ScheduledTask/Jobs/HeartbeatJob.cs | 8 ++--- .../Services/Implements/UserService.cs | 35 ++++++++++--------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/Src/Dlhis.ScheduledTask/Jobs/HeartbeatJob.cs b/Src/Dlhis.ScheduledTask/Jobs/HeartbeatJob.cs index 6bd12e2c..1061aba7 100644 --- a/Src/Dlhis.ScheduledTask/Jobs/HeartbeatJob.cs +++ b/Src/Dlhis.ScheduledTask/Jobs/HeartbeatJob.cs @@ -25,7 +25,7 @@ public class HeartbeatJob : BaseJob public override async Task RunAsync(IServiceProvider serviceProvider) { - var key = "heardbeat-devices"; + const string key = "heartbeat-devices"; await _redisCache.KeyDeleteAsync(key); var devices = await DbContext.Queryable().Where(x => x.Enable).Where(x => x.HeartbeatInterval > 0).ToListAsync(); @@ -36,11 +36,11 @@ public class HeartbeatJob : BaseJob var ipInfo = JsonConvert.DeserializeObject(device.ConnectionInfo); //超时时间 - var CancellationTokenSource = new CancellationTokenSource(300); - await new TcpClient().ConnectAsync(IPAddress.Parse(ipInfo.IP), ipInfo.Port, CancellationTokenSource.Token); + var cancellationTokenSource = new CancellationTokenSource(300); + await new TcpClient().ConnectAsync(IPAddress.Parse(ipInfo.IP), ipInfo.Port, cancellationTokenSource.Token); await DbContext.Updateable().SetColumns(x => x.LastHeartbeatTime == DateTime.Now) - .Where(x => x.DeviceUniqueNo == device.UniqueNo).ExecuteCommandAsync(); + .Where(x => x.DeviceUniqueNo == device.UniqueNo).ExecuteCommandAsync(cancellationTokenSource.Token); await _redisCache.ListLeftPushAsync(key, device.UniqueNo); } diff --git a/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs b/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs index c1bb80ce..86f5eb85 100644 --- a/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs +++ b/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs @@ -1,4 +1,5 @@ -using Dlhis.Entity.Sys.Entities; +using Dlhis.Entity.Basic.Entity; +using Dlhis.Entity.Sys.Entities; using Dlhis.Sys.Identity.Request; using Dlhis.Sys.Identity.Response; using Kurisu.AspNetCore.Utils.Extensions; @@ -13,26 +14,27 @@ namespace Dlhis.Sys.Identity.Services.Implements; public class UserService : IUserService { - private readonly ICurrentUser _currentUser; private readonly IDbContext _dbContext; + private readonly ICurrentUser _currentUser; + private readonly IDbContext _identityDbContext; public UserService(IDbContext dbContext, ICurrentUser currentUser) { + _dbContext = dbContext; _currentUser = currentUser; - _dbContext = dbContext.ChangeDb("identity"); + _identityDbContext = dbContext.ChangeDb("identity"); } public async Task> GetPageAsync(UserPageRequest request) { var tenant = _currentUser.GetStringTenantId(); + var userCodes = await _dbContext.Queryable().Where(x => x.Factory == tenant).Select(x => x.Code).ToListAsync(); - var page = await _dbContext.Queryable() + var page = await _identityDbContext.Queryable() .LeftJoin((x, ur) => x.Id == ur.UserId) .LeftJoin((x, ur, r) => ur.RoleId == r.Id) .LeftJoin((x, ur, r, c) => x.Id == c.UserId && c.ClaimType == "preferred_username") - .LeftJoin((x, ur, r, c, cc) => x.Id == cc.UserId && cc.ClaimType == "tenant") .Where(x => x.UserName != "admin") - .Where((x, ur, r, c, cc) => cc.ClaimValue == tenant) .WhereIF(request.IsOperator, (x, ur, r, c) => !SqlFunc.IsNullOrEmpty(r.Name)) .WhereIF(!request.IsOperator, (x, ur, r, c) => SqlFunc.IsNullOrEmpty(r.Name)) .WhereIF(request.Search.IsPresent(), (x, ur, r, c) => x.UserName == request.Search @@ -40,7 +42,8 @@ public class UserService : IUserService || x.PhoneNumber == request.Search || c.ClaimValue == request.Search ) - .Select((x, ur, r, c, cc) => new UserResponse + .Where(x => userCodes.Contains(x.UserName)) + .Select((x, ur, r, c) => new UserResponse { Id = x.Id, RoleId = ur.RoleId, @@ -54,16 +57,16 @@ public class UserService : IUserService public async Task ResetAccessFailedCountAsync(int id) { - var user = await _dbContext.Queryable().Where(x => x.Id == id).FirstAsync(); + var user = await _identityDbContext.Queryable().Where(x => x.Id == id).FirstAsync(); user.ThrowIfNull("用户不存在,无法重置"); user.AccessFailedCount = 0; - await _dbContext.UpdateAsync(user); + await _identityDbContext.UpdateAsync(user); } public async Task> GetUsersAsync() { - var users = await _dbContext.Queryable() + var users = await _identityDbContext.Queryable() .Where(x => x.UserName != "admin") .Select() .ToListAsync(); @@ -72,7 +75,7 @@ public class UserService : IUserService public async Task GetUserByIdAsync(int id) { - var user = await _dbContext.Queryable() + var user = await _identityDbContext.Queryable() .LeftJoin((x, ur) => x.Id == ur.UserId) .LeftJoin((x, ur, r) => ur.RoleId == r.Id) .LeftJoin((x, ur, r, c) => x.Id == c.UserId && c.ClaimType == "preferred_username") @@ -91,12 +94,12 @@ public class UserService : IUserService public async Task UploadUserAvatarAsync(UserAvatarUploadRequest request) { - var user = await _dbContext.Queryable().Where(x => x.Id == request.UserNo).Select().FirstAsync(); + var user = await _identityDbContext.Queryable().Where(x => x.Id == request.UserNo).Select().FirstAsync(); } public async Task> GetUserByIdsAsync(List ids) { - var users = await _dbContext.Queryable().Where(x => ids.Contains(x.Id)).Select().ToListAsync(); + var users = await _identityDbContext.Queryable().Where(x => ids.Contains(x.Id)).Select().ToListAsync(); return users; } @@ -114,9 +117,9 @@ public class UserService : IUserService request.Password = hasher.HashPassword(user, request.Password); user.PasswordHash = request.Password; - var id = (int)await _dbContext.InsertReturnIdentityAsync(user); + var id = (int)await _identityDbContext.InsertReturnIdentityAsync(user); - await _dbContext.InsertAsync(request.Tenants.Select(x => new UserTenantEntity + await _identityDbContext.InsertAsync(request.Tenants.Select(x => new UserTenantEntity { TenantCode = x, UserId = id @@ -124,7 +127,7 @@ public class UserService : IUserService if (request.Name.IsPresent()) { - await _dbContext.InsertAsync(new UserClaimEntity + await _identityDbContext.InsertAsync(new UserClaimEntity { ClaimType = "preferred_username", ClaimValue = request.Name,