| | |
| | | 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 |
| | | { |
| | |
| | | private readonly int _doWorkMinute = 1; |
| | | private readonly ILifePayOrderService lifePayOrderService; |
| | | private readonly ILifePayService lifePayService; |
| | | private readonly IAbpDistributedLock distributedLock; |
| | | private readonly IRepository<LifePayOrder, Guid> lifePayOrderRepository; |
| | | |
| | | public CheckUnPayOrderWork( |
| | |
| | | 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.lifePayOrderService = lifePayOrderService; |
| | | this.lifePayService = lifePayService; |
| | | this.distributedLock = distributedLock; |
| | | this.lifePayOrderRepository = lifePayOrderRepository; |
| | | } |
| | | |
| | |
| | | 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($"订单:{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.支付成功) |