241 lines
6.0 KiB
C#
241 lines
6.0 KiB
C#
|
||
|
||
|
||
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 AliyunOssConfig AliyunConfig { get; set; }
|
||
/// <summary>
|
||
/// 获取数据库连接字符串
|
||
/// </summary>
|
||
/// <param name="key">user,game,ext,phone</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
|
||
}
|
||
|
||
|