using cylsg.Core;
|
using cylsg.Model.TransferOrder;
|
using EzWechat;
|
using Furion;
|
using Furion.FriendlyException;
|
using Furion.Schedule;
|
using Microsoft.AspNetCore.Http.HttpResults;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace EzJob
|
{
|
public class WeChatJob : IJob
|
{
|
|
|
/// <summary>
|
/// 查询订单完成情况
|
/// </summary>
|
/// <param name="context"></param>
|
/// <param name="stoppingToken"></param>
|
/// <returns></returns>
|
public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
|
{
|
var payServices= App.GetService<IWecharPayServicecs>();
|
if(payServices == null)
|
{
|
throw Oops.Oh($"定时任务WeChatJob 处理失败,未能获取IWecharPayServicecs 服务");
|
}
|
|
var WeChatTransferOrderRs = new BaseRepository<WeChatTransferOrder>();
|
var OderList = await WeChatTransferOrderRs.AsQueryable().Includes(x=>x.TransferDetailList).Where(x => (x.BatchId != null && x.BatchId != "") || x.BatchStatus == "ACCEPTED" || x.BatchStatus == "PROCESSING").ToListAsync();
|
|
foreach( var o in OderList )
|
{
|
var ret = await payServices.TransferBatches(new SKIT.FlurlHttpClient.Wechat.TenpayV3.Models.GetTransferBatchByBatchIdRequest
|
{
|
BatchId = o.BatchId
|
|
});
|
if(ret != null)
|
{
|
if(ret.IsSuccessful())
|
{
|
|
|
if (ret.TransferBatch.BatchStatus == "FINISHED")
|
{
|
//已经全部完成
|
o.BatchStatus= ret.TransferBatch.BatchStatus;
|
o.UpDataBy = "ExecuteAsync";
|
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();
|
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;
|
}
|
|
|
|
}
|
|
|
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|