1
0
zhontai преди 2 години
родител
ревизия
4a75902a3a

Файловите разлики са ограничени, защото са твърде много
+ 107 - 214
src/hosts/ZhonTai.Host/InitData/Admin/ad_api.json


+ 1 - 2
src/hosts/ZhonTai.Host/InitData/Admin/ad_employee.json

@@ -7,7 +7,6 @@
   {
     "id": 162605614280773,
     "sex": 0,
-    "mainOrgId": 189097750675525,
-    "version": 1
+    "mainOrgId": 189097750675525
   }
 ]

+ 1 - 2
src/hosts/ZhonTai.Host/InitData/Admin/ad_employee.tenant.json

@@ -9,7 +9,6 @@
     "id": 162605614280773,
     "tenantId": 161223412138053,
     "sex": 0,
-    "mainOrgId": 189097750675525,
-    "version": 1
+    "mainOrgId": 189097750675525
   }
 ]

+ 12 - 0
src/hosts/ZhonTai.Host/InitData/Admin/ad_employee_organization.json

@@ -0,0 +1,12 @@
+[
+  {
+    "id": 336652181319749,
+    "employeeId": 161223411986501,
+    "organizationId": 189097691009093
+  },
+  {
+    "id": 336652219781190,
+    "employeeId": 162605614280773,
+    "organizationId": 189097750675525
+  }
+]

+ 2 - 4
src/hosts/ZhonTai.Host/InitData/Admin/ad_role.json

@@ -4,8 +4,7 @@
     "parentId": 336557474730053,
     "name": "主管理员",
     "code": "admin",
-    "description": "",
-    "version": 2
+    "description": ""
   },
   {
     "id": 162083448594501,
@@ -17,8 +16,7 @@
     "parentId": 336557578817605,
     "name": "普通员工",
     "code": "emp",
-    "description": "",
-    "version": 1
+    "description": ""
   },
   {
     "id": 336557474730053,

+ 2 - 4
src/hosts/ZhonTai.Host/InitData/Admin/ad_role.tenant.json

@@ -5,8 +5,7 @@
     "parentId": 336557474730053,
     "name": "主管理员",
     "code": "admin",
-    "description": "",
-    "version": 2
+    "description": ""
   },
   {
     "id": 162083448594501,
@@ -20,8 +19,7 @@
     "parentId": 336557578817605,
     "name": "普通员工",
     "code": "emp",
-    "description": "",
-    "version": 1
+    "description": ""
   },
   {
     "id": 336557474730053,

+ 2 - 4
src/hosts/ZhonTai.Host/InitData/Admin/ad_user.json

@@ -4,8 +4,7 @@
     "userName": "admin",
     "password": "96E79218965EB72C92A549DD5A33112",
     "name": "管理员",
-    "mobile": "13122223333",
-    "version": 1
+    "mobile": "13122223333"
   },
   {
     "id": 162083448746053,
@@ -18,7 +17,6 @@
     "userName": "user",
     "password": "96E79218965EB72C92A549DD5A33112",
     "name": "员工",
-    "mobile": "13155556666",
-    "version": 1
+    "mobile": "13155556666"
   }
 ]

+ 2 - 4
src/hosts/ZhonTai.Host/InitData/Admin/ad_user.tenant.json

@@ -5,8 +5,7 @@
     "userName": "admin",
     "password": "96E79218965EB72C92A549DD5A33112",
     "name": "管理员",
-    "mobile": "13122223333",
-    "version": 1
+    "mobile": "13122223333"
   },
   {
     "id": 162083448746053,
@@ -21,7 +20,6 @@
     "userName": "user",
     "password": "96E79218965EB72C92A549DD5A33112",
     "name": "员工",
-    "mobile": "13155556666",
-    "version": 1
+    "mobile": "13155556666"
   }
 ]

+ 2 - 2
src/hosts/ZhonTai.Host/InitData/Admin/ad_user_role.json

