using FlexJobApi.Core; using FlexJobApi.Core.Entities.Common; using Furion.DatabaseAccessor; using Furion.FriendlyException; using MediatR; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.CommonServer.Application { /// /// 重新发送资源 /// public class ResendResourceCommandHandler( IRepository repResourceLog, IRepository repResource ) : IRequestHandler { private readonly IRepository repResourceLog = repResourceLog; private readonly IRepository repResource = repResource; /// /// 重新发送资源 /// /// /// /// public async Task Handle(ResendResourceCommand request, CancellationToken cancellationToken) { var log = await repResourceLog.AsQueryable().AsNoTracking() .Where(it => it.Id == request.Id) .Select(it => new { it.Method, it.Path, it.Request, it.CreatedUserId }) .FirstOrDefaultAsync(); if (log == null) throw Oops.Oh(EnumErrorCodeType.s404, "日志"); var resource = await repResource.AsQueryable().AsNoTracking() .Where(it => it.Method == log.Method && it.Route == log.Path) .Select(it => new { it.ServiceName, it.Route, it.Method }) .FirstOrDefaultAsync(); if (resource == null) throw Oops.Oh(EnumErrorCodeType.s404, "资源"); var paramters = log.Request .JsonTo(new { request = new object() }) .request .ToJson(); var result = await paramters.SendHttpAsync(resource.ServiceName, resource.Route, resource.Method); return result; } } }