mirror of
https://github.com/anjoy8/Blog.Core.git
synced 2024-09-20 23:48:27 +08:00
d85087cbdb
1.完善多租户-多库方案 2.增加租户管理 (实际业务中 也是运维、系统管理员等角色来操作 甚至直接维护数据库而不会开放接口)
57 lines
1.4 KiB
C#
57 lines
1.4 KiB
C#
using Blog.Core.Common.DB;
|
|
using Blog.Core.Common.Seed;
|
|
using Blog.Core.IServices;
|
|
using Blog.Core.Model.Models;
|
|
using Blog.Core.Repository.UnitOfWorks;
|
|
using Blog.Core.Services.BASE;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Blog.Core.Services;
|
|
|
|
public class TenantService : BaseServices<SysTenant>, ITenantService
|
|
{
|
|
private readonly IUnitOfWorkManage _uowManager;
|
|
|
|
public TenantService(IUnitOfWorkManage uowManage)
|
|
{
|
|
this._uowManager = uowManage;
|
|
}
|
|
|
|
|
|
public async Task SaveTenant(SysTenant tenant)
|
|
{
|
|
bool initDb = tenant.Id == 0;
|
|
using (var uow = _uowManager.CreateUnitOfWork())
|
|
{
|
|
|
|
tenant.DefaultTenantConfig();
|
|
|
|
if (tenant.Id == 0)
|
|
{
|
|
await Db.Insertable(tenant).ExecuteReturnSnowflakeIdAsync();
|
|
}
|
|
else
|
|
{
|
|
var oldTenant = await QueryById(tenant.Id);
|
|
if (oldTenant.Connection != tenant.Connection)
|
|
{
|
|
initDb = true;
|
|
}
|
|
|
|
await Db.Updateable(tenant).ExecuteCommandAsync();
|
|
}
|
|
|
|
uow.Commit();
|
|
}
|
|
|
|
if (initDb)
|
|
{
|
|
await InitTenantDb(tenant);
|
|
}
|
|
}
|
|
|
|
public async Task InitTenantDb(SysTenant tenant)
|
|
{
|
|
await DBSeed.InitTenantSeedAsync(Db.AsTenant(), tenant.GetConnectionConfig());
|
|
}
|
|
} |