移动系统liao
2024-08-27 1571dee924ea10cdcb55300cf02f70c6208c0333
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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;
                                }
                               
                                
 
                            }
 
                        
 
                        }
                    }
                }
            }
        }
    }
}