@@ -1,6 +1,6 @@
 [
   {
-    "id": 336557167566918,
+    "id": 336652180803653,
     "userId": 161223411986501,
     "roleId": 161223412080709
   },
@@ -10,7 +10,7 @@
     "roleId": 162083448594501
   },
   {
-    "id": 336557241471046,
+    "id": 336652219396166,
     "userId": 162605614280773,
     "roleId": 162605510979653
   }

+ 17 - 34
src/hosts/ZhonTai.Host/InitData/Admin/ad_view.json

@@ -13,8 +13,7 @@
         "path": "admin/home",
         "enabled": true,
         "cache": true,
-        "childs": [],
-        "version": 1
+        "childs": []
       },
       {
         "id": 161227168432197,
@@ -31,8 +30,7 @@
             "path": "admin/dictionary/index",
             "description": "数据字典",
             "enabled": true,
-            "cache": true,
-            "version": 1
+            "cache": true
           }
         ]
       },
@@ -50,8 +48,7 @@
             "label": "个人设置",
             "path": "account/settings",
             "enabled": true,
-            "cache": true,
-            "version": 1
+            "cache": true
           }
         ]
       },
@@ -71,8 +68,7 @@
             "path": "admin/user/index",
             "description": "",
             "enabled": true,
-            "cache": true,
-            "version": 1
+            "cache": true
           },
           {
             "id": 161227168440389,
@@ -82,8 +78,7 @@
             "path": "admin/role/index",
             "description": "",
             "enabled": true,
-            "cache": true,
-            "version": 1
+            "cache": true
           },
           {
             "id": 161227168440390,
@@ -92,8 +87,7 @@
             "label": "接口管理",
             "path": "admin/api",
             "enabled": true,
-            "cache": true,
-            "version": 1
+            "cache": true
           },
           {
             "id": 161227168444485,
@@ -102,8 +96,7 @@
             "label": "视图管理",
             "path": "admin/view",
             "enabled": true,
-            "cache": true,
-            "version": 1
+            "cache": true
           },
           {
             "id": 161227168444486,
@@ -112,8 +105,7 @@
             "label": "权限管理",
             "path": "admin/permission",
             "enabled": true,
-            "cache": true,
-            "version": 1
+            "cache": true
           },
           {
             "id": 161227168448581,
@@ -122,8 +114,7 @@
             "label": "角色权限",
             "path": "admin/role-permission",
             "enabled": true,
-            "cache": true,
-            "version": 1
+            "cache": true
           },
           {
             "id": 161227168448582,
@@ -132,8 +123,7 @@
             "label": "缓存管理",
             "path": "admin/cache",
             "enabled": true,
-            "cache": true,
-            "version": 1
+            "cache": true
           },
           {
             "id": 161227168448583,
@@ -142,8 +132,7 @@
             "label": "租户管理",
             "path": "admin/tenant",
             "enabled": true,
-            "cache": true,
-            "version": 1
+            "cache": true
           },
           {
             "id": 174312361087045,
@@ -153,8 +142,7 @@
             "path": "admin/organization",
             "description": "",
             "enabled": true,
-            "cache": true,
-            "version": 1
+            "cache": true
           }
         ]
       },
@@ -173,8 +161,7 @@
             "label": "操作日志",
             "path": "admin/opration-log",
             "enabled": true,
-            "cache": true,
-            "version": 1
+            "cache": true
           },
           {
             "id": 161227168456773,
@@ -183,8 +170,7 @@
             "label": "登录日志",
             "path": "admin/login-log",
             "enabled": true,
-            "cache": true,
-            "version": 1
+            "cache": true
           }
         ]
       },
@@ -196,8 +182,7 @@
         "path": "admin/document",
         "enabled": true,
         "cache": true,
-        "childs": [],
-        "version": 1
+        "childs": []
       },
       {
         "id": 336556164280389,
@@ -208,8 +193,7 @@
         "description": "",
         "enabled": true,
         "cache": true,
-        "childs": [],
-        "version": 2
+        "childs": []
       },
       {
         "id": 336556164300869,
@@ -220,8 +204,7 @@
         "description": "",
         "enabled": true,
         "cache": true,
-        "childs": [],
-        "version": 2
+        "childs": []
       }
     ]
   }

