using FlexJobApi.Core; using Furion.DatabaseAccessor; using Furion.FriendlyException; using Mapster; using MediatR; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.User.Application { /// /// 获取角色详情 /// public class GetRoleQueryHandler( IRepository rep ) : IRequestHandler { private readonly IRepository rep = rep; /// public async Task Handle(GetRoleQuery request, CancellationToken cancellationToken) { var entity = await rep.AsQueryable().AsNoTracking() .Where(it => it.Id == request.Id) .ProjectToType() .FirstOrDefaultAsync(cancellationToken); if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "该角色"); entity.MenuIds = await rep.Change().AsQueryable().AsNoTracking() .Where(it => it.RoleId == request.Id) .Select(it => it.MenuId) .ToListAsync(cancellationToken); entity.Resources = await rep.Change().AsQueryable().AsNoTracking() .Where(it => it.RoleId == request.Id) .ProjectToType() .ToListAsync(cancellationToken); return entity; } } }