using CloudGaming.Core.AgileConfig; using CloudGaming.Core.Processors; using HZY.Framework.DependencyInjection.Attributes; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace CloudGaming.Code.DataBaseModel; /// /// 用于管理AgileConfig数据 /// public class AppConfigExtendServer(IServiceProvider serviceProvider) : IHostedService { [AppSettings("AgileConfig")] public virtual AgileConfigVM AgileConfig { get; set; } [Autowired] public virtual AppConfigTenant AppConfigTenant { get; set; } /// /// /// [Autowired] public virtual IHttpClientFactory? httpClientFactory { get; set; } [Autowired] public AgileConfigServer agileConfigServer { get; set; } public async Task StartAsync(CancellationToken cancellationToken) { if (AppConfigTenant == null) { AppConfigTenant = new AppConfigTenant(); } AppConfigExtendProcessor appConfigExtendProcessor = new AppConfigExtendProcessor(serviceProvider, AgileConfig); appConfigExtendProcessor.Run(); //agileConfigServer._httpClientFactory = httpClientFactory; // await agileConfigServer.Init(AgileConfig); //var json= await agileConfigServer.AgileConfigApi.GetJson(); } public Task StopAsync(CancellationToken cancellationToken) { return Task.CompletedTask; } } public class AppConfigExtendProcessor(IServiceProvider serviceProvider, AgileConfigVM agileConfig) : ThreadProcessor { protected override async void Proc_Do() { using var service = serviceProvider.CreateScope(); var _serviceProvider = service.ServiceProvider; var httpClientFactory = _serviceProvider.GetService(); var agileConfigServer = _serviceProvider.GetService(); if (agileConfigServer == null) { agileConfigServer = new AgileConfigServer(); } if (agileConfigServer._httpClientFactory == null) { agileConfigServer._httpClientFactory = httpClientFactory; } try { await agileConfigServer.Init(agileConfig); } catch (Exception ex) { } var appConfigTenant = _serviceProvider.GetService(); if (agileConfigServer == null) { agileConfigServer = new AgileConfigServer(); } while (true) { if (agileConfigServer.ExAt < DateTime.Now) { await agileConfigServer.LoginAsync(); } var json = await agileConfigServer.AgileConfigApi.GetJson(agileConfig.AppId, agileConfig.Env); if (json != null && json.Success && !string.IsNullOrEmpty(json.Data)) { var _json = json.Data; var appConfigTenant1 = JsonConvert.DeserializeObject(_json); if (appConfigTenant1 != null) { appConfigTenant.Tenants = appConfigTenant1.Tenants; } } Thread.Sleep(1000 * 60 * 5); } } }