+ 2 - 2
src/platform/ZhonTai.Admin/Core/Attributes/TransactionAttribute.cs

@@ -21,8 +21,8 @@ public class TransactionAttribute : Attribute
     public IsolationLevel IsolationLevel { get; set; }
 
     /// <summary>
-    /// 数据库名称
+    /// 数据库
     /// </summary>
-    public string DbName { get; set; }
+    public string DbKey { get; set; }
 
 }

+ 12 - 0
src/platform/ZhonTai.Admin/Core/Consts/DbKeys.cs

@@ -12,4 +12,16 @@ public static partial class DbKeys
     /// </summary>
     [Description("主库")]
     public const string MasterDbKey = "masterdb";
+
+    /// <summary>
+    /// 多库
+    /// </summary>
+    [Description("多库")]
+    public const string MultiDbKey = "multidb_";
+
+    /// <summary>
+    /// 租户独立数据库
+    /// </summary>
+    [Description("租户独立数据库")]
+    public const string TenantDbKey = "tenantdb_";
 }

+ 30 - 34
src/platform/ZhonTai.Admin/Core/Db/IdleBusExtesions.cs → src/platform/ZhonTai.Admin/Core/Db/FreeSqlCloudExtesions.cs

@@ -8,10 +8,11 @@ using ZhonTai.Admin.Core.Configs;
 using ZhonTai.Admin.Core.Dto;
 using ZhonTai.Admin.Core.Entities;
 using ZhonTai.Admin.Domain.Tenant;
+using ZhonTai.Admin.Core.Consts;
 
 namespace ZhonTai.Admin.Core.Db;
 
-public static class IdleBusExtesions
+public static class FreeSqlCloudExtesions
 {
     /// <summary>
     /// 创建FreeSql实例
@@ -88,12 +89,12 @@ public static class IdleBusExtesions
     }
 
     /// <summary>
-    /// 获得FreeSql实例
+    /// 获得当前登录用户数据库
     /// </summary>
-    /// <param name="ib"></param>
+    /// <param name="cloud"></param>
     /// <param name="serviceProvider"></param>
     /// <returns></returns>
-    public static IFreeSql GetFreeSql(this IdleBus<IFreeSql> ib, IServiceProvider serviceProvider)
+    public static IFreeSql GetCurrentDb(this FreeSqlCloud cloud, IServiceProvider serviceProvider)
     {
         var user = serviceProvider.GetRequiredService<IUser>();
         var appConfig = serviceProvider.GetRequiredService<AppConfig>();
@@ -101,57 +102,52 @@ public static class IdleBusExtesions
         var tenantId = user.TenantId;
         if (appConfig.Tenant && user.DataIsolationType == DataIsolationType.OwnDb && tenantId.HasValue)
         {
-            var tenantName = "tenant_" + tenantId.ToString();
-            var exists = ib.Exists(tenantName);
+            var tenantName = DbKeys.TenantDbKey + tenantId;
+            var exists = cloud.ExistsRegister(tenantName);
             if (!exists)
             {
                 var dbConfig = serviceProvider.GetRequiredService<DbConfig>();
-                //查询租户数据库信息
-                var masterDb = serviceProvider.GetRequiredService<IFreeSql>();
+                var masterDb = cloud.Use(DbKeys.MasterDbKey);
                 var tenant = masterDb.Select<TenantEntity>().DisableGlobalFilter("Tenant").WhereDynamic(tenantId).ToOne<CreateFreeSqlTenantDto>();
-
-                var timeSpan = tenant.IdleTime.HasValue && tenant.IdleTime.Value > 0 ? TimeSpan.FromMinutes(tenant.IdleTime.Value) : TimeSpan.MaxValue;
-                ib.TryRegister(tenantName, () => CreateFreeSql(user, appConfig, dbConfig, tenant), timeSpan);
+                cloud.Register(tenantName, () => CreateFreeSql(user, appConfig, dbConfig, tenant));
             }
 
-            return ib.Get(tenantName);
+            return cloud.Use(tenantName);
         }
         else
         {
-            var freeSql = serviceProvider.GetRequiredService<IFreeSql>();
-            return freeSql;
+            var masterDb = cloud.Use(DbKeys.MasterDbKey);
+            return masterDb;
         }
     }
 
     /// <summary>
