Procházet zdrojové kódy

导出数据优化

zhontai před 2 roky
rodič
revize
86495bedd9
73 změnil soubory, kde provedl 872 přidání a 1499 odebrání
  1. 1 2
      src/hosts/ZhonTai.Host/Configs/dbconfig.json
  2. 249 140
      src/hosts/ZhonTai.Host/InitData/Admin/ad_api.json
  3. 2 2
      src/hosts/ZhonTai.Host/InitData/Admin/ad_dictionary.tenant.json
  4. 1 1
      src/hosts/ZhonTai.Host/InitData/Admin/ad_dictionary_type.tenant.json
  5. 11 0
      src/hosts/ZhonTai.Host/InitData/Admin/ad_employee.json
  6. 13 0
      src/hosts/ZhonTai.Host/InitData/Admin/ad_employee.tenant.json
  7. 0 1
      src/hosts/ZhonTai.Host/InitData/Admin/ad_organization.json
  8. 2 3
      src/hosts/ZhonTai.Host/InitData/Admin/ad_organization.tenant.json
  9. 140 136
      src/hosts/ZhonTai.Host/InitData/Admin/ad_permission.json
  10. 25 3
      src/hosts/ZhonTai.Host/InitData/Admin/ad_role.json
  11. 29 10
      src/hosts/ZhonTai.Host/InitData/Admin/ad_role.tenant.json
  12. 1 3
      src/hosts/ZhonTai.Host/InitData/Admin/ad_role_permission.json
  13. 6 4
      src/hosts/ZhonTai.Host/InitData/Admin/ad_tenant.json
  14. 1 3
      src/hosts/ZhonTai.Host/InitData/Admin/ad_tenant_permission.json
  15. 12 2
      src/hosts/ZhonTai.Host/InitData/Admin/ad_user.json
  16. 9 5
      src/hosts/ZhonTai.Host/InitData/Admin/ad_user.tenant.json
  17. 2 2
      src/hosts/ZhonTai.Host/InitData/Admin/ad_user_role.json
  18. 87 28
      src/hosts/ZhonTai.Host/InitData/Admin/ad_view.json
  19. 15 0
      src/platform/ZhonTai.Admin/Core/Consts/DbKeys.cs
  20. 2 1
      src/platform/ZhonTai.Admin/Core/Db/DBServiceCollectionExtensions.cs
  21. 2 2
      src/platform/ZhonTai.Admin/Core/Db/Data/GenerateData.cs
  22. 1 1
      src/platform/ZhonTai.Admin/Core/Db/Data/IGenerateData.cs
  23. 1 1
      src/platform/ZhonTai.Admin/Core/Db/Data/ISyncData.cs
  24. 1 1
      src/platform/ZhonTai.Admin/Core/Db/Data/PropsContractResolver.cs
  25. 1 1
      src/platform/ZhonTai.Admin/Core/Db/Data/SyncData.cs
  26. 1 0
      src/platform/ZhonTai.Admin/Core/Db/DbHelper.cs
  27. 0 11
      src/platform/ZhonTai.Admin/Core/Db/DbUnitOfWorkManager.cs
  28. 56 0
      src/platform/ZhonTai.Admin/Core/Db/FreeSqlExt.cs
  29. 1 1
      src/platform/ZhonTai.Admin/Core/Db/Transaction/TransactionAsyncInterceptor.cs
  30. 1 1
      src/platform/ZhonTai.Admin/Core/Db/Transaction/TransactionInterceptor.cs
  31. 1 1
      src/platform/ZhonTai.Admin/Core/Db/Transaction/UnitOfWorkManagerCloud.cs
  32. 0 8
      src/platform/ZhonTai.Admin/Core/Dbs/MySqlDb.cs
  33. 2 0
      src/platform/ZhonTai.Admin/Core/Entities/Entity.cs
  34. 2 10
      src/platform/ZhonTai.Admin/Core/HostApp.cs
  35. 1 1
      src/platform/ZhonTai.Admin/Core/RegisterModules/ServiceModule.cs
  36. 3 2
      src/platform/ZhonTai.Admin/Core/Repositories/DefaultRepositoryBase.cs
  37. 0 6
      src/platform/ZhonTai.Admin/Core/Repositories/FreeSqlRepositoryExtensions.cs
  38. 3 2
      src/platform/ZhonTai.Admin/Core/Repositories/RepositoryBase.cs
  39. 3 3
      src/platform/ZhonTai.Admin/Domain/Api/ApiEntity.cs
  40. 0 58
      src/platform/ZhonTai.Admin/Domain/Api/Dto/ApiDataOutput.cs
  41. 0 53
      src/platform/ZhonTai.Admin/Domain/Dictionary/Dto/DictionaryDataOutput.cs
  42. 0 43
      src/platform/ZhonTai.Admin/Domain/DictionaryType/Dto/DictionaryTypeDataOutput.cs
  43. 0 75
      src/platform/ZhonTai.Admin/Domain/Employee/Output/EmployeeDataOutput.cs
  44. 3 3
      src/platform/ZhonTai.Admin/Domain/Organization/OrganizationEntity.cs
  45. 0 56
      src/platform/ZhonTai.Admin/Domain/Organization/Output/OrganizationDataOutput.cs
  46. 0 98
      src/platform/ZhonTai.Admin/Domain/Permission/Dto/PermissionDataOutput.cs
  47. 3 3
      src/platform/ZhonTai.Admin/Domain/Permission/PermissionEntity.cs
  48. 0 42
      src/platform/ZhonTai.Admin/Domain/Role/Dto/RoleDataOutput.cs
  49. 0 47
      src/platform/ZhonTai.Admin/Domain/User/Dto/UserDataOutput.cs
  50. 0 48
      src/platform/ZhonTai.Admin/Domain/View/Dto/ViewDataOutput.cs
  51. 3 3
      src/platform/ZhonTai.Admin/Domain/View/ViewEntity.cs
  52. 1 1
      src/platform/ZhonTai.Admin/Repositories/Api/ApiRepository.cs
  53. 95 38
      src/platform/ZhonTai.Admin/Repositories/CustomGenerateData.cs
  54. 1 1
      src/platform/ZhonTai.Admin/Repositories/CustomSyncData.cs
  55. 1 1
      src/platform/ZhonTai.Admin/Repositories/Dictionary/DictionaryRepository.cs
  56. 1 1
      src/platform/ZhonTai.Admin/Repositories/DictionaryType/DictionaryTypeRepository.cs
  57. 1 1
      src/platform/ZhonTai.Admin/Repositories/Document/DocumentRepository.cs
  58. 1 1
      src/platform/ZhonTai.Admin/Repositories/DocumentImage/DocumentImageRepository.cs
  59. 1 1
      src/platform/ZhonTai.Admin/Repositories/Employee/EmployeeRepository.cs
  60. 1 1
      src/platform/ZhonTai.Admin/Repositories/LoginLog/LoginLogRepository.cs
  61. 1 1
      src/platform/ZhonTai.Admin/Repositories/OprationLog/OprationLogRepository.cs
  62. 1 1
      src/platform/ZhonTai.Admin/Repositories/Organization/OrganizationRepository.cs
  63. 1 1
      src/platform/ZhonTai.Admin/Repositories/Permission/PermissionRepository.cs
  64. 1 1
      src/platform/ZhonTai.Admin/Repositories/Role/RoleRepository.cs
  65. 1 1
      src/platform/ZhonTai.Admin/Repositories/Tenant/TenantRepository.cs
  66. 1 1
      src/platform/ZhonTai.Admin/Repositories/User/UserRepository.cs
  67. 1 1
      src/platform/ZhonTai.Admin/Repositories/View/ViewRepositoryRepository.cs
  68. 5 0
      src/platform/ZhonTai.Admin/Services/Role/RoleService.cs
  69. 7 1
      src/platform/ZhonTai.Admin/Services/Tenant/TenantService.cs
  70. 0 1
      src/platform/ZhonTai.Admin/Services/User/IUserService.cs
  71. 0 1
      src/platform/ZhonTai.Admin/Services/User/UserService.cs
  72. 7 7
      src/platform/ZhonTai.Admin/ZhonTai.Admin.csproj
  73. 46 509
      src/platform/ZhonTai.Admin/ZhonTai.Admin.xml

+ 1 - 2
src/hosts/ZhonTai.Host/Configs/dbconfig.json

@@ -42,8 +42,7 @@
   "idleTime": 10,
 
   //多数据库
