using CloudGaming.AppConfigModel; using CloudGaming.Core.AgileConfig; using CloudGaming.Core.AgileConfig.AgileConfigApi; using Newtonsoft.Json; using AppConfig = CloudGaming.Code.DataBaseModel.AppConfig; namespace CloudGaming.Api.Admin.ApplicationServices.Apps.Ext; /// /// 游戏配置 UserConfigService /// /// public class GameConfigService(IServiceProvider serviceProvider) : ApplicationService(serviceProvider) { [Autowired] public virtual AppConfigTenant AppConfigTenant { get; set; } [AppSettings("AgileConfig")] public virtual AgileConfigVM AgileConfig { get; set; } [Autowired] public virtual IAccountService AccountService { get; set; } [Autowired] public virtual AppConfig appConfig { get; set; } /// /// 查询表单数据 /// /// public async Task> FindFormAsync() { var res = new Dictionary(); GameConfig form = appConfig?.GameConfig; form = form.NullSafe(); res["id"] = appConfig.TenantId; res[nameof(form)] = form; return res; } /// /// 保存数据 /// /// /// public async Task SaveFormAsync(GameConfig form) { if (AppConfigTenant == null) { AppConfigTenant = new AppConfigTenant(); } if (AppConfigTenant.Tenants == null) { AppConfigTenant.Tenants = new List(); } var t = AppConfigTenant.Tenants.FirstOrDefault(it => it.TenantId == appConfig.TenantId); if (t != null) { t.GameConfig = form; } await SynchronizeData(); } private async Task SynchronizeData() { var agileConfigServer = ServiceProvider.GetService(); var agileConfigApiVM = new CloudGaming.Core.AgileConfig.AgileConfigApi.AgileConfigApiVM() { IsPatch = false, Json = JsonConvert.SerializeObject(AppConfigTenant) }; if (agileConfigServer != null) { //var model = await agileConfigServer.AgileConfigApi.GetJson(AgileConfig.AppId, AgileConfig.Env); var s = await agileConfigServer.AgileConfigApi.SaveJson(AgileConfig.AppId, AgileConfig.Env, agileConfigApiVM); if (s.Success) { var model = new AgileConfigPublishVM() { log = $"{AccountService.AccountContext.Name}修改{appConfig.TenantId}游戏配置,{DateTime.Now}自动发布", appId = AgileConfig.AppId }; await agileConfigServer.AgileConfigApi.Publish(AgileConfig.Env, model); } } } }