-    /// 获得租户FreeSql实例
+    /// 获得租户数据库
     /// </summary>
-    /// <param name="ib"></param>
+    /// <param name="cloud"></param>
     /// <param name="serviceProvider"></param>
     /// <param name="tenantId"></param>
     /// <returns></returns>
-    public static IFreeSql GetTenantFreeSql(this IdleBus<IFreeSql> ib, IServiceProvider serviceProvider, long? tenantId = null)
+    public static IFreeSql GetTenantDb(this FreeSqlCloud cloud, IServiceProvider serviceProvider, long? tenantId = null)
     {
-        if (tenantId.HasValue)
+        if (!tenantId.HasValue)
         {
-            var user = serviceProvider.GetRequiredService<IUser>();
-            var appConfig = serviceProvider.GetRequiredService<AppConfig>();
-            var tenantName = "tenant_" + tenantId.ToString();
-            var exists = ib.Exists(tenantName);
-            if (!exists)
-            {
-                var dbConfig = serviceProvider.GetRequiredService<DbConfig>();
-                //查询租户数据库信息
-                var masterDb = serviceProvider.GetRequiredService<IFreeSql>();
-                var tenant = masterDb.Select<TenantEntity>().DisableGlobalFilter("Tenant").WhereDynamic(tenantId).ToOne<CreateFreeSqlTenantDto>();
-
-                var timeSpan = tenant.IdleTime.HasValue && tenant.IdleTime.Value > 0 ? TimeSpan.FromMinutes(tenant.IdleTime.Value) : TimeSpan.MaxValue;
-                ib.TryRegister(tenantName, () => CreateFreeSql(user, appConfig, dbConfig, tenant), timeSpan);
-            }
+            return null;
+        }
 
-            return ib.Get(tenantName);
+        var user = serviceProvider.GetRequiredService<IUser>();
+        var appConfig = serviceProvider.GetRequiredService<AppConfig>();
+        var tenantName = DbKeys.TenantDbKey + tenantId;
+        var exists = cloud.ExistsRegister(tenantName);
+        if (!exists)
+        {
+            var dbConfig = serviceProvider.GetRequiredService<DbConfig>();
+            var masterDb = cloud.Use(DbKeys.MasterDbKey);
+            var tenant = masterDb.Select<TenantEntity>().DisableGlobalFilter("Tenant").WhereDynamic(tenantId).ToOne<CreateFreeSqlTenantDto>();
+            //var timeSpan = tenant.IdleTime.HasValue && tenant.IdleTime.Value > 0 ? TimeSpan.FromMinutes(tenant.IdleTime.Value) : TimeSpan.MaxValue;
+            cloud.Register(tenantName, () => CreateFreeSql(user, appConfig, dbConfig, tenant));
         }
 
-        return null;
+        return cloud.Use(tenantName);
     }
 }

+ 1 - 1
src/platform/ZhonTai.Admin/Core/Db/Transaction/TransactionAsyncInterceptor.cs

@@ -26,7 +26,7 @@ public class TransactionAsyncInterceptor : IAsyncInterceptor
         {
             IsolationLevel? isolationLevel = transaction.IsolationLevel == 0 ? null : transaction.IsolationLevel;
 
-            _unitOfWork = _unitOfWorkManager.Begin(transaction.DbName, transaction.Propagation, isolationLevel);
+            _unitOfWork = _unitOfWorkManager.Begin(transaction.DbKey, transaction.Propagation, isolationLevel);
             return true;
         }
 

+ 5 - 5
src/platform/ZhonTai.Admin/Core/Db/Transaction/UnitOfWorkManagerCloud.cs