-  //1、Common.Dbs中定义MySqlDb类
-  //2、IFreeSql<MySqlDb> _mySqlDb;
+  //1、Consts.DbKeys中定义数据库唯一键
   "dbs": [
     //{
     //  "name": "MySqlDb",

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 249 - 140
src/hosts/ZhonTai.Host/InitData/Admin/ad_api.json


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

@@ -1,7 +1,7 @@
 [
   {
-    "tenantId": 161223412138053,
     "id": 187395320303685,
+    "tenantId": 161223412138053,
     "dictionaryTypeId": 187395320434757,
     "name": "男",
     "code": "male",
@@ -10,8 +10,8 @@
     "enabled": true
   },
   {
-    "tenantId": 161223412138053,
     "id": 187395320369221,
+    "tenantId": 161223412138053,
     "dictionaryTypeId": 187395320434757,
     "name": "女",
     "code": "female",

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

@@ -1,7 +1,7 @@
 [
   {
-    "tenantId": 161223412138053,
     "id": 187395320434757,
+    "tenantId": 161223412138053,
     "name": "性别",
     "code": "sex",
     "description": "",

+ 11 - 0
src/hosts/ZhonTai.Host/InitData/Admin/ad_employee.json

@@ -1,2 +1,13 @@
 [
+  {
+    "id": 161223411986501,
+    "sex": 0,
+    "mainOrgId": 189097691009093
+  },
+  {
+    "id": 162605614280773,
+    "sex": 0,
+    "mainOrgId": 189097750675525,
+    "version": 1
+  }
 ]

+ 13 - 0
src/hosts/ZhonTai.Host/InitData/Admin/ad_employee.tenant.json

@@ -1,2 +1,15 @@
 [
+  {
+    "id": 161223411986501,
+    "tenantId": 161223412138053,
+    "sex": 0,
+    "mainOrgId": 189097691009093
+  },
+  {
+    "id": 162605614280773,
+    "tenantId": 161223412138053,
+    "sex": 0,
+    "mainOrgId": 189097750675525,
+    "version": 1
+  }
 ]

+ 0 - 1
src/hosts/ZhonTai.Host/InitData/Admin/ad_organization.json

@@ -1,7 +1,6 @@
 [
   {
     "id": 189097691009093,
-    "parentId": 0,
     "name": "中台",
     "code": "",
     "value": "",

+ 2 - 3
src/hosts/ZhonTai.Host/InitData/Admin/ad_organization.tenant.json

@@ -1,8 +1,7 @@
 [
   {
-    "tenantId": 161223412138053,
     "id": 189097691009093,
-    "parentId": 0,
+    "tenantId": 161223412138053,
     "name": "中台",
     "code": "",
     "value": "",
@@ -10,8 +9,8 @@
     "enabled": true,
     "childs": [
       {
-        "tenantId": 161223412138053,
         "id": 189097750675525,
+        "tenantId": 161223412138053,
         "parentId": 189097691009093,
         "name": "开发部",
         "code": "",

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 140 - 136
src/hosts/ZhonTai.Host/InitData/Admin/ad_permission.json


+ 25 - 3
src/hosts/ZhonTai.Host/InitData/Admin/ad_role.json

@@ -1,16 +1,38 @@
 [
   {
     "id": 161223412080709,
-    "name": "管理员",
+    "parentId": 336557474730053,
+    "name": "主管理员",
     "code": "admin",
     "description": "",
-    "enabled": true
+    "version": 2
+  },
+  {
+    "id": 162083448594501,
+    "name": "管理员",
+    "code": "admin"
   },
   {
     "id": 162605510979653,
+    "parentId": 336557578817605,
     "name": "普通员工",
     "code": "emp",
     "description": "",
-    "enabled": true
+    "version": 1
+  },
+  {
+    "id": 336557474730053,
+    "name": "系统默认",
+    "sort": 1
+  },
+  {
+    "id": 336557508276293,
+    "name": "职务",
+    "sort": 2
+  },
+  {
+    "id": 336557578817605,
+    "name": "岗位",
+    "sort": 3
   }
 ]

+ 29 - 10
src/hosts/ZhonTai.Host/InitData/Admin/ad_role.tenant.json

@@ -1,25 +1,44 @@
 [
   {
-    "tenantId": 161223412138053,
     "id": 161223412080709,
-    "name": "管理员",
+    "tenantId": 161223412138053,
+    "parentId": 336557474730053,
+    "name": "主管理员",
     "code": "admin",
     "description": "",
-    "enabled": true
+    "version": 2
+  },
+  {
+    "id": 162083448594501,
+    "tenantId": 162083448455237,
+    "name": "管理员",
+    "code": "admin"
   },
   {
-    "tenantId": 161223412138053,
     "id": 162605510979653,
+    "tenantId": 161223412138053,
+    "parentId": 336557578817605,
     "name": "普通员工",
     "code": "emp",
     "description": "",
-    "enabled": true
+    "version": 1
   },
   {
-    "tenantId": 162083448455237,
-    "id": 162083448594501,
-    "name": "管理员",
-    "code": "admin",
-    "enabled": true
+    "id": 336557474730053,
+    "tenantId": 161223412138053,
+    "name": "系统默认",
+    "sort": 1
+  },
+  {
+    "id": 336557508276293,
+    "tenantId": 161223412138053,
+    "name": "职务",
+    "sort": 2
+  },
+  {
+    "id": 336557578817605,
+    "tenantId": 161223412138053,
+    "name": "岗位",
+    "sort": 3
   }
 ]

+ 1 - 3
src/hosts/ZhonTai.Host/InitData/Admin/ad_role_permission.json

@@ -1,3 +1 @@
-[
-  
-]
+[]

+ 6 - 4
src/hosts/ZhonTai.Host/InitData/Admin/ad_tenant.json

@@ -1,34 +1,36 @@
 [
   {
     "id": 161223412138053,
-    "userId": 161223411986501,
-    "roleId": 161223412080709,
     "name": "中台",
     "code": "zhontai",
     "realName": "小雪",
     "phone": "18988889999",
     "email": "xiaoxue@zhontai.com",
+    "userId": 161223411986501,
+    "roleId": 161223412080709,
     "tenantType": 1,
     "dataIsolationType": 4,
     "dbType": 4,
     "connectionString": "Data Source=|DataDirectory|\\\\admindb.db; Pooling=true;Min Pool Size=1",
     "idleTime": 10,
+    "enabled": true,
     "description": ""
   },
   {
     "id": 162083448455237,
-    "userId": 162083448746053,
-    "roleId": 162083448594501,
     "name": "企业",
     "code": "qiye",
     "realName": "租户",
     "phone": "18988889999",
     "email": "tenant@qiye.com",
+    "userId": 162083448746053,
+    "roleId": 162083448594501,
     "tenantType": 2,
     "dataIsolationType": 4,
     "dbType": 4,
     "connectionString": "Data Source=|DataDirectory|\\\\admindb.db; Pooling=true;Min Pool Size=1",
     "idleTime": 10,
+    "enabled": true,
     "description": ""
   }
 ]

+ 1 - 3
src/hosts/ZhonTai.Host/InitData/Admin/ad_tenant_permission.json

@@ -1,3 +1 @@
-[
-  
-]
+[]

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

@@ -3,12 +3,22 @@
     "id": 161223411986501,
     "userName": "admin",
     "password": "96E79218965EB72C92A549DD5A33112",
-    "name": "管理员"
+    "name": "管理员",
+    "mobile": "13122223333",
+    "version": 1
+  },
+  {
+    "id": 162083448746053,
+    "userName": "18988889999",
+    "password": "96E79218965EB72C92A549DD5A33112",
+    "name": "租户"
   },
   {
     "id": 162605614280773,
     "userName": "user",
     "password": "96E79218965EB72C92A549DD5A33112",
-    "name": "员工"
+    "name": "员工",
+    "mobile": "13155556666",
+    "version": 1
   }
 ]

+ 9 - 5
src/hosts/ZhonTai.Host/InitData/Admin/ad_user.tenant.json

@@ -1,23 +1,27 @@
 [
   {
-    "tenantId": 161223412138053,
     "id": 161223411986501,
+    "tenantId": 161223412138053,
     "userName": "admin",
     "password": "96E79218965EB72C92A549DD5A33112",
-    "name": "管理员"
+    "name": "管理员",
+    "mobile": "13122223333",
+    "version": 1
   },
   {
-    "tenantId": 162083448455237,
     "id": 162083448746053,
+    "tenantId": 162083448455237,
     "userName": "18988889999",
     "password": "96E79218965EB72C92A549DD5A33112",
     "name": "租户"
   },
   {
-    "tenantId": 161223412138053,
     "id": 162605614280773,
+    "tenantId": 161223412138053,
     "userName": "user",
     "password": "96E79218965EB72C92A549DD5A33112",
-    "name": "员工"
+    "name": "员工",
+    "mobile": "13155556666",
+    "version": 1
   }
 ]

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

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

+ 87 - 28
src/hosts/ZhonTai.Host/InitData/Admin/ad_view.json

@@ -1,9 +1,9 @@
 [
   {
     "id": 161227168313413,
-    "parentId": 0,
     "label": "平台管理",
     "enabled": true,
+    "cache": true,
     "childs": [
       {
         "id": 161227168428101,
@@ -12,13 +12,16 @@
         "label": "首页",
         "path": "admin/home",
         "enabled": true,
-        "childs": []
+        "cache": true,
+        "childs": [],
+        "version": 1
       },
       {
         "id": 161227168432197,
         "parentId": 161227168313413,
         "label": "系统配置",
         "enabled": true,
+        "cache": true,
         "childs": [
           {
             "id": 187053736300613,
@@ -26,8 +29,10 @@
             "name": "Dictionary",
             "label": "数据字典",
             "path": "admin/dictionary/index",
+            "description": "数据字典",
             "enabled": true,
-            "description": "数据字典"
+            "cache": true,
+            "version": 1
           }
         ]
       },
@@ -36,6 +41,7 @@
         "parentId": 161227168313413,
         "label": "个人管理",
         "enabled": true,
+        "cache": true,
         "childs": [
           {
             "id": 161227168436293,
@@ -43,7 +49,9 @@
             "name": "Settins",
             "label": "个人设置",
             "path": "account/settings",
-            "enabled": true
+            "enabled": true,
+            "cache": true,
+            "version": 1
           }
         ]
       },
@@ -51,34 +59,31 @@
         "id": 161227168436294,
         "parentId": 161227168313413,
         "label": "权限管理",
-        "enabled": true,
         "description": "",
+        "enabled": true,
+        "cache": true,
         "childs": [
           {
             "id": 161227168436295,
             "parentId": 161227168436294,
             "name": "User",
             "label": "用户管理",
-            "path": "admin/user",
-            "enabled": true
-          },
-          {
-            "id": 174312361087045,
-            "parentId": 161227168436294,
-            "name": "Organization",
-            "label": "部门管理",
-            "path": "admin/organization",
-            "enabled": true,
+            "path": "admin/user/index",
             "description": "",
-            "childs": []
+            "enabled": true,
+            "cache": true,
+            "version": 1
           },
           {
             "id": 161227168440389,
             "parentId": 161227168436294,
             "name": "Role",
             "label": "角色管理",
-            "path": "admin/role",
-            "enabled": true
+            "path": "admin/role/index",
+            "description": "",
+            "enabled": true,
+            "cache": true,
+            "version": 1
           },
           {
             "id": 161227168440390,
@@ -86,7 +91,9 @@
             "name": "Api",
             "label": "接口管理",
             "path": "admin/api",
-            "enabled": true
+            "enabled": true,
+            "cache": true,
+            "version": 1
           },
           {
             "id": 161227168444485,
@@ -94,7 +101,9 @@
             "name": "AdminView",
             "label": "视图管理",
             "path": "admin/view",
-            "enabled": true
+            "enabled": true,
+            "cache": true,
+            "version": 1
           },
           {
             "id": 161227168444486,
@@ -102,7 +111,9 @@
             "name": "Permission",
             "label": "权限管理",
             "path": "admin/permission",
-            "enabled": true
+            "enabled": true,
+            "cache": true,
+            "version": 1
           },
           {
             "id": 161227168448581,
@@ -110,7 +121,9 @@
             "name": "RolePermission",
             "label": "角色权限",
             "path": "admin/role-permission",
-            "enabled": true
+            "enabled": true,
+            "cache": true,
+            "version": 1
           },
           {
             "id": 161227168448582,
@@ -118,7 +131,9 @@
             "name": "Cache",
             "label": "缓存管理",
             "path": "admin/cache",
-            "enabled": true
+            "enabled": true,
+            "cache": true,
+            "version": 1
           },
           {
             "id": 161227168448583,
@@ -126,7 +141,20 @@
             "name": "Tenant",
             "label": "租户管理",
             "path": "admin/tenant",
-            "enabled": true
+            "enabled": true,
+            "cache": true,
+            "version": 1
+          },
+          {
+            "id": 174312361087045,
+            "parentId": 161227168436294,
+            "name": "Organization",
+            "label": "部门管理",
+            "path": "admin/organization",
+            "description": "",
+            "enabled": true,
+            "cache": true,
+            "version": 1
           }
         ]
       },
@@ -134,8 +162,9 @@
         "id": 161227168452677,
         "parentId": 161227168313413,
         "label": "日志管理",
-        "enabled": true,
         "description": "",
+        "enabled": true,
+        "cache": true,
         "childs": [
           {
             "id": 161227168452678,
@@ -143,7 +172,9 @@
             "name": "OprationLog",
             "label": "操作日志",
             "path": "admin/opration-log",
-            "enabled": true
+            "enabled": true,
+            "cache": true,
+            "version": 1
           },
           {
             "id": 161227168456773,
@@ -151,7 +182,9 @@
             "name": "LoginLog",
             "label": "登录日志",
             "path": "admin/login-log",
-            "enabled": true
+            "enabled": true,
+            "cache": true,
+            "version": 1
           }
         ]
       },
@@ -162,7 +195,33 @@
         "label": "文档管理",
         "path": "admin/document",
         "enabled": true,
-        "childs": []
+        "cache": true,
+        "childs": [],
+        "version": 1
+      },
+      {
+        "id": 336556164280389,
+        "parentId": 161227168313413,
+        "name": "Employee",
+        "label": "员工管理",
+        "path": "admin/employee",
+        "description": "",
+        "enabled": true,
+        "cache": true,
+        "childs": [],
+        "version": 2
+      },
+      {
+        "id": 336556164300869,
+        "parentId": 161227168313413,
+        "name": "Task",
+        "label": "任务管理",
+        "path": "admin/task",
+        "description": "",
+        "enabled": true,
+        "cache": true,
+        "childs": [],
+        "version": 2
       }
     ]
   }

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

@@ -0,0 +1,15 @@
+using System.ComponentModel;
+
+namespace ZhonTai.Admin.Core.Consts;
+
+/// <summary>
+/// 数据库键名
+/// </summary>
+public static partial class DbKeys
+{
+    /// <summary>
+    /// 主库
+    /// </summary>
+    [Description("主库")]
+    public const string MasterDbKey = "masterdb";
+}

+ 2 - 1
src/platform/ZhonTai.Admin/Core/Db/DBServiceCollectionExtensions.cs

@@ -9,6 +9,7 @@ using ZhonTai.Admin.Core.Configs;
 using ZhonTai.Admin.Core.Entities;
 using ZhonTai.Admin.Core.Auth;
 using ZhonTai.Admin.Core.Startup;
+using ZhonTai.Admin.Core.Consts;
 
 namespace ZhonTai.Admin.Core.Db;
 
@@ -24,7 +25,7 @@ public static class DBServiceCollectionExtensions
     /// <returns></returns>
     public static void AddMasterDb(this IServiceCollection services, FreeSqlCloud freeSqlCloud, IHostEnvironment env, HostAppOptions hostAppOptions)
     {
-        freeSqlCloud.Register("master", () =>
+        freeSqlCloud.Register(DbKeys.MasterDbKey, () =>
         {
             var dbConfig = ConfigHelper.Get<DbConfig>("dbconfig", env.EnvironmentName);
 

+ 2 - 2
src/platform/ZhonTai.Admin/Core/Db/GenerateData.cs → src/platform/ZhonTai.Admin/Core/Db/Data/GenerateData.cs

@@ -6,14 +6,14 @@ using Newtonsoft.Json.Serialization;
 using FreeSql.DataAnnotations;
 using ZhonTai.Common.Helpers;
 
-namespace ZhonTai.Admin.Core.Db;
+namespace ZhonTai.Admin.Core.Db.Data;
 
 public abstract class GenerateData
 {
     protected virtual void SaveDataToJsonFile<T>(object data, bool isTenant = false, string path = "InitData/Admin", PropsContractResolver propsContractResolver = null) where T : class, new()
     {
         var settings = new JsonSerializerSettings();
-        settings.ContractResolver = propsContractResolver != null ? propsContractResolver : (isTenant ? new CamelCasePropertyNamesContractResolver() : new PropsContractResolver(new List<string> { "TenantId" }));
+        settings.ContractResolver = propsContractResolver ?? (isTenant ? new CamelCasePropertyNamesContractResolver() : new PropsContractResolver(new List<string> { "TenantId" }));
         settings.NullValueHandling = NullValueHandling.Ignore;
         settings.DefaultValueHandling = DefaultValueHandling.Ignore;
 

+ 1 - 1
src/platform/ZhonTai.Admin/Core/Db/IGenerateData.cs → src/platform/ZhonTai.Admin/Core/Db/Data/IGenerateData.cs

@@ -1,7 +1,7 @@
 using System.Threading.Tasks;
 using ZhonTai.Admin.Core.Configs;
 
-namespace ZhonTai.Admin.Core.Db;
+namespace ZhonTai.Admin.Core.Db.Data;
 
 /// <summary>
 /// 生成数据接口

+ 1 - 1
src/platform/ZhonTai.Admin/Core/Db/ISyncData.cs → src/platform/ZhonTai.Admin/Core/Db/Data/ISyncData.cs

@@ -1,7 +1,7 @@
 using System.Threading.Tasks;
 using ZhonTai.Admin.Core.Configs;
 
-namespace ZhonTai.Admin.Core.Db;
+namespace ZhonTai.Admin.Core.Db.Data;
 
 /// <summary>
 /// 同步数据接口

+ 1 - 1
src/platform/ZhonTai.Admin/Core/Db/PropsContractResolver.cs → src/platform/ZhonTai.Admin/Core/Db/Data/PropsContractResolver.cs

@@ -3,7 +3,7 @@ using Newtonsoft.Json.Serialization;
 using System.Collections.Generic;
 using System.Reflection;
 
-namespace ZhonTai.Admin.Core.Db;
+namespace ZhonTai.Admin.Core.Db.Data;
 
 public class PropsContractResolver : CamelCasePropertyNamesContractResolver
 {

+ 1 - 1
src/platform/ZhonTai.Admin/Core/Db/SyncData.cs → src/platform/ZhonTai.Admin/Core/Db/Data/SyncData.cs

@@ -8,7 +8,7 @@ using FreeSql.DataAnnotations;
 using ZhonTai.Common.Helpers;
 using ZhonTai.Admin.Core.Configs;
 
-namespace ZhonTai.Admin.Core.Db;
+namespace ZhonTai.Admin.Core.Db.Data;
 
 public abstract class SyncData
 {

+ 1 - 0
src/platform/ZhonTai.Admin/Core/Db/DbHelper.cs

@@ -14,6 +14,7 @@ using ZhonTai.Admin.Core.Attributes;
 using ZhonTai.Admin.Core.Auth;
 using System.IO;
 using ZhonTai.Common.Helpers;
+using ZhonTai.Admin.Core.Db.Data;
 
 namespace ZhonTai.Admin.Core.Db;
 

+ 0 - 11
src/platform/ZhonTai.Admin/Core/Db/DbUnitOfWorkManager.cs

@@ -1,11 +0,0 @@
-using FreeSql;
-using System;
-
-namespace ZhonTai.Admin.Core.Db;
-
-public class DbUnitOfWorkManager : UnitOfWorkManager
-{
-    public DbUnitOfWorkManager(IdleBus<IFreeSql> ib, IServiceProvider serviceProvider) : base(ib.GetFreeSql(serviceProvider))
-    {
-    }
-}

+ 56 - 0
src/platform/ZhonTai.Admin/Core/Db/FreeSqlExt.cs

@@ -0,0 +1,56 @@
+using FreeSql.Internal.CommonProvider;
+using FreeSql;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+
+namespace ZhonTai.Admin.Core.Db
+{
+    public class TestMemberExpressionVisitor : ExpressionVisitor
+    {
+        public string MemberExpString;
+        public bool Result { get; private set; }
+
+        public static bool IsExists(Expression selector, Expression memberExp)
+        {
+            var visitor = new TestMemberExpressionVisitor { MemberExpString = memberExp.ToString() };
+            visitor.Visit(selector);
+            return visitor.Result;
+        }
+        protected override Expression VisitMember(MemberExpression node)
+        {
+            if (!Result && node.ToString() == MemberExpString) Result = true;
+            return node;
+        }
+    }
+
+    public static class FreeSqlExt
+    {
+        public static List<T1> ToListIgnore<T1>(this ISelect<T1> that, Expression<Func<T1, object>> selector)
+        {
+            if (selector == null) return that.ToList();
+            var s0p = that as Select0Provider;
+            var tb = s0p._tables[0];
+            var parmExp = tb.Parameter ?? Expression.Parameter(tb.Table.Type, tb.Alias);
+            var initExps = tb.Table.Columns.Values
+                .Where(a => a.Attribute.IsIgnore == false)
+                .Select(a => new
+                {
+                    exp = Expression.Bind(tb.Table.Properties[a.CsName], Expression.MakeMemberAccess(parmExp, tb.Table.Properties[a.CsName])),
+                    ignored = TestMemberExpressionVisitor.IsExists(selector, Expression.MakeMemberAccess(parmExp, tb.Table.Properties[a.CsName]))
+                })
+                .Where(a => a.ignored == false)
+                .Select(a => a.exp)
+                .ToArray();
+            var lambda = Expression.Lambda<Func<T1, T1>>(
+                Expression.MemberInit(
+                    Expression.New(tb.Table.Type),
+                    initExps
+                ),
+                parmExp
+            );
+            return that.ToList(lambda);
+        }
+    }
+}

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

@@ -6,7 +6,7 @@ using FreeSql;
 using ZhonTai.Admin.Core.Attributes;
 using ZhonTai.Admin.Core.Dto;
 
-namespace ZhonTai.Admin.Core.Db;
+namespace ZhonTai.Admin.Core.Db.Transaction;
 
 public class TransactionAsyncInterceptor : IAsyncInterceptor
 {

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

@@ -1,6 +1,6 @@
 using Castle.DynamicProxy;
 
-namespace ZhonTai.Admin.Core.Db;
+namespace ZhonTai.Admin.Core.Db.Transaction;
 
 public class TransactionInterceptor : IInterceptor
 {

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

@@ -2,7 +2,7 @@
 using System.Collections.Generic;
 using System.Data;
 
-namespace ZhonTai.Admin.Core.Db;
+namespace ZhonTai.Admin.Core.Db.Transaction;
 
 public class UnitOfWorkManagerCloud
 {

+ 0 - 8
src/platform/ZhonTai.Admin/Core/Dbs/MySqlDb.cs

@@ -1,8 +0,0 @@
-namespace ZhonTai.Admin.Core.Dbs;
-
-/// <summary>
-/// 多数据库命名
-/// </summary>
-public class MySqlDb
-{
-}

+ 2 - 0
src/platform/ZhonTai.Admin/Core/Entities/Entity.cs

@@ -1,4 +1,5 @@
 using FreeSql.DataAnnotations;
+using Newtonsoft.Json;
 using System.ComponentModel;
 using ZhonTai.Admin.Core.Attributes;
 
@@ -24,6 +25,7 @@ public class Entity<TKey> : IEntity<TKey>
     [Description("主键Id")]
     [Snowflake]
     [Column(Position = 1, IsIdentity = false, IsPrimary = true)]
+    [JsonProperty(Order = -2)]
     public virtual TKey Id { get; set; }
 }
 

+ 2 - 10
src/platform/ZhonTai.Admin/Core/HostApp.cs

@@ -47,6 +47,7 @@ using Microsoft.AspNetCore.Mvc;
 using ZhonTai.Admin.Core.Startup;
 using ZhonTai.Admin.Core.Conventions;
 using FreeSql;
+using ZhonTai.Admin.Core.Db.Transaction;
 
 namespace ZhonTai.Admin.Core;
 
@@ -172,22 +173,13 @@ public class HostApp
         var dbConfig = ConfigHelper.Get<DbConfig>("dbconfig", env.EnvironmentName);
         services.AddSingleton(dbConfig);
 
-        //添加FreeSqlCloud单例
+        //添加数据库
         var freeSqlCloud = new FreeSqlCloud(dbConfig.DistributeKey);
         services.AddSingleton<IFreeSql>(freeSqlCloud);
         services.AddSingleton(freeSqlCloud);
-
-        //添加数据库
         services.AddScoped<UnitOfWorkManagerCloud>();
-        services.AddScoped<DbUnitOfWorkManager>();
         services.AddMasterDb(freeSqlCloud, env, _hostAppOptions);
 
-        //添加IdleBus单例
-        //var timeSpan = dbConfig.IdleTime > 0 ? TimeSpan.FromMinutes(dbConfig.IdleTime) : TimeSpan.MaxValue;
-        //var ib = new IdleBus<IFreeSql>(timeSpan);
-        //services.AddSingleton(ib);
-
-
 
         //上传配置
         var uploadConfig = ConfigHelper.Load("uploadconfig", env.EnvironmentName, true);

+ 1 - 1
src/platform/ZhonTai.Admin/Core/RegisterModules/ServiceModule.cs

@@ -7,7 +7,7 @@ using System.Reflection;
 using Module = Autofac.Module;
 using Microsoft.Extensions.DependencyModel;
 using ZhonTai.Admin.Core.Configs;
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Db.Transaction;
 
 namespace ZhonTai.Admin.Core.RegisterModules;
 

+ 3 - 2
src/platform/ZhonTai.Admin/Core/Repositories/DefaultRepositoryBase.cs

@@ -1,7 +1,8 @@
 using FreeSql;
 using System;
 using System.Linq.Expressions;
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Consts;
+using ZhonTai.Admin.Core.Db.Transaction;
 
 namespace ZhonTai.Admin.Core.Repositories;
 
@@ -17,7 +18,7 @@ public class DefaultRepositoryBase<TEntity, TKey> : RepositoryBase<TEntity, TKey
 
 public class RepositoryCloud<T> : DefaultRepositoryBase<T, long> where T : class
 {
-    public RepositoryCloud(UnitOfWorkManagerCloud uowm) : this("master", uowm) { }
+    public RepositoryCloud(UnitOfWorkManagerCloud uowm) : this(DbKeys.MasterDbKey, uowm) { }
     public RepositoryCloud(string db, UnitOfWorkManagerCloud uowm) : this(uowm.GetUnitOfWorkManager(db)) { }
     RepositoryCloud(UnitOfWorkManager uowm) : base(uowm.Orm, uowm)
     {

+ 0 - 6
src/platform/ZhonTai.Admin/Core/Repositories/FreeSqlRepositoryExtensions.cs

@@ -1,7 +1,6 @@
 using System;
 using System.Linq.Expressions;
 using ZhonTai.Admin.Core.Repositories;
-using ZhonTai.Admin.Core.Db;
 
 public static class FreeSqlDbContextExtensions
 {
@@ -29,9 +28,4 @@ public static class FreeSqlDbContextExtensions
     {
         return new DefaultRepositoryBase<TEntity, long>(that, filter);
     }
-
-    public static IRepositoryBase<TEntity, long> GetRepositoryBase<TEntity>(this IFreeSql that, DbUnitOfWorkManager muowManger) where TEntity : class, new()
-    {
-        return new DefaultRepositoryBase<TEntity, long>(that, muowManger);
-    }
 }

+ 3 - 2
src/platform/ZhonTai.Admin/Core/Repositories/RepositoryBase.cs

@@ -3,7 +3,8 @@ using System;
 using System.Linq.Expressions;
 using System.Threading.Tasks;
 using ZhonTai.Admin.Core.Auth;
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Consts;
+using ZhonTai.Admin.Core.Db.Transaction;
 
 namespace ZhonTai.Admin.Core.Repositories
 {
@@ -110,7 +111,7 @@ namespace ZhonTai.Admin.Core.Repositories
 
     public class RepositoryBase<TEntity> : RepositoryBase<TEntity, long>, IRepositoryBase<TEntity> where TEntity : class
     {
-        public RepositoryBase(UnitOfWorkManagerCloud uowm) : this("master", uowm) { }
+        public RepositoryBase(UnitOfWorkManagerCloud uowm) : this(DbKeys.MasterDbKey, uowm) { }
         public RepositoryBase(string db, UnitOfWorkManagerCloud uowm) : this(uowm.GetUnitOfWorkManager(db)) { }
         RepositoryBase(UnitOfWorkManager uowm) : base(uowm.Orm)
         {

+ 3 - 3
src/platform/ZhonTai.Admin/Domain/Api/ApiEntity.cs

@@ -19,9 +19,6 @@ public partial class ApiEntity : EntityFull
     /// </summary>
 	public long ParentId { get; set; }
 
-    [Navigate(nameof(ParentId))]
-    public List<ApiEntity> Childs { get; set; }
-
     /// <summary>
     /// 接口命名
     /// </summary>
@@ -62,6 +59,9 @@ public partial class ApiEntity : EntityFull
     /// </summary>
     public bool Enabled { get; set; } = true;
 
+    [Navigate(nameof(ParentId))]
+    public List<ApiEntity> Childs { get; set; }
+
     [Navigate(ManyToMany = typeof(PermissionApiEntity))]
     public ICollection<PermissionEntity> Permissions { get; set; }
 }

+ 0 - 58
src/platform/ZhonTai.Admin/Domain/Api/Dto/ApiDataOutput.cs

@@ -1,58 +0,0 @@
-using System.Collections.Generic;
-
-namespace ZhonTai.Admin.Domain.Api.Dto;
-
-public class ApiDataOutput
-{
-    /// <summary>
-    /// 租户Id
-    /// </summary>
-    public long? TenantId { get; set; }
-
-    /// <summary>
-    /// 接口Id
-    /// </summary>
-    public long Id { get; set; }
-
-    /// <summary>
-    /// 父级Id
-    /// </summary>
-    public long? ParentId { get; set; }
-
-    /// <summary>
-    /// 接口命名
-    /// </summary>
-    public string Name { get; set; }
-
-    /// <summary>
-    /// 接口名称
-    /// </summary>
-    public string Label { get; set; }
-
-    /// <summary>
-    /// 接口地址
-    /// </summary>
-    public string Path { get; set; }
-
-    /// <summary>
-    /// 接口提交方法
-    /// </summary>
-    public string HttpMethods { get; set; }
-
-    /// <summary>
-    /// 说明
-    /// </summary>
-    public string Description { get; set; }
-
-    /// <summary>
-    /// 排序
-    /// </summary>
-    public int Sort { get; set; }
-
-    /// <summary>
-    /// 启用
-    /// </summary>
-    public bool Enabled { get; set; }
-
-    public List<ApiDataOutput> Childs { get; set; }
-}

+ 0 - 53
src/platform/ZhonTai.Admin/Domain/Dictionary/Dto/DictionaryDataOutput.cs

@@ -1,53 +0,0 @@
-
-namespace ZhonTai.Admin.Domain.Dictionary.Dto;
-
-/// <summary>
-/// 数据字典导出
-/// </summary>
-public partial class DictionaryDataOutput
-{
-    /// <summary>
-    /// 租户Id
-    /// </summary>
-    public long? TenantId { get; set; }
-
-    /// <summary>
-    /// 字典Id
-    /// </summary>
-    public long Id { get; set; }
-
-    /// <summary>
-    /// 字典类型Id
-    /// </summary>
-    public long DictionaryTypeId { get; set; }
-
-    /// <summary>
-    /// 字典名称
-    /// </summary>
-    public string Name { get; set; }
-
-    /// <summary>
-    /// 字典编码
-    /// </summary>
-    public string Code { get; set; }
-
-    /// <summary>
-    /// 字典值
-    /// </summary>
-    public string Value { get; set; }
-
-    /// <summary>
-    /// 描述
-    /// </summary>
-    public string Description { get; set; }
-
-    /// <summary>
-    /// 启用
-    /// </summary>
-		public bool Enabled { get; set; } = true;
-
-    /// <summary>
-    /// 排序
-    /// </summary>
-		public int Sort { get; set; }
-}

+ 0 - 43
src/platform/ZhonTai.Admin/Domain/DictionaryType/Dto/DictionaryTypeDataOutput.cs

@@ -1,43 +0,0 @@
-
-namespace ZhonTai.Admin.Domain.DictionaryType.Dto;
-
-/// <summary>
-/// 数据字典类型导出
-/// </summary>
-public partial class DictionaryTypeDataOutput
-{
-    /// <summary>
-    /// 租户Id
-    /// </summary>
-    public long? TenantId { get; set; }
-
-    /// <summary>
-    /// 字典类型Id
-    /// </summary>
-    public long Id { get; set; }
-
-    /// <summary>
-    /// 字典名称
-    /// </summary>
-    public string Name { get; set; }
-
-    /// <summary>
-    /// 字典编码
-    /// </summary>
-    public string Code { get; set; }
-
-    /// <summary>
-    /// 描述
-    /// </summary>
-    public string Description { get; set; }
-
-    /// <summary>
-    /// 启用
-    /// </summary>
-		public bool Enabled { get; set; } = true;
-
-    /// <summary>
-    /// 排序
-    /// </summary>
-		public int Sort { get; set; }
-}

+ 0 - 75
src/platform/ZhonTai.Admin/Domain/Employee/Output/EmployeeDataOutput.cs

@@ -1,75 +0,0 @@
-using System;
-
-namespace ZhonTai.Admin.Domain.Employee.Output;
-
-/// <summary>
-/// 员工数据导出
-/// </summary>
-public partial class EmployeeDataOutput
-{
-    /// <summary>
-    /// 租户Id
-    /// </summary>
-    public long? TenantId { get; set; }
-
-    /// <summary>
-    /// 员工Id
-    /// </summary>
-    public long Id { get; set; }
-
-    /// <summary>
-    /// 用户Id
-    /// </summary>
-    public long? UserId { get; set; }
-
-    /// <summary>
-    /// 姓名
-    /// </summary>
-    public string Name { get; set; }
-
-    /// <summary>
-    /// 昵称
-    /// </summary>
-    public string NickName { get; set; }
-
-    /// <summary>
-    /// 性别
-    /// </summary>
-    public SexEnum Sex { get; set; }
-
-    /// <summary>
-    /// 工号
-    /// </summary>
-    public string JobNumber { get; set; }
-
-    /// <summary>
-    /// 主属部门Id
-    /// </summary>
-    public long OrganizationId { get; set; }
-
-    /// <summary>
-    /// 主管Id
-    /// </summary>
-    public long? PrimaryEmployeeId { get; set; }
-
-    /// <summary>
-    /// 职位
-    /// </summary>
-    public string Position { get; set; }
-
-    /// <summary>
-    /// 手机号
-    /// </summary>
-    public string Phone { get; set; }
-
-    /// <summary>
-    /// 邮箱
-    /// </summary>
-    public string Email { get; set; }
-
-    /// <summary>
-    /// 入职时间
-    /// </summary>
-    public DateTime HireDate { get; set; }
-
-}

+ 3 - 3
src/platform/ZhonTai.Admin/Domain/Organization/OrganizationEntity.cs

@@ -23,9 +23,6 @@ public partial class OrganizationEntity : EntityFull, ITenant
     /// </summary>
 	public long ParentId { get; set; }
 
-    [Navigate(nameof(ParentId))]
-    public List<OrganizationEntity> Childs { get; set; }
-
     /// <summary>
     /// 名称
     /// </summary>
@@ -67,4 +64,7 @@ public partial class OrganizationEntity : EntityFull, ITenant
 
     [Navigate(ManyToMany = typeof(EmployeeOrganizationEntity))]
     public ICollection<EmployeeEntity> Employees { get; set; }
+
+    [Navigate(nameof(ParentId))]
+    public List<OrganizationEntity> Childs { get; set; }
 }

+ 0 - 56
src/platform/ZhonTai.Admin/Domain/Organization/Output/OrganizationDataOutput.cs

@@ -1,56 +0,0 @@
-using System.Collections.Generic;
-
-namespace ZhonTai.Admin.Domain.Organization.Output;
-
-/// <summary>
-/// 组织机构导出
-/// </summary>
-public class OrganizationDataOutput
-{
-    /// <summary>
-    /// 租户Id
-    /// </summary>
-    public long? TenantId { get; set; }
-
-    /// <summary>
-    /// 组织机构Id
-    /// </summary>
-    public long Id { get; set; }
-
-    /// <summary>
-    /// 上级组织机构
-    /// </summary>
-    public long? ParentId { get; set; }
-
-    /// <summary>
-    /// 名称
-    /// </summary>
-    public string Name { get; set; }
-
-    /// <summary>
-    /// 编码
-    /// </summary>
-    public string Code { get; set; }
-
-    /// <summary>
-    /// 值
-    /// </summary>
-    public string Value { get; set; }
-
-    /// <summary>
-    /// 描述
-    /// </summary>
-    public string Description { get; set; }
-
-    /// <summary>
-    /// 启用
-    /// </summary>
-	public bool Enabled { get; set; } = true;
-
-    /// <summary>
-    /// 排序
-    /// </summary>
-	public int Sort { get; set; }
-
-    public List<OrganizationDataOutput> Childs { get; set; }
-}

+ 0 - 98
src/platform/ZhonTai.Admin/Domain/Permission/Dto/PermissionDataOutput.cs

@@ -1,98 +0,0 @@
-using System.Collections.Generic;
-
-namespace ZhonTai.Admin.Domain.Permission.Dto;
-
-public class PermissionDataOutput
-{
-    /// <summary>
-    /// 租户Id
-    /// </summary>
-    public long? TenantId { get; set; }
-
-    /// <summary>
-    /// 权限Id
-    /// </summary>
-    public long Id { get; set; }
-
-    /// <summary>
-    /// 父级节点
-    /// </summary>
-    public long ParentId { get; set; }
-
-    /// <summary>
-    /// 权限名称
-    /// </summary>
-    public string Label { get; set; }
-
-    /// <summary>
-    /// 权限编码
-    /// </summary>
-    public string Code { get; set; }
-
-    /// <summary>
-    /// 权限类型
-    /// </summary>
-    public PermissionTypeEnum Type { get; set; }
-
-    /// <summary>
-    /// 视图
-    /// </summary>
-    public long? ViewId { get; set; }
-
-    /// <summary>
-    /// 访问地址
-    /// </summary>
-    public string Path { get; set; }
-
-    /// <summary>
-    /// 图标
-    /// </summary>
-    public string Icon { get; set; }
-
-    /// <summary>
-    /// 接口路径
-    /// </summary>
-    public string ApiPath { get; set; }
-
-    /// <summary>
-    /// 可关闭
-    /// </summary>
-    public bool? Closable { get; set; }
-
-    /// <summary>
-    /// 组打开
-    /// </summary>
-    public bool? Opened { get; set; }
-
-    /// <summary>
-    /// 打开新窗口
-    /// </summary>
-    public bool? NewWindow { get; set; }
-
-    /// <summary>
-    /// 链接外显
-    /// </summary>
-    public bool? External { get; set; }
-
-    /// <summary>
-    /// 隐藏
-    /// </summary>
-	public bool Hidden { get; set; }
-
-    /// <summary>
-    /// 排序
-    /// </summary>
-    public int? Sort { get; set; }
-
-    /// <summary>
-    /// 启用
-    /// </summary>
-		public bool Enabled { get; set; }
-
-    /// <summary>
-    /// 描述
-    /// </summary>
-    public string Description { get; set; }
-
-    public List<PermissionDataOutput> Childs { get; set; }
-}

+ 3 - 3
src/platform/ZhonTai.Admin/Domain/Permission/PermissionEntity.cs

@@ -19,9 +19,6 @@ public partial class PermissionEntity : EntityFull
     /// </summary>
     public long ParentId { get; set; }
 
-    [Navigate(nameof(ParentId))]
-    public List<PermissionEntity> Childs { get; set; }
-
     /// <summary>
     /// 权限名称
     /// </summary>
@@ -102,4 +99,7 @@ public partial class PermissionEntity : EntityFull
 
     [Navigate(ManyToMany = typeof(PermissionApiEntity))]
     public ICollection<ApiEntity> Apis { get; set; }
+
+    [Navigate(nameof(ParentId))]
+    public List<PermissionEntity> Childs { get; set; }
 }

+ 0 - 42
src/platform/ZhonTai.Admin/Domain/Role/Dto/RoleDataOutput.cs

@@ -1,42 +0,0 @@
-namespace ZhonTai.Admin.Domain.Role.Dto;
-
-/// <summary>
-/// 角色导出
-/// </summary>
-public partial class RoleDataOutput
-{
-    /// <summary>
-    /// 租户Id
-    /// </summary>
-    public long? TenantId { get; set; }
-
-    /// <summary>
-    /// 用户Id
-    /// </summary>
-    public long Id { get; set; }
-
-    /// <summary>
-    /// 名称
-    /// </summary>
-    public string Name { get; set; }
-
-    /// <summary>
-    /// 编码
-    /// </summary>
-    public string Code { get; set; }
-
-    /// <summary>
-    /// 说明
-    /// </summary>
-    public string Description { get; set; }
-
-    /// <summary>
-    /// 启用
-    /// </summary>
-	public bool Enabled { get; set; }
-
-    /// <summary>
-    /// 排序
-    /// </summary>
-	public int Sort { get; set; }
-}

+ 0 - 47
src/platform/ZhonTai.Admin/Domain/User/Dto/UserDataOutput.cs

@@ -1,47 +0,0 @@
-namespace ZhonTai.Admin.Domain.User.Dto;
-
-/// <summary>
-/// 用户导出
-/// </summary>
-public partial class UserDataOutput
-{
-    /// <summary>
-    /// 租户Id
-    /// </summary>
-    public long? TenantId { get; set; }
-
-    /// <summary>
-    /// 用户Id
-    /// </summary>
-    public long Id { get; set; }
-
-    /// <summary>
-    /// 账号
-    /// </summary>
-    public string UserName { get; set; }
-
-    /// <summary>
-    /// 密码
-    /// </summary>
-    public string Password { get; set; }
-
-    /// <summary>
-    /// 昵称
-    /// </summary>
-    public string NickName { get; set; }
-
-    /// <summary>
-    /// 头像
-    /// </summary>
-    public string Avatar { get; set; }
-
-    /// <summary>
-    /// 状态
-    /// </summary>
-    public int Status { get; set; }
-
-    /// <summary>
-    /// 备注
-    /// </summary>
-    public string Remark { get; set; }
-}

+ 0 - 48
src/platform/ZhonTai.Admin/Domain/View/Dto/ViewDataOutput.cs

@@ -1,48 +0,0 @@
-using System.Collections.Generic;
-
-namespace ZhonTai.Admin.Domain.View.Dto;
-
-public class ViewDataOutput
-{
-    /// <summary>
-    /// 租户Id
-    /// </summary>
-    public long? TenantId { get; set; }
-
-    /// <summary>
-    /// 视图Id
-    /// </summary>
-    public long Id { get; set; }
-
-    /// <summary>
-    /// 视图父级
-    /// </summary>
-    public long? ParentId { get; set; }
-
-    /// <summary>
-    /// 视图命名
-    /// </summary>
-    public string Name { get; set; }
-
-    /// <summary>
-    /// 视图名称
-    /// </summary>
-    public string Label { get; set; }
-
-    /// <summary>
-    /// 视图路径
-    /// </summary>
-    public string Path { get; set; }
-
-    /// <summary>
-    /// 启用
-    /// </summary>
-    public bool Enabled { get; set; }
-
-    /// <summary>
-    /// 说明
-    /// </summary>
-    public string Description { get; set; }
-
-    public List<ViewDataOutput> Childs { get; set; }
-}

+ 3 - 3
src/platform/ZhonTai.Admin/Domain/View/ViewEntity.cs

@@ -17,9 +17,6 @@ public partial class ViewEntity : EntityFull
     /// </summary>
 	public long ParentId { get; set; }
 
-    [Navigate(nameof(ParentId))]
-    public List<ViewEntity> Childs { get; set; }
-
     /// <summary>
     /// 视图命名
     /// </summary>
@@ -58,4 +55,7 @@ public partial class ViewEntity : EntityFull
     /// 排序
     /// </summary>
     public int Sort { get; set; }
+
+    [Navigate(nameof(ParentId))]
+    public List<ViewEntity> Childs { get; set; }
 }

+ 1 - 1
src/platform/ZhonTai.Admin/Repositories/Api/ApiRepository.cs

@@ -1,4 +1,4 @@
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Db.Transaction;
 using ZhonTai.Admin.Core.Repositories;
 using ZhonTai.Admin.Domain.Api;
 

+ 95 - 38
src/platform/ZhonTai.Admin/Repositories/CustomGenerateData.cs

@@ -4,17 +4,10 @@ using System.Threading.Tasks;
 using ZhonTai.Admin.Core.Db;
 using ZhonTai.Admin.Domain.DictionaryType;
 using ZhonTai.Admin.Domain.Dictionary;
-using ZhonTai.Admin.Domain.DictionaryType.Dto;
-using ZhonTai.Admin.Domain.Dictionary.Dto;
 using ZhonTai.Admin.Domain.Api;
-using ZhonTai.Admin.Domain.Api.Dto;
-using ZhonTai.Admin.Domain.View.Dto;
-using ZhonTai.Admin.Domain.Permission.Dto;
 using ZhonTai.Admin.Domain.Permission;
 using ZhonTai.Admin.Domain.User;
-using ZhonTai.Admin.Domain.User.Dto;
 using ZhonTai.Admin.Domain.Role;
-using ZhonTai.Admin.Domain.Role.Dto;
 using ZhonTai.Admin.Domain.UserRole;
 using ZhonTai.Admin.Domain.RolePermission;
 using ZhonTai.Admin.Domain.Tenant;
@@ -23,10 +16,10 @@ using ZhonTai.Admin.Domain.PermissionApi;
 using ZhonTai.Admin.Domain.View;
 using ZhonTai.Admin.Core.Configs;
 using ZhonTai.Common.Extensions;
-using ZhonTai.Admin.Domain.Organization.Output;
 using ZhonTai.Admin.Domain.Employee;
 using ZhonTai.Admin.Domain.Organization;
-using ZhonTai.Admin.Domain.Employee.Output;
+using ZhonTai.Admin.Core.Db.Data;
+using FreeSql;
 
 namespace ZhonTai.Admin.Repositories;
 
@@ -39,14 +32,38 @@ public class CustomGenerateData : GenerateData, IGenerateData
         //admin
         #region 数据字典
 
-        var dictionaryTypes = await db.Queryable<DictionaryTypeEntity>().ToListAsync<DictionaryTypeDataOutput>();
-        var dictionaries = await db.Queryable<DictionaryEntity>().ToListAsync<DictionaryDataOutput>();
+        var dictionaryTypes = db.Queryable<DictionaryTypeEntity>().ToListIgnore(a => new
+        {
+            a.CreatedTime,
+            a.CreatedUserId,
+            a.CreatedUserName,
+            a.ModifiedTime,
+            a.ModifiedUserId,
+            a.ModifiedUserName
+        });
 
+        var dictionaries = db.Queryable<DictionaryEntity>().ToListIgnore(a => new
+        {
+            a.CreatedTime,
+            a.CreatedUserId,
+            a.CreatedUserName,
+            a.ModifiedTime,
+            a.ModifiedUserId,
+            a.ModifiedUserName
+        });
         #endregion
 
         #region 接口
 
-        var apis = await db.Queryable<ApiEntity>().ToListAsync<ApiDataOutput>();
+        var apis = db.Queryable<ApiEntity>().ToListIgnore(a => new
+        {
+            a.CreatedTime,
+            a.CreatedUserId,
+            a.CreatedUserName,
+            a.ModifiedTime,
+            a.ModifiedUserId,
+            a.ModifiedUserName
+        });
         var apiTree = apis.Clone().ToTree((r, c) =>
         {
             return c.ParentId == 0;
@@ -57,7 +74,7 @@ public class CustomGenerateData : GenerateData, IGenerateData
         },
         (r, datalist) =>
         {
-            r.Childs ??= new List<ApiDataOutput>();
+            r.Childs ??= new List<ApiEntity>();
             r.Childs.AddRange(datalist);
         });
 
@@ -65,7 +82,15 @@ public class CustomGenerateData : GenerateData, IGenerateData
 
         #region 视图
 
-        var views = await db.Queryable<ViewEntity>().ToListAsync<ViewDataOutput>();
+        var views = db.Queryable<ViewEntity>().ToListIgnore(a => new
+        {
+            a.CreatedTime,
+            a.CreatedUserId,
+            a.CreatedUserName,
+            a.ModifiedTime,
+            a.ModifiedUserId,
+            a.ModifiedUserName
+        });
         var viewTree = views.Clone().ToTree((r, c) =>
         {
             return c.ParentId == 0;
@@ -76,7 +101,7 @@ public class CustomGenerateData : GenerateData, IGenerateData
        },
        (r, datalist) =>
        {
-           r.Childs ??= new List<ViewDataOutput>();
+           r.Childs ??= new List<ViewEntity>();
            r.Childs.AddRange(datalist);
        });
 
@@ -84,7 +109,15 @@ public class CustomGenerateData : GenerateData, IGenerateData
 
         #region 权限
 
-        var permissions = await db.Queryable<PermissionEntity>().ToListAsync<PermissionDataOutput>();
+        var permissions = db.Queryable<PermissionEntity>().ToListIgnore(a => new
+        {
+            a.CreatedTime,
+            a.CreatedUserId,
+            a.CreatedUserName,
+            a.ModifiedTime,
+            a.ModifiedUserId,
+            a.ModifiedUserName
+        });
         var permissionTree = permissions.Clone().ToTree((r, c) =>
         {
             return c.ParentId == 0;
@@ -95,7 +128,7 @@ public class CustomGenerateData : GenerateData, IGenerateData
        },
        (r, datalist) =>
        {
-           r.Childs ??= new List<PermissionDataOutput>();
+           r.Childs ??= new List<PermissionEntity>();
            r.Childs.AddRange(datalist);
        });
 
@@ -103,13 +136,29 @@ public class CustomGenerateData : GenerateData, IGenerateData
 
         #region 用户
 
-        var users = await db.Queryable<UserEntity>().ToListAsync<UserDataOutput>();
+        var users = db.Queryable<UserEntity>().ToListIgnore(a => new
+        {
+            a.CreatedTime,
+            a.CreatedUserId,
+            a.CreatedUserName,
+            a.ModifiedTime,
+            a.ModifiedUserId,
+            a.ModifiedUserName
+        });
 
         #endregion
 
         #region 角色
 
-        var roles = await db.Queryable<RoleEntity>().ToListAsync<RoleDataOutput>();
+        var roles = db.Queryable<RoleEntity>().ToListIgnore(a => new
+        {
+            a.CreatedTime,
+            a.CreatedUserId,
+            a.CreatedUserName,
+            a.ModifiedTime,
+            a.ModifiedUserId,
+            a.ModifiedUserName
+        });
 
         #endregion
 
@@ -137,22 +186,14 @@ public class CustomGenerateData : GenerateData, IGenerateData
 
         #region 租户
 
-        var tenants = await db.Queryable<TenantEntity>().ToListAsync(a => new
+        var tenants = db.Queryable<TenantEntity>().ToListIgnore(a => new
         {
-            a.Id,
-            a.UserId,
-            a.RoleId,
-            a.Name,
-            a.Code,
-            a.RealName,
-            a.Phone,
-            a.Email,
-            a.TenantType,
-            a.DataIsolationType,
-            a.DbType,
-            a.ConnectionString,
-            a.IdleTime,
-            a.Description
+            a.CreatedTime,
+            a.CreatedUserId,
+            a.CreatedUserName,
+            a.ModifiedTime,
+            a.ModifiedUserId,
+            a.ModifiedUserName
         });
 
         #endregion
@@ -180,7 +221,15 @@ public class CustomGenerateData : GenerateData, IGenerateData
         //人事
         #region 部门
 
-        var organizations = await db.Queryable<OrganizationEntity>().ToListAsync<OrganizationDataOutput>();
+        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;
@@ -191,7 +240,7 @@ public class CustomGenerateData : GenerateData, IGenerateData
         },
         (r, datalist) =>
         {
-            r.Childs ??= new List<OrganizationDataOutput>();
+            r.Childs ??= new List<OrganizationEntity>();
             r.Childs.AddRange(datalist);
         });
 
@@ -199,7 +248,15 @@ public class CustomGenerateData : GenerateData, IGenerateData
 
         #region 员工
 
-        var employees = await db.Queryable<EmployeeEntity>().ToListAsync<EmployeeDataOutput>();
+        var employees = db.Queryable<EmployeeEntity>().ToListIgnore(a => new
+        {
+            a.CreatedTime,
+            a.CreatedUserId,
+            a.CreatedUserName,
+            a.ModifiedTime,
+            a.ModifiedUserId,
+            a.ModifiedUserName
+        });
 
         #endregion
 
@@ -234,7 +291,7 @@ public class CustomGenerateData : GenerateData, IGenerateData
             },
             (r, datalist) =>
             {
-                r.Childs ??= new List<OrganizationDataOutput>();
+                r.Childs ??= new List<OrganizationEntity>();
                 r.Childs.AddRange(datalist);
             });
             SaveDataToJsonFile<OrganizationEntity>(organizationTree);

+ 1 - 1
src/platform/ZhonTai.Admin/Repositories/CustomSyncData.cs

@@ -1,5 +1,4 @@
 using System.Threading.Tasks;
-using ZhonTai.Admin.Core.Db;
 using ZhonTai.Admin.Domain.DictionaryType;
 using ZhonTai.Admin.Domain.Dictionary;
 using ZhonTai.Admin.Domain.Api;
@@ -15,6 +14,7 @@ using ZhonTai.Admin.Domain.View;
 using ZhonTai.Admin.Core.Configs;
 using ZhonTai.Admin.Domain.Organization;
 using ZhonTai.Admin.Domain.Employee;
+using ZhonTai.Admin.Core.Db.Data;
 
 namespace ZhonTai.Admin.Repositories;
 

+ 1 - 1
src/platform/ZhonTai.Admin/Repositories/Dictionary/DictionaryRepository.cs

@@ -1,4 +1,4 @@
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Db.Transaction;
 using ZhonTai.Admin.Core.Repositories;
 using ZhonTai.Admin.Domain.Dictionary;
 

+ 1 - 1
src/platform/ZhonTai.Admin/Repositories/DictionaryType/DictionaryTypeRepository.cs

@@ -1,4 +1,4 @@
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Db.Transaction;
 using ZhonTai.Admin.Core.Repositories;
 using ZhonTai.Admin.Domain.DictionaryType;
 

+ 1 - 1
src/platform/ZhonTai.Admin/Repositories/Document/DocumentRepository.cs

@@ -1,4 +1,4 @@
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Db.Transaction;
 using ZhonTai.Admin.Core.Repositories;
 using ZhonTai.Admin.Domain.Document;
 

+ 1 - 1
src/platform/ZhonTai.Admin/Repositories/DocumentImage/DocumentImageRepository.cs

@@ -1,4 +1,4 @@
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Db.Transaction;
 using ZhonTai.Admin.Core.Repositories;
 using ZhonTai.Admin.Domain.DocumentImage;
 

+ 1 - 1
src/platform/ZhonTai.Admin/Repositories/Employee/EmployeeRepository.cs

@@ -1,4 +1,4 @@
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Db.Transaction;
 using ZhonTai.Admin.Core.Repositories;
 using ZhonTai.Admin.Domain.Employee;
 

+ 1 - 1
src/platform/ZhonTai.Admin/Repositories/LoginLog/LoginLogRepository.cs

@@ -1,4 +1,4 @@
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Db.Transaction;
 using ZhonTai.Admin.Core.Repositories;
 using ZhonTai.Admin.Domain.LoginLog;
 

+ 1 - 1
src/platform/ZhonTai.Admin/Repositories/OprationLog/OprationLogRepository.cs

@@ -1,4 +1,4 @@
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Db.Transaction;
 using ZhonTai.Admin.Core.Repositories;
 using ZhonTai.Admin.Domain.OprationLog;
 

+ 1 - 1
src/platform/ZhonTai.Admin/Repositories/Organization/OrganizationRepository.cs

@@ -1,4 +1,4 @@
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Db.Transaction;
 using ZhonTai.Admin.Core.Repositories;
 using ZhonTai.Admin.Domain.Organization;
 

+ 1 - 1
src/platform/ZhonTai.Admin/Repositories/Permission/PermissionRepository.cs

@@ -1,4 +1,4 @@
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Db.Transaction;
 using ZhonTai.Admin.Core.Repositories;
 using ZhonTai.Admin.Domain.Permission;
 

+ 1 - 1
src/platform/ZhonTai.Admin/Repositories/Role/RoleRepository.cs

@@ -1,4 +1,4 @@
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Db.Transaction;
 using ZhonTai.Admin.Core.Repositories;
 using ZhonTai.Admin.Domain.Role;
 

+ 1 - 1
src/platform/ZhonTai.Admin/Repositories/Tenant/TenantRepository.cs

@@ -1,4 +1,4 @@
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Db.Transaction;
 using ZhonTai.Admin.Core.Repositories;
 using ZhonTai.Admin.Domain.Tenant;
 

+ 1 - 1
src/platform/ZhonTai.Admin/Repositories/User/UserRepository.cs

@@ -1,4 +1,4 @@
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Db.Transaction;
 using ZhonTai.Admin.Core.Repositories;
 using ZhonTai.Admin.Domain.User;
 

+ 1 - 1
src/platform/ZhonTai.Admin/Repositories/View/ViewRepositoryRepository.cs

@@ -1,4 +1,4 @@
-using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Db.Transaction;
 using ZhonTai.Admin.Core.Repositories;
 using ZhonTai.Admin.Domain.View;
 

+ 5 - 0
src/platform/ZhonTai.Admin/Services/Role/RoleService.cs

@@ -138,6 +138,11 @@ public class RoleService : BaseService, IRoleService, IDynamicApi
         return ResultOutput.Ok();
     }
 
+    /// <summary>
+    /// 添加
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
     public async Task<IResultOutput> AddAsync(RoleAddInput input)
     {
         if (await _roleRepository.Select.AnyAsync(a => a.ParentId == input.ParentId && a.Name == input.Name))

+ 7 - 1
src/platform/ZhonTai.Admin/Services/Tenant/TenantService.cs

@@ -98,7 +98,13 @@ public class TenantService : BaseService, ITenantService, IDynamicApi
 
         //添加用户
         var pwd = MD5Encrypt.Encrypt32("111111");
-        var user = new UserEntity { TenantId = tenantId, UserName = input.Phone, NickName = input.RealName, Password = pwd, Status = 0 };
+        var user = new UserEntity { 
+            TenantId = tenantId, 
+            UserName = input.Phone, 
+            NickName = input.RealName, 
+            Password = pwd, 
+            Status = 0 
+        };
         await _userRepository.InsertAsync(user);
 
         //添加角色

+ 0 - 1
src/platform/ZhonTai.Admin/Services/User/IUserService.cs

@@ -1,7 +1,6 @@
 using System.Collections.Generic;
 using System.Threading.Tasks;
 using ZhonTai.Admin.Core.Dto;
-using ZhonTai.Admin.Domain.User.Dto;
 using ZhonTai.Admin.Services.Auth.Dto;
 using ZhonTai.Admin.Services.User.Dto;
 

+ 0 - 1
src/platform/ZhonTai.Admin/Services/User/UserService.cs

@@ -40,7 +40,6 @@ public class UserService : BaseService, IUserService, IDynamicApi
     private IRepositoryBase<UserRoleEntity> _userRoleRepository => LazyGetRequiredService<IRepositoryBase<UserRoleEntity>>();
     private ITenantRepository _tenantRepository => LazyGetRequiredService<ITenantRepository>();
     private IApiRepository _apiRepository => LazyGetRequiredService<IApiRepository>();
-    private IRoleRepository _roleRepository => LazyGetRequiredService<IRoleRepository>();
     private IEmployeeRepository _employeeRepository => LazyGetRequiredService<IEmployeeRepository>();
     private IRepositoryBase<EmployeeOrganizationEntity> _employeeOrganizationRepository => LazyGetRequiredService<IRepositoryBase<EmployeeOrganizationEntity>>();
 

+ 7 - 7
src/platform/ZhonTai.Admin/ZhonTai.Admin.csproj

@@ -16,9 +16,9 @@
 		<PackageReference Include="CSRedisCore" Version="3.8.669" />
 		<PackageReference Include="Caching.CSRedis" Version="3.8.669" />
 		<PackageReference Include="FluentValidation.AspNetCore" Version="11.2.2" />
-		<PackageReference Include="FreeSql" Version="3.2.669" />
+		<PackageReference Include="FreeSql" Version="3.2.680" />
 		<PackageReference Include="FreeSql.Cloud" Version="1.6.3" />
-		<PackageReference Include="FreeSql.Repository" Version="3.2.669" />
+		<PackageReference Include="FreeSql.Repository" Version="3.2.680" />
 		<PackageReference Include="FreeScheduler" Version="1.0.9" />
 		<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="3.0.1" />
 		<PackageReference Include="Mapster" Version="7.3.0" />
@@ -37,11 +37,11 @@
 	</ItemGroup>
 
 	<ItemGroup Condition="'$(Configuration)'=='Debug'">
-		<PackageReference Include="FreeSql.Provider.MySql" Version="3.2.669" />
-		<PackageReference Include="FreeSql.Provider.SqlServer" Version="3.2.669" />
-		<PackageReference Include="FreeSql.Provider.PostgreSQL" Version="3.2.669" />
-		<PackageReference Include="FreeSql.Provider.Oracle" Version="3.2.669" />
-		<PackageReference Include="FreeSql.Provider.Sqlite" Version="3.2.669" />
+		<PackageReference Include="FreeSql.Provider.MySql" Version="3.2.680" />
+		<PackageReference Include="FreeSql.Provider.SqlServer" Version="3.2.680" />
+		<PackageReference Include="FreeSql.Provider.PostgreSQL" Version="3.2.680" />
+		<PackageReference Include="FreeSql.Provider.Oracle" Version="3.2.680" />
+		<PackageReference Include="FreeSql.Provider.Sqlite" Version="3.2.680" />
 	</ItemGroup>
 
 	<ItemGroup>

+ 46 - 509
src/platform/ZhonTai.Admin/ZhonTai.Admin.xml

@@ -625,16 +625,50 @@
             租户信息 admin:tenant:info:租户主键
             </summary>
         </member>
+        <member name="T:ZhonTai.Admin.Core.Consts.DbKeys">
+            <summary>
+            数据库键名
+            </summary>
+        </member>
+        <member name="F:ZhonTai.Admin.Core.Consts.DbKeys.MasterDbKey">
+            <summary>
+            主库
+            </summary>
+        </member>
         <member name="T:ZhonTai.Admin.Core.Conventions.ApiGroupConvention">
             <summary>
             Api分组约定
             </summary>
         </member>
-        <member name="T:ZhonTai.Admin.Core.Dbs.MySqlDb">
+        <member name="T:ZhonTai.Admin.Core.Db.Data.IGenerateData">
+            <summary>
+            生成数据接口
+            </summary>
+        </member>
+        <member name="T:ZhonTai.Admin.Core.Db.Data.ISyncData">
             <summary>
-            多数据库命名
+            同步数据接口
             </summary>
         </member>
+        <member name="M:ZhonTai.Admin.Core.Db.Data.SyncData.CheckIdentity``1">
+            <summary>
+            检查实体属性是否为自增长
+            </summary>
+            <typeparam name="T"></typeparam>
+            <returns></returns>
+        </member>
+        <member name="M:ZhonTai.Admin.Core.Db.Data.SyncData.InitDataAsync``1(IFreeSql,FreeSql.IUnitOfWork,System.Data.Common.DbTransaction,``0[],ZhonTai.Admin.Core.Configs.DbConfig)">
+            <summary>
+            初始化数据表数据
+            </summary>
+            <typeparam name="T"></typeparam>
+            <param name="db"></param>
+            <param name="unitOfWork"></param>
+            <param name="tran"></param>
+            <param name="data"></param>
+            <param name="dbConfig"></param>
+            <returns></returns>
+        </member>
         <member name="F:ZhonTai.Admin.Core.Db.DbHelper.TimeOffset">
             <summary>
             偏移时间
@@ -735,48 +769,19 @@
             <param name="tenantId"></param>
             <returns></returns>
         </member>
-        <member name="T:ZhonTai.Admin.Core.Db.IGenerateData">
-            <summary>
-            生成数据接口
-            </summary>
-        </member>
-        <member name="T:ZhonTai.Admin.Core.Db.ISyncData">
-            <summary>
-            同步数据接口
-            </summary>
-        </member>
-        <member name="M:ZhonTai.Admin.Core.Db.SyncData.CheckIdentity``1">
-            <summary>
-            检查实体属性是否为自增长
-            </summary>
-            <typeparam name="T"></typeparam>
-            <returns></returns>
-        </member>
-        <member name="M:ZhonTai.Admin.Core.Db.SyncData.InitDataAsync``1(IFreeSql,FreeSql.IUnitOfWork,System.Data.Common.DbTransaction,``0[],ZhonTai.Admin.Core.Configs.DbConfig)">
-            <summary>
-            初始化数据表数据
-            </summary>
-            <typeparam name="T"></typeparam>
-            <param name="db"></param>
-            <param name="unitOfWork"></param>
-            <param name="tran"></param>
-            <param name="data"></param>
-            <param name="dbConfig"></param>
-            <returns></returns>
-        </member>
-        <member name="M:ZhonTai.Admin.Core.Db.TransactionAsyncInterceptor.InterceptSynchronous(Castle.DynamicProxy.IInvocation)">
+        <member name="M:ZhonTai.Admin.Core.Db.Transaction.TransactionAsyncInterceptor.InterceptSynchronous(Castle.DynamicProxy.IInvocation)">
             <summary>
             拦截同步执行的方法
             </summary>
             <param name="invocation"></param>
         </member>
-        <member name="M:ZhonTai.Admin.Core.Db.TransactionAsyncInterceptor.InterceptAsynchronous(Castle.DynamicProxy.IInvocation)">
+        <member name="M:ZhonTai.Admin.Core.Db.Transaction.TransactionAsyncInterceptor.InterceptAsynchronous(Castle.DynamicProxy.IInvocation)">
             <summary>
             拦截返回结果
             </summary>
             <param name="invocation"></param>
         </member>
-        <member name="M:ZhonTai.Admin.Core.Db.TransactionAsyncInterceptor.InterceptAsynchronous``1(Castle.DynamicProxy.IInvocation)">
+        <member name="M:ZhonTai.Admin.Core.Db.Transaction.TransactionAsyncInterceptor.InterceptAsynchronous``1(Castle.DynamicProxy.IInvocation)">
             <summary>
             拦截返回结果
             </summary>
@@ -1510,56 +1515,6 @@
             启用
             </summary>
         </member>
-        <member name="P:ZhonTai.Admin.Domain.Api.Dto.ApiDataOutput.TenantId">
-            <summary>
-            租户Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Api.Dto.ApiDataOutput.Id">
-            <summary>
-            接口Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Api.Dto.ApiDataOutput.ParentId">
-            <summary>
-            父级Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Api.Dto.ApiDataOutput.Name">
-            <summary>
-            接口命名
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Api.Dto.ApiDataOutput.Label">
-            <summary>
-            接口名称
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Api.Dto.ApiDataOutput.Path">
-            <summary>
-            接口地址
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Api.Dto.ApiDataOutput.HttpMethods">
-            <summary>
-            接口提交方法
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Api.Dto.ApiDataOutput.Description">
-            <summary>
-            说明
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Api.Dto.ApiDataOutput.Sort">
-            <summary>
-            排序
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Api.Dto.ApiDataOutput.Enabled">
-            <summary>
-            启用
-            </summary>
-        </member>
         <member name="P:ZhonTai.Admin.Domain.Api.Dto.ApiGetPageDto.Label">
             <summary>
             接口名称
@@ -1610,46 +1565,6 @@
             排序
             </summary>
         </member>
-        <member name="T:ZhonTai.Admin.Domain.DictionaryType.Dto.DictionaryTypeDataOutput">
-            <summary>
-            数据字典类型导出
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.DictionaryType.Dto.DictionaryTypeDataOutput.TenantId">
-            <summary>
-            租户Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.DictionaryType.Dto.DictionaryTypeDataOutput.Id">
-            <summary>
-            字典类型Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.DictionaryType.Dto.DictionaryTypeDataOutput.Name">
-            <summary>
-            字典名称
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.DictionaryType.Dto.DictionaryTypeDataOutput.Code">
-            <summary>
-            字典编码
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.DictionaryType.Dto.DictionaryTypeDataOutput.Description">
-            <summary>
-            描述
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.DictionaryType.Dto.DictionaryTypeDataOutput.Enabled">
-            <summary>
-            启用
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.DictionaryType.Dto.DictionaryTypeDataOutput.Sort">
-            <summary>
-            排序
-            </summary>
-        </member>
         <member name="P:ZhonTai.Admin.Domain.DictionaryType.Dto.DictionaryTypeGetPageDto.Name">
             <summary>
             字典名称
@@ -1705,56 +1620,6 @@
             排序
             </summary>
         </member>
-        <member name="T:ZhonTai.Admin.Domain.Dictionary.Dto.DictionaryDataOutput">
-            <summary>
-            数据字典导出
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Dictionary.Dto.DictionaryDataOutput.TenantId">
-            <summary>
-            租户Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Dictionary.Dto.DictionaryDataOutput.Id">
-            <summary>
-            字典Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Dictionary.Dto.DictionaryDataOutput.DictionaryTypeId">
-            <summary>
-            字典类型Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Dictionary.Dto.DictionaryDataOutput.Name">
-            <summary>
-            字典名称
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Dictionary.Dto.DictionaryDataOutput.Code">
-            <summary>
-            字典编码
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Dictionary.Dto.DictionaryDataOutput.Value">
-            <summary>
-            字典值
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Dictionary.Dto.DictionaryDataOutput.Description">
-            <summary>
-            描述
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Dictionary.Dto.DictionaryDataOutput.Enabled">
-            <summary>
-            启用
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Dictionary.Dto.DictionaryDataOutput.Sort">
-            <summary>
-            排序
-            </summary>
-        </member>
         <member name="P:ZhonTai.Admin.Domain.Dictionary.Dto.DictionaryGetPageDto.DictionaryTypeId">
             <summary>
             字典类型Id
@@ -1970,76 +1835,6 @@
             版本
             </summary>
         </member>
-        <member name="T:ZhonTai.Admin.Domain.Employee.Output.EmployeeDataOutput">
-            <summary>
-            员工数据导出
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Employee.Output.EmployeeDataOutput.TenantId">
-            <summary>
-            租户Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Employee.Output.EmployeeDataOutput.Id">
-            <summary>
-            员工Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Employee.Output.EmployeeDataOutput.UserId">
-            <summary>
-            用户Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Employee.Output.EmployeeDataOutput.Name">
-            <summary>
-            姓名
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Employee.Output.EmployeeDataOutput.NickName">
-            <summary>
-            昵称
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Employee.Output.EmployeeDataOutput.Sex">
-            <summary>
-            性别
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Employee.Output.EmployeeDataOutput.JobNumber">
-            <summary>
-            工号
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Employee.Output.EmployeeDataOutput.OrganizationId">
-            <summary>
-            主属部门Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Employee.Output.EmployeeDataOutput.PrimaryEmployeeId">
-            <summary>
-            主管Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Employee.Output.EmployeeDataOutput.Position">
-            <summary>
-            职位
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Employee.Output.EmployeeDataOutput.Phone">
-            <summary>
-            手机号
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Employee.Output.EmployeeDataOutput.Email">
-            <summary>
-            邮箱
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Employee.Output.EmployeeDataOutput.HireDate">
-            <summary>
-            入职时间
-            </summary>
-        </member>
         <member name="P:ZhonTai.Admin.Domain.Employee.Output.EmployeeGetOutput.OrganizationName">
             <summary>
             主属部门
@@ -2260,56 +2055,6 @@
             排序
             </summary>
         </member>
-        <member name="T:ZhonTai.Admin.Domain.Organization.Output.OrganizationDataOutput">
-            <summary>
-            组织机构导出
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Organization.Output.OrganizationDataOutput.TenantId">
-            <summary>
-            租户Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Organization.Output.OrganizationDataOutput.Id">
-            <summary>
-            组织机构Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Organization.Output.OrganizationDataOutput.ParentId">
-            <summary>
-            上级组织机构
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Organization.Output.OrganizationDataOutput.Name">
-            <summary>
-            名称
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Organization.Output.OrganizationDataOutput.Code">
-            <summary>
-            编码
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Organization.Output.OrganizationDataOutput.Value">
-            <summary>
-            值
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Organization.Output.OrganizationDataOutput.Description">
-            <summary>
-            描述
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Organization.Output.OrganizationDataOutput.Enabled">
-            <summary>
-            启用
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Organization.Output.OrganizationDataOutput.Sort">
-            <summary>
-            排序
-            </summary>
-        </member>
         <member name="T:ZhonTai.Admin.Domain.PermissionApi.PermissionApiEntity">
             <summary>
             权限接口
@@ -2335,96 +2080,6 @@
             接口
             </summary>
         </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.TenantId">
-            <summary>
-            租户Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.Id">
-            <summary>
-            权限Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.ParentId">
-            <summary>
-            父级节点
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.Label">
-            <summary>
-            权限名称
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.Code">
-            <summary>
-            权限编码
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.Type">
-            <summary>
-            权限类型
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.ViewId">
-            <summary>
-            视图
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.Path">
-            <summary>
-            访问地址
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.Icon">
-            <summary>
-            图标
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.ApiPath">
-            <summary>
-            接口路径
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.Closable">
-            <summary>
-            可关闭
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.Opened">
-            <summary>
-            组打开
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.NewWindow">
-            <summary>
-            打开新窗口
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.External">
-            <summary>
-            链接外显
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.Hidden">
-            <summary>
-            隐藏
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.Sort">
-            <summary>
-            排序
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.Enabled">
-            <summary>
-            启用
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Permission.Dto.PermissionDataOutput.Description">
-            <summary>
-            描述
-            </summary>
-        </member>
         <member name="T:ZhonTai.Admin.Domain.Permission.PermissionEntity">
             <summary>
             权限
@@ -2550,46 +2205,6 @@
             权限
             </summary>
         </member>
-        <member name="T:ZhonTai.Admin.Domain.Role.Dto.RoleDataOutput">
-            <summary>
-            角色导出
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Role.Dto.RoleDataOutput.TenantId">
-            <summary>
-            租户Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Role.Dto.RoleDataOutput.Id">
-            <summary>
-            用户Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Role.Dto.RoleDataOutput.Name">
-            <summary>
-            名称
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Role.Dto.RoleDataOutput.Code">
-            <summary>
-            编码
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Role.Dto.RoleDataOutput.Description">
-            <summary>
-            说明
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Role.Dto.RoleDataOutput.Enabled">
-            <summary>
-            启用
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.Role.Dto.RoleDataOutput.Sort">
-            <summary>
-            排序
-            </summary>
-        </member>
         <member name="P:ZhonTai.Admin.Domain.Role.Dto.RoleGetListInput.Name">
             <summary>
             名称
@@ -2810,51 +2425,6 @@
             角色Id
             </summary>
         </member>
-        <member name="T:ZhonTai.Admin.Domain.User.Dto.UserDataOutput">
-            <summary>
-            用户导出
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.User.Dto.UserDataOutput.TenantId">
-            <summary>
-            租户Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.User.Dto.UserDataOutput.Id">
-            <summary>
-            用户Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.User.Dto.UserDataOutput.UserName">
-            <summary>
-            账号
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.User.Dto.UserDataOutput.Password">
-            <summary>
-            密码
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.User.Dto.UserDataOutput.NickName">
-            <summary>
-            昵称
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.User.Dto.UserDataOutput.Avatar">
-            <summary>
-            头像
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.User.Dto.UserDataOutput.Status">
-            <summary>
-            状态
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.User.Dto.UserDataOutput.Remark">
-            <summary>
-            备注
-            </summary>
-        </member>
         <member name="T:ZhonTai.Admin.Domain.User.UserEntity">
             <summary>
             用户
@@ -2975,46 +2545,6 @@
             版本
             </summary>
         </member>
-        <member name="P:ZhonTai.Admin.Domain.View.Dto.ViewDataOutput.TenantId">
-            <summary>
-            租户Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.View.Dto.ViewDataOutput.Id">
-            <summary>
-            视图Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.View.Dto.ViewDataOutput.ParentId">
-            <summary>
-            视图父级
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.View.Dto.ViewDataOutput.Name">
-            <summary>
-            视图命名
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.View.Dto.ViewDataOutput.Label">
-            <summary>
-            视图名称
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.View.Dto.ViewDataOutput.Path">
-            <summary>
-            视图路径
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.View.Dto.ViewDataOutput.Enabled">
-            <summary>
-            启用
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.View.Dto.ViewDataOutput.Description">
-            <summary>
-            说明
-            </summary>
-        </member>
         <member name="P:ZhonTai.Admin.Domain.View.Dto.ViewGetPageDto.Label">
             <summary>
             视图名称
@@ -5311,6 +4841,13 @@
             <param name="input"></param>
             <returns></returns>
         </member>
+        <member name="M:ZhonTai.Admin.Services.Role.RoleService.AddAsync(ZhonTai.Admin.Services.Role.Dto.RoleAddInput)">
+            <summary>
+            添加
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
         <member name="M:ZhonTai.Admin.Services.Role.RoleService.UpdateAsync(ZhonTai.Admin.Services.Role.Dto.RoleUpdateInput)">
             <summary>
             修改

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů