From 54943e134fef25ee3d18a68f98a645fd0b5eef77 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 18 Dec 2025 10:31:47 +0800 Subject: [PATCH] =?UTF-8?q?fix=20userIds=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sys/Entities/DataPermissionEntity.cs | 2 +- .../Implements/DataPermissionService.cs | 49 ++++++++++++++----- 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/Src/Dlhis.Entity/Sys/Entities/DataPermissionEntity.cs b/Src/Dlhis.Entity/Sys/Entities/DataPermissionEntity.cs index 53618501..5c861f58 100644 --- a/Src/Dlhis.Entity/Sys/Entities/DataPermissionEntity.cs +++ b/Src/Dlhis.Entity/Sys/Entities/DataPermissionEntity.cs @@ -14,7 +14,7 @@ namespace Dlhis.Entity.Sys.Entities; public class DataPermissionEntity : SugarBaseEntity, ITenantId { /// - /// Óû§UserNo + /// identity userId /// [SugarColumn(IsNullable = false)] public string AssignValue { get; set; } diff --git a/Src/Dlhis.Sys/DataPermission/Services/Implements/DataPermissionService.cs b/Src/Dlhis.Sys/DataPermission/Services/Implements/DataPermissionService.cs index 4353be15..d33beda3 100644 --- a/Src/Dlhis.Sys/DataPermission/Services/Implements/DataPermissionService.cs +++ b/Src/Dlhis.Sys/DataPermission/Services/Implements/DataPermissionService.cs @@ -1,22 +1,25 @@ -using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Device.Entities; using Dlhis.Entity.Device.Enums; using Dlhis.Entity.Sys.Entities; using Dlhis.Entity.Sys.Enums; using Dlhis.Sys.DataPermission.Request; using Dlhis.Sys.DataPermission.Response; +using Dlhis.Sys.Identity.Services; using Kurisu.AspNetCore.DataAccess.SqlSugar.Services; using Kurisu.AspNetCore.Utils.Extensions; +using Mapster; namespace Dlhis.Sys.DataPermission.Services.Implements; public class DataPermissionService : IDataPermissionService { private readonly IDbContext _dbContext; + private readonly IUserService _userService; - public DataPermissionService(IDbContext dbContext) + public DataPermissionService(IDbContext dbContext, IUserService userService) { _dbContext = dbContext; + _userService = userService; } /// @@ -60,21 +63,45 @@ public class DataPermissionService : IDataPermissionService .Distinct() .ToListAsync(); - var userNos = await _dbContext.Queryable() + var deviceGroups = await _dbContext.Queryable().ToListAsync(); + var nextItems = new List(); + foreach (var code in deviceGroupCodes) + { + nextItems.AddRange(HandlerDeviceGroupNextCodes(code, deviceGroups)); + } + + var values = await _dbContext.Queryable() .Where(x => (x.UniqueValue == deviceCode && x.UniqueType == DataPermissionAssignmentEnumType.Device) - || (deviceGroupCodes.Contains(x.UniqueValue) && x.UniqueType == DataPermissionAssignmentEnumType.Group) + || (nextItems.Contains(x.UniqueValue) && x.UniqueType == DataPermissionAssignmentEnumType.Group) ) .Select(x => x.AssignValue) .ToListAsync(); + var userIds = values.Adapt>(); + var users = await _userService.GetUserByIdsAsync(userIds); + return users.Select(x => new GainfoResponse + { + UserCode = x.UserName, + UserName = x.OperatorName + }).ToList(); + } - return await _dbContext.Queryable() - .Where(x => userNos.Contains(x.No)) - .Select(x => new GainfoResponse + private static List HandlerDeviceGroupNextCodes(Guid current, List data) + { + var result = new List { current }; + + InternalHandlerCodes(current, data, result); + + return result; + + static void InternalHandlerCodes(Guid internalCurrent, List internalData, List internalResult) + { + var next = internalData.Where(x => x.PCode == internalCurrent); + foreach (var item in next) { - UserCode = x.Code, - UserName = x.Name - }) - .ToListAsync(); + internalResult.Add(item.Code); + InternalHandlerCodes(item.Code, internalData, internalResult); + } + } } } \ No newline at end of file