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, ResourceHttpUtils resourceHttpUtils ) : IRequestHandler { private readonly IRepository repResourceLog = repResourceLog; private readonly IRepository repResource = repResource; private readonly ResourceHttpUtils resourceHttpUtils = resourceHttpUtils; /// /// 重新发送资源 /// /// /// /// 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) .FirstOrDefaultAsync(); var paramters = log.Request .JsonTo(new { request = new object() }) .request .ToJson(); var result = await resourceHttpUtils.SendHttpAsync(resource, paramters); return result; } } }