From ac61ace37fefeddff27c33037bb2108420f35c8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=91=E5=AE=81?= <1772105645@qq.com> Date: Sun, 17 May 2026 17:50:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=A8=E6=88=B7=E5=88=97=E8=A1=A8=20?= =?UTF-8?q?API=20=E6=94=AF=E6=8C=81=E6=90=9C=E7=B4=A2=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - GetUserListQuery 增加 Search 参数 - GET /users?search=xxx 按用户名或邮箱模糊搜索 --- src/RAG.Api/Endpoints/Users/GetUserListEndpoint.cs | 11 ++++++++--- .../Users/Queries/GetUserListQuery.cs | 14 ++++++++++++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/RAG.Api/Endpoints/Users/GetUserListEndpoint.cs b/src/RAG.Api/Endpoints/Users/GetUserListEndpoint.cs index 239f22a..ed1e698 100644 --- a/src/RAG.Api/Endpoints/Users/GetUserListEndpoint.cs +++ b/src/RAG.Api/Endpoints/Users/GetUserListEndpoint.cs @@ -5,7 +5,12 @@ using RAG.Application.Users.Queries; namespace RAG.Api.Endpoints.Users; -public class GetUserListEndpoint(IMediator mediator) : EndpointWithoutRequest> +public record GetUserListRequest +{ + public string? Search { get; init; } +} + +public class GetUserListEndpoint(IMediator mediator) : Endpoint> { public override void Configure() { @@ -13,9 +18,9 @@ public class GetUserListEndpoint(IMediator mediator) : EndpointWithoutRequest
  • >; +public record GetUserListQuery(string? Search) : IRequest>; public class GetUserListQueryHandler(RagDbContext db) : IRequestHandler> { public async Task> Handle(GetUserListQuery request, CancellationToken ct) { - return await db.Users + var query = db.Users .Include(u => u.UserRoles).ThenInclude(ur => ur.Role) + .AsQueryable(); + + if (!string.IsNullOrWhiteSpace(request.Search)) + { + var search = request.Search.ToLower(); + query = query.Where(u => u.Username.ToLower().Contains(search) + || u.Email.ToLower().Contains(search)); + } + + return await query .Select(u => new UserDto( u.Id, u.Username, u.Email, u.IsActive, u.CreatedAt, u.UserRoles.Select(ur => ur.Role.Name).ToList()))