CloudGamingAdmin/admin-server/CloudGaming.Code.DataBaseModel/AppConfig.cs
2024-11-27 14:58:39 +08:00

241 lines
6.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using HZY.Framework.DependencyInjection;
using Microsoft.Identity.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CloudGaming.Code.DataBaseModel;
/// <summary>
///
/// </summary>
public class AppConfig : IScopedSelfDependency
{
public AppConfig() { }
/// <summary>
/// 用户数据库连接字符串
/// </summary>
public string? UserConnectionString { get; set; }
/// <summary>
/// 游戏
/// </summary>
public string? GameConnectionString { get; set; }
/// <summary>
/// 扩展
/// </summary>
public string? ExtConnectionString { get; set; }
/// <summary>
/// 手机app配置
/// </summary>
public string? PhoneConnectionString { get; set; }
/// <summary>
/// redis连接字符串
/// </summary>
public string? RedisConnectionString { get; set; }
/// <summary>
/// 域名
/// </summary>
public string? DomainName { get; set; }
/// <summary>
/// 标识
/// </summary>
public string Identifier { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 租户
/// </summary>
public Guid TenantId { get; set; }
/// <summary>
/// 项目支付数据
/// </summary>
public AppPayment? Payment { get; set; }
/// <summary>
/// app版本
/// </summary>
public string AppVersion { get; set; }
/// <summary>
/// 缓存版本
/// </summary>
public int CacheVersion { get; set; }
/// <summary>
/// oss阿里云配置
/// </summary>
public AliyunConfig AliyunConfig { get; set; }
/// <summary>
/// 获取数据库连接字符串
/// </summary>
/// <param name="key">usergameextphone</param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public string GetConnectionString(AppDataBaseType appDataBaseType)
{
switch (appDataBaseType)
{
case AppDataBaseType.User:
return UserConnectionString;
case AppDataBaseType.Game:
return GameConnectionString;
case AppDataBaseType.Ext:
return ExtConnectionString;
case AppDataBaseType.App:
return PhoneConnectionString;
default:
throw new NotImplementedException("数据库连接字符串不存在");
}
}
}
/// <summary>
///
/// </summary>
public static class AppConfigExtend
{
/// <summary>
///
/// </summary>
public static string[] AppDataBaseTypes = {
AppDataBaseType.Game.ToString(),
AppDataBaseType.App.ToString(),
AppDataBaseType.User.ToString(),
AppDataBaseType.Ext.ToString()
};
/// <summary>
///
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static bool IsAppDataBase(string type)
{
return AppDataBaseTypes.Contains(type);
}
/// <summary>
///
/// </summary>
/// <param name="_appConfig"></param>
/// <param name="appConfig"></param>
public static void CopyTo(this AppConfig _appConfig, AppConfig appConfig)
{
if (appConfig == null)
{
appConfig = new AppConfig();
}
appConfig.AppVersion = _appConfig.AppVersion;
appConfig.Identifier = _appConfig.Identifier;
appConfig.UserConnectionString = _appConfig.UserConnectionString;
appConfig.GameConnectionString = _appConfig.GameConnectionString;
appConfig.ExtConnectionString = _appConfig.ExtConnectionString;
appConfig.PhoneConnectionString = _appConfig.PhoneConnectionString;
appConfig.RedisConnectionString = _appConfig.RedisConnectionString;
appConfig.DomainName = _appConfig.DomainName;
appConfig.Name = _appConfig.Name;
appConfig.TenantId = _appConfig.TenantId;
appConfig.Payment = _appConfig.Payment;
appConfig.CacheVersion = _appConfig.CacheVersion;
appConfig.AliyunConfig = _appConfig.AliyunConfig;
}
/// <summary>
///
/// </summary>
/// <param name="appConfigs"></param>
/// <param name="host"></param>
/// <param name="appConfig"></param>
public static void GetTenantIdAppConfig(this List<AppConfig> appConfigs, Guid tenantId, AppConfig appConfig = null)
{
if (appConfigs == null && appConfigs.Count == 0)
{
return;
}
var _appConfig = appConfigs.FirstOrDefault(it => it.TenantId == tenantId);
if (_appConfig == null)
{
return;
}
if (appConfig == null)
{
appConfig = new AppConfig();
}
_appConfig.CopyTo(appConfig);
}
/// <summary>
///
/// </summary>
/// <param name="appConfigs"></param>
/// <param name="host"></param>
/// <param name="appConfig"></param>
public static void GetHostOrDefaultAppConfig(this List<AppConfig> appConfigs, string host, AppConfig appConfig = null)
{
if (appConfigs == null && appConfigs.Count == 0)
{
return;
}
var _appConfig = appConfigs.FirstOrDefault(it => it.DomainName == host);
if (_appConfig == null)
{
_appConfig = appConfigs.FirstOrDefault(it => it.Identifier == "default" || it.Name == "default");
}
if (_appConfig == null)
{
_appConfig = appConfigs[0];
}
if (appConfig == null)
{
appConfig = new AppConfig();
}
_appConfig.CopyTo(appConfig);
}
}
/// <summary>
/// 数据库选项
/// </summary>
public enum AppDataBaseType
{
/// <summary>
/// 用户数据库
/// </summary>
User,
/// <summary>
/// 游戏数据库
/// </summary>
Game,
/// <summary>
/// 扩展数据库
/// </summary>
Ext,
/// <summary>
/// app数据库
/// </summary>
App,
/// <summary>
///
/// </summary>
Admin
}