From 8ffda541b48cbf619f8493196da4fb44d4f3ddc5 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 05 九月 2025 10:22:55 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.Core/Jobs/CompleteTaskSettlementT1Job.cs |  201 +++++++++++++++++++++++++-------------------------
 1 files changed, 101 insertions(+), 100 deletions(-)

diff --git a/FlexJobApi.Core/Jobs/CompleteTaskSettlementT1Job.cs b/FlexJobApi.Core/Jobs/CompleteTaskSettlementT1Job.cs
index 52742c1..032363c 100644
--- a/FlexJobApi.Core/Jobs/CompleteTaskSettlementT1Job.cs
+++ b/FlexJobApi.Core/Jobs/CompleteTaskSettlementT1Job.cs
@@ -34,115 +34,116 @@
         [UnitOfWork(false)]
         public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
         {
-            var now = DateTime.Now;
             var env = App.GetConfig<string>("Environment");
-            var q = rep.AsQueryable()
-                .Where(it => it.SettlementStatus == EnumTaskSettlementStatus.InProcess);
-            var minTime = env == "Local"
-                ? now.AddMinutes(-1)
-                : env == "Test"
-                ? now.AddMinutes(-5)
-                : now.AddDays(-1);
-            q = q.Where(it => it.SettlementStartTime.HasValue && it.SettlementStartTime < minTime);
-            var tasks = await q.ToListAsync();
-            var enterpriseIds = tasks.DistinctSelect(it => it.EnterpriseId);
-            var taskIds = tasks.DistinctSelect(it => it.Id);
-            var taskUsers = await repTaskInfoUser
-                .Where(it => taskIds.Contains(it.TaskInfoId) && it.SettlementStatus == EnumTaskSettlementStatus.InProcess)
-                .ToListAsync();
-            var wallets = await repEnterpriseWallet.AsQueryable()
-                .Where(it => enterpriseIds.Contains(it.EnterpriseId) && it.Access == EnumEnterpriseWalletAccess.Alipay)
-                .ToListAsync();
-            foreach (var wallet in wallets)
+            if (env != "Local")
             {
-                var response = alipayUtils.FundAccountbookQuery(new AlipayFundAccountbookQueryModel
+                var now = DateTime.Now;
+                var q = rep.AsQueryable()
+                    .Where(it => it.SettlementStatus == EnumTaskSettlementStatus.InProcess);
+                var minTime = env == "Test"
+                    ? now.AddMinutes(-5)
+                    : now.AddDays(-1);
+                q = q.Where(it => it.SettlementStartTime.HasValue && it.SettlementStartTime < minTime);
+                var tasks = await q.ToListAsync();
+                var enterpriseIds = tasks.DistinctSelect(it => it.EnterpriseId);
+                var taskIds = tasks.DistinctSelect(it => it.Id);
+                var taskUsers = await repTaskInfoUser
+                    .Where(it => taskIds.Contains(it.TaskInfoId) && it.SettlementStatus == EnumTaskSettlementStatus.InProcess)
+                    .ToListAsync();
+                var wallets = await repEnterpriseWallet.AsQueryable()
+                    .Where(it => enterpriseIds.Contains(it.EnterpriseId) && it.Access == EnumEnterpriseWalletAccess.Alipay)
+                    .ToListAsync();
+                foreach (var wallet in wallets)
                 {
-                    AccountBookId = wallet.AccountBookId,
-                    SceneCode = "SATF_FUND_BOOK",
-                    MerchantUserId = wallet.Code,
-                });
-                if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.SubMsg ?? response.Msg);
-                wallet.Balance = response.AvailableAmount.ToDecimal() ?? 0;
-                await repEnterpriseWallet.UpdateNowAsync(wallet);
-            }
-            if (tasks.IsNotNull())
-            {
-                foreach (var task in tasks)
-                {
-                    var wallet = wallets.FirstOrDefault(it => it.EnterpriseId == task.EnterpriseId);
-                    task.SettlementStatus = EnumTaskSettlementStatus.Completed;
-                    task.SettlementTime = DateTime.Now;
-                    await rep.UpdateNowAsync(task);
-
-                    var users = taskUsers.Where(it => it.TaskInfoId == task.Id).ToList();
-                    foreach (var user in users)
+                    var response = alipayUtils.FundAccountbookQuery(new AlipayFundAccountbookQueryModel
                     {
-                        user.SettlementStatus = EnumTaskSettlementStatus.Completed;
-                        user.SettlementTime = DateTime.Now;
-                        await repTaskInfoUser.UpdateNowAsync(user);
+                        AccountBookId = wallet.AccountBookId,
+                        SceneCode = "SATF_FUND_BOOK",
+                        MerchantUserId = wallet.Code,
+                    });
+                    if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.SubMsg ?? response.Msg);
+                    wallet.Balance = response.AvailableAmount.ToDecimal() ?? 0;
+                    await repEnterpriseWallet.UpdateNowAsync(wallet);
+                }
+                if (tasks.IsNotNull())
+                {
+                    foreach (var task in tasks)
+                    {
+                        var wallet = wallets.FirstOrDefault(it => it.EnterpriseId == task.EnterpriseId);
+                        task.SettlementStatus = EnumTaskSettlementStatus.Completed;
+                        task.SettlementTime = DateTime.Now;
+                        await rep.UpdateNowAsync(task);
 
-                        var order = new EnterpriseWalletTransaction();
-                        order.Type = EnumEnterpriseWalletTransactionType.Recharge;
-                        order.WalletId = wallet.Id;
-                        order.Amount = user.ActualSettlementAmount ?? 0;
-                        order.Remark = user.SettlementRemark;
-                        order.ProductCode = "SINGLE_TRANSFER_NO_PWD";
-                        order.BizScene = "ENTRUST_TRANSFER";
-                        order.TransactionStatus = EnumEnterpriseWalletTransactionStatus.WaitSubmit;
-                        order.Balance = wallet.Balance;
-                        await SetCode(order);
-                        await repEnterpriseWalletTransaction.InsertNowAsync(order);
-
-                        var response = alipayUtils.FundTransUniTransfer(new AlipayFundTransUniTransferModel
+                        var users = taskUsers.Where(it => it.TaskInfoId == task.Id).ToList();
+                        foreach (var user in users)
                         {
-                            OutBizNo = order.Code,
-                            TransAmount = order.Amount.ToString(),
-                            ProductCode = order.ProductCode,
-                            BizScene = order.BizScene,
-                            PayeeInfo = new Participant
+                            user.SettlementStatus = EnumTaskSettlementStatus.Completed;
+                            user.SettlementTime = DateTime.Now;
+                            await repTaskInfoUser.UpdateNowAsync(user);
+
+                            var order = new EnterpriseWalletTransaction();
+                            order.Type = EnumEnterpriseWalletTransactionType.Recharge;
+                            order.WalletId = wallet.Id;
+                            order.Amount = user.ActualSettlementAmount ?? 0;
+                            order.Remark = user.SettlementRemark;
+                            order.ProductCode = "SINGLE_TRANSFER_NO_PWD";
+                            order.BizScene = "ENTRUST_TRANSFER";
+                            order.TransactionStatus = EnumEnterpriseWalletTransactionStatus.WaitSubmit;
+                            order.Balance = wallet.Balance;
+                            await SetCode(order);
+                            await repEnterpriseWalletTransaction.InsertNowAsync(order);
+
+                            var response = alipayUtils.FundTransUniTransfer(new AlipayFundTransUniTransferModel
                             {
-                                IdentityType = "ALIPAY_LOGON_ID",
-                                Identity = user.ReceiveAccount,
-                                Name = user.ReceiveName,
-                            },
-                            PayerInfo = new Participant
-                            {
-                                IdentityType = "ACCOUNT_BOOK_ID",
-                                Identity = wallet.AccountBookId,
-                                ExtInfo = new
+                                OutBizNo = order.Code,
+                                TransAmount = order.Amount.ToString(),
+                                ProductCode = order.ProductCode,
+                                BizScene = order.BizScene,
+                                PayeeInfo = new Participant
                                 {
-                                    agreement_no = wallet.AgreementNo,
-                                }.ToJson(),
-                            },
-                            OrderTitle = order.Remark,
-                            Remark = order.Remark,
-                            BusinessParams = new
+                                    IdentityType = "ALIPAY_LOGON_ID",
+                                    Identity = user.ReceiveAccount,
+                                    Name = user.ReceiveName,
+                                },
+                                PayerInfo = new Participant
+                                {
+                                    IdentityType = "ACCOUNT_BOOK_ID",
+                                    Identity = wallet.AccountBookId,
+                                    ExtInfo = new
+                                    {
+                                        agreement_no = wallet.AgreementNo,
+                                    }.ToJson(),
+                                },
+                                OrderTitle = order.Remark,
+                                Remark = order.Remark,
+                                BusinessParams = new
+                                {
+                                    withdraw_timeliness = "T0"
+                                }.ToJson()
+                            }, "/api/user/enterpriseWallet/alipayFundTransOrderChangedNotify");
+                            if (response.IsError)
                             {
-                                withdraw_timeliness = "T0"
-                            }.ToJson()
-                        }, "/api/user/enterpriseWallet/alipayFundTransOrderChangedNotify");
-                        if (response.IsError)
-                        {
-                            order.ErrorCode = response.Code;
-                            order.FailReason = response.SubMsg ?? response.Msg;
-                        }
-                        else
-                        {
-                            order.OrderId = response.OrderId;
-                            order.PayFundOrderId = response.PayFundOrderId;
-                            order.SettleSerialNo = response.SettleSerialNo;
-                            order.TransDate = response.TransDate.ToDateTime();
-                            order.Link = response.Link;
-                            order.Status = response.Status;
-                            order.SubStatus = response.SubStatus;
-                            order.TransactionStatus = response.Status == "SUCCESS"
-                                ? EnumEnterpriseWalletTransactionStatus.Success
-                                : response.Status == "DEALING"
-                                ? EnumEnterpriseWalletTransactionStatus.Dealing
-                                : response.Status == "REFUND"
-                                ? EnumEnterpriseWalletTransactionStatus.Refund
-                                : EnumEnterpriseWalletTransactionStatus.Fail;
-                            await repEnterpriseWalletTransaction.UpdateNowAsync(order);
+                                order.ErrorCode = response.Code;
+                                order.FailReason = response.SubMsg ?? response.Msg;
+                            }
+                            else
+                            {
+                                order.OrderId = response.OrderId;
+                                order.PayFundOrderId = response.PayFundOrderId;
+                                order.SettleSerialNo = response.SettleSerialNo;
+                                order.TransDate = response.TransDate.ToDateTime();
+                                order.Link = response.Link;
+                                order.Status = response.Status;
+                                order.SubStatus = response.SubStatus;
+                                order.TransactionStatus = response.Status == "SUCCESS"
+                                    ? EnumEnterpriseWalletTransactionStatus.Success
+                                    : response.Status == "DEALING"
+                                    ? EnumEnterpriseWalletTransactionStatus.Dealing
+                                    : response.Status == "REFUND"
+                                    ? EnumEnterpriseWalletTransactionStatus.Refund
+                                    : EnumEnterpriseWalletTransactionStatus.Fail;
+                                await repEnterpriseWalletTransaction.UpdateNowAsync(order);
+                            }
                         }
                     }
                 }

--
Gitblit v1.9.1