diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IDeptService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IDeptService.cs index c183a53f..8f864337 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IDeptService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IDeptService.cs @@ -8,6 +8,6 @@ namespace Yi.Furion.Application.Rbac.Services /// public interface IDeptService : ICrudAppService { - + Task> GetChiIds(long deptId); } } diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/DeptService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/DeptService.cs index e772218c..ece5b0c2 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/DeptService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/DeptService.cs @@ -12,6 +12,12 @@ namespace Yi.Furion.Application.Rbac.Services.Impl public class DeptService : CrudAppService, IDeptService, ITransient, IDynamicApiController { + [NonAction] + public async Task> GetChiIds(long deptId) + { + var entities= await _DbQueryable.ToChildListAsync(x=>x.ParentId,deptId); + return entities.Select(x => x.Id).ToList(); + } /// /// 通过角色id查询该角色全部部门 diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/UserService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/UserService.cs index cbdf98ce..d0701639 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/UserService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/UserService.cs @@ -21,13 +21,13 @@ namespace Yi.Furion.Application.Rbac.Services.Impl { - public UserService(UserManager userManager, IUserRepository userRepository, ICurrentUser currentUser) => - (_userManager, _userRepository, _currentUser) = - (userManager, userRepository, currentUser); + public UserService(UserManager userManager, IUserRepository userRepository, ICurrentUser currentUser, IDeptService deptService) => + (_userManager, _userRepository, _currentUser, _deptService) = + (userManager, userRepository, currentUser, deptService); private UserManager _userManager { get; set; } private IUserRepository _userRepository { get; set; } - + private IDeptService _deptService { get; set; } private ICurrentUser _currentUser { get; set; } @@ -42,6 +42,11 @@ namespace Yi.Furion.Application.Rbac.Services.Impl var entity = await MapToEntityAsync(input); RefAsync total = 0; + List deptIds = null; + if (input.DeptId is not null) + { + deptIds= await _deptService.GetChiIds(input.DeptId ?? 0); + } List ids = input.Ids?.Split(",").Select(x => long.Parse(x)).ToList(); @@ -52,7 +57,7 @@ namespace Yi.Furion.Application.Rbac.Services.Impl .WhereIF(input.StartTime is not null && input.EndTime is not null, x => x.CreationTime >= input.StartTime && x.CreationTime <= input.EndTime) //这个为过滤当前部门,加入数据权限后,将由数据权限控制 - .WhereIF(input.DeptId is not null, x => x.DeptId == input.DeptId) + .WhereIF(input.DeptId is not null, x => deptIds.Contains(x.DeptId??-1)) .WhereIF(ids is not null, x => ids.Contains(x.Id))