sunpengfei
2025-08-04 723bfd806486bb870f0003f2cfbf61476a4e70f6
FlexJobApi.User.Application/Roles/Queries/GetRolesQueryHandler.cs
@@ -1,4 +1,9 @@
using System;
using FlexJobApi.Core;
using Furion.DatabaseAccessor;
using Mapster;
using MediatR;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -6,7 +11,33 @@
namespace FlexJobApi.User.Application
{
    public class GetRolesQueryHandler
    /// <summary>
    /// 查询角色分页列表
    /// </summary>
    /// <param name="rep"></param>
    public class GetRolesQueryHandler(
            IRepository<Role> rep
        ) : IRequestHandler<GetRolesQuery, PagedListQueryResult<GetRolesQueryResultItem>>
    {
        private readonly IRepository<Role> rep = rep;
        /// <inheritdoc/>
        public Task<PagedListQueryResult<GetRolesQueryResultItem>> Handle(GetRolesQuery request, CancellationToken cancellationToken)
        {
            var q = rep.AsQueryable().AsNoTracking();
            if (request.UserType.HasValue)
            {
                q = q.Where(it => it.UserType == request.UserType);
            }
            if (request.ClientType.HasValue)
            {
                q = q.Where(it => it.ClientType == request.ClientType);
            }
            var result = q
                .ProjectToType<GetRolesQueryResultItem>()
                .ToPagedListAsync(request.PageModel, cancellationToken);
            return result;
        }
    }
}