0
0
Преглед на файлове

优化多租户Share模式

xiaoxue преди 4 години
родител
ревизия
1fbdae8f36

+ 7 - 0
Admin.Core.Common/Consts/AdminConsts.cs

@@ -0,0 +1,7 @@
+namespace Admin.Core.Common.Consts
+{
+    public static partial class AdminConsts
+    {
+        public const string TenantName = "Default";
+    }
+}

+ 9 - 4
Admin.Core.Repository/Base/IdleBusExtesions.cs

@@ -1,13 +1,18 @@
-
-
+using Admin.Core.Common.Configs;
+using Admin.Core.Common.Consts;
 
 namespace Admin.Core.Repository
 {
     public static class IdleBusExtesions
     {
-        public static IFreeSql Get(this IdleBus<IFreeSql> ib, long tenantId)
+        public static IFreeSql Get(this IdleBus<IFreeSql> ib, long tenantId, AppConfig appConfig)
         {
-            var freeSql = ib.Get("tenant_" + tenantId.ToString());
+            var tenantName = AdminConsts.TenantName;
+            if (appConfig.TenantType == TenantType.Own)
+            {
+                tenantName = "tenant_" + tenantId.ToString();
+            }
+            var freeSql = ib.Get(tenantName);
             return freeSql;
         }
     }

+ 2 - 1
Admin.Core.Repository/Base/MyUnitOfWorkManager.cs

@@ -2,12 +2,13 @@
 
 using FreeSql;
 using Admin.Core.Common.Auth;
+using Admin.Core.Common.Configs;
 
 namespace Admin.Core.Repository
 {
     public class MyUnitOfWorkManager : UnitOfWorkManager
     {
-        public MyUnitOfWorkManager(IdleBus<IFreeSql> ib, IUser user) : base(ib.Get(user.TenantId.Value))
+        public MyUnitOfWorkManager(IdleBus<IFreeSql> ib, IUser user,AppConfig appConfig) : base(ib.Get(user.TenantId.Value, appConfig))
         {
         }
     }

+ 7 - 1
Admin.Core/Db/TenantDBServiceCollectionExtensions.cs

@@ -7,6 +7,7 @@ using Admin.Core.Common.Helpers;
 using Admin.Core.Common.Auth;
 using Admin.Core.Common.BaseModel;
 using Admin.Core.Repository;
+using Admin.Core.Common.Consts;
 
 namespace Admin.Core.Db
 {
@@ -34,7 +35,12 @@ namespace Admin.Core.Db
 
             IdleBus <IFreeSql> ib = new IdleBus<IFreeSql>(TimeSpan.FromMinutes(idleTime));
 
-            ib.TryRegister("tenant_" + user.TenantId.ToString(), () =>
+            var tenantName = AdminConsts.TenantName;
+            if(appConfig.TenantType == TenantType.Own)
+            {
+                tenantName = "tenant_" + user.TenantId.ToString();
+            }
+            ib.TryRegister(tenantName, () =>
             {
                 #region FreeSql
                 var freeSqlBuilder = new FreeSqlBuilder()