diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/IServices/IUserService.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/IServices/IUserService.cs index 343765e4..dd2f0c26 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/IServices/IUserService.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/IServices/IUserService.cs @@ -8,5 +8,11 @@ namespace Yi.Framework.Rbac.Application.Contracts.IServices /// public interface IUserService : IYiCrudAppService { + /// + /// 获取指定部门及其所有子部门下的用户列表 + /// + /// 部门ID + /// 用户列表 + Task> GetUsersByDeptAsync(Guid deptId); } } diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/System/UserService.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/System/UserService.cs index 6bd80e07..a7d7c2e2 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/System/UserService.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/System/UserService.cs @@ -236,5 +236,35 @@ namespace Yi.Framework.Rbac.Application.Services.System { return base.PostImportExcelAsync(input); } + + /// + /// 获取指定部门及其所有子部门下的用户列表 + /// + /// 部门ID + /// 用户列表 + [HttpGet] + [Route("user/dept/{deptId}")] + [Permission("system:user:list")] + public async Task> GetUsersByDeptAsync(Guid deptId) + { + // 获取当前部门及其所有子部门的ID列表 + var deptIds = await _deptService.GetChildListAsync(deptId); + + // 将当前部门ID也加入列表 + if (!deptIds.Contains(deptId)) + { + deptIds.Add(deptId); + } + + // 查询所有这些部门下的用户 + var users = await _repository._DbQueryable + .Where(u => deptIds.Contains(u.DeptId ?? Guid.Empty)) + .LeftJoin((user, dept) => user.DeptId == dept.Id) + .OrderByDescending(user => user.CreationTime) + .Select((user, dept) => new UserGetListOutputDto(), true) + .ToListAsync(); + + return users; + } } } \ No newline at end of file