using cylsg.Core; using cylsg.Model.TransferOrder; using EzWechat; using Furion; using Furion.FriendlyException; using Furion.Schedule; using Microsoft.AspNetCore.Http.HttpResults; using SKIT.FlurlHttpClient.Wechat.TenpayV3.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EzJob { public class WeChatJob : IJob { /// /// 查询订单完成情况 /// /// /// /// public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { var payServices= App.GetService(); if(payServices == null) { throw Oops.Oh($"定时任务WeChatJob 处理失败,未能获取IWecharPayServicecs 服务"); } var WeChatTransferOrderRs = new BaseRepository(); var OderList = await WeChatTransferOrderRs.AsQueryable().Includes(x=>x.TransferDetailList).Where(x => (x.BatchId != null && x.BatchId != "")&&(x.BatchStatus==null|| x.BatchStatus == "ACCEPTED" || x.BatchStatus == "PROCESSING")).ToListAsync(); foreach( var o in OderList ) { var ret = await payServices.TransferBatches(new GetTransferBatchByOutBatchNumberRequest { OutBatchNumber = o.OutBatchNumber }); ; if(ret != null) { if(ret.IsSuccessful()) { if (ret.TransferBatch.BatchStatus == "FINISHED") { //已经全部完成 o.BatchStatus= ret.TransferBatch.BatchStatus; o.UpDataBy = "查询任务WeChatJob"; o.UpDataTime=DateTime.Now; o.CloseReason = ret.TransferBatch.CloseReason; o.FailAmount= ret.TransferBatch.FailAmount; o.FailNum = ret.TransferBatch.FailNumber; o.SuccessNum = ret.TransferBatch.SuccessNumber; o.SuccessAmount= ret.TransferBatch.SuccessAmount; foreach (var item in o.TransferDetailList) { var del =ret.TransferDetailList.Where(x=>x.OutDetailNumber==item.OutDetailNumber).FirstOrDefault(); if (del != null) { item.DetailStatus = del?.DetailStatus; switch (item.DetailStatus) { case "FAIL": //失败,获取失败原因 var retde = await payServices.TransferBatchesDetails(new SKIT.FlurlHttpClient.Wechat.TenpayV3.Models.GetTransferBatchDetailByDetailIdRequest { BatchId = o.BatchId, DetailId = del.DetailId, }); item.FailReason = retde?.FailReason; break; case "SUCCESS": item.DetailStatus = "SUCCESS"; break; default: item.DetailStatus = del?.DetailStatus; break; } } } } else if(ret.TransferBatch.BatchStatus== "PROCESSING") { o.BatchStatus = ret.TransferBatch.BatchStatus; o.UpDataBy = "查询任务WeChatJob"; o.UpDataTime = DateTime.Now; o.CloseReason = ret.TransferBatch.CloseReason; o.FailAmount = ret.TransferBatch.FailAmount; o.FailNum = ret.TransferBatch.FailNumber; o.SuccessNum = ret.TransferBatch.SuccessNumber; o.SuccessAmount = ret.TransferBatch.SuccessAmount; o.ErrorMsg = null; o.ErrorCode = null; } } else { //处理失败 o.ErrorCode = ret.ErrorCode; o.ErrorMsg = ret.ErrorMessage; o.UpDataBy = "查询任务WeChatJob"; o.UpDataTime = DateTime.Now; } await WeChatTransferOrderRs.UpdateRangeAsync(OderList); } } } } }