From 1ddd1094f635bdc69e1e236353aa77d5b400f007 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期二, 05 八月 2025 16:46:39 +0800 Subject: [PATCH] feat:用户信息 --- FlexJobApi.User.Application/Roles/Queries/GetRolesQueryHandler.cs | 31 +++++++++++++++++++++++++------ 1 files changed, 25 insertions(+), 6 deletions(-) diff --git a/FlexJobApi.User.Application/Roles/Queries/GetRolesQueryHandler.cs b/FlexJobApi.User.Application/Roles/Queries/GetRolesQueryHandler.cs index 7ecb4e0..92ba664 100644 --- a/FlexJobApi.User.Application/Roles/Queries/GetRolesQueryHandler.cs +++ b/FlexJobApi.User.Application/Roles/Queries/GetRolesQueryHandler.cs @@ -14,17 +14,19 @@ /// <summary> /// 鏌ヨ瑙掕壊鍒嗛〉鍒楄〃 /// </summary> - /// <param name="rep"></param> + /// <param name="repRole"></param> public class GetRolesQueryHandler( - IRepository<Role> rep + IRepository<Role> repRole, + IRepository<UserInfoRole> repUserInfoRole ) : IRequestHandler<GetRolesQuery, PagedListQueryResult<GetRolesQueryResultItem>> { - private readonly IRepository<Role> rep = rep; + private readonly IRepository<Role> repRole = repRole; + private readonly IRepository<UserInfoRole> repUserInfoRole = repUserInfoRole; /// <inheritdoc/> - public Task<PagedListQueryResult<GetRolesQueryResultItem>> Handle(GetRolesQuery request, CancellationToken cancellationToken) + public async Task<PagedListQueryResult<GetRolesQueryResultItem>> Handle(GetRolesQuery request, CancellationToken cancellationToken) { - var q = rep.AsQueryable().AsNoTracking(); + var q = repRole.AsQueryable().AsNoTracking(); if (request.UserType.HasValue) { q = q.Where(it => it.UserType == request.UserType); @@ -33,10 +35,27 @@ { q = q.Where(it => it.ClientType == request.ClientType); } - var result = q + var result = await q .ProjectToType<GetRolesQueryResultItem>() .ToPagedListAsync(request.PageModel, cancellationToken); + if (result.Data.Any()) + { + var ids = result.Data.DistinctSelect(it => it.Id); + var userInfoRoles = await repUserInfoRole.AsQueryable().AsNoTracking() + .Where(it => ids.Contains(it.RoleId)) + .Select(it => new + { + it.UserInfoId, + it.RoleId + }) + .ToListAsync(); + foreach (var item in result.Data) + { + item.UserCount = userInfoRoles.Count(it => it.RoleId == item.Id); + } + } + return result; } } -- Gitblit v1.9.1