From 95a91a10b3573910948f00c7e43730af6fc98f43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com> Date: Sun, 21 May 2023 13:16:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=AE=8C=E5=96=84=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=83=A8=E9=97=A8=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Rbac/Services/IDeptService.cs | 2 +- .../Rbac/Services/Impl/DeptService.cs | 6 ++++++ .../Rbac/Services/Impl/UserService.cs | 15 ++++++++++----- 3 files changed, 17 insertions(+), 6 deletions(-) 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))