@@ -13,10 +13,10 @@ public class UnitOfWorkManagerCloud
         m_cloud = cloud;
     }
 
-    public UnitOfWorkManager GetUnitOfWorkManager(string db)
+    public UnitOfWorkManager GetUnitOfWorkManager(string dbKey)
     {
-        if (m_managers.TryGetValue(db, out var uowm) == false)
-            m_managers.Add(db, uowm = new UnitOfWorkManager(m_cloud.Use(db)));
+        if (m_managers.TryGetValue(dbKey, out var uowm) == false)
+            m_managers.Add(dbKey, uowm = new UnitOfWorkManager(m_cloud.Use(dbKey)));
         return uowm;
     }
 
@@ -26,8 +26,8 @@ public class UnitOfWorkManagerCloud
         m_managers.Clear();
     }
 
-    public IUnitOfWork Begin(string db, Propagation propagation = Propagation.Required, IsolationLevel? isolationLevel = null)
+    public IUnitOfWork Begin(string dbKey, Propagation propagation = Propagation.Required, IsolationLevel? isolationLevel = null)
     {
-        return GetUnitOfWorkManager(db).Begin(propagation, isolationLevel);
+        return GetUnitOfWorkManager(dbKey).Begin(propagation, isolationLevel);
     }
 }

+ 73 - 49
src/platform/ZhonTai.Admin/Repositories/CustomGenerateData.cs

@@ -20,6 +20,7 @@ using ZhonTai.Admin.Domain.Employee;
 using ZhonTai.Admin.Domain.Organization;
 using ZhonTai.Admin.Core.Db.Data;
 using FreeSql;
+using ZhonTai.Admin.Domain;
 
 namespace ZhonTai.Admin.Repositories;
 
@@ -39,7 +40,8 @@ public class CustomGenerateData : GenerateData, IGenerateData
             a.CreatedUserName,
             a.ModifiedTime,
             a.ModifiedUserId,
-            a.ModifiedUserName
+            a.ModifiedUserName,
+            a.Version
         });
 
         var dictionaries = db.Queryable<DictionaryEntity>().ToListIgnore(a => new
@@ -49,7 +51,8 @@ public class CustomGenerateData : GenerateData, IGenerateData
             a.CreatedUserName,
             a.ModifiedTime,
             a.ModifiedUserId,
-            a.ModifiedUserName
+            a.ModifiedUserName,
+            a.Version
         });
         #endregion
 
@@ -62,7 +65,8 @@ public class CustomGenerateData : GenerateData, IGenerateData
             a.CreatedUserName,
             a.ModifiedTime,
             a.ModifiedUserId,
-            a.ModifiedUserName
+            a.ModifiedUserName,
+            a.Version
         });
         var apiTree = apis.Clone().ToTree((r, c) =>
         {
@@ -89,7 +93,8 @@ public class CustomGenerateData : GenerateData, IGenerateData
             a.CreatedUserName,
             a.ModifiedTime,
             a.ModifiedUserId,
-            a.ModifiedUserName
+            a.ModifiedUserName,
+            a.Version
         });
         var viewTree = views.Clone().ToTree((r, c) =>
         {
@@ -116,7 +121,8 @@ public class CustomGenerateData : GenerateData, IGenerateData
             a.CreatedUserName,
             a.ModifiedTime,
             a.ModifiedUserId,
-            a.ModifiedUserName
+            a.ModifiedUserName,
+            a.Version
         });
         var permissionTree = permissions.Clone().ToTree((r, c) =>
         {
@@ -143,7 +149,51 @@ public class CustomGenerateData : GenerateData, IGenerateData
             a.CreatedUserName,
             a.ModifiedTime,
             a.ModifiedUserId,
-            a.ModifiedUserName
+            a.ModifiedUserName,
+            a.Version
+        });
+
+        #endregion
+
+        #region 员工
+
+        var employees = db.Queryable<EmployeeEntity>().ToListIgnore(a => new
+        {
+            a.CreatedTime,
+            a.CreatedUserId,
+            a.CreatedUserName,
+            a.ModifiedTime,
+            a.ModifiedUserId,
+            a.ModifiedUserName,
+            a.Version
+        });
+
+        #endregion
+
+        #region 部门
+
+        var organizations = db.Queryable<OrganizationEntity>().ToListIgnore(a => new
+        {
+            a.CreatedTime,
+            a.CreatedUserId,
+            a.CreatedUserName,
+            a.ModifiedTime,
+            a.ModifiedUserId,
+            a.ModifiedUserName,
+            a.Version
+        });
+        var organizationTree = organizations.Clone().ToTree((r, c) =>
+        {
+            return c.ParentId == 0;
+        },
+        (r, c) =>
+        {
+            return r.Id == c.ParentId;
+        },
+        (r, datalist) =>
+        {
+            r.Childs ??= new List<OrganizationEntity>();
+            r.Childs.AddRange(datalist);
         });
 
         #endregion
