using CloudGaming.Core.AgileConfig.AgileConfigApi;
using CloudGaming.Core.AgileConfig;
using CloudGaming.Repository.Game.Entities.Ext;
using Newtonsoft.Json;
using AppConfig = CloudGaming.Code.DataBaseModel.AppConfig;
namespace CloudGaming.Api.Admin.ApplicationServices.Apps.Ext;
///
/// 服务 WeChatConfigService
///
public class WeChatConfigService(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();
AppWechatConfig form = appConfig?.Payment.WeChatConfig;
form = form.NullSafe();
res["id"] = appConfig.TenantId;
res[nameof(form)] = form;
return res;
}
///
/// 保存数据
///
///
///
public async Task SaveFormAsync(AppWechatConfig 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)
{
if (t.Payment == null)
{
t.Payment = new AppPayment() { };
}
t.Payment.WeChatConfig = 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);
}
}
}
}