104 lines
3.2 KiB
C#
104 lines
3.2 KiB
C#
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;
|
|
|
|
/// <summary>
|
|
/// 用于管理AgileConfig数据
|
|
/// </summary>
|
|
public class AppConfigExtendServer(IServiceProvider serviceProvider) : IHostedService
|
|
{
|
|
[AppSettings("AgileConfig")]
|
|
public virtual AgileConfigVM AgileConfig { get; set; }
|
|
[Autowired]
|
|
public virtual AppConfigTenant AppConfigTenant { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
[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<IHttpClientFactory>();
|
|
var agileConfigServer = _serviceProvider.GetService<AgileConfigServer>();
|
|
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<AppConfigTenant>();
|
|
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<AppConfigTenant>(_json);
|
|
if (appConfigTenant1 != null)
|
|
{
|
|
appConfigTenant.Tenants = appConfigTenant1.Tenants;
|
|
}
|
|
}
|
|
Thread.Sleep(1000 * 60 * 5);
|
|
}
|
|
|
|
}
|
|
}
|