@@ -157,7 +207,8 @@ public class CustomGenerateData : GenerateData, IGenerateData
             a.CreatedUserName,
             a.ModifiedTime,
             a.ModifiedUserId,
-            a.ModifiedUserName
+            a.ModifiedUserName,
+            a.Version
         });
 
         #endregion
@@ -173,6 +224,17 @@ public class CustomGenerateData : GenerateData, IGenerateData
 
         #endregion
 
+        #region 用户部门
+
+        var userOrgs = await db.Queryable<EmployeeOrganizationEntity>().ToListAsync(a => new
+        {
+            a.Id,
+            a.EmployeeId,
+            a.OrganizationId
+        });
+
+        #endregion
+
         #region 角色权限
 
         var rolePermissions = await db.Queryable<RolePermissionEntity>().ToListAsync(a => new
@@ -193,7 +255,8 @@ public class CustomGenerateData : GenerateData, IGenerateData
             a.CreatedUserName,
             a.ModifiedTime,
             a.ModifiedUserId,
-            a.ModifiedUserName
+            a.ModifiedUserName,
+            a.Version
         });
 
         #endregion
@@ -218,47 +281,7 @@ public class CustomGenerateData : GenerateData, IGenerateData
             a.ApiId
         });
 
-        //人事
-        #region 部门
-
-        var organizations = db.Queryable<OrganizationEntity>().ToListIgnore(a => new
-        {
-            a.CreatedTime,
-            a.CreatedUserId,
-            a.CreatedUserName,
-            a.ModifiedTime,
-            a.ModifiedUserId,
-            a.ModifiedUserName
-        });
-        var organizationTree = organizations.Clone().ToTree((r, c) =>
-        {
-            return c.ParentId == 0;
-        },
-        (r, c) =>
-        {
-            return r.Id == c.ParentId;
-        },
-        (r, datalist) =>
-        {
-            r.Childs ??= new List<OrganizationEntity>();
-            r.Childs.AddRange(datalist);
-        });
-
-        #endregion
-
-        #region 员工
-
-        var employees = db.Queryable<EmployeeEntity>().ToListIgnore(a => new
-        {
-            a.CreatedTime,
-            a.CreatedUserId,
-            a.CreatedUserName,
-            a.ModifiedTime,
-            a.ModifiedUserId,
-            a.ModifiedUserName
-        });
-
-        #endregion
+       
 
         #endregion
 
@@ -298,6 +321,7 @@ public class CustomGenerateData : GenerateData, IGenerateData
             SaveDataToJsonFile<EmployeeEntity>(employees.Where(a => tenantIds.Contains(a.TenantId.Value)));
         }
         SaveDataToJsonFile<UserRoleEntity>(userRoles);
+        SaveDataToJsonFile<EmployeeOrganizationEntity>(userOrgs);
         SaveDataToJsonFile<ApiEntity>(apiTree);
         SaveDataToJsonFile<ViewEntity>(viewTree);
         SaveDataToJsonFile<PermissionEntity>(permissionTree);

+ 10 - 6
src/platform/ZhonTai.Admin/Repositories/CustomSyncData.cs

