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