using Furion; using Furion.Schedule; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ApiTools.Core.Jobs { /// /// 刷新渠道钱包状态 /// [JobDetail("RefreshChannelWalletSignStatusJob", Description = "刷新渠道钱包状态", Concurrent = false)] [PeriodMinutes(5)] public class RefreshChannelWalletSignStatusJob( ChannelWalletRepository channelWalletRepository, ChannelWalletService channelWalletService ) : IJob { private readonly ChannelWalletRepository channelWalletRepository = channelWalletRepository; private readonly ChannelWalletService channelWalletService = channelWalletService; public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) { var env = App.GetConfig("Environment"); if (env != "Local") { var wallets = await channelWalletRepository.GetQueryable() .Where(it => it.Identity != null && it.Identity != "" && it.SignStatus < EnumWalletSignStatus.Normal) .ToListAsync(); foreach (var wallet in wallets) { await channelWalletService.GetEnterpriseWalletBalance(wallet); } await channelWalletRepository.UpdateNowAsync(wallets); } } } }