@@ -15,6 +15,7 @@ using ZhonTai.Admin.Core.Configs;
 using ZhonTai.Admin.Domain.Organization;
 using ZhonTai.Admin.Domain.Employee;
 using ZhonTai.Admin.Core.Db.Data;
+using ZhonTai.Admin.Domain;
 
 namespace ZhonTai.Admin.Repositories;
 
@@ -36,6 +37,12 @@ public class CustomSyncData : SyncData, ISyncData
             var users = GetData<UserEntity>(isTenant);
             await InitDataAsync(db, uow, tran, users, dbConfig);
 
+            var employees = GetData<EmployeeEntity>(isTenant);
+            await InitDataAsync(db, uow, tran, employees, dbConfig);
+
+            var organizations = GetData<OrganizationEntity>(isTenant);
+            await InitDataAsync(db, uow, tran, organizations, dbConfig);
+
             var roles = GetData<RoleEntity>(isTenant);
             await InitDataAsync(db, uow, tran, roles, dbConfig);
 
@@ -51,6 +58,9 @@ public class CustomSyncData : SyncData, ISyncData
             var userRoles = GetData<UserRoleEntity>();
             await InitDataAsync(db, uow, tran, userRoles, dbConfig);
 
+            var userOrgs = GetData<EmployeeOrganizationEntity>();
+            await InitDataAsync(db, uow, tran, userOrgs, dbConfig);
+
             var rolePermissions = GetData<RolePermissionEntity>();
             await InitDataAsync(db, uow, tran, rolePermissions, dbConfig);
 
@@ -63,12 +73,6 @@ public class CustomSyncData : SyncData, ISyncData
             var permissionApis = GetData<PermissionApiEntity>();
             await InitDataAsync(db, uow, tran, permissionApis, dbConfig);
 
-            var organizations = GetData<OrganizationEntity>(isTenant);
-            await InitDataAsync(db, uow, tran, organizations, dbConfig);
-
-            var employees = GetData<EmployeeEntity>(isTenant);
-            await InitDataAsync(db, uow, tran, employees, dbConfig);
-
             uow.Commit();
         }
     }

+ 7 - 5
src/platform/ZhonTai.Admin/Services/Permission/PermissionService.cs

@@ -21,6 +21,7 @@ using ZhonTai.DynamicApi;
 using ZhonTai.DynamicApi.Attributes;
 using ZhonTai.Admin.Core.Db;
 using ZhonTai.Admin.Core.Consts;
+using FreeSql;
 
 namespace ZhonTai.Admin.Services.Permission;
 
@@ -440,11 +441,12 @@ public class PermissionService : BaseService, IPermissionService, IDynamicApi
         var insertRolePermissions = new List<RolePermissionEntity>();
         var insertPermissionIds = input.PermissionIds.Where(d => !permissionIds.Contains(d));
 
-        //防止租户非法授权
+        //防止租户非法授权,查询主库租户权限范围
         if (_appConfig.Tenant && User.TenantType == TenantType.Tenant)
         {
-            var masterDb = ServiceProvider.GetRequiredService<IFreeSql>();
-            var tenantPermissionIds = await masterDb.GetRepositoryBase<TenantPermissionEntity>().Select.Where(d => d.TenantId == User.TenantId).ToListAsync(m => m.PermissionId);
+            var cloud = ServiceProvider.GetRequiredService<FreeSqlCloud>();
+            var tenantPermissionIds = await cloud.Use(DbKeys.MasterDbKey).GetRepositoryBase<TenantPermissionEntity>()
+                .Select.Where(d => d.TenantId == User.TenantId).ToListAsync(m => m.PermissionId);
             insertPermissionIds = insertPermissionIds.Where(d => tenantPermissionIds.Contains(d));
         }
 
@@ -480,8 +482,8 @@ public class PermissionService : BaseService, IPermissionService, IDynamicApi
     public async Task<IResultOutput> SaveTenantPermissionsAsync(PermissionSaveTenantPermissionsInput input)
     {
         //获得租户db
-        var ib = ServiceProvider.GetRequiredService<IdleBus<IFreeSql>>();
-        var tenantDb = ib.GetTenantFreeSql(ServiceProvider, input.TenantId);
+        var cloud = ServiceProvider.GetRequiredService<FreeSqlCloud>();
+        var tenantDb = cloud.GetTenantDb(ServiceProvider, input.TenantId);
 
         //查询租户权限
         var permissionIds = await _tenantPermissionRepository.Select.Where(d => d.TenantId == input.TenantId).ToListAsync(m => m.PermissionId);

+ 19 - 9
src/platform/ZhonTai.Admin/ZhonTai.Admin.xml

@@ -34,9 +34,9 @@
             事务隔离级别
             </summary>
         </member>
-        <member name="P:ZhonTai.Admin.Core.Attributes.TransactionAttribute.DbName">
+        <member name="P:ZhonTai.Admin.Core.Attributes.TransactionAttribute.DbKey">
             <summary>
-            数据库名称
+            数据库
             </summary>
         </member>
         <member name="T:ZhonTai.Admin.Core.Attributes.ValidateInputAttribute">
@@ -635,6 +635,16 @@
             主库
             </summary>
         </member>
+        <member name="F:ZhonTai.Admin.Core.Consts.DbKeys.MultiDbKey">
+            <summary>
+            多库
+            </summary>
+        </member>
+        <member name="F:ZhonTai.Admin.Core.Consts.DbKeys.TenantDbKey">
+            <summary>
+            租户独立数据库
+            </summary>
+        </member>
         <member name="T:ZhonTai.Admin.Core.Conventions.ApiGroupConvention">
             <summary>
             Api分组约定
@@ -742,7 +752,7 @@
             <param name="hostAppOptions"></param>
             <returns></returns>
         </member>
-        <member name="M:ZhonTai.Admin.Core.Db.IdleBusExtesions.CreateFreeSql(ZhonTai.Admin.Core.Auth.IUser,ZhonTai.Admin.Core.Configs.AppConfig,ZhonTai.Admin.Core.Configs.DbConfig,ZhonTai.Admin.Core.Dto.CreateFreeSqlTenantDto)">
+        <member name="M:ZhonTai.Admin.Core.Db.FreeSqlCloudExtesions.CreateFreeSql(ZhonTai.Admin.Core.Auth.IUser,ZhonTai.Admin.Core.Configs.AppConfig,ZhonTai.Admin.Core.Configs.DbConfig,ZhonTai.Admin.Core.Dto.CreateFreeSqlTenantDto)">
             <summary>
             创建FreeSql实例
             </summary>
@@ -752,19 +762,19 @@
             <param name="tenant"></param>
             <returns></returns>
         </member>
-        <member name="M:ZhonTai.Admin.Core.Db.IdleBusExtesions.GetFreeSql(IdleBus{IFreeSql},System.IServiceProvider)">
+        <member name="M:ZhonTai.Admin.Core.Db.FreeSqlCloudExtesions.GetCurrentDb(FreeSql.FreeSqlCloud,System.IServiceProvider)">
             <summary>
-            获得FreeSql实例
+            获得当前登录用户数据库
             </summary>
-            <param name="ib"></param>
+            <param name="cloud"></param>
             <param name="serviceProvider"></param>
             <returns></returns>
         </member>
-        <member name="M:ZhonTai.Admin.Core.Db.IdleBusExtesions.GetTenantFreeSql(IdleBus{IFreeSql},System.IServiceProvider,System.Nullable{System.Int64})">
+        <member name="M:ZhonTai.Admin.Core.Db.FreeSqlCloudExtesions.GetTenantDb(FreeSql.FreeSqlCloud,System.IServiceProvider,System.Nullable{System.Int64})">
             <summary>
-            获得租户FreeSql实例
+            获得租户数据库
             </summary>
-            <param name="ib"></param>
+            <param name="cloud"></param>
             <param name="serviceProvider"></param>
             <param name="tenantId"></param>
             <returns></returns>

Някои файлове не бяха показани, защото твърде много файлове са промени