diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index 1ed14e4e..36f67d0f 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -8,6 +8,7 @@ using Dlhis.Entity.Device.Entities; using Dlhis.Entity.Device.Enums; using Dlhis.Entity.Sys.Entities; using Dlhis.Entity.Sys.Enums; +using Dlhis.Entity.Visitor.Entity; using Dlhis.Sys.Api; using Kurisu.AspNetCore.Authentication.Abstractions; using Kurisu.AspNetCore.DataAccess.Dto; @@ -98,9 +99,16 @@ public class DevicePermissionService : IDevicePermissionService //保存配置的权限 if (request.Values.IsPresent()) { - var gainfoNos = await _dbContext.Queryable() - .Where(x => request.Values.Contains(x.Code) || request.Values.Contains(x.No) || request.Values.Contains(x.IdNo)) - .Select(x => x.No) + var today = DateTime.Today; + var factories = _currentUser.GetUserClaim("tenants").Split(",").ToList(); + + var gainfoNos = await _dbContext.Client.Queryable() + .Where(gainfo => factories.Contains(gainfo.Factory) || SqlFunc.Subqueryable() + .Where(x => factories.Contains(x.Destination) && SqlFunc.DateIsSame(x.BeginDate, today)) + .Any() + ) + .Where(gainfo => request.Values.Contains(gainfo.Code) || request.Values.Contains(gainfo.No) || request.Values.Contains(gainfo.IdNo)) + .Select(gainfo => gainfo.No) .ToListAsync(); (gainfoNos.Count != request.Values.Count).ThrowIfTrue("存在非当前权限访问的人员,操作禁止!");