Files
HTCloud/HT.Cloud.Service/Infrastructure/DBInitialize.cs

74 lines
2.1 KiB
C#
Raw Normal View History

2023-03-03 16:07:50 +08:00
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using HT.Cloud.Code;
using HT.Cloud.Code.Model;
using HT.Cloud.DataBase;
using HT.Cloud.Domain.SystemOrganize;
namespace HT.Cloud.Service
{
/// <summary>
/// 初始数据库操作类
/// </summary>
public class DBInitialize
{
private static string cacheKey = GlobalContext.SystemConfig.ProjectPrefix + "_dblist";// 数据库键
/// <summary>
/// 获取注册数据库list
/// </summary>
/// <param name="readDb">重置数据库list</param>
/// <returns></returns>
public static List<ConnectionConfig> GetConnectionConfigs(bool readDb = false)
{
List<ConnectionConfig> list = CacheHelper.Get<List<ConnectionConfig>>(cacheKey);
if (list == null || !list.Any() || readDb)
{
list = new List<ConnectionConfig>();
var data = GlobalContext.SystemConfig;
var defaultConfig = DBContexHelper.Contex(data.DBConnectionString, data.DBProvider);
defaultConfig.ConfigId = "0";
list.Add(defaultConfig);
try
{
//租户数据库
if (data.SqlMode == Define.SQL_TENANT)
{
using (var context = new SqlSugarClient(defaultConfig))
{
var sqls = context.Queryable<SystemSetEntity>().ToList();
foreach (var item in sqls.Where(a => a.F_EnabledMark == true && a.F_EndTime > DateTime.Now.Date && a.F_DbNumber != "0"))
{
var config = DBContexHelper.Contex(item.F_DbString, item.F_DBProvider);
config.ConfigId = item.F_DbNumber;
list.Add(config);
}
}
}
if (data.SqlConfig == null)
data.SqlConfig = new List<DBConfig>();
//扩展数据库
foreach (var item in data.SqlConfig)
{
var config = DBContexHelper.Contex(item.DBConnectionString, item.DBProvider);
config.ConfigId = item.DBNumber;
if (list.Any(a => a.ConfigId == config.ConfigId))
{
throw new Exception($"数据库编号重复,请检查{config.ConfigId}");
}
list.Add(config);
}
}
catch (Exception ex)
{
LogHelper.WriteWithTime(ex);
}
CacheHelper.SetBySecond(cacheKey, list);
}
return list;
}
}
}