From 714eca49223a7eabdfc6666eb745c631d27046dc Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期三, 11 六月 2025 19:37:04 +0800
Subject: [PATCH] pref:锁日志

---
 LifePayment/LifePayment.Worker/Worker/CheckUnPayOrderWork.cs |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/LifePayment/LifePayment.Worker/Worker/CheckUnPayOrderWork.cs b/LifePayment/LifePayment.Worker/Worker/CheckUnPayOrderWork.cs
index 085423f..0de3470 100644
--- a/LifePayment/LifePayment.Worker/Worker/CheckUnPayOrderWork.cs
+++ b/LifePayment/LifePayment.Worker/Worker/CheckUnPayOrderWork.cs
@@ -6,16 +6,19 @@
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Logging;
 using Nest;
+using StackExchange.Redis;
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using Volo.Abp.BackgroundWorkers;
+using Volo.Abp.DistributedLocking;
 using Volo.Abp.Domain.Repositories;
 using Volo.Abp.Threading;
 using Volo.Abp.Uow;
 using ZeroD.Util;
+using ZeroD.Util.Fadd;
 
 namespace LifePayment.Worker.Worker
 {
@@ -23,20 +26,26 @@
     {
         private readonly int _doWorkHour = 0;
         private readonly int _doWorkMinute = 1;
+        private readonly ILogger<CheckUnPayOrderWork> logger;
         private readonly ILifePayOrderService lifePayOrderService;
         private readonly ILifePayService lifePayService;
+        private readonly IAbpDistributedLock distributedLock;
         private readonly IRepository<LifePayOrder, Guid> lifePayOrderRepository;
 
         public CheckUnPayOrderWork(
             AbpAsyncTimer timer,
+            ILogger<CheckUnPayOrderWork> logger,
             IServiceScopeFactory serviceScopeFactory,
             ILifePayOrderService lifePayOrderService,
             ILifePayService lifePayService,
+            IAbpDistributedLock distributedLock,
             IRepository<LifePayOrder, Guid> lifePayOrderRepository) : base(timer, serviceScopeFactory)
         {
-            timer.Period = (int)TimeSpan.FromMinutes(10).TotalMilliseconds;
+            timer.Period = (int)TimeSpan.FromSeconds(5).TotalMilliseconds;
+            this.logger = logger;
             this.lifePayOrderService = lifePayOrderService;
             this.lifePayService = lifePayService;
+            this.distributedLock = distributedLock;
             this.lifePayOrderRepository = lifePayOrderRepository;
         }
 
@@ -48,10 +57,14 @@
                 Logger.LogInformation($"妫�鏌ユ湭鏀粯璁㈠崟鐘舵�佸紑濮�: {DateTime.Now}");
                 var end = DateTime.Now;
                 var start = end.AddMinutes(-15);
-                var orderNos = lifePayOrderRepository.Where(it => it.PayStatus == LifePayStatusEnum.鏈敮浠� && it.CreationTime >= start && it.CreationTime <= end).Select(it => it.OrderNo).ToList();
-                foreach (var orderNo in orderNos)
+                var orders = lifePayOrderRepository.Where(it => it.PayStatus == LifePayStatusEnum.鏈敮浠� && it.CreationTime >= start && it.CreationTime <= end).ToList();
+                foreach (var order in orders)
                 {
-                    var wxPayNotice = await lifePayService.WxPayTradeQuery(orderNo);
+                    await using var orderLock = await distributedLock.TryAcquireAsync($"LockKey:UpdateOrder:{order.OrderNo}", TimeSpan.FromSeconds(60));
+                    logger.LogInformation($"閿侊細LockKey:UpdateOrder:{order.OrderNo} - {orderLock != null}");
+
+                    Logger.LogInformation($"璁㈠崟锛歿order.OrderNo}-{order.ToJson()}");
+                    var wxPayNotice = await lifePayService.WxPayTradeQuery(order.OrderNo);
                     var json = wxPayNotice.ToJson();
                     Logger.LogInformation($"璁㈠崟锛坽wxPayNotice.OutTradeNo}锛変俊鎭�: {json}");
                     if (wxPayNotice.OutTradeNo.Contains("JF") && wxPayNotice.TradeState == LifePaymentConstant.WxPayStatus.鏀粯鎴愬姛)

--
Gitblit v1.9.1