Browse Source

操作日志接口数据改为数据库接口表中读取
新增CustomSyncData同步数据和CustomGenerateData生成数据
将AutoMapper数据映射更改为Mapster
确保项目结构调整后所有api都能正常工作

zhontai 3 years ago
parent
commit
dff0fe2d21
100 changed files with 6670 additions and 1100 deletions
  1. 16 2
      ZhonTai.sln
  2. 2 2
      src/hosts/ZhonTai.Plate.Admin.Host/Configs/dbconfig.json
  3. 1282 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_api.json
  4. 20 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_dictionary.json
  5. 22 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_dictionary.tenant.json
  6. 9 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_dictionary_type.json
  7. 10 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_dictionary_type.tenant.json
  8. 1298 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_permission.json
  9. 537 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_permission_api.json
  10. 16 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_role.json
  11. 25 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_role.tenant.json
  12. 1367 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_role_permission.json
  13. 34 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_tenant.json
  14. 1022 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_tenant_permission.json
  15. 16 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_user.json
  16. 25 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_user.tenant.json
  17. 17 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_user_role.json
  18. 200 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_view.json
  19. 10 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/pe_employee.json
  20. 11 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/pe_employee.tenant.json
  21. 23 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/pe_organization.json
  22. 25 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/pe_organization.tenant.json
  23. 9 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/pe_position.json
  24. 10 0
      src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/pe_position.tenant.json
  25. 1 1
      src/hosts/ZhonTai.Plate.Admin.Host/Program.cs
  26. 20 2
      src/hosts/ZhonTai.Plate.Admin.Host/Startup.cs
  27. 5 1
      src/hosts/ZhonTai.Plate.Admin.Host/ZhonTai.Plate.Admin.Host.csproj
  28. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Abstractions/LogAbstract.cs
  29. 38 233
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/DbHelper.cs
  30. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/DefaultRepositoryBase.cs
  31. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/FreeSqlRepositoryExtensions.cs
  32. 28 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/GenerateData.cs
  33. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/IdleBusExtesions.cs
  34. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/MyUnitOfWorkManager.cs
  35. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/RepositoryBase.cs
  36. 124 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/SyncData.cs
  37. 1 2
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/TransactionAsyncInterceptor.cs
  38. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/TransactionInterceptor.cs
  39. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Dictionary/DictionaryEntity.cs
  40. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/DictionaryType/DictionaryTypeEntity.cs
  41. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Document/DocumentEntity.cs
  42. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Role/RoleEntity.cs
  43. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/User/UserEntity.cs
  44. 6 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/ZhonTai.Plate.Admin.Domain.csproj
  45. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Aop/AopHelper.cs
  46. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Attributes/LoginAttribute.cs
  47. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Attributes/NoOprationLogAttribute.cs
  48. 3 3
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Attributes/ValidateInputAttribute.cs
  49. 4 4
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Attributes/ValidatePermissionAttribute.cs
  50. 3 3
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Attributes/VersionRouteAttribute.cs
  51. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Auth/IPermissionHandler.cs
  52. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Auth/PermissionHandler.cs
  53. 4 4
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Auth/ResponseAuthenticationHandler.cs
  54. 2 2
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/BaseController.cs
  55. 22 17
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/BaseStartup.cs
  56. 3 5
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Db/DBServiceCollectionExtensions.cs
  57. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Enums/ApiVersion.cs
  58. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Enums/StatusCodes.cs
  59. 3 3
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Extensions/RateLimitServiceCollectionExtensions.cs
  60. 3 3
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Extensions/UploadConfigApplicationBuilderExtensions.cs
  61. 20 15
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Filters/AdminExceptionFilter.cs
  62. 4 4
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Filters/LogActionFilter.cs
  63. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/HostBuilderProvider.cs
  64. 13 11
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Logs/ApiHelper.cs
  65. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Logs/ILogHandler.cs
  66. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Logs/LogHandler.cs
  67. 1 2
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/RegisterModules/ControllerModule.cs
  68. 9 7
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/RegisterModules/RepositoryModule.cs
  69. 11 10
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/RegisterModules/ServiceModule.cs
  70. 3 4
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/RegisterModules/SingleInstanceModule.cs
  71. 4 4
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/ZhonTai.Plate.Admin.HttpApi.Shared.csproj
  72. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi/Controllers/AreaController.cs
  73. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi/Controllers/AuthController.cs
  74. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi/Controllers/UserController.cs
  75. 1 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi/ZhonTai.Plate.Admin.HttpApi.csproj
  76. 1 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Api/ApiRepository.cs
  77. 0 37
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Base/Data.cs
  78. 0 687
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Base/DbHelper.cs
  79. 209 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/CustomGenerateData.cs
  80. 77 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/CustomSyncData.cs
  81. 2 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Dictionary/DictionaryRepository.cs
  82. 2 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/DictionaryType/DictionaryTypeRepository.cs
  83. 2 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Document/DocumentRepository.cs
  84. 2 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/DocumentImage/DocumentImageRepository.cs
  85. 1 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/LoginLog/LoginLogRepository.cs
  86. 1 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/OprationLog/OprationLogRepository.cs
  87. 2 1
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Permission/PermissionRepository.cs
  88. 1 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Role/RoleRepository.cs
  89. 1 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Tenant/TenantRepository.cs
  90. 1 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/User/UserRepository.cs
  91. 1 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/View/ViewRepositoryRepository.cs
  92. 0 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Api/IApiService.cs
  93. 0 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Api/Input/ApiAddInput.cs
  94. 0 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Api/Input/ApiSyncDto.cs
  95. 0 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Api/Input/ApiSyncInput.cs
  96. 0 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Api/Input/ApiUpdateInput.cs
  97. 0 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Api/Output/ApiGetOutput.cs
  98. 0 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Api/Output/ApiListOutput.cs
  99. 0 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Auth/IAuthService.cs
  100. 0 0
      src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Auth/Input/AuthLoginInput.cs

+ 16 - 2
ZhonTai.sln

@@ -19,7 +19,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZhonTai.Tools", "src\shared
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZhonTai.Plate.Admin.HttpApi", "src\plates\ZhonTai.Plate.Admin\ZhonTai.Plate.Admin.HttpApi\ZhonTai.Plate.Admin.HttpApi.csproj", "{4D034C30-CE3E-426D-84AE-68DF9EA50CC5}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZhonTai.HttpApi", "src\shared\ZhonTai.HttpApi\ZhonTai.HttpApi.csproj", "{F5ABCD82-9E7D-4AA6-9477-8779B76CDD02}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZhonTai.Plate.Admin.HttpApi.Shared", "src\plates\ZhonTai.Plate.Admin\ZhonTai.Plate.Admin.HttpApi.Shared\ZhonTai.Plate.Admin.HttpApi.Shared.csproj", "{F5ABCD82-9E7D-4AA6-9477-8779B76CDD02}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shared", "shared", "{03F02E23-28CB-4F93-B09E-60AC9908C26C}"
 EndProject
@@ -41,6 +41,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZhonTai.Plate.Personnel.Ser
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZhonTai.Plate.Personnel.Tests", "src\plates\ZhonTai.Plate.Personal\ZhonTai.Plate.Personnel.Tests\ZhonTai.Plate.Personnel.Tests.csproj", "{D312B1B5-1E0A-4C6A-8BDA-521688246822}"
 EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZhonTai.Plate.Personnel.Service.Contracts", "src\plates\ZhonTai.Plate.Personal\ZhonTai.Plate.Personnel.Service.Contracts\ZhonTai.Plate.Personnel.Service.Contracts.csproj", "{0D1F06D6-EAF6-4792-AEFC-0FFB6D5B1A4F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZhonTai.Plate.Admin.Service.Contracts", "src\plates\ZhonTai.Plate.Admin\ZhonTai.Plate.Admin.Service.Contracts\ZhonTai.Plate.Admin.Service.Contracts.csproj", "{93F13D77-3A26-4168-A0AA-9DDE96166359}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -103,6 +107,14 @@ Global
 		{D312B1B5-1E0A-4C6A-8BDA-521688246822}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{D312B1B5-1E0A-4C6A-8BDA-521688246822}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{D312B1B5-1E0A-4C6A-8BDA-521688246822}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0D1F06D6-EAF6-4792-AEFC-0FFB6D5B1A4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0D1F06D6-EAF6-4792-AEFC-0FFB6D5B1A4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0D1F06D6-EAF6-4792-AEFC-0FFB6D5B1A4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0D1F06D6-EAF6-4792-AEFC-0FFB6D5B1A4F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{93F13D77-3A26-4168-A0AA-9DDE96166359}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{93F13D77-3A26-4168-A0AA-9DDE96166359}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{93F13D77-3A26-4168-A0AA-9DDE96166359}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{93F13D77-3A26-4168-A0AA-9DDE96166359}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -116,7 +128,7 @@ Global
 		{69A9CD28-39CE-415E-8150-A4A876E708FD} = {8B9E8DFB-078E-465B-B56E-6921F79057F2}
 		{BDD8E9DB-896C-4340-A7E6-DFE341DE86C2} = {03F02E23-28CB-4F93-B09E-60AC9908C26C}
 		{4D034C30-CE3E-426D-84AE-68DF9EA50CC5} = {8B9E8DFB-078E-465B-B56E-6921F79057F2}
-		{F5ABCD82-9E7D-4AA6-9477-8779B76CDD02} = {03F02E23-28CB-4F93-B09E-60AC9908C26C}
+		{F5ABCD82-9E7D-4AA6-9477-8779B76CDD02} = {8B9E8DFB-078E-465B-B56E-6921F79057F2}
 		{8B9E8DFB-078E-465B-B56E-6921F79057F2} = {7D22DC19-78FC-4277-9768-06B5AF60FD14}
 		{45D8B6F4-1B35-414B-BA2A-7365F81C4B7C} = {7D22DC19-78FC-4277-9768-06B5AF60FD14}
 		{9F54976A-1F75-4B8B-AEEC-FEF980FC7F09} = {45D8B6F4-1B35-414B-BA2A-7365F81C4B7C}
@@ -124,6 +136,8 @@ Global
 		{F40EC290-8860-4D78-AB59-7DEEED8D7483} = {45D8B6F4-1B35-414B-BA2A-7365F81C4B7C}
 		{F10045F0-C9CD-4634-994F-D6B140B0A61E} = {45D8B6F4-1B35-414B-BA2A-7365F81C4B7C}
 		{D312B1B5-1E0A-4C6A-8BDA-521688246822} = {45D8B6F4-1B35-414B-BA2A-7365F81C4B7C}
+		{0D1F06D6-EAF6-4792-AEFC-0FFB6D5B1A4F} = {45D8B6F4-1B35-414B-BA2A-7365F81C4B7C}
+		{93F13D77-3A26-4168-A0AA-9DDE96166359} = {8B9E8DFB-078E-465B-B56E-6921F79057F2}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {AB40D0C5-E3EA-4A9B-86C2-38F0BB33FC04}

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

@@ -5,7 +5,7 @@
   "curd": false,
 
   //建库
-  "createDb": true,
+  "createDb": false,
   //SqlServer,PostgreSQL,Oracle,OdbcOracle,OdbcSqlServer,OdbcMySql,OdbcPostgreSQL,Odbc,OdbcDameng,MsAccess
   //建库连接字符串
   //MySql "Server=localhost; Port=3306; Database=mysql; Uid=root; Pwd=pwd; Charset=utf8mb4;"
@@ -21,7 +21,7 @@
   //同步结构
   "syncStructure": true,
   //同步数据
-  "syncData": false,
+  "syncData": true,
 
   //项目初始化不开启生成数据,发布生产环境前,如果开发环境有配置数据需要更新数据包,可以开启生成数据包,使用完记得关闭
   //开启生成数据前先关闭syncStructure syncData createDb

+ 1282 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_api.json

@@ -0,0 +1,1282 @@
+[
+  {
+    "id": 161227167658053,
+    "parentId": 0,
+    "label": "接口管理",
+    "path": "api",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 161227168079941,
+        "parentId": 161227167658053,
+        "label": "查询单条接口",
+        "path": "/api/admin/api/get",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168116805,
+        "parentId": 161227167658053,
+        "label": "查询全部接口",
+        "path": "/api/admin/api/getlist",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168116806,
+        "parentId": 161227167658053,
+        "label": "查询分页接口",
+        "path": "/api/admin/api/getpage",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168120901,
+        "parentId": 161227167658053,
+        "label": "新增接口",
+        "path": "/api/admin/api/add",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168120902,
+        "parentId": 161227167658053,
+        "label": "修改接口",
+        "path": "/api/admin/api/update",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168120903,
+        "parentId": 161227167658053,
+        "label": "删除接口",
+        "path": "/api/admin/api/softdelete",
+        "httpMethods": "delete",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168124997,
+        "parentId": 161227167658053,
+        "label": "批量删除接口",
+        "path": "/api/admin/api/batchsoftdelete",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168124998,
+        "parentId": 161227167658053,
+        "label": "同步接口",
+        "path": "/api/admin/api/sync",
+        "httpMethods": "post",
+        "description": "支持新增和修改接口\r\n根据接口是否存在自动禁用和启用api",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  },
+  {
+    "id": 161227167719493,
+    "parentId": 0,
+    "label": "授权管理",
+    "path": "auth",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 161227168129093,
+        "parentId": 161227167719493,
+        "label": "获取验证码",
+        "path": "/api/admin/auth/getverifycode",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168129094,
+        "parentId": 161227167719493,
+        "label": "获取密钥",
+        "path": "/api/admin/auth/getpasswordencryptkey",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168129095,
+        "parentId": 161227167719493,
+        "label": "查询用户信息",
+        "path": "/api/admin/auth/getuserinfo",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168133189,
+        "parentId": 161227167719493,
+        "label": "用户登录",
+        "path": "/api/admin/auth/login",
+        "httpMethods": "post",
+        "description": "根据登录信息生成Token",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168133190,
+        "parentId": 161227167719493,
+        "label": "刷新Token",
+        "path": "/api/admin/auth/refresh",
+        "httpMethods": "get",
+        "description": "以旧换新",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  },
+  {
+    "id": 161227167719494,
+    "parentId": 0,
+    "label": "数据字典",
+    "path": "dictionary",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 161227168137285,
+        "parentId": 161227167719494,
+        "label": "查询单条数据字典",
+        "path": "/api/admin/dictionary/get",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168137286,
+        "parentId": 161227167719494,
+        "label": "查询分页数据字典",
+        "path": "/api/admin/dictionary/getpage",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168137287,
+        "parentId": 161227167719494,
+        "label": "新增数据字典",
+        "path": "/api/admin/dictionary/add",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168141381,
+        "parentId": 161227167719494,
+        "label": "修改数据字典",
+        "path": "/api/admin/dictionary/update",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168141382,
+        "parentId": 161227167719494,
+        "label": "删除数据字典",
+        "path": "/api/admin/dictionary/softdelete",
+        "httpMethods": "delete",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 184100551516229,
+        "parentId": 161227167719494,
+        "label": "批量删除数据字典",
+        "path": "/api/admin/dictionary/batchsoftdelete",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  },
+  {
+    "id": 161227167719495,
+    "parentId": 0,
+    "label": "权限管理",
+    "path": "permission",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 161227168141383,
+        "parentId": 161227167719495,
+        "label": "查询权限列表",
+        "path": "/api/admin/permission/getlist",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168145477,
+        "parentId": 161227167719495,
+        "label": "查询单条分组",
+        "path": "/api/admin/permission/getgroup",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168145478,
+        "parentId": 161227167719495,
+        "label": "查询单条菜单",
+        "path": "/api/admin/permission/getmenu",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168149573,
+        "parentId": 161227167719495,
+        "label": "查询单条接口",
+        "path": "/api/admin/permission/getapi",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168149574,
+        "parentId": 161227167719495,
+        "label": "查询角色权限-权限列表",
+        "path": "/api/admin/permission/getpermissionlist",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168149575,
+        "parentId": 161227167719495,
+        "label": "查询角色权限",
+        "path": "/api/admin/permission/getrolepermissionlist",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168153669,
+        "parentId": 161227167719495,
+        "label": "新增分组",
+        "path": "/api/admin/permission/addgroup",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168153670,
+        "parentId": 161227167719495,
+        "label": "新增菜单",
+        "path": "/api/admin/permission/addmenu",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168153671,
+        "parentId": 161227167719495,
+        "label": "新增接口",
+        "path": "/api/admin/permission/addapi",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168157765,
+        "parentId": 161227167719495,
+        "label": "修改分组",
+        "path": "/api/admin/permission/updategroup",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168157766,
+        "parentId": 161227167719495,
+        "label": "修改菜单",
+        "path": "/api/admin/permission/updatemenu",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168161861,
+        "parentId": 161227167719495,
+        "label": "修改接口",
+        "path": "/api/admin/permission/updateapi",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168161862,
+        "parentId": 161227167719495,
+        "label": "删除权限",
+        "path": "/api/admin/permission/softdelete",
+        "httpMethods": "delete",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168165957,
+        "parentId": 161227167719495,
+        "label": "保存角色权限",
+        "path": "/api/admin/permission/assign",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168165958,
+        "parentId": 161227167719495,
+        "label": "查询单条权限点",
+        "path": "/api/admin/permission/getdot",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168165959,
+        "parentId": 161227167719495,
+        "label": "新增权限点",
+        "path": "/api/admin/permission/adddot",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168170053,
+        "parentId": 161227167719495,
+        "label": "修改权限点",
+        "path": "/api/admin/permission/updatedot",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 170317848645701,
+        "parentId": 161227167719495,
+        "label": "查询租户权限",
+        "path": "/api/admin/permission/gettenantpermissionlist",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 170317848662085,
+        "parentId": 161227167719495,
+        "label": "保存租户权限",
+        "path": "/api/admin/permission/savetenantpermissions",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 187384805367877,
+        "parentId": 161227167719495,
+        "label": "彻底删除权限",
+        "path": "/api/admin/permission/delete",
+        "httpMethods": "delete",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  },
+  {
+    "id": 161227167719496,
+    "parentId": 0,
+    "label": "角色管理",
+    "path": "role",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 161227168170054,
+        "parentId": 161227167719496,
+        "label": "查询单条角色",
+        "path": "/api/admin/role/get",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168170055,
+        "parentId": 161227167719496,
+        "label": "查询分页角色",
+        "path": "/api/admin/role/getpage",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168174149,
+        "parentId": 161227167719496,
+        "label": "新增角色",
+        "path": "/api/admin/role/add",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168178245,
+        "parentId": 161227167719496,
+        "label": "修改角色",
+        "path": "/api/admin/role/update",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168178246,
+        "parentId": 161227167719496,
+        "label": "删除角色",
+        "path": "/api/admin/role/softdelete",
+        "httpMethods": "delete",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168182341,
+        "parentId": 161227167719496,
+        "label": "批量删除角色",
+        "path": "/api/admin/role/batchsoftdelete",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  },
+  {
+    "id": 161227167719497,
+    "parentId": 0,
+    "label": "用户管理",
+    "path": "user",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 161227168182342,
+        "parentId": 161227167719497,
+        "label": "查询用户基本信息",
+        "path": "/api/admin/user/getbasic",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168182343,
+        "parentId": 161227167719497,
+        "label": "查询单条用户",
+        "path": "/api/admin/user/get",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168186437,
+        "parentId": 161227167719497,
+        "label": "查询分页用户",
+        "path": "/api/admin/user/getpage",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168186438,
+        "parentId": 161227167719497,
+        "label": "新增用户",
+        "path": "/api/admin/user/add",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168190533,
+        "parentId": 161227167719497,
+        "label": "修改用户",
+        "path": "/api/admin/user/update",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168190534,
+        "parentId": 161227167719497,
+        "label": "删除用户",
+        "path": "/api/admin/user/softdelete",
+        "httpMethods": "delete",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168190535,
+        "parentId": 161227167719497,
+        "label": "批量删除用户",
+        "path": "/api/admin/user/batchsoftdelete",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168194629,
+        "parentId": 161227167719497,
+        "label": "更新用户密码",
+        "path": "/api/admin/user/changepassword",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168194630,
+        "parentId": 161227167719497,
+        "label": "更新用户基本信息",
+        "path": "/api/admin/user/updatebasic",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168194631,
+        "parentId": 161227167719497,
+        "label": "上传头像",
+        "path": "/api/admin/user/avatarupload",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 189095453691973,
+        "parentId": 161227167719497,
+        "label": "查询下拉数据",
+        "path": "/api/admin/user/getselect",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  },
+  {
+    "id": 161227167719498,
+    "parentId": 0,
+    "label": "视图管理",
+    "path": "view",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 161227168198725,
+        "parentId": 161227167719498,
+        "label": "查询单条视图",
+        "path": "/api/admin/view/get",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168198726,
+        "parentId": 161227167719498,
+        "label": "查询全部视图",
+        "path": "/api/admin/view/getlist",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168202821,
+        "parentId": 161227167719498,
+        "label": "查询分页视图",
+        "path": "/api/admin/view/getpage",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168202822,
+        "parentId": 161227167719498,
+        "label": "新增视图",
+        "path": "/api/admin/view/add",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168202823,
+        "parentId": 161227167719498,
+        "label": "修改视图",
+        "path": "/api/admin/view/update",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168206917,
+        "parentId": 161227167719498,
+        "label": "删除视图",
+        "path": "/api/admin/view/softdelete",
+        "httpMethods": "delete",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168206918,
+        "parentId": 161227167719498,
+        "label": "批量删除视图",
+        "path": "/api/admin/view/batchsoftdelete",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168206919,
+        "parentId": 161227167719498,
+        "label": "同步视图",
+        "path": "/api/admin/view/sync",
+        "httpMethods": "post",
+        "description": "支持新增和修改视图\r\n根据视图是否存在自动禁用和启用视图",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  },
+  {
+    "id": 161227167723589,
+    "parentId": 0,
+    "label": "缓存管理",
+    "path": "cache",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 161227168211013,
+        "parentId": 161227167723589,
+        "label": "获取缓存列表",
+        "path": "/api/admin/cache/list",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168211014,
+        "parentId": 161227167723589,
+        "label": "清除缓存",
+        "path": "/api/admin/cache/clear",
+        "httpMethods": "delete",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  },
+  {
+    "id": 161227167723590,
+    "parentId": 0,
+    "label": "登录日志管理",
+    "path": "loginlog",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 161227168215109,
+        "parentId": 161227167723590,
+        "label": "查询分页登录日志",
+        "path": "/api/admin/loginlog/getpage",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  },
+  {
+    "id": 161227167723591,
+    "parentId": 0,
+    "label": "操作日志管理",
+    "path": "oprationlog",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 161227168215110,
+        "parentId": 161227167723591,
+        "label": "查询分页操作日志",
+        "path": "/api/admin/oprationlog/getpage",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  },
+  {
+    "id": 161227167723592,
+    "parentId": 0,
+    "label": "文档管理",
+    "path": "document",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 161227168215111,
+        "parentId": 161227167723592,
+        "label": "查询文档列表",
+        "path": "/api/admin/document/getlist",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168219205,
+        "parentId": 161227167723592,
+        "label": "查询单条分组",
+        "path": "/api/admin/document/getgroup",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168219206,
+        "parentId": 161227167723592,
+        "label": "查询单条菜单",
+        "path": "/api/admin/document/getmenu",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168223301,
+        "parentId": 161227167723592,
+        "label": "查询精简文档列表",
+        "path": "/api/admin/document/getplainlist",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168223302,
+        "parentId": 161227167723592,
+        "label": "新增分组",
+        "path": "/api/admin/document/addgroup",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168227397,
+        "parentId": 161227167723592,
+        "label": "新增菜单",
+        "path": "/api/admin/document/addmenu",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168227398,
+        "parentId": 161227167723592,
+        "label": "修改分组",
+        "path": "/api/admin/document/updategroup",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168231493,
+        "parentId": 161227167723592,
+        "label": "修改菜单",
+        "path": "/api/admin/document/updatemenu",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168231494,
+        "parentId": 161227167723592,
+        "label": "删除文档",
+        "path": "/api/admin/document/softdelete",
+        "httpMethods": "delete",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168235589,
+        "parentId": 161227167723592,
+        "label": "查询单条文档内容",
+        "path": "/api/admin/document/getcontent",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168235590,
+        "parentId": 161227167723592,
+        "label": "修改文档内容",
+        "path": "/api/admin/document/updatecontent",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168235591,
+        "parentId": 161227167723592,
+        "label": "上传文档图片",
+        "path": "/api/admin/document/uploadimage",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168239685,
+        "parentId": 161227167723592,
+        "label": "查询文档图片列表",
+        "path": "/api/admin/document/getimagelist",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168239686,
+        "parentId": 161227167723592,
+        "label": "删除图片",
+        "path": "/api/admin/document/deleteimage",
+        "httpMethods": "delete",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  },
+  {
+    "id": 161227167723593,
+    "parentId": 0,
+    "label": "租户管理",
+    "path": "tenant",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 161227168243781,
+        "parentId": 161227167723593,
+        "label": "查询单条租户",
+        "path": "/api/admin/tenant/get",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168243782,
+        "parentId": 161227167723593,
+        "label": "查询分页租户",
+        "path": "/api/admin/tenant/getpage",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168243783,
+        "parentId": 161227167723593,
+        "label": "新增租户",
+        "path": "/api/admin/tenant/add",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168247877,
+        "parentId": 161227167723593,
+        "label": "修改租户",
+        "path": "/api/admin/tenant/update",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168247878,
+        "parentId": 161227167723593,
+        "label": "删除租户",
+        "path": "/api/admin/tenant/softdelete",
+        "httpMethods": "delete",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168251973,
+        "parentId": 161227167723593,
+        "label": "批量删除租户",
+        "path": "/api/admin/tenant/batchsoftdelete",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 163579785756741,
+        "parentId": 161227167723593,
+        "label": "彻底删除租户",
+        "path": "/api/admin/tenant/delete",
+        "httpMethods": "delete",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  },
+  {
+    "id": 174219034701893,
+    "parentId": 0,
+    "label": "员工管理",
+    "path": "employee",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 174219034734666,
+        "parentId": 174219034701893,
+        "label": "查询单条员工",
+        "path": "/api/personnel/employee/get",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034734667,
+        "parentId": 174219034701893,
+        "label": "查询分页员工",
+        "path": "/api/personnel/employee/getpage",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034734668,
+        "parentId": 174219034701893,
+        "label": "新增员工",
+        "path": "/api/personnel/employee/add",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034734669,
+        "parentId": 174219034701893,
+        "label": "修改员工",
+        "path": "/api/personnel/employee/update",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034734670,
+        "parentId": 174219034701893,
+        "label": "删除员工",
+        "path": "/api/personnel/employee/softdelete",
+        "httpMethods": "delete",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034734671,
+        "parentId": 174219034701893,
+        "label": "批量删除员工",
+        "path": "/api/personnel/employee/batchsoftdelete",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  },
+  {
+    "id": 174219034718277,
+    "parentId": 0,
+    "label": "组织架构",
+    "path": "organization",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 174219034734672,
+        "parentId": 174219034718277,
+        "label": "查询单条组织架构",
+        "path": "/api/personnel/organization/get",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034734674,
+        "parentId": 174219034718277,
+        "label": "新增组织架构",
+        "path": "/api/personnel/organization/add",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034738757,
+        "parentId": 174219034718277,
+        "label": "修改组织架构",
+        "path": "/api/personnel/organization/update",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034738758,
+        "parentId": 174219034718277,
+        "label": "删除组织架构",
+        "path": "/api/personnel/organization/softdelete",
+        "httpMethods": "delete",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 188049296683077,
+        "parentId": 174219034718277,
+        "label": "查询组织架构列表",
+        "path": "/api/personnel/organization/getlist",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  },
+  {
+    "id": 174219034718278,
+    "parentId": 0,
+    "label": "职位管理",
+    "path": "position",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 174219034738759,
+        "parentId": 174219034718278,
+        "label": "查询单条职位",
+        "path": "/api/personnel/position/get",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034738760,
+        "parentId": 174219034718278,
+        "label": "查询分页职位",
+        "path": "/api/personnel/position/getpage",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034738761,
+        "parentId": 174219034718278,
+        "label": "新增职位",
+        "path": "/api/personnel/position/add",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034738762,
+        "parentId": 174219034718278,
+        "label": "修改职位",
+        "path": "/api/personnel/position/update",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034738763,
+        "parentId": 174219034718278,
+        "label": "删除职位",
+        "path": "/api/personnel/position/softdelete",
+        "httpMethods": "delete",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034738764,
+        "parentId": 174219034718278,
+        "label": "批量删除职位",
+        "path": "/api/personnel/position/batchsoftdelete",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  },
+  {
+    "id": 174219034718279,
+    "parentId": 0,
+    "label": "数据字典类型",
+    "path": "dictionarytype",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 174219034734661,
+        "parentId": 174219034718279,
+        "label": "查询单条数据字典类型",
+        "path": "/api/admin/dictionarytype/get",
+        "httpMethods": "get",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034734662,
+        "parentId": 174219034718279,
+        "label": "查询分页数据字典类型",
+        "path": "/api/admin/dictionarytype/getpage",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034734663,
+        "parentId": 174219034718279,
+        "label": "新增数据字典类型",
+        "path": "/api/admin/dictionarytype/add",
+        "httpMethods": "post",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034734664,
+        "parentId": 174219034718279,
+        "label": "修改数据字典类型",
+        "path": "/api/admin/dictionarytype/update",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 174219034734665,
+        "parentId": 174219034718279,
+        "label": "删除数据字典类型",
+        "path": "/api/admin/dictionarytype/softdelete",
+        "httpMethods": "delete",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 184100551532613,
+        "parentId": 174219034718279,
+        "label": "批量删除数据字典类型",
+        "path": "/api/admin/dictionarytype/batchsoftdelete",
+        "httpMethods": "put",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  }
+]

+ 20 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_dictionary.json

@@ -0,0 +1,20 @@
+[
+  {
+    "id": 187395320303685,
+    "dictionaryTypeId": 187395320434757,
+    "name": "男",
+    "code": "male",
+    "value": "1",
+    "description": "",
+    "enabled": true
+  },
+  {
+    "id": 187395320369221,
+    "dictionaryTypeId": 187395320434757,
+    "name": "女",
+    "code": "female",
+    "value": "2",
+    "description": "",
+    "enabled": true
+  }
+]

+ 22 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_dictionary.tenant.json

@@ -0,0 +1,22 @@
+[
+  {
+    "tenantId": 161223412138053,
+    "id": 187395320303685,
+    "dictionaryTypeId": 187395320434757,
+    "name": "男",
+    "code": "male",
+    "value": "1",
+    "description": "",
+    "enabled": true
+  },
+  {
+    "tenantId": 161223412138053,
+    "id": 187395320369221,
+    "dictionaryTypeId": 187395320434757,
+    "name": "女",
+    "code": "female",
+    "value": "2",
+    "description": "",
+    "enabled": true
+  }
+]

+ 9 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_dictionary_type.json

@@ -0,0 +1,9 @@
+[
+  {
+    "id": 187395320434757,
+    "name": "性别",
+    "code": "sex",
+    "description": "",
+    "enabled": true
+  }
+]

+ 10 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_dictionary_type.tenant.json

@@ -0,0 +1,10 @@
+[
+  {
+    "tenantId": 161223412138053,
+    "id": 187395320434757,
+    "name": "性别",
+    "code": "sex",
+    "description": "",
+    "enabled": true
+  }
+]

+ 1298 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_permission.json

@@ -0,0 +1,1298 @@
+[
+  {
+    "id": 161227168464965,
+    "label": "个人管理",
+    "type": 1,
+    "path": "",
+    "icon": "el-icon-s-custom",
+    "closable": false,
+    "opened": true,
+    "sort": 3,
+    "enabled": true,
+    "description": "",
+    "childs": [
+      {
+        "id": 161227168624709,
+        "parentId": 161227168464965,
+        "label": "个人设置",
+        "type": 2,
+        "viewId": 161227168436293,
+        "path": "/account/settings",
+        "icon": "el-icon-setting",
+        "closable": true,
+        "opened": false,
+        "newWindow": false,
+        "external": false,
+        "sort": 1,
+        "enabled": true,
+        "description": "",
+        "childs": [
+          {
+            "id": 161227168628805,
+            "parentId": 161227168624709,
+            "label": "查询基本信息",
+            "code": "api:admin:user:getbasic",
+            "type": 3,
+            "path": "",
+            "icon": "",
+            "closable": false,
+            "opened": false,
+            "sort": 1,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 161227168628806,
+            "parentId": 161227168624709,
+            "label": "更新基本信息",
+            "code": "api:admin:user:updatebasic",
+            "type": 3,
+            "sort": 2,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 161227168632901,
+            "parentId": 161227168624709,
+            "label": "更新密码",
+            "code": "api:admin:user:changepassword",
+            "type": 3,
+            "path": " ",
+            "icon": "",
+            "closable": false,
+            "opened": false,
+            "sort": 3,
+            "enabled": true,
+            "description": ""
+          }
+        ]
+      }
+    ]
+  },
+  {
+    "id": 161227168497733,
+    "label": "平台管理",
+    "type": 1,
+    "icon": "el-icon-s-platform",
+    "opened": true,
+    "sort": 2,
+    "enabled": true,
+    "childs": [
+      {
+        "id": 161227168632902,
+        "parentId": 161227168497733,
+        "label": "更新日志",
+        "type": 2,
+        "viewId": 161227168428101,
+        "path": "/",
+        "icon": "el-icon-notebook-2",
+        "closable": false,
+        "opened": false,
+        "newWindow": false,
+        "external": false,
+        "sort": 1,
+        "enabled": true,
+        "description": "",
+        "childs": []
+      },
+      {
+        "id": 161227168636997,
+        "parentId": 161227168497733,
+        "label": "权限管理",
+        "type": 1,
+        "path": "",
+        "icon": "fa fa-sitemap",
+        "closable": false,
+        "opened": true,
+        "sort": 2,
+        "enabled": true,
+        "description": "",
+        "childs": [
+          {
+            "id": 161227168636998,
+            "parentId": 161227168636997,
+            "label": "用户管理",
+            "type": 2,
+            "viewId": 161227168436295,
+            "path": "/admin/user",
+            "closable": true,
+            "opened": false,
+            "newWindow": false,
+            "external": true,
+            "sort": 1,
+            "enabled": true,
+            "description": "",
+            "childs": [
+              {
+                "id": 161227168641093,
+                "parentId": 161227168636998,
+                "label": "查询",
+                "code": "api:admin:user:getpage",
+                "type": 3,
+                "path": "",
+                "closable": true,
+                "opened": false,
+                "sort": 1,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168641094,
+                "parentId": 161227168636998,
+                "label": "新增",
+                "code": "api:admin:user:add",
+                "type": 3,
+                "path": "",
+                "closable": false,
+                "opened": false,
+                "sort": 2,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168645189,
+                "parentId": 161227168636998,
+                "label": "修改",
+                "code": "api:admin:user:update",
+                "type": 3,
+                "path": "",
+                "closable": true,
+                "opened": false,
+                "sort": 3,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168645190,
+                "parentId": 161227168636998,
+                "label": "删除",
+                "code": "api:admin:user:softdelete",
+                "type": 3,
+                "path": "",
+                "closable": true,
+                "opened": false,
+                "sort": 4,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168649285,
+                "parentId": 161227168636998,
+                "label": "批量删除",
+                "code": "api:admin:user:batchsoftdelete",
+                "type": 3,
+                "path": "",
+                "icon": "",
+                "sort": 5,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              }
+            ]
+          },
+          {
+            "id": 161227168653381,
+            "parentId": 161227168636997,
+            "label": "角色管理",
+            "type": 2,
+            "viewId": 161227168440389,
+            "path": "/admin/role",
+            "icon": "",
+            "closable": true,
+            "opened": false,
+            "sort": 2,
+            "enabled": true,
+            "description": "",
+            "childs": [
+              {
+                "id": 161227168653382,
+                "parentId": 161227168653381,
+                "label": "查询",
+                "code": "api:admin:role:getpage",
+                "type": 3,
+                "path": " ",
+                "closable": false,
+                "opened": false,
+                "sort": 1,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168657477,
+                "parentId": 161227168653381,
+                "label": "新增",
+                "code": "api:admin:role:add",
+                "type": 3,
+                "path": " ",
+                "closable": false,
+                "opened": false,
+                "sort": 2,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168657478,
+                "parentId": 161227168653381,
+                "label": "修改",
+                "code": "api:admin:role:update",
+                "type": 3,
+                "path": " ",
+                "closable": false,
+                "opened": false,
+                "sort": 3,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168661573,
+                "parentId": 161227168653381,
+                "label": "删除",
+                "code": "api:admin:role:softdelete",
+                "type": 3,
+                "path": " ",
+                "closable": true,
+                "opened": false,
+                "sort": 4,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168665669,
+                "parentId": 161227168653381,
+                "label": "批量删除",
+                "code": "api:admin:role:batchsoftdelete",
+                "type": 3,
+                "path": " ",
+                "icon": "",
+                "closable": false,
+                "opened": false,
+                "sort": 5,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              }
+            ]
+          },
+          {
+            "id": 161227168669765,
+            "parentId": 161227168636997,
+            "label": "接口管理",
+            "type": 2,
+            "viewId": 161227168440390,
+            "path": "/admin/api",
+            "closable": true,
+            "opened": false,
+            "sort": 3,
+            "enabled": true,
+            "description": "",
+            "childs": [
+              {
+                "id": 161227168669766,
+                "parentId": 161227168669765,
+                "label": "查询",
+                "code": "api:admin:api:getlist",
+                "type": 3,
+                "path": "",
+                "icon": "",
+                "sort": 1,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168673861,
+                "parentId": 161227168669765,
+                "label": "新增",
+                "code": "api:admin:api:add",
+                "type": 3,
+                "path": " ",
+                "closable": false,
+                "opened": false,
+                "sort": 2,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168673862,
+                "parentId": 161227168669765,
+                "label": "修改",
+                "code": "api:admin:api:update",
+                "type": 3,
+                "path": " ",
+                "closable": false,
+                "opened": false,
+                "sort": 3,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168677957,
+                "parentId": 161227168669765,
+                "label": "删除",
+                "code": "api:admin:api:softdelete",
+                "type": 3,
+                "path": " ",
+                "closable": false,
+                "opened": false,
+                "sort": 4,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168677958,
+                "parentId": 161227168669765,
+                "label": "批量删除",
+                "code": "api:admin:api:batchsoftdelete",
+                "type": 3,
+                "path": "",
+                "icon": "",
+                "sort": 5,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168682053,
+                "parentId": 161227168669765,
+                "label": "同步",
+                "code": "api:admin:api:sync",
+                "type": 3,
+                "path": "",
+                "icon": "",
+                "sort": 6,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              }
+            ]
+          },
+          {
+            "id": 161227168686149,
+            "parentId": 161227168636997,
+            "label": "视图管理",
+            "type": 2,
+            "viewId": 161227168444485,
+            "path": "/admin/view",
+            "icon": "",
+            "closable": true,
+            "sort": 4,
+            "enabled": true,
+            "description": "",
+            "childs": [
+              {
+                "id": 161227168686150,
+                "parentId": 161227168686149,
+                "label": "查询",
+                "code": "api:admin:view:getlist",
+                "type": 3,
+                "sort": 1,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168690245,
+                "parentId": 161227168686149,
+                "label": "新增",
+                "code": "api:admin:view:add",
+                "type": 3,
+                "sort": 2,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168690246,
+                "parentId": 161227168686149,
+                "label": "修改",
+                "code": "api:admin:view:update",
+                "type": 3,
+                "sort": 3,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168694341,
+                "parentId": 161227168686149,
+                "label": "删除",
+                "code": "api:admin:view:softdelete",
+                "type": 3,
+                "sort": 4,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168694342,
+                "parentId": 161227168686149,
+                "label": "批量删除",
+                "code": "api:admin:view:batchsoftdelete",
+                "type": 3,
+                "sort": 5,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168698437,
+                "parentId": 161227168686149,
+                "label": "同步",
+                "code": "api:admin:view:sync",
+                "type": 3,
+                "sort": 6,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              }
+            ]
+          },
+          {
+            "id": 161227168702533,
+            "parentId": 161227168636997,
+            "label": "权限管理",
+            "type": 2,
+            "viewId": 161227168444486,
+            "path": "/admin/permission",
+            "closable": true,
+            "opened": false,
+            "sort": 5,
+            "enabled": true,
+            "description": "",
+            "childs": [
+              {
+                "id": 161227168702534,
+                "parentId": 161227168702533,
+                "label": "查询",
+                "code": "api:admin:permission:getlist",
+                "type": 3,
+                "path": "",
+                "icon": "",
+                "sort": 1,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168706629,
+                "parentId": 161227168702533,
+                "label": "新增分组",
+                "code": "api:admin:permission:addgroup",
+                "type": 3,
+                "sort": 2,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168706630,
+                "parentId": 161227168702533,
+                "label": "新增菜单",
+                "code": "api:admin:permission:addmenu",
+                "type": 3,
+                "sort": 3,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168710725,
+                "parentId": 161227168702533,
+                "label": "新增接口",
+                "code": "api:admin:permission:addapi",
+                "type": 3,
+                "sort": 4,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168710726,
+                "parentId": 161227168702533,
+                "label": "修改分组",
+                "code": "api:admin:permission:updategroup",
+                "type": 3,
+                "sort": 5,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168714821,
+                "parentId": 161227168702533,
+                "label": "修改菜单",
+                "code": "api:admin:permission:updatemenu",
+                "type": 3,
+                "sort": 6,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168714822,
+                "parentId": 161227168702533,
+                "label": "修改接口",
+                "code": "api:admin:permission:updateapi",
+                "type": 3,
+                "sort": 7,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168718917,
+                "parentId": 161227168702533,
+                "label": "删除",
+                "code": "api:admin:permission:softdelete",
+                "type": 3,
+                "path": " ",
+                "closable": false,
+                "opened": false,
+                "sort": 8,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168727110,
+                "parentId": 161227168702533,
+                "label": "新增权限点",
+                "code": "api:admin:permission:adddot",
+                "type": 3,
+                "sort": 0,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168731205,
+                "parentId": 161227168702533,
+                "label": "修改权限点",
+                "code": "api:admin:permission:updatedot",
+                "type": 3,
+                "sort": 0,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 187385577599045,
+                "parentId": 161227168702533,
+                "label": "彻底删除",
+                "code": "api:admin:permission:delete",
+                "type": 3,
+                "sort": 7,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              }
+            ]
+          },
+          {
+            "id": 161227168731206,
+            "parentId": 161227168636997,
+            "label": "角色权限",
+            "type": 2,
+            "viewId": 161227168448581,
+            "path": "/admin/role-permisson",
+            "closable": true,
+            "opened": false,
+            "newWindow": false,
+            "external": false,
+            "sort": 6,
+            "enabled": true,
+            "description": "",
+            "childs": [
+              {
+                "id": 161227168735301,
+                "parentId": 161227168731206,
+                "label": "查询",
+                "code": "api:admin:role-permisson:list",
+                "type": 3,
+                "path": "",
+                "icon": "",
+                "sort": 1,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168739398,
+                "parentId": 161227168731206,
+                "label": "保存",
+                "code": "api:admin:permission:assign",
+                "type": 3,
+                "path": " ",
+                "closable": false,
+                "opened": false,
+                "sort": 4,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              }
+            ]
+          },
+          {
+            "id": 161227168743493,
+            "parentId": 161227168636997,
+            "label": "缓存管理",
+            "type": 2,
+            "viewId": 161227168448582,
+            "path": "/admin/cache",
+            "icon": "",
+            "closable": true,
+            "newWindow": false,
+            "external": false,
+            "sort": 7,
+            "enabled": true,
+            "description": "",
+            "childs": [
+              {
+                "id": 161227168747589,
+                "parentId": 161227168743493,
+                "label": "查询",
+                "code": "api:admin:cache:list",
+                "type": 3,
+                "sort": 1,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168747590,
+                "parentId": 161227168743493,
+                "label": "清除缓存",
+                "code": "api:admin:cache:clear",
+                "type": 3,
+                "sort": 2,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              }
+            ]
+          },
+          {
+            "id": 161227168751685,
+            "parentId": 161227168636997,
+            "label": "租户管理",
+            "type": 2,
+            "viewId": 161227168448583,
+            "path": "/admin/tenant",
+            "icon": "",
+            "closable": true,
+            "newWindow": false,
+            "external": false,
+            "sort": 8,
+            "enabled": true,
+            "description": "",
+            "childs": [
+              {
+                "id": 161227168751686,
+                "parentId": 161227168751685,
+                "label": "查询",
+                "code": "api:admin:tenant:getpage",
+                "type": 3,
+                "sort": 1,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168755781,
+                "parentId": 161227168751685,
+                "label": "新增",
+                "code": "api:admin:tenant:add",
+                "type": 3,
+                "sort": 2,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168755782,
+                "parentId": 161227168751685,
+                "label": "修改",
+                "code": "api:admin:tenant:update",
+                "type": 3,
+                "sort": 3,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168759877,
+                "parentId": 161227168751685,
+                "label": "删除",
+                "code": "api:admin:tenant:softdelete",
+                "type": 3,
+                "sort": 4,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161227168759878,
+                "parentId": 161227168751685,
+                "label": "批量删除",
+                "code": "api:admin:tenant:batchsoftdelete",
+                "type": 3,
+                "sort": 5,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 161807358345285,
+                "parentId": 161227168751685,
+                "label": "设置权限",
+                "code": "api:admin:permission:savetenantpermissions",
+                "type": 3,
+                "sort": 7,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 163579955331141,
+                "parentId": 161227168751685,
+                "label": "彻底删除",
+                "code": "api:admin:tenant:delete",
+                "type": 3,
+                "sort": 8,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              }
+            ]
+          }
+        ]
+      },
+      {
+        "id": 161227168763974,
+        "parentId": 161227168497733,
+        "label": "系统配置",
+        "type": 1,
+        "path": "",
+        "icon": "el-icon-s-platform",
+        "closable": false,
+        "opened": true,
+        "sort": 3,
+        "enabled": true,
+        "description": "",
+        "childs": [
+          {
+            "id": 187055743545413,
+            "parentId": 161227168763974,
+            "label": "数据字典",
+            "type": 2,
+            "viewId": 187053736300613,
+            "path": "/admin/dictionary/index",
+            "icon": "",
+            "closable": true,
+            "newWindow": false,
+            "external": false,
+            "sort": 0,
+            "enabled": true,
+            "description": "",
+            "childs": [
+              {
+                "id": 187375358951493,
+                "parentId": 187055743545413,
+                "label": "查询",
+                "code": "api:admin:dictionary:getpage",
+                "type": 3,
+                "sort": 1,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 187389970825285,
+                "parentId": 187055743545413,
+                "label": "修改",
+                "code": "api:admin:dictionary:update",
+                "type": 3,
+                "sort": 3,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 187390547820613,
+                "parentId": 187055743545413,
+                "label": "删除",
+                "code": "api:admin:dictionary:softdelete",
+                "type": 3,
+                "sort": 4,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 187391371018309,
+                "parentId": 187055743545413,
+                "label": "批量删除",
+                "code": "api:admin:dictionary:batchsoftdelete",
+                "type": 3,
+                "sort": 5,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              },
+              {
+                "id": 187391980761157,
+                "parentId": 187055743545413,
+                "label": "新增",
+                "code": "api:admin:dictionary:add",
+                "type": 3,
+                "sort": 2,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              }
+            ]
+          }
+        ]
+      },
+      {
+        "id": 161227168780358,
+        "parentId": 161227168497733,
+        "label": "日志管理",
+        "type": 1,
+        "icon": "el-icon-notebook-2",
+        "opened": false,
+        "sort": 4,
+        "enabled": true,
+        "childs": [
+          {
+            "id": 161227168784453,
+            "parentId": 161227168780358,
+            "label": "登录日志",
+            "type": 2,
+            "viewId": 161227168456773,
+            "path": "/admin/login-log",
+            "icon": "",
+            "closable": true,
+            "newWindow": false,
+            "external": false,
+            "sort": 1,
+            "enabled": true,
+            "description": "",
+            "childs": [
+              {
+                "id": 161227168784454,
+                "parentId": 161227168784453,
+                "label": "查询",
+                "code": "api:admin:loginlog:getpage",
+                "type": 3,
+                "sort": 1,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              }
+            ]
+          },
+          {
+            "id": 161227168788549,
+            "parentId": 161227168780358,
+            "label": "操作日志",
+            "type": 2,
+            "viewId": 161227168452678,
+            "path": "/admin/opration-log",
+            "icon": "",
+            "closable": true,
+            "newWindow": false,
+            "external": false,
+            "sort": 2,
+            "enabled": true,
+            "description": "",
+            "childs": [
+              {
+                "id": 161227168788550,
+                "parentId": 161227168788549,
+                "label": "查询",
+                "code": "api:admin:oprationlog:getpage",
+                "type": 3,
+                "sort": 1,
+                "enabled": true,
+                "description": "",
+                "childs": []
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  },
+  {
+    "id": 161227168497734,
+    "label": "帮助文档",
+    "type": 1,
+    "icon": "el-icon-question",
+    "opened": true,
+    "sort": 4,
+    "enabled": true,
+    "childs": [
+      {
+        "id": 161227168792645,
+        "parentId": 161227168497734,
+        "label": "Admin",
+        "type": 2,
+        "path": "https://zhontai.net",
+        "icon": "el-icon-s-promotion",
+        "closable": false,
+        "newWindow": false,
+        "external": false,
+        "sort": 5,
+        "enabled": true,
+        "description": "",
+        "childs": []
+      },
+      {
+        "id": 161227168792646,
+        "parentId": 161227168497734,
+        "label": "FreeSql",
+        "type": 2,
+        "path": "http://freesql.net/guide",
+        "icon": "el-icon-s-promotion",
+        "closable": false,
+        "newWindow": false,
+        "external": false,
+        "sort": 6,
+        "enabled": true,
+        "description": "",
+        "childs": []
+      },
+      {
+        "id": 161227168796741,
+        "parentId": 161227168497734,
+        "label": "文档管理",
+        "type": 2,
+        "viewId": 161227168456774,
+        "path": "/admin/document",
+        "icon": "el-icon-notebook-2",
+        "closable": true,
+        "newWindow": false,
+        "external": true,
+        "sort": 0,
+        "enabled": true,
+        "description": "",
+        "childs": [
+          {
+            "id": 161227168800838,
+            "parentId": 161227168796741,
+            "label": "新增分组",
+            "code": "api:admin:document:addgroup",
+            "type": 3,
+            "sort": 5,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 161227168804933,
+            "parentId": 161227168796741,
+            "label": "新增菜单",
+            "code": "api:admin:document:addmenu",
+            "type": 3,
+            "sort": 6,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 161227168809029,
+            "parentId": 161227168796741,
+            "label": "修改分组",
+            "code": "api:admin:document:updategroup",
+            "type": 3,
+            "sort": 7,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 161227168813125,
+            "parentId": 161227168796741,
+            "label": "修改菜单",
+            "code": "api:admin:document:updatemenu",
+            "type": 3,
+            "sort": 8,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 161227168813126,
+            "parentId": 161227168796741,
+            "label": "删除文档",
+            "code": "api:admin:document:softdelete",
+            "type": 3,
+            "sort": 9,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 161227168821318,
+            "parentId": 161227168796741,
+            "label": "查询文档",
+            "code": "api:admin:document:getlist",
+            "type": 3,
+            "sort": 1,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 161227168825414,
+            "parentId": 161227168796741,
+            "label": "修改文档",
+            "code": "api:admin:document:updatecontent",
+            "type": 3,
+            "sort": 11,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 161227168829509,
+            "parentId": 161227168796741,
+            "label": "上传图片",
+            "code": "api:admin:document:uploadimage",
+            "type": 3,
+            "sort": 14,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 161227168833605,
+            "parentId": 161227168796741,
+            "label": "查询图片",
+            "code": "api:admin:document:getimagelist",
+            "type": 3,
+            "sort": 12,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 161227168833606,
+            "parentId": 161227168796741,
+            "label": "删除图片",
+            "code": "api:admin:document:deleteimage",
+            "type": 3,
+            "sort": 13,
+            "enabled": true,
+            "description": ""
+          }
+        ]
+      }
+    ]
+  },
+  {
+    "id": 188049591447621,
+    "label": "人事管理",
+    "type": 1,
+    "icon": "el-icon-user-solid",
+    "opened": true,
+    "sort": 1,
+    "enabled": true,
+    "childs": [
+      {
+        "id": 188050115035205,
+        "parentId": 188049591447621,
+        "label": "岗位管理",
+        "type": 2,
+        "viewId": 174312361132101,
+        "path": "/personnel/position",
+        "icon": "",
+        "closable": true,
+        "newWindow": false,
+        "external": false,
+        "sort": 0,
+        "enabled": true,
+        "description": "",
+        "childs": [
+          {
+            "id": 188054656589893,
+            "parentId": 188050115035205,
+            "label": "查询",
+            "code": "api:personnel:position:getpage",
+            "type": 3,
+            "sort": 0,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 188054719266885,
+            "parentId": 188050115035205,
+            "label": "新增",
+            "code": "api:personnel:position:add",
+            "type": 3,
+            "sort": 0,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 188054776545349,
+            "parentId": 188050115035205,
+            "label": "修改",
+            "code": "api:personnel:position:update",
+            "type": 3,
+            "sort": 0,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 188054834004037,
+            "parentId": 188050115035205,
+            "label": "删除",
+            "code": "api:personnel:position:softdelete",
+            "type": 3,
+            "sort": 0,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 189345990168645,
+            "parentId": 188050115035205,
+            "label": "批量删除",
+            "code": "api:personnel:position:batchsoftdelete",
+            "type": 3,
+            "sort": 0,
+            "enabled": true,
+            "description": ""
+          }
+        ]
+      },
+      {
+        "id": 188053882503237,
+        "parentId": 188049591447621,
+        "label": "部门管理",
+        "type": 2,
+        "viewId": 174312361087045,
+        "path": "/personnel/organization",
+        "icon": "",
+        "closable": true,
+        "newWindow": false,
+        "external": false,
+        "sort": 0,
+        "enabled": true,
+        "description": "",
+        "childs": [
+          {
+            "id": 188054258278469,
+            "parentId": 188053882503237,
+            "label": "查询",
+            "code": "api:personnel:organization:getlist",
+            "type": 3,
+            "sort": 0,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 188054341582917,
+            "parentId": 188053882503237,
+            "label": "新增",
+            "code": "api:personnel:organization:add",
+            "type": 3,
+            "sort": 0,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 188054416891973,
+            "parentId": 188053882503237,
+            "label": "修改",
+            "code": "api:personnel:organization:update",
+            "type": 3,
+            "sort": 0,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 188054509027397,
+            "parentId": 188053882503237,
+            "label": "删除",
+            "code": "api:personnel:organization:softdelete",
+            "type": 3,
+            "sort": 0,
+            "enabled": true,
+            "description": ""
+          }
+        ]
+      },
+      {
+        "id": 188799375847493,
+        "parentId": 188049591447621,
+        "label": "员工管理",
+        "type": 2,
+        "viewId": 188792508244037,
+        "path": "/personnel/employee",
+        "icon": "",
+        "closable": true,
+        "newWindow": false,
+        "external": false,
+        "sort": 0,
+        "enabled": true,
+        "description": "",
+        "childs": [
+          {
+            "id": 188799732494405,
+            "parentId": 188799375847493,
+            "label": "查询",
+            "code": "api:personnel:employee:getpage",
+            "type": 3,
+            "sort": 0,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 188799795101765,
+            "parentId": 188799375847493,
+            "label": "新增",
+            "code": "api:personnel:employee:add",
+            "type": 3,
+            "sort": 0,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 188799878676549,
+            "parentId": 188799375847493,
+            "label": "修改",
+            "code": "api:personnel:employee:update",
+            "type": 3,
+            "sort": 0,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 188799949844549,
+            "parentId": 188799375847493,
+            "label": "删除",
+            "code": "api:personnel:employee:softdelete",
+            "type": 3,
+            "sort": 0,
+            "enabled": true,
+            "description": ""
+          },
+          {
+            "id": 188799997452357,
+            "parentId": 188799375847493,
+            "label": "批量删除",
+            "code": "api:personnel:employee:batchsoftdelete",
+            "type": 3,
+            "sort": 0,
+            "enabled": true,
+            "description": ""
+          }
+        ]
+      }
+    ]
+  }
+]

+ 537 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_permission_api.json

@@ -0,0 +1,537 @@
+[
+  {
+    "id": 171046015770694,
+    "permissionId": 161227168628805,
+    "apiId": 161227168182342
+  },
+  {
+    "id": 171045671936071,
+    "permissionId": 161227168628806,
+    "apiId": 161227168182342
+  },
+  {
+    "id": 171045671936072,
+    "permissionId": 161227168628806,
+    "apiId": 161227168194630
+  },
+  {
+    "id": 171045702873158,
+    "permissionId": 161227168632901,
+    "apiId": 161227168194629
+  },
+  {
+    "id": 171055081529413,
+    "permissionId": 161227168641093,
+    "apiId": 161227168186437
+  },
+  {
+    "id": 189095579377733,
+    "permissionId": 161227168641094,
+    "apiId": 161227168186438
+  },
+  {
+    "id": 189095579377734,
+    "permissionId": 161227168641094,
+    "apiId": 189095453691973
+  },
+  {
+    "id": 171036587671621,
+    "permissionId": 161227168645189,
+    "apiId": 161227168182343
+  },
+  {
+    "id": 171036587671622,
+    "permissionId": 161227168645189,
+    "apiId": 161227168190533
+  },
+  {
+    "id": 171036422099014,
+    "permissionId": 161227168645190,
+    "apiId": 161227168190534
+  },
+  {
+    "id": 171036465147973,
+    "permissionId": 161227168649285,
+    "apiId": 161227168190535
+  },
+  {
+    "id": 171039502520389,
+    "permissionId": 161227168653382,
+    "apiId": 161227168170055
+  },
+  {
+    "id": 171039545122886,
+    "permissionId": 161227168657477,
+    "apiId": 161227168174149
+  },
+  {
+    "id": 171039733657671,
+    "permissionId": 161227168657478,
+    "apiId": 161227168170054
+  },
+  {
+    "id": 171039733657672,
+    "permissionId": 161227168657478,
+    "apiId": 161227168178245
+  },
+  {
+    "id": 171039620800582,
+    "permissionId": 161227168661573,
+    "apiId": 161227168178246
+  },
+  {
+    "id": 171039661600837,
+    "permissionId": 161227168665669,
+    "apiId": 161227168182341
+  },
+  {
+    "id": 171039848452166,
+    "permissionId": 161227168669766,
+    "apiId": 161227168116805
+  },
+  {
+    "id": 171039883370566,
+    "permissionId": 161227168673861,
+    "apiId": 161227168120901
+  },
+  {
+    "id": 171039935344711,
+    "permissionId": 161227168673862,
+    "apiId": 161227168079941
+  },
+  {
+    "id": 171039935344712,
+    "permissionId": 161227168673862,
+    "apiId": 161227168120902
+  },
+  {
+    "id": 171039984590918,
+    "permissionId": 161227168677957,
+    "apiId": 161227168120903
+  },
+  {
+    "id": 171040049598534,
+    "permissionId": 161227168677958,
+    "apiId": 161227168124997
+  },
+  {
+    "id": 171040100655174,
+    "permissionId": 161227168682053,
+    "apiId": 161227168124998
+  },
+  {
+    "id": 171040178724934,
+    "permissionId": 161227168686150,
+    "apiId": 161227168198726
+  },
+  {
+    "id": 171040219164742,
+    "permissionId": 161227168690245,
+    "apiId": 161227168202822
+  },
+  {
+    "id": 171040256553031,
+    "permissionId": 161227168690246,
+    "apiId": 161227168198725
+  },
+  {
+    "id": 171040256553032,
+    "permissionId": 161227168690246,
+    "apiId": 161227168202823
+  },
+  {
+    "id": 171040295129157,
+    "permissionId": 161227168694341,
+    "apiId": 161227168206917
+  },
+  {
+    "id": 171040330653766,
+    "permissionId": 161227168694342,
+    "apiId": 161227168206918
+  },
+  {
+    "id": 171040379768902,
+    "permissionId": 161227168698437,
+    "apiId": 161227168206919
+  },
+  {
+    "id": 171040930574406,
+    "permissionId": 161227168702534,
+    "apiId": 161227168141383
+  },
+  {
+    "id": 171041051480134,
+    "permissionId": 161227168706629,
+    "apiId": 161227168153669
+  },
+  {
+    "id": 171040981246021,
+    "permissionId": 161227168706630,
+    "apiId": 161227168153670
+  },
+  {
+    "id": 171041490071623,
+    "permissionId": 161227168710726,
+    "apiId": 161227168145477
+  },
+  {
+    "id": 171041490071624,
+    "permissionId": 161227168710726,
+    "apiId": 161227168157765
+  },
+  {
+    "id": 171041379016773,
+    "permissionId": 161227168714821,
+    "apiId": 161227168145478
+  },
+  {
+    "id": 171041379016774,
+    "permissionId": 161227168714821,
+    "apiId": 161227168157766
+  },
+  {
+    "id": 171041229475910,
+    "permissionId": 161227168718917,
+    "apiId": 161227168161862
+  },
+  {
+    "id": 171040863215686,
+    "permissionId": 161227168727110,
+    "apiId": 161227168165959
+  },
+  {
+    "id": 171040714301511,
+    "permissionId": 161227168731205,
+    "apiId": 161227168165958
+  },
+  {
+    "id": 171040714301512,
+    "permissionId": 161227168731205,
+    "apiId": 161227168170053
+  },
+  {
+    "id": 171044150452296,
+    "permissionId": 161227168735301,
+    "apiId": 161227168149574
+  },
+  {
+    "id": 171044150452297,
+    "permissionId": 161227168735301,
+    "apiId": 161227168149575
+  },
+  {
+    "id": 171044150452298,
+    "permissionId": 161227168735301,
+    "apiId": 161227168170055
+  },
+  {
+    "id": 171043491364937,
+    "permissionId": 161227168739398,
+    "apiId": 161227168149574
+  },
+  {
+    "id": 171043491364938,
+    "permissionId": 161227168739398,
+    "apiId": 161227168149575
+  },
+  {
+    "id": 171043491364939,
+    "permissionId": 161227168739398,
+    "apiId": 161227168165957
+  },
+  {
+    "id": 171043491364940,
+    "permissionId": 161227168739398,
+    "apiId": 161227168170055
+  },
+  {
+    "id": 171044112568390,
+    "permissionId": 161227168747589,
+    "apiId": 161227168211013
+  },
+  {
+    "id": 171042505658439,
+    "permissionId": 161227168747590,
+    "apiId": 161227168211013
+  },
+  {
+    "id": 171042505658440,
+    "permissionId": 161227168747590,
+    "apiId": 161227168211014
+  },
+  {
+    "id": 171044276404294,
+    "permissionId": 161227168751686,
+    "apiId": 161227168243782
+  },
+  {
+    "id": 171044306128966,
+    "permissionId": 161227168755781,
+    "apiId": 161227168243783
+  },
+  {
+    "id": 171044724113479,
+    "permissionId": 161227168755782,
+    "apiId": 161227168243781
+  },
+  {
+    "id": 171044724113480,
+    "permissionId": 161227168755782,
+    "apiId": 161227168247877
+  },
+  {
+    "id": 171044355190854,
+    "permissionId": 161227168759877,
+    "apiId": 161227168247878
+  },
+  {
+    "id": 171044388511814,
+    "permissionId": 161227168759878,
+    "apiId": 161227168251973
+  },
+  {
+    "id": 171045341298758,
+    "permissionId": 161227168784454,
+    "apiId": 161227168215109
+  },
+  {
+    "id": 171045383643206,
+    "permissionId": 161227168788550,
+    "apiId": 161227168215110
+  },
+  {
+    "id": 171046614102086,
+    "permissionId": 161227168800838,
+    "apiId": 161227168223302
+  },
+  {
+    "id": 171046647849030,
+    "permissionId": 161227168804933,
+    "apiId": 161227168227397
+  },
+  {
+    "id": 171046740811847,
+    "permissionId": 161227168809029,
+    "apiId": 161227168219205
+  },
+  {
+    "id": 171046740811848,
+    "permissionId": 161227168809029,
+    "apiId": 161227168227398
+  },
+  {
+    "id": 171046827180103,
+    "permissionId": 161227168813125,
+    "apiId": 161227168219206
+  },
+  {
+    "id": 171046827180104,
+    "permissionId": 161227168813125,
+    "apiId": 161227168231493
+  },
+  {
+    "id": 171046899044422,
+    "permissionId": 161227168813126,
+    "apiId": 161227168231494
+  },
+  {
+    "id": 185974955921477,
+    "permissionId": 161227168821318,
+    "apiId": 161227168215111
+  },
+  {
+    "id": 185974955921478,
+    "permissionId": 161227168821318,
+    "apiId": 161227168235589
+  },
+  {
+    "id": 171047159746631,
+    "permissionId": 161227168825414,
+    "apiId": 161227168235589
+  },
+  {
+    "id": 171047159746632,
+    "permissionId": 161227168825414,
+    "apiId": 161227168235590
+  },
+  {
+    "id": 171046199644230,
+    "permissionId": 161227168829509,
+    "apiId": 161227168235591
+  },
+  {
+    "id": 171046300762182,
+    "permissionId": 161227168833605,
+    "apiId": 161227168239685
+  },
+  {
+    "id": 171046127857734,
+    "permissionId": 161227168833606,
+    "apiId": 161227168239686
+  },
+  {
+    "id": 171044607758405,
+    "permissionId": 161807358345285,
+    "apiId": 170317848645701
+  },
+  {
+    "id": 171044607758406,
+    "permissionId": 161807358345285,
+    "apiId": 170317848662085
+  },
+  {
+    "id": 171044440813638,
+    "permissionId": 163579955331141,
+    "apiId": 163579785756741
+  },
+  {
+    "id": 187390793699399,
+    "permissionId": 187375358951493,
+    "apiId": 161227168137286
+  },
+  {
+    "id": 187390793703493,
+    "permissionId": 187375358951493,
+    "apiId": 174219034734662
+  },
+  {
+    "id": 187385577730117,
+    "permissionId": 187385577599045,
+    "apiId": 187384805367877
+  },
+  {
+    "id": 187390759231560,
+    "permissionId": 187389970825285,
+    "apiId": 161227168137285
+  },
+  {
+    "id": 187390759231561,
+    "permissionId": 187389970825285,
+    "apiId": 161227168141381
+  },
+  {
+    "id": 187390759231562,
+    "permissionId": 187389970825285,
+    "apiId": 174219034734661
+  },
+  {
+    "id": 187390759231563,
+    "permissionId": 187389970825285,
+    "apiId": 174219034734664
+  },
+  {
+    "id": 187391074381895,
+    "permissionId": 187390547820613,
+    "apiId": 161227168141382
+  },
+  {
+    "id": 187391074381896,
+    "permissionId": 187390547820613,
+    "apiId": 174219034734665
+  },
+  {
+    "id": 187391371079750,
+    "permissionId": 187391371018309,
+    "apiId": 184100551516229
+  },
+  {
+    "id": 187391371079751,
+    "permissionId": 187391371018309,
+    "apiId": 184100551532613
+  },
+  {
+    "id": 187391980814407,
+    "permissionId": 187391980761157,
+    "apiId": 161227168137287
+  },
+  {
+    "id": 187391980814408,
+    "permissionId": 187391980761157,
+    "apiId": 174219034734663
+  },
+  {
+    "id": 188054258307141,
+    "permissionId": 188054258278469,
+    "apiId": 188049296683077
+  },
+  {
+    "id": 188054341591109,
+    "permissionId": 188054341582917,
+    "apiId": 174219034734674
+  },
+  {
+    "id": 188054416900167,
+    "permissionId": 188054416891973,
+    "apiId": 174219034734672
+  },
+  {
+    "id": 188054416900168,
+    "permissionId": 188054416891973,
+    "apiId": 174219034738757
+  },
+  {
+    "id": 188054509035590,
+    "permissionId": 188054509027397,
+    "apiId": 174219034738758
+  },
+  {
+    "id": 188054656598086,
+    "permissionId": 188054656589893,
+    "apiId": 174219034738760
+  },
+  {
+    "id": 188054719275078,
+    "permissionId": 188054719266885,
+    "apiId": 174219034738761
+  },
+  {
+    "id": 188054776557639,
+    "permissionId": 188054776545349,
+    "apiId": 174219034738759
+  },
+  {
+    "id": 188054776557640,
+    "permissionId": 188054776545349,
+    "apiId": 174219034738762
+  },
+  {
+    "id": 188054835359813,
+    "permissionId": 188054834004037,
+    "apiId": 174219034738763
+  },
+  {
+    "id": 188799732666437,
+    "permissionId": 188799732494405,
+    "apiId": 174219034734667
+  },
+  {
+    "id": 188799795204165,
+    "permissionId": 188799795101765,
+    "apiId": 174219034734668
+  },
+  {
+    "id": 188799878713413,
+    "permissionId": 188799878676549,
+    "apiId": 174219034734666
+  },
+  {
+    "id": 188799878713414,
+    "permissionId": 188799878676549,
+    "apiId": 174219034734669
+  },
+  {
+    "id": 188799949889606,
+    "permissionId": 188799949844549,
+    "apiId": 174219034734670
+  },
+  {
+    "id": 188799997497414,
+    "permissionId": 188799997452357,
+    "apiId": 174219034734671
+  },
+  {
+    "id": 189345990312005,
+    "permissionId": 189345990168645,
+    "apiId": 174219034738764
+  }
+]

+ 16 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_role.json

@@ -0,0 +1,16 @@
+[
+  {
+    "id": 161223412080709,
+    "name": "平台管理员",
+    "code": "plat_admin",
+    "description": "",
+    "enabled": true
+  },
+  {
+    "id": 162605510979653,
+    "name": "平台用户",
+    "code": "plat_user",
+    "description": "",
+    "enabled": true
+  }
+]

+ 25 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_role.tenant.json

@@ -0,0 +1,25 @@
+[
+  {
+    "tenantId": 161223412138053,
+    "id": 161223412080709,
+    "name": "平台管理员",
+    "code": "plat_admin",
+    "description": "",
+    "enabled": true
+  },
+  {
+    "tenantId": 162083448455237,
+    "id": 162083448594501,
+    "name": "平台管理员",
+    "code": "plat_admin",
+    "enabled": true
+  },
+  {
+    "tenantId": 161223412138053,
+    "id": 162605510979653,
+    "name": "平台用户",
+    "code": "plat_user",
+    "description": "",
+    "enabled": true
+  }
+]

+ 1367 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_role_permission.json

@@ -0,0 +1,1367 @@
+[
+  {
+    "id": 161565593014341,
+    "roleId": 161223412080709,
+    "permissionId": 161227168464965
+  },
+  {
+    "id": 161565592956997,
+    "roleId": 161223412080709,
+    "permissionId": 161227168497733
+  },
+  {
+    "id": 161565593014342,
+    "roleId": 161223412080709,
+    "permissionId": 161227168497734
+  },
+  {
+    "id": 161565593018442,
+    "roleId": 161223412080709,
+    "permissionId": 161227168624709
+  },
+  {
+    "id": 161565593030730,
+    "roleId": 161223412080709,
+    "permissionId": 161227168628805
+  },
+  {
+    "id": 161565593030731,
+    "roleId": 161223412080709,
+    "permissionId": 161227168628806
+  },
+  {
+    "id": 161565593030732,
+    "roleId": 161223412080709,
+    "permissionId": 161227168632901
+  },
+  {
+    "id": 161565593014343,
+    "roleId": 161223412080709,
+    "permissionId": 161227168632902
+  },
+  {
+    "id": 161565593014344,
+    "roleId": 161223412080709,
+    "permissionId": 161227168636997
+  },
+  {
+    "id": 161565593014345,
+    "roleId": 161223412080709,
+    "permissionId": 161227168636998
+  },
+  {
+    "id": 161565593018446,
+    "roleId": 161223412080709,
+    "permissionId": 161227168641093
+  },
+  {
+    "id": 161565593018447,
+    "roleId": 161223412080709,
+    "permissionId": 161227168641094
+  },
+  {
+    "id": 161565593018448,
+    "roleId": 161223412080709,
+    "permissionId": 161227168645189
+  },
+  {
+    "id": 161565593018449,
+    "roleId": 161223412080709,
+    "permissionId": 161227168645190
+  },
+  {
+    "id": 161565593018450,
+    "roleId": 161223412080709,
+    "permissionId": 161227168649285
+  },
+  {
+    "id": 161565593018451,
+    "roleId": 161223412080709,
+    "permissionId": 161227168649286
+  },
+  {
+    "id": 161565593014346,
+    "roleId": 161223412080709,
+    "permissionId": 161227168653381
+  },
+  {
+    "id": 161565593018452,
+    "roleId": 161223412080709,
+    "permissionId": 161227168653382
+  },
+  {
+    "id": 161565593018453,
+    "roleId": 161223412080709,
+    "permissionId": 161227168657477
+  },
+  {
+    "id": 161565593018454,
+    "roleId": 161223412080709,
+    "permissionId": 161227168657478
+  },
+  {
+    "id": 161565593018455,
+    "roleId": 161223412080709,
+    "permissionId": 161227168661573
+  },
+  {
+    "id": 161565593018456,
+    "roleId": 161223412080709,
+    "permissionId": 161227168665669
+  },
+  {
+    "id": 161565593022533,
+    "roleId": 161223412080709,
+    "permissionId": 161227168665670
+  },
+  {
+    "id": 161565593014347,
+    "roleId": 161223412080709,
+    "permissionId": 161227168669765
+  },
+  {
+    "id": 161565593022534,
+    "roleId": 161223412080709,
+    "permissionId": 161227168669766
+  },
+  {
+    "id": 161565593022535,
+    "roleId": 161223412080709,
+    "permissionId": 161227168673861
+  },
+  {
+    "id": 161565593022536,
+    "roleId": 161223412080709,
+    "permissionId": 161227168673862
+  },
+  {
+    "id": 161565593022537,
+    "roleId": 161223412080709,
+    "permissionId": 161227168677957
+  },
+  {
+    "id": 161565593022538,
+    "roleId": 161223412080709,
+    "permissionId": 161227168677958
+  },
+  {
+    "id": 161565593022539,
+    "roleId": 161223412080709,
+    "permissionId": 161227168682053
+  },
+  {
+    "id": 161565593022540,
+    "roleId": 161223412080709,
+    "permissionId": 161227168682054
+  },
+  {
+    "id": 161565593014348,
+    "roleId": 161223412080709,
+    "permissionId": 161227168686149
+  },
+  {
+    "id": 161565593022541,
+    "roleId": 161223412080709,
+    "permissionId": 161227168686150
+  },
+  {
+    "id": 161565593022542,
+    "roleId": 161223412080709,
+    "permissionId": 161227168690245
+  },
+  {
+    "id": 161565593022543,
+    "roleId": 161223412080709,
+    "permissionId": 161227168690246
+  },
+  {
+    "id": 161565593022544,
+    "roleId": 161223412080709,
+    "permissionId": 161227168694341
+  },
+  {
+    "id": 161565593022545,
+    "roleId": 161223412080709,
+    "permissionId": 161227168694342
+  },
+  {
+    "id": 161565593022546,
+    "roleId": 161223412080709,
+    "permissionId": 161227168698437
+  },
+  {
+    "id": 161565593022547,
+    "roleId": 161223412080709,
+    "permissionId": 161227168698438
+  },
+  {
+    "id": 161565593014349,
+    "roleId": 161223412080709,
+    "permissionId": 161227168702533
+  },
+  {
+    "id": 161565593022551,
+    "roleId": 161223412080709,
+    "permissionId": 161227168702534
+  },
+  {
+    "id": 161565593026629,
+    "roleId": 161223412080709,
+    "permissionId": 161227168706629
+  },
+  {
+    "id": 161565593026630,
+    "roleId": 161223412080709,
+    "permissionId": 161227168706630
+  },
+  {
+    "id": 161565593026631,
+    "roleId": 161223412080709,
+    "permissionId": 161227168710725
+  },
+  {
+    "id": 161565593026632,
+    "roleId": 161223412080709,
+    "permissionId": 161227168710726
+  },
+  {
+    "id": 161565593026633,
+    "roleId": 161223412080709,
+    "permissionId": 161227168714821
+  },
+  {
+    "id": 161565593026634,
+    "roleId": 161223412080709,
+    "permissionId": 161227168714822
+  },
+  {
+    "id": 161565593026635,
+    "roleId": 161223412080709,
+    "permissionId": 161227168718917
+  },
+  {
+    "id": 161565593026636,
+    "roleId": 161223412080709,
+    "permissionId": 161227168718918
+  },
+  {
+    "id": 161565593026637,
+    "roleId": 161223412080709,
+    "permissionId": 161227168723013
+  },
+  {
+    "id": 161565593026638,
+    "roleId": 161223412080709,
+    "permissionId": 161227168723014
+  },
+  {
+    "id": 161565593022550,
+    "roleId": 161223412080709,
+    "permissionId": 161227168727109
+  },
+  {
+    "id": 161565593022549,
+    "roleId": 161223412080709,
+    "permissionId": 161227168727110
+  },
+  {
+    "id": 161565593022548,
+    "roleId": 161223412080709,
+    "permissionId": 161227168731205
+  },
+  {
+    "id": 161565593014350,
+    "roleId": 161223412080709,
+    "permissionId": 161227168731206
+  },
+  {
+    "id": 161565593026639,
+    "roleId": 161223412080709,
+    "permissionId": 161227168735301
+  },
+  {
+    "id": 161565593026640,
+    "roleId": 161223412080709,
+    "permissionId": 161227168735302
+  },
+  {
+    "id": 161565593026641,
+    "roleId": 161223412080709,
+    "permissionId": 161227168739397
+  },
+  {
+    "id": 161565593026642,
+    "roleId": 161223412080709,
+    "permissionId": 161227168739398
+  },
+  {
+    "id": 161565593014351,
+    "roleId": 161223412080709,
+    "permissionId": 161227168743493
+  },
+  {
+    "id": 161565593026643,
+    "roleId": 161223412080709,
+    "permissionId": 161227168747589
+  },
+  {
+    "id": 161565593026644,
+    "roleId": 161223412080709,
+    "permissionId": 161227168747590
+  },
+  {
+    "id": 161565593014352,
+    "roleId": 161223412080709,
+    "permissionId": 161227168751685
+  },
+  {
+    "id": 161565593026645,
+    "roleId": 161223412080709,
+    "permissionId": 161227168751686
+  },
+  {
+    "id": 161565593026646,
+    "roleId": 161223412080709,
+    "permissionId": 161227168755781
+  },
+  {
+    "id": 161565593026647,
+    "roleId": 161223412080709,
+    "permissionId": 161227168755782
+  },
+  {
+    "id": 161565593026648,
+    "roleId": 161223412080709,
+    "permissionId": 161227168759877
+  },
+  {
+    "id": 161565593026649,
+    "roleId": 161223412080709,
+    "permissionId": 161227168759878
+  },
+  {
+    "id": 161565593026650,
+    "roleId": 161223412080709,
+    "permissionId": 161227168763973
+  },
+  {
+    "id": 161565593014353,
+    "roleId": 161223412080709,
+    "permissionId": 161227168763974
+  },
+  {
+    "id": 161565593018437,
+    "roleId": 161223412080709,
+    "permissionId": 161227168768069
+  },
+  {
+    "id": 161565593018438,
+    "roleId": 161223412080709,
+    "permissionId": 161227168768070
+  },
+  {
+    "id": 161565593026651,
+    "roleId": 161223412080709,
+    "permissionId": 161227168772165
+  },
+  {
+    "id": 161565593026652,
+    "roleId": 161223412080709,
+    "permissionId": 161227168772166
+  },
+  {
+    "id": 161565593030725,
+    "roleId": 161223412080709,
+    "permissionId": 161227168776261
+  },
+  {
+    "id": 161565593030726,
+    "roleId": 161223412080709,
+    "permissionId": 161227168776262
+  },
+  {
+    "id": 161565593030727,
+    "roleId": 161223412080709,
+    "permissionId": 161227168780357
+  },
+  {
+    "id": 161565593018439,
+    "roleId": 161223412080709,
+    "permissionId": 161227168780358
+  },
+  {
+    "id": 161565593018440,
+    "roleId": 161223412080709,
+    "permissionId": 161227168784453
+  },
+  {
+    "id": 161565593030728,
+    "roleId": 161223412080709,
+    "permissionId": 161227168784454
+  },
+  {
+    "id": 161565593018441,
+    "roleId": 161223412080709,
+    "permissionId": 161227168788549
+  },
+  {
+    "id": 161565593030729,
+    "roleId": 161223412080709,
+    "permissionId": 161227168788550
+  },
+  {
+    "id": 161565593018444,
+    "roleId": 161223412080709,
+    "permissionId": 161227168792645
+  },
+  {
+    "id": 161565593018445,
+    "roleId": 161223412080709,
+    "permissionId": 161227168792646
+  },
+  {
+    "id": 161565593018443,
+    "roleId": 161223412080709,
+    "permissionId": 161227168796741
+  },
+  {
+    "id": 161565593030737,
+    "roleId": 161223412080709,
+    "permissionId": 161227168800837
+  },
+  {
+    "id": 161565593030740,
+    "roleId": 161223412080709,
+    "permissionId": 161227168800838
+  },
+  {
+    "id": 161565593030741,
+    "roleId": 161223412080709,
+    "permissionId": 161227168804933
+  },
+  {
+    "id": 161565593030742,
+    "roleId": 161223412080709,
+    "permissionId": 161227168809029
+  },
+  {
+    "id": 161565593030743,
+    "roleId": 161223412080709,
+    "permissionId": 161227168813125
+  },
+  {
+    "id": 161565593030744,
+    "roleId": 161223412080709,
+    "permissionId": 161227168813126
+  },
+  {
+    "id": 161565593030738,
+    "roleId": 161223412080709,
+    "permissionId": 161227168817221
+  },
+  {
+    "id": 161565593030739,
+    "roleId": 161223412080709,
+    "permissionId": 161227168821317
+  },
+  {
+    "id": 161565593030736,
+    "roleId": 161223412080709,
+    "permissionId": 161227168821318
+  },
+  {
+    "id": 161565593030745,
+    "roleId": 161223412080709,
+    "permissionId": 161227168825413
+  },
+  {
+    "id": 161565593030746,
+    "roleId": 161223412080709,
+    "permissionId": 161227168825414
+  },
+  {
+    "id": 183778335580233,
+    "roleId": 161223412080709,
+    "permissionId": 161227168829509
+  },
+  {
+    "id": 161565593030735,
+    "roleId": 161223412080709,
+    "permissionId": 161227168833605
+  },
+  {
+    "id": 161565593030734,
+    "roleId": 161223412080709,
+    "permissionId": 161227168833606
+  },
+  {
+    "id": 161807399874629,
+    "roleId": 161223412080709,
+    "permissionId": 161807358345285
+  },
+  {
+    "id": 163580436009029,
+    "roleId": 161223412080709,
+    "permissionId": 163579955331141
+  },
+  {
+    "id": 170679499796549,
+    "roleId": 161223412080709,
+    "permissionId": 170679206428741
+  },
+  {
+    "id": 183778335563845,
+    "roleId": 161223412080709,
+    "permissionId": 183718997708869
+  },
+  {
+    "id": 183778335580232,
+    "roleId": 161223412080709,
+    "permissionId": 183777916887109
+  },
+  {
+    "id": 183778335580231,
+    "roleId": 161223412080709,
+    "permissionId": 183777994424389
+  },
+  {
+    "id": 183778335580229,
+    "roleId": 161223412080709,
+    "permissionId": 183778056978501
+  },
+  {
+    "id": 183778335580230,
+    "roleId": 161223412080709,
+    "permissionId": 183778150793285
+  },
+  {
+    "id": 184101102391365,
+    "roleId": 161223412080709,
+    "permissionId": 184100977127493
+  },
+  {
+    "id": 184101102407749,
+    "roleId": 161223412080709,
+    "permissionId": 184101057175621
+  },
+  {
+    "id": 187055989936197,
+    "roleId": 161223412080709,
+    "permissionId": 187055743545413
+  },
+  {
+    "id": 187385627279429,
+    "roleId": 161223412080709,
+    "permissionId": 187375358951493
+  },
+  {
+    "id": 187385627217989,
+    "roleId": 161223412080709,
+    "permissionId": 187385577599045
+  },
+  {
+    "id": 187391597285445,
+    "roleId": 161223412080709,
+    "permissionId": 187389970825285
+  },
+  {
+    "id": 187391597310021,
+    "roleId": 161223412080709,
+    "permissionId": 187390547820613
+  },
+  {
+    "id": 187391597310022,
+    "roleId": 161223412080709,
+    "permissionId": 187391371018309
+  },
+  {
+    "id": 187392010170437,
+    "roleId": 161223412080709,
+    "permissionId": 187391980761157
+  },
+  {
+    "id": 188054886735941,
+    "roleId": 161223412080709,
+    "permissionId": 188049591447621
+  },
+  {
+    "id": 188054886748230,
+    "roleId": 161223412080709,
+    "permissionId": 188050115035205
+  },
+  {
+    "id": 188054886748229,
+    "roleId": 161223412080709,
+    "permissionId": 188053882503237
+  },
+  {
+    "id": 188054886748234,
+    "roleId": 161223412080709,
+    "permissionId": 188054258278469
+  },
+  {
+    "id": 188054886748233,
+    "roleId": 161223412080709,
+    "permissionId": 188054341582917
+  },
+  {
+    "id": 188054886748231,
+    "roleId": 161223412080709,
+    "permissionId": 188054416891973
+  },
+  {
+    "id": 188054886748232,
+    "roleId": 161223412080709,
+    "permissionId": 188054509027397
+  },
+  {
+    "id": 188054886748238,
+    "roleId": 161223412080709,
+    "permissionId": 188054656589893
+  },
+  {
+    "id": 188054886748237,
+    "roleId": 161223412080709,
+    "permissionId": 188054719266885
+  },
+  {
+    "id": 188054886748235,
+    "roleId": 161223412080709,
+    "permissionId": 188054776545349
+  },
+  {
+    "id": 188054886748236,
+    "roleId": 161223412080709,
+    "permissionId": 188054834004037
+  },
+  {
+    "id": 188800411451461,
+    "roleId": 161223412080709,
+    "permissionId": 188799375847493
+  },
+  {
+    "id": 188800411451466,
+    "roleId": 161223412080709,
+    "permissionId": 188799732494405
+  },
+  {
+    "id": 188800411451465,
+    "roleId": 161223412080709,
+    "permissionId": 188799795101765
+  },
+  {
+    "id": 188800411451462,
+    "roleId": 161223412080709,
+    "permissionId": 188799878676549
+  },
+  {
+    "id": 188800411451463,
+    "roleId": 161223412080709,
+    "permissionId": 188799949844549
+  },
+  {
+    "id": 188800411451464,
+    "roleId": 161223412080709,
+    "permissionId": 188799997452357
+  },
+  {
+    "id": 189346039275589,
+    "roleId": 161223412080709,
+    "permissionId": 189345990168645
+  },
+  {
+    "id": 162105754484810,
+    "roleId": 162083448594501,
+    "permissionId": 161227168464965
+  },
+  {
+    "id": 162105754480709,
+    "roleId": 162083448594501,
+    "permissionId": 161227168497733
+  },
+  {
+    "id": 162105754484812,
+    "roleId": 162083448594501,
+    "permissionId": 161227168497734
+  },
+  {
+    "id": 162105754484809,
+    "roleId": 162083448594501,
+    "permissionId": 161227168624709
+  },
+  {
+    "id": 162105754484834,
+    "roleId": 162083448594501,
+    "permissionId": 161227168628805
+  },
+  {
+    "id": 162105754484835,
+    "roleId": 162083448594501,
+    "permissionId": 161227168628806
+  },
+  {
+    "id": 162105754484836,
+    "roleId": 162083448594501,
+    "permissionId": 161227168632901
+  },
+  {
+    "id": 162105754480710,
+    "roleId": 162083448594501,
+    "permissionId": 161227168636997
+  },
+  {
+    "id": 162105754382405,
+    "roleId": 162083448594501,
+    "permissionId": 161227168636998
+  },
+  {
+    "id": 162105754484813,
+    "roleId": 162083448594501,
+    "permissionId": 161227168641093
+  },
+  {
+    "id": 162105754484814,
+    "roleId": 162083448594501,
+    "permissionId": 161227168641094
+  },
+  {
+    "id": 162105754484815,
+    "roleId": 162083448594501,
+    "permissionId": 161227168645189
+  },
+  {
+    "id": 162105754484816,
+    "roleId": 162083448594501,
+    "permissionId": 161227168645190
+  },
+  {
+    "id": 162105754484817,
+    "roleId": 162083448594501,
+    "permissionId": 161227168649285
+  },
+  {
+    "id": 162105754484818,
+    "roleId": 162083448594501,
+    "permissionId": 161227168649286
+  },
+  {
+    "id": 162105754484805,
+    "roleId": 162083448594501,
+    "permissionId": 161227168653381
+  },
+  {
+    "id": 162105754484819,
+    "roleId": 162083448594501,
+    "permissionId": 161227168653382
+  },
+  {
+    "id": 162105754484820,
+    "roleId": 162083448594501,
+    "permissionId": 161227168657477
+  },
+  {
+    "id": 162105754484821,
+    "roleId": 162083448594501,
+    "permissionId": 161227168657478
+  },
+  {
+    "id": 162105754484822,
+    "roleId": 162083448594501,
+    "permissionId": 161227168661573
+  },
+  {
+    "id": 162105754484823,
+    "roleId": 162083448594501,
+    "permissionId": 161227168665669
+  },
+  {
+    "id": 162105754484824,
+    "roleId": 162083448594501,
+    "permissionId": 161227168665670
+  },
+  {
+    "id": 162105754484806,
+    "roleId": 162083448594501,
+    "permissionId": 161227168731206
+  },
+  {
+    "id": 162105754484825,
+    "roleId": 162083448594501,
+    "permissionId": 161227168735301
+  },
+  {
+    "id": 162105754484826,
+    "roleId": 162083448594501,
+    "permissionId": 161227168735302
+  },
+  {
+    "id": 162105754484827,
+    "roleId": 162083448594501,
+    "permissionId": 161227168739397
+  },
+  {
+    "id": 162105754484828,
+    "roleId": 162083448594501,
+    "permissionId": 161227168739398
+  },
+  {
+    "id": 162105754484808,
+    "roleId": 162083448594501,
+    "permissionId": 161227168763974
+  },
+  {
+    "id": 162105754484807,
+    "roleId": 162083448594501,
+    "permissionId": 161227168768070
+  },
+  {
+    "id": 162105754484829,
+    "roleId": 162083448594501,
+    "permissionId": 161227168772165
+  },
+  {
+    "id": 162105754484830,
+    "roleId": 162083448594501,
+    "permissionId": 161227168772166
+  },
+  {
+    "id": 162105754484831,
+    "roleId": 162083448594501,
+    "permissionId": 161227168776261
+  },
+  {
+    "id": 162105754484832,
+    "roleId": 162083448594501,
+    "permissionId": 161227168776262
+  },
+  {
+    "id": 162105754484833,
+    "roleId": 162083448594501,
+    "permissionId": 161227168780357
+  },
+  {
+    "id": 162131333746757,
+    "roleId": 162083448594501,
+    "permissionId": 161227168780358
+  },
+  {
+    "id": 162131333775429,
+    "roleId": 162083448594501,
+    "permissionId": 161227168784453
+  },
+  {
+    "id": 162131333775431,
+    "roleId": 162083448594501,
+    "permissionId": 161227168784454
+  },
+  {
+    "id": 162131333775430,
+    "roleId": 162083448594501,
+    "permissionId": 161227168788549
+  },
+  {
+    "id": 162131333775432,
+    "roleId": 162083448594501,
+    "permissionId": 161227168788550
+  },
+  {
+    "id": 162105754484811,
+    "roleId": 162083448594501,
+    "permissionId": 161227168796741
+  },
+  {
+    "id": 162105754484838,
+    "roleId": 162083448594501,
+    "permissionId": 161227168800837
+  },
+  {
+    "id": 162105754484841,
+    "roleId": 162083448594501,
+    "permissionId": 161227168800838
+  },
+  {
+    "id": 162105754484842,
+    "roleId": 162083448594501,
+    "permissionId": 161227168804933
+  },
+  {
+    "id": 162105754484843,
+    "roleId": 162083448594501,
+    "permissionId": 161227168809029
+  },
+  {
+    "id": 162105754484844,
+    "roleId": 162083448594501,
+    "permissionId": 161227168813125
+  },
+  {
+    "id": 162105754488901,
+    "roleId": 162083448594501,
+    "permissionId": 161227168813126
+  },
+  {
+    "id": 162105754484839,
+    "roleId": 162083448594501,
+    "permissionId": 161227168817221
+  },
+  {
+    "id": 162105754484840,
+    "roleId": 162083448594501,
+    "permissionId": 161227168821317
+  },
+  {
+    "id": 162105754484837,
+    "roleId": 162083448594501,
+    "permissionId": 161227168821318
+  },
+  {
+    "id": 162105754488902,
+    "roleId": 162083448594501,
+    "permissionId": 161227168825413
+  },
+  {
+    "id": 162105754488903,
+    "roleId": 162083448594501,
+    "permissionId": 161227168825414
+  },
+  {
+    "id": 162105754488904,
+    "roleId": 162083448594501,
+    "permissionId": 161227168833605
+  },
+  {
+    "id": 162105754488905,
+    "roleId": 162083448594501,
+    "permissionId": 161227168833606
+  },
+  {
+    "id": 189493447802949,
+    "roleId": 162083448594501,
+    "permissionId": 187055743545413
+  },
+  {
+    "id": 189493447843912,
+    "roleId": 162083448594501,
+    "permissionId": 187375358951493
+  },
+  {
+    "id": 189493447843914,
+    "roleId": 162083448594501,
+    "permissionId": 187389970825285
+  },
+  {
+    "id": 189493447843915,
+    "roleId": 162083448594501,
+    "permissionId": 187390547820613
+  },
+  {
+    "id": 189493447843916,
+    "roleId": 162083448594501,
+    "permissionId": 187391371018309
+  },
+  {
+    "id": 189493447843913,
+    "roleId": 162083448594501,
+    "permissionId": 187391980761157
+  },
+  {
+    "id": 189493447839813,
+    "roleId": 162083448594501,
+    "permissionId": 188049591447621
+  },
+  {
+    "id": 189493447843910,
+    "roleId": 162083448594501,
+    "permissionId": 188050115035205
+  },
+  {
+    "id": 189493447843911,
+    "roleId": 162083448594501,
+    "permissionId": 188053882503237
+  },
+  {
+    "id": 189493447848014,
+    "roleId": 162083448594501,
+    "permissionId": 188054258278469
+  },
+  {
+    "id": 189493447848013,
+    "roleId": 162083448594501,
+    "permissionId": 188054341582917
+  },
+  {
+    "id": 189493447848011,
+    "roleId": 162083448594501,
+    "permissionId": 188054416891973
+  },
+  {
+    "id": 189493447848012,
+    "roleId": 162083448594501,
+    "permissionId": 188054509027397
+  },
+  {
+    "id": 189493447848010,
+    "roleId": 162083448594501,
+    "permissionId": 188054656589893
+  },
+  {
+    "id": 189493447848009,
+    "roleId": 162083448594501,
+    "permissionId": 188054719266885
+  },
+  {
+    "id": 189493447848006,
+    "roleId": 162083448594501,
+    "permissionId": 188054776545349
+  },
+  {
+    "id": 189493447848007,
+    "roleId": 162083448594501,
+    "permissionId": 188054834004037
+  },
+  {
+    "id": 189493447843909,
+    "roleId": 162083448594501,
+    "permissionId": 188799375847493
+  },
+  {
+    "id": 189493447848005,
+    "roleId": 162083448594501,
+    "permissionId": 188799732494405
+  },
+  {
+    "id": 189493447843920,
+    "roleId": 162083448594501,
+    "permissionId": 188799795101765
+  },
+  {
+    "id": 189493447843917,
+    "roleId": 162083448594501,
+    "permissionId": 188799878676549
+  },
+  {
+    "id": 189493447843918,
+    "roleId": 162083448594501,
+    "permissionId": 188799949844549
+  },
+  {
+    "id": 189493447843919,
+    "roleId": 162083448594501,
+    "permissionId": 188799997452357
+  },
+  {
+    "id": 189493447848008,
+    "roleId": 162083448594501,
+    "permissionId": 189345990168645
+  },
+  {
+    "id": 162606254506053,
+    "roleId": 162605510979653,
+    "permissionId": 161227168464965
+  },
+  {
+    "id": 162606254497861,
+    "roleId": 162605510979653,
+    "permissionId": 161227168497733
+  },
+  {
+    "id": 162606254506054,
+    "roleId": 162605510979653,
+    "permissionId": 161227168497734
+  },
+  {
+    "id": 162606254510149,
+    "roleId": 162605510979653,
+    "permissionId": 161227168624709
+  },
+  {
+    "id": 162606254510176,
+    "roleId": 162605510979653,
+    "permissionId": 161227168628805
+  },
+  {
+    "id": 162606254506055,
+    "roleId": 162605510979653,
+    "permissionId": 161227168632902
+  },
+  {
+    "id": 162606254506056,
+    "roleId": 162605510979653,
+    "permissionId": 161227168636997
+  },
+  {
+    "id": 162606254506057,
+    "roleId": 162605510979653,
+    "permissionId": 161227168636998
+  },
+  {
+    "id": 162606254510153,
+    "roleId": 162605510979653,
+    "permissionId": 161227168641093
+  },
+  {
+    "id": 162606254510154,
+    "roleId": 162605510979653,
+    "permissionId": 161227168649286
+  },
+  {
+    "id": 162606254506058,
+    "roleId": 162605510979653,
+    "permissionId": 161227168653381
+  },
+  {
+    "id": 162606254510155,
+    "roleId": 162605510979653,
+    "permissionId": 161227168653382
+  },
+  {
+    "id": 162606254510156,
+    "roleId": 162605510979653,
+    "permissionId": 161227168665670
+  },
+  {
+    "id": 162606254506059,
+    "roleId": 162605510979653,
+    "permissionId": 161227168669765
+  },
+  {
+    "id": 162606254510157,
+    "roleId": 162605510979653,
+    "permissionId": 161227168669766
+  },
+  {
+    "id": 162606254510158,
+    "roleId": 162605510979653,
+    "permissionId": 161227168682054
+  },
+  {
+    "id": 162606254506060,
+    "roleId": 162605510979653,
+    "permissionId": 161227168686149
+  },
+  {
+    "id": 162606254510159,
+    "roleId": 162605510979653,
+    "permissionId": 161227168686150
+  },
+  {
+    "id": 162606254510160,
+    "roleId": 162605510979653,
+    "permissionId": 161227168698438
+  },
+  {
+    "id": 162606254506061,
+    "roleId": 162605510979653,
+    "permissionId": 161227168702533
+  },
+  {
+    "id": 162606254510162,
+    "roleId": 162605510979653,
+    "permissionId": 161227168702534
+  },
+  {
+    "id": 162606254510163,
+    "roleId": 162605510979653,
+    "permissionId": 161227168718918
+  },
+  {
+    "id": 162606254510164,
+    "roleId": 162605510979653,
+    "permissionId": 161227168723013
+  },
+  {
+    "id": 162606254510165,
+    "roleId": 162605510979653,
+    "permissionId": 161227168723014
+  },
+  {
+    "id": 162606254510161,
+    "roleId": 162605510979653,
+    "permissionId": 161227168727109
+  },
+  {
+    "id": 162606254506062,
+    "roleId": 162605510979653,
+    "permissionId": 161227168731206
+  },
+  {
+    "id": 162606254510166,
+    "roleId": 162605510979653,
+    "permissionId": 161227168735301
+  },
+  {
+    "id": 162606254510167,
+    "roleId": 162605510979653,
+    "permissionId": 161227168735302
+  },
+  {
+    "id": 162606254510168,
+    "roleId": 162605510979653,
+    "permissionId": 161227168739397
+  },
+  {
+    "id": 162606254506063,
+    "roleId": 162605510979653,
+    "permissionId": 161227168743493
+  },
+  {
+    "id": 162606254510169,
+    "roleId": 162605510979653,
+    "permissionId": 161227168747589
+  },
+  {
+    "id": 162606254506064,
+    "roleId": 162605510979653,
+    "permissionId": 161227168751685
+  },
+  {
+    "id": 162606254510170,
+    "roleId": 162605510979653,
+    "permissionId": 161227168751686
+  },
+  {
+    "id": 162606254510171,
+    "roleId": 162605510979653,
+    "permissionId": 161227168763973
+  },
+  {
+    "id": 162606254506065,
+    "roleId": 162605510979653,
+    "permissionId": 161227168763974
+  },
+  {
+    "id": 162606254506066,
+    "roleId": 162605510979653,
+    "permissionId": 161227168768069
+  },
+  {
+    "id": 162606254506067,
+    "roleId": 162605510979653,
+    "permissionId": 161227168768070
+  },
+  {
+    "id": 162606254510172,
+    "roleId": 162605510979653,
+    "permissionId": 161227168772165
+  },
+  {
+    "id": 162606254510173,
+    "roleId": 162605510979653,
+    "permissionId": 161227168780357
+  },
+  {
+    "id": 162606254506068,
+    "roleId": 162605510979653,
+    "permissionId": 161227168780358
+  },
+  {
+    "id": 162606254506069,
+    "roleId": 162605510979653,
+    "permissionId": 161227168784453
+  },
+  {
+    "id": 162606254510174,
+    "roleId": 162605510979653,
+    "permissionId": 161227168784454
+  },
+  {
+    "id": 162606254506070,
+    "roleId": 162605510979653,
+    "permissionId": 161227168788549
+  },
+  {
+    "id": 162606254510175,
+    "roleId": 162605510979653,
+    "permissionId": 161227168788550
+  },
+  {
+    "id": 162606254510151,
+    "roleId": 162605510979653,
+    "permissionId": 161227168792645
+  },
+  {
+    "id": 162606254510152,
+    "roleId": 162605510979653,
+    "permissionId": 161227168792646
+  },
+  {
+    "id": 162606254510150,
+    "roleId": 162605510979653,
+    "permissionId": 161227168796741
+  },
+  {
+    "id": 162606254510178,
+    "roleId": 162605510979653,
+    "permissionId": 161227168800837
+  },
+  {
+    "id": 162606254510179,
+    "roleId": 162605510979653,
+    "permissionId": 161227168817221
+  },
+  {
+    "id": 162606254510180,
+    "roleId": 162605510979653,
+    "permissionId": 161227168821317
+  },
+  {
+    "id": 162606254510177,
+    "roleId": 162605510979653,
+    "permissionId": 161227168821318
+  },
+  {
+    "id": 162606254510181,
+    "roleId": 162605510979653,
+    "permissionId": 161227168825413
+  },
+  {
+    "id": 162606254510182,
+    "roleId": 162605510979653,
+    "permissionId": 161227168833605
+  },
+  {
+    "id": 188054970540101,
+    "roleId": 162605510979653,
+    "permissionId": 187055743545413
+  },
+  {
+    "id": 188054970540105,
+    "roleId": 162605510979653,
+    "permissionId": 187375358951493
+  },
+  {
+    "id": 188054970540102,
+    "roleId": 162605510979653,
+    "permissionId": 188049591447621
+  },
+  {
+    "id": 188054970540104,
+    "roleId": 162605510979653,
+    "permissionId": 188050115035205
+  },
+  {
+    "id": 188054970540103,
+    "roleId": 162605510979653,
+    "permissionId": 188053882503237
+  },
+  {
+    "id": 188054970540106,
+    "roleId": 162605510979653,
+    "permissionId": 188054258278469
+  },
+  {
+    "id": 188054970540107,
+    "roleId": 162605510979653,
+    "permissionId": 188054656589893
+  },
+  {
+    "id": 188800106156101,
+    "roleId": 162605510979653,
+    "permissionId": 188799375847493
+  },
+  {
+    "id": 188800106184773,
+    "roleId": 162605510979653,
+    "permissionId": 188799732494405
+  }
+]

+ 34 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_tenant.json

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

+ 1022 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_tenant_permission.json

@@ -0,0 +1,1022 @@
+[
+  {
+    "id": 170679574487109,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168464965
+  },
+  {
+    "id": 170679574474821,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168497733
+  },
+  {
+    "id": 170679574487110,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168497734
+  },
+  {
+    "id": 170679574487127,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168624709
+  },
+  {
+    "id": 170679574495306,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168628805
+  },
+  {
+    "id": 170679574495307,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168628806
+  },
+  {
+    "id": 170679574495308,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168632901
+  },
+  {
+    "id": 170679574487111,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168632902
+  },
+  {
+    "id": 170679574487112,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168636997
+  },
+  {
+    "id": 170679574487113,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168636998
+  },
+  {
+    "id": 170679574491207,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168641093
+  },
+  {
+    "id": 170679574491208,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168641094
+  },
+  {
+    "id": 170679574491209,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168645189
+  },
+  {
+    "id": 170679574491210,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168645190
+  },
+  {
+    "id": 170679574491211,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168649285
+  },
+  {
+    "id": 170679574491212,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168649286
+  },
+  {
+    "id": 170679574487114,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168653381
+  },
+  {
+    "id": 170679574491213,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168653382
+  },
+  {
+    "id": 170679574491214,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168657477
+  },
+  {
+    "id": 170679574491215,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168657478
+  },
+  {
+    "id": 170679574491216,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168661573
+  },
+  {
+    "id": 170679574491217,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168665669
+  },
+  {
+    "id": 170679574491218,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168665670
+  },
+  {
+    "id": 170679574487115,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168669765
+  },
+  {
+    "id": 170679574491219,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168669766
+  },
+  {
+    "id": 170679574491220,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168673861
+  },
+  {
+    "id": 170679574491221,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168673862
+  },
+  {
+    "id": 170679574491222,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168677957
+  },
+  {
+    "id": 170679574491223,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168677958
+  },
+  {
+    "id": 170679574491224,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168682053
+  },
+  {
+    "id": 170679574491225,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168682054
+  },
+  {
+    "id": 170679574487116,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168686149
+  },
+  {
+    "id": 170679574491226,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168686150
+  },
+  {
+    "id": 170679574491227,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168690245
+  },
+  {
+    "id": 170679574491228,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168690246
+  },
+  {
+    "id": 170679574491229,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168694341
+  },
+  {
+    "id": 170679574491230,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168694342
+  },
+  {
+    "id": 170679574491231,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168698437
+  },
+  {
+    "id": 170679574491232,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168698438
+  },
+  {
+    "id": 170679574487117,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168702533
+  },
+  {
+    "id": 170679574491236,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168702534
+  },
+  {
+    "id": 170679574491237,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168706629
+  },
+  {
+    "id": 170679574491238,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168706630
+  },
+  {
+    "id": 170679574491239,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168710725
+  },
+  {
+    "id": 170679574491240,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168710726
+  },
+  {
+    "id": 170679574491241,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168714821
+  },
+  {
+    "id": 170679574491242,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168714822
+  },
+  {
+    "id": 170679574491243,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168718917
+  },
+  {
+    "id": 170679574491244,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168718918
+  },
+  {
+    "id": 170679574491245,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168723013
+  },
+  {
+    "id": 170679574491246,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168723014
+  },
+  {
+    "id": 170679574491235,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168727109
+  },
+  {
+    "id": 170679574491234,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168727110
+  },
+  {
+    "id": 170679574491233,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168731205
+  },
+  {
+    "id": 170679574487118,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168731206
+  },
+  {
+    "id": 170679574491247,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168735301
+  },
+  {
+    "id": 170679574491248,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168735302
+  },
+  {
+    "id": 170679574491249,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168739397
+  },
+  {
+    "id": 170679574491250,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168739398
+  },
+  {
+    "id": 170679574487119,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168743493
+  },
+  {
+    "id": 170679574491251,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168747589
+  },
+  {
+    "id": 170679574491252,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168747590
+  },
+  {
+    "id": 170679574487120,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168751685
+  },
+  {
+    "id": 170679574491254,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168751686
+  },
+  {
+    "id": 170679574491255,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168755781
+  },
+  {
+    "id": 170679574491256,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168755782
+  },
+  {
+    "id": 170679574491257,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168759877
+  },
+  {
+    "id": 170679574491258,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168759878
+  },
+  {
+    "id": 170679574491259,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168763973
+  },
+  {
+    "id": 170679574487121,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168763974
+  },
+  {
+    "id": 170679574487122,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168768069
+  },
+  {
+    "id": 170679574487123,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168768070
+  },
+  {
+    "id": 170679574491262,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168772165
+  },
+  {
+    "id": 170679574491263,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168772166
+  },
+  {
+    "id": 170679574495301,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168776261
+  },
+  {
+    "id": 170679574495302,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168776262
+  },
+  {
+    "id": 170679574495303,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168780357
+  },
+  {
+    "id": 170679574487124,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168780358
+  },
+  {
+    "id": 170679574487125,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168784453
+  },
+  {
+    "id": 170679574495304,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168784454
+  },
+  {
+    "id": 170679574487126,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168788549
+  },
+  {
+    "id": 170679574495305,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168788550
+  },
+  {
+    "id": 170679574491205,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168792645
+  },
+  {
+    "id": 170679574491206,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168792646
+  },
+  {
+    "id": 170679574487128,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168796741
+  },
+  {
+    "id": 170679574495310,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168800837
+  },
+  {
+    "id": 170679574495313,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168800838
+  },
+  {
+    "id": 170679574495314,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168804933
+  },
+  {
+    "id": 170679574495315,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168809029
+  },
+  {
+    "id": 170679574495316,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168813125
+  },
+  {
+    "id": 170679574495317,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168813126
+  },
+  {
+    "id": 170679574495311,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168817221
+  },
+  {
+    "id": 170679574495312,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168821317
+  },
+  {
+    "id": 170679574495309,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168821318
+  },
+  {
+    "id": 170679574495318,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168825413
+  },
+  {
+    "id": 170679574495319,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168825414
+  },
+  {
+    "id": 170679574495322,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168829509
+  },
+  {
+    "id": 170679574495320,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168833605
+  },
+  {
+    "id": 170679574495321,
+    "tenantId": 161223412138053,
+    "permissionId": 161227168833606
+  },
+  {
+    "id": 170679574491260,
+    "tenantId": 161223412138053,
+    "permissionId": 161807358345285
+  },
+  {
+    "id": 170679574491261,
+    "tenantId": 161223412138053,
+    "permissionId": 163579955331141
+  },
+  {
+    "id": 170679574491253,
+    "tenantId": 161223412138053,
+    "permissionId": 170679206428741
+  },
+  {
+    "id": 189493173526597,
+    "tenantId": 161223412138053,
+    "permissionId": 187055743545413
+  },
+  {
+    "id": 189493173563465,
+    "tenantId": 161223412138053,
+    "permissionId": 187375358951493
+  },
+  {
+    "id": 189493173563464,
+    "tenantId": 161223412138053,
+    "permissionId": 187385577599045
+  },
+  {
+    "id": 189493173563467,
+    "tenantId": 161223412138053,
+    "permissionId": 187389970825285
+  },
+  {
+    "id": 189493173563468,
+    "tenantId": 161223412138053,
+    "permissionId": 187390547820613
+  },
+  {
+    "id": 189493173563469,
+    "tenantId": 161223412138053,
+    "permissionId": 187391371018309
+  },
+  {
+    "id": 189493173563466,
+    "tenantId": 161223412138053,
+    "permissionId": 187391980761157
+  },
+  {
+    "id": 189493173559365,
+    "tenantId": 161223412138053,
+    "permissionId": 188049591447621
+  },
+  {
+    "id": 189493173563462,
+    "tenantId": 161223412138053,
+    "permissionId": 188050115035205
+  },
+  {
+    "id": 189493173563463,
+    "tenantId": 161223412138053,
+    "permissionId": 188053882503237
+  },
+  {
+    "id": 189493173567561,
+    "tenantId": 161223412138053,
+    "permissionId": 188054258278469
+  },
+  {
+    "id": 189493173567560,
+    "tenantId": 161223412138053,
+    "permissionId": 188054341582917
+  },
+  {
+    "id": 189493173567558,
+    "tenantId": 161223412138053,
+    "permissionId": 188054416891973
+  },
+  {
+    "id": 189493173567559,
+    "tenantId": 161223412138053,
+    "permissionId": 188054509027397
+  },
+  {
+    "id": 189493173567557,
+    "tenantId": 161223412138053,
+    "permissionId": 188054656589893
+  },
+  {
+    "id": 189493173563478,
+    "tenantId": 161223412138053,
+    "permissionId": 188054719266885
+  },
+  {
+    "id": 189493173563475,
+    "tenantId": 161223412138053,
+    "permissionId": 188054776545349
+  },
+  {
+    "id": 189493173563476,
+    "tenantId": 161223412138053,
+    "permissionId": 188054834004037
+  },
+  {
+    "id": 189493173563461,
+    "tenantId": 161223412138053,
+    "permissionId": 188799375847493
+  },
+  {
+    "id": 189493173563474,
+    "tenantId": 161223412138053,
+    "permissionId": 188799732494405
+  },
+  {
+    "id": 189493173563473,
+    "tenantId": 161223412138053,
+    "permissionId": 188799795101765
+  },
+  {
+    "id": 189493173563470,
+    "tenantId": 161223412138053,
+    "permissionId": 188799878676549
+  },
+  {
+    "id": 189493173563471,
+    "tenantId": 161223412138053,
+    "permissionId": 188799949844549
+  },
+  {
+    "id": 189493173563472,
+    "tenantId": 161223412138053,
+    "permissionId": 188799997452357
+  },
+  {
+    "id": 189493173563477,
+    "tenantId": 161223412138053,
+    "permissionId": 189345990168645
+  },
+  {
+    "id": 170688188469327,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168464965
+  },
+  {
+    "id": 170688188469317,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168497733
+  },
+  {
+    "id": 170688188469329,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168497734
+  },
+  {
+    "id": 170688188469326,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168624709
+  },
+  {
+    "id": 170688188473429,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168628805
+  },
+  {
+    "id": 170688188473430,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168628806
+  },
+  {
+    "id": 170688188473431,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168632901
+  },
+  {
+    "id": 170688188469318,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168636997
+  },
+  {
+    "id": 170688188457029,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168636998
+  },
+  {
+    "id": 170688188469330,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168641093
+  },
+  {
+    "id": 170688188469331,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168641094
+  },
+  {
+    "id": 170688188469332,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168645189
+  },
+  {
+    "id": 170688188469333,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168645190
+  },
+  {
+    "id": 170688188469334,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168649285
+  },
+  {
+    "id": 170688188469335,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168649286
+  },
+  {
+    "id": 170688188469319,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168653381
+  },
+  {
+    "id": 170688188469336,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168653382
+  },
+  {
+    "id": 170688188473413,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168657477
+  },
+  {
+    "id": 170688188473414,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168657478
+  },
+  {
+    "id": 170688188473415,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168661573
+  },
+  {
+    "id": 170688188473416,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168665669
+  },
+  {
+    "id": 170688188473417,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168665670
+  },
+  {
+    "id": 170688188469320,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168731206
+  },
+  {
+    "id": 170688188473418,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168735301
+  },
+  {
+    "id": 170688188473419,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168735302
+  },
+  {
+    "id": 170688188473420,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168739397
+  },
+  {
+    "id": 170688188473421,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168739398
+  },
+  {
+    "id": 170688188469322,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168763974
+  },
+  {
+    "id": 170688188469321,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168768070
+  },
+  {
+    "id": 170688188473422,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168772165
+  },
+  {
+    "id": 170688188473423,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168772166
+  },
+  {
+    "id": 170688188473424,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168776261
+  },
+  {
+    "id": 170688188473425,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168776262
+  },
+  {
+    "id": 170688188473426,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168780357
+  },
+  {
+    "id": 170688188469324,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168780358
+  },
+  {
+    "id": 170688188469323,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168784453
+  },
+  {
+    "id": 170688188473427,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168784454
+  },
+  {
+    "id": 170688188469325,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168788549
+  },
+  {
+    "id": 170688188473428,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168788550
+  },
+  {
+    "id": 170688188469328,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168796741
+  },
+  {
+    "id": 170688188473433,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168800837
+  },
+  {
+    "id": 170688188473436,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168800838
+  },
+  {
+    "id": 170688188473437,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168804933
+  },
+  {
+    "id": 170688188473438,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168809029
+  },
+  {
+    "id": 170688188473439,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168813125
+  },
+  {
+    "id": 170688188473440,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168813126
+  },
+  {
+    "id": 170688188473434,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168817221
+  },
+  {
+    "id": 170688188473435,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168821317
+  },
+  {
+    "id": 170688188473432,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168821318
+  },
+  {
+    "id": 170688188473441,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168825413
+  },
+  {
+    "id": 170688188473442,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168825414
+  },
+  {
+    "id": 170688188473443,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168833605
+  },
+  {
+    "id": 170688188473444,
+    "tenantId": 162083448455237,
+    "permissionId": 161227168833606
+  },
+  {
+    "id": 189493297393733,
+    "tenantId": 162083448455237,
+    "permissionId": 187055743545413
+  },
+  {
+    "id": 189493297397830,
+    "tenantId": 162083448455237,
+    "permissionId": 187375358951493
+  },
+  {
+    "id": 189493297397832,
+    "tenantId": 162083448455237,
+    "permissionId": 187389970825285
+  },
+  {
+    "id": 189493297397833,
+    "tenantId": 162083448455237,
+    "permissionId": 187390547820613
+  },
+  {
+    "id": 189493297397834,
+    "tenantId": 162083448455237,
+    "permissionId": 187391371018309
+  },
+  {
+    "id": 189493297397831,
+    "tenantId": 162083448455237,
+    "permissionId": 187391980761157
+  },
+  {
+    "id": 189493297393734,
+    "tenantId": 162083448455237,
+    "permissionId": 188049591447621
+  },
+  {
+    "id": 189493297393736,
+    "tenantId": 162083448455237,
+    "permissionId": 188050115035205
+  },
+  {
+    "id": 189493297397829,
+    "tenantId": 162083448455237,
+    "permissionId": 188053882503237
+  },
+  {
+    "id": 189493297401937,
+    "tenantId": 162083448455237,
+    "permissionId": 188054258278469
+  },
+  {
+    "id": 189493297401936,
+    "tenantId": 162083448455237,
+    "permissionId": 188054341582917
+  },
+  {
+    "id": 189493297401934,
+    "tenantId": 162083448455237,
+    "permissionId": 188054416891973
+  },
+  {
+    "id": 189493297401935,
+    "tenantId": 162083448455237,
+    "permissionId": 188054509027397
+  },
+  {
+    "id": 189493297401933,
+    "tenantId": 162083448455237,
+    "permissionId": 188054656589893
+  },
+  {
+    "id": 189493297401932,
+    "tenantId": 162083448455237,
+    "permissionId": 188054719266885
+  },
+  {
+    "id": 189493297401929,
+    "tenantId": 162083448455237,
+    "permissionId": 188054776545349
+  },
+  {
+    "id": 189493297401930,
+    "tenantId": 162083448455237,
+    "permissionId": 188054834004037
+  },
+  {
+    "id": 189493297393735,
+    "tenantId": 162083448455237,
+    "permissionId": 188799375847493
+  },
+  {
+    "id": 189493297401928,
+    "tenantId": 162083448455237,
+    "permissionId": 188799732494405
+  },
+  {
+    "id": 189493297401927,
+    "tenantId": 162083448455237,
+    "permissionId": 188799795101765
+  },
+  {
+    "id": 189493297397835,
+    "tenantId": 162083448455237,
+    "permissionId": 188799878676549
+  },
+  {
+    "id": 189493297401925,
+    "tenantId": 162083448455237,
+    "permissionId": 188799949844549
+  },
+  {
+    "id": 189493297401926,
+    "tenantId": 162083448455237,
+    "permissionId": 188799997452357
+  },
+  {
+    "id": 189493297401931,
+    "tenantId": 162083448455237,
+    "permissionId": 189345990168645
+  }
+]

+ 16 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_user.json

@@ -0,0 +1,16 @@
+[
+  {
+    "id": 161223411986501,
+    "userName": "admin",
+    "password": "96E79218965EB72C92A549DD5A33112",
+    "nickName": "平台管理员",
+    "avatar": "",
+    "remark": ""
+  },
+  {
+    "id": 162605614280773,
+    "userName": "user",
+    "password": "96E79218965EB72C92A549DD5A33112",
+    "nickName": "平台用户"
+  }
+]

+ 25 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_user.tenant.json

@@ -0,0 +1,25 @@
+[
+  {
+    "tenantId": 161223412138053,
+    "id": 161223411986501,
+    "userName": "admin",
+    "password": "96E79218965EB72C92A549DD5A33112",
+    "nickName": "平台管理员",
+    "avatar": "",
+    "remark": ""
+  },
+  {
+    "tenantId": 162083448455237,
+    "id": 162083448746053,
+    "userName": "18988889999",
+    "password": "96E79218965EB72C92A549DD5A33112",
+    "nickName": "租户"
+  },
+  {
+    "tenantId": 161223412138053,
+    "id": 162605614280773,
+    "userName": "user",
+    "password": "96E79218965EB72C92A549DD5A33112",
+    "nickName": "平台用户"
+  }
+]

+ 17 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_user_role.json

@@ -0,0 +1,17 @@
+[
+  {
+    "id": 161566031835205,
+    "userId": 161223411986501,
+    "roleId": 161223412080709
+  },
+  {
+    "id": 162083448827973,
+    "userId": 162083448746053,
+    "roleId": 162083448594501
+  },
+  {
+    "id": 186340511817798,
+    "userId": 162605614280773,
+    "roleId": 162605510979653
+  }
+]

+ 200 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/ad_view.json

@@ -0,0 +1,200 @@
+[
+  {
+    "id": 161227168313413,
+    "parentId": 0,
+    "label": "平台管理",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 161227168428101,
+        "parentId": 161227168313413,
+        "name": "Home",
+        "label": "首页",
+        "path": "admin/home",
+        "enabled": true,
+        "childs": []
+      },
+      {
+        "id": 161227168432197,
+        "parentId": 161227168313413,
+        "label": "系统配置",
+        "enabled": true,
+        "childs": [
+          {
+            "id": 187053736300613,
+            "parentId": 161227168432197,
+            "name": "Dictionary",
+            "label": "数据字典",
+            "path": "admin/dictionary/index",
+            "enabled": true,
+            "description": "数据字典"
+          }
+        ]
+      },
+      {
+        "id": 161227168432199,
+        "parentId": 161227168313413,
+        "label": "个人管理",
+        "enabled": true,
+        "childs": [
+          {
+            "id": 161227168436293,
+            "parentId": 161227168432199,
+            "name": "Settins",
+            "label": "个人设置",
+            "path": "account/settings",
+            "enabled": true
+          }
+        ]
+      },
+      {
+        "id": 161227168436294,
+        "parentId": 161227168313413,
+        "label": "权限管理",
+        "enabled": true,
+        "description": "",
+        "childs": [
+          {
+            "id": 161227168436295,
+            "parentId": 161227168436294,
+            "name": "User",
+            "label": "用户管理",
+            "path": "admin/user",
+            "enabled": true
+          },
+          {
+            "id": 161227168440389,
+            "parentId": 161227168436294,
+            "name": "Role",
+            "label": "角色管理",
+            "path": "admin/role",
+            "enabled": true
+          },
+          {
+            "id": 161227168440390,
+            "parentId": 161227168436294,
+            "name": "Api",
+            "label": "接口管理",
+            "path": "admin/api",
+            "enabled": true
+          },
+          {
+            "id": 161227168444485,
+            "parentId": 161227168436294,
+            "name": "AdminView",
+            "label": "视图管理",
+            "path": "admin/view",
+            "enabled": true
+          },
+          {
+            "id": 161227168444486,
+            "parentId": 161227168436294,
+            "name": "Permission",
+            "label": "权限管理",
+            "path": "admin/permission",
+            "enabled": true
+          },
+          {
+            "id": 161227168448581,
+            "parentId": 161227168436294,
+            "name": "RolePermission",
+            "label": "角色权限",
+            "path": "admin/role-permission",
+            "enabled": true
+          },
+          {
+            "id": 161227168448582,
+            "parentId": 161227168436294,
+            "name": "Cache",
+            "label": "缓存管理",
+            "path": "admin/cache",
+            "enabled": true
+          },
+          {
+            "id": 161227168448583,
+            "parentId": 161227168436294,
+            "name": "Tenant",
+            "label": "租户管理",
+            "path": "admin/tenant",
+            "enabled": true
+          }
+        ]
+      },
+      {
+        "id": 161227168452677,
+        "parentId": 161227168313413,
+        "label": "日志管理",
+        "enabled": true,
+        "description": "",
+        "childs": [
+          {
+            "id": 161227168452678,
+            "parentId": 161227168452677,
+            "name": "OprationLog",
+            "label": "操作日志",
+            "path": "admin/opration-log",
+            "enabled": true
+          },
+          {
+            "id": 161227168456773,
+            "parentId": 161227168452677,
+            "name": "LoginLog",
+            "label": "登录日志",
+            "path": "admin/login-log",
+            "enabled": true
+          }
+        ]
+      },
+      {
+        "id": 161227168456774,
+        "parentId": 161227168313413,
+        "name": "Document",
+        "label": "文档管理",
+        "path": "admin/document",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  },
+  {
+    "id": 174650149470277,
+    "parentId": 0,
+    "name": "",
+    "label": "人事管理",
+    "path": "",
+    "enabled": true,
+    "description": "",
+    "childs": [
+      {
+        "id": 174312361087045,
+        "parentId": 174650149470277,
+        "name": "Organization",
+        "label": "部门管理",
+        "path": "personnel/organization",
+        "enabled": true,
+        "description": "",
+        "childs": []
+      },
+      {
+        "id": 174312361132101,
+        "parentId": 174650149470277,
+        "name": "Position",
+        "label": "岗位管理",
+        "path": "personnel/position",
+        "enabled": true,
+        "description": "",
+        "childs": []
+      },
+      {
+        "id": 188792508244037,
+        "parentId": 174650149470277,
+        "name": "Employee",
+        "label": "员工管理",
+        "path": "personnel/employee",
+        "enabled": true,
+        "description": "",
+        "childs": []
+      }
+    ]
+  }
+]

+ 10 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/pe_employee.json

@@ -0,0 +1,10 @@
+[
+  {
+    "id": 189492821434437,
+    "name": "小雪转中雪",
+    "nickName": "小雪转中雪",
+    "code": "10001",
+    "organizationId": 189097750675525,
+    "positionId": 189489908633669
+  }
+]

+ 11 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/pe_employee.tenant.json

@@ -0,0 +1,11 @@
+[
+  {
+    "tenantId": 161223412138053,
+    "id": 189492821434437,
+    "name": "小雪转中雪",
+    "nickName": "小雪转中雪",
+    "code": "10001",
+    "organizationId": 189097750675525,
+    "positionId": 189489908633669
+  }
+]

+ 23 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/pe_organization.json

@@ -0,0 +1,23 @@
+[
+  {
+    "id": 189097691009093,
+    "parentId": 0,
+    "name": "中台",
+    "code": "",
+    "value": "",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "id": 189097750675525,
+        "parentId": 189097691009093,
+        "name": "开发部",
+        "code": "",
+        "value": "",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  }
+]

+ 25 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/pe_organization.tenant.json

@@ -0,0 +1,25 @@
+[
+  {
+    "tenantId": 161223412138053,
+    "id": 189097691009093,
+    "parentId": 0,
+    "name": "中台",
+    "code": "",
+    "value": "",
+    "description": "",
+    "enabled": true,
+    "childs": [
+      {
+        "tenantId": 161223412138053,
+        "id": 189097750675525,
+        "parentId": 189097691009093,
+        "name": "开发部",
+        "code": "",
+        "value": "",
+        "description": "",
+        "enabled": true,
+        "childs": []
+      }
+    ]
+  }
+]

+ 9 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/pe_position.json

@@ -0,0 +1,9 @@
+[
+  {
+    "id": 189489908633669,
+    "name": "DotNet程序员",
+    "code": "",
+    "description": "",
+    "enabled": true
+  }
+]

+ 10 - 0
src/hosts/ZhonTai.Plate.Admin.Host/InitData/Admin/pe_position.tenant.json

@@ -0,0 +1,10 @@
+[
+  {
+    "tenantId": 161223412138053,
+    "id": 189489908633669,
+    "name": "DotNet程序员",
+    "code": "",
+    "description": "",
+    "enabled": true
+  }
+]

+ 1 - 1
src/hosts/ZhonTai.Plate.Admin.Host/Program.cs

@@ -1,4 +1,4 @@
-using ZhonTai.HttpApi;
+using ZhonTai.Plate.Admin.HttpApi.Shared;
 
 namespace ZhonTai.Plate.Admin.Host
 {

+ 20 - 2
src/hosts/ZhonTai.Plate.Admin.Host/Startup.cs

@@ -1,6 +1,9 @@
-using Microsoft.AspNetCore.Hosting;
+using Autofac;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
 using Microsoft.Extensions.Configuration;
-using ZhonTai.HttpApi;
+using Microsoft.Extensions.DependencyInjection;
+using ZhonTai.Plate.Admin.HttpApi.Shared;
 
 namespace ZhonTai.Plate.Admin.Host
 {
@@ -9,5 +12,20 @@ namespace ZhonTai.Plate.Admin.Host
         public Startup(IConfiguration configuration, IWebHostEnvironment env) : base(configuration, env)
         {
         }
+
+        public override void ConfigureServices(IServiceCollection services)
+        {
+            base.ConfigureServices(services);
+        }
+
+        public override void ConfigureContainer(ContainerBuilder builder)
+        {
+            base.ConfigureContainer(builder);
+        }
+
+        public override void Configure(IApplicationBuilder app)
+        {
+            base.Configure(app);
+        }
     }
 }

+ 5 - 1
src/hosts/ZhonTai.Plate.Admin.Host/ZhonTai.Plate.Admin.Host.csproj

@@ -73,13 +73,17 @@
   </ItemGroup>
 
   <ItemGroup>
-    <Folder Include="InitData\" />
+    <Folder Include="InitData\Admin\" />
     <Folder Include="Properties\PublishProfiles\" />
   </ItemGroup>
 
   <ItemGroup>
     <ProjectReference Include="..\..\plates\ZhonTai.Plate.Admin\ZhonTai.Plate.Admin.HttpApi\ZhonTai.Plate.Admin.HttpApi.csproj" />
+    <ProjectReference Include="..\..\plates\ZhonTai.Plate.Admin\ZhonTai.Plate.Admin.Repository\ZhonTai.Plate.Admin.Repository.csproj" />
+    <ProjectReference Include="..\..\plates\ZhonTai.Plate.Admin\ZhonTai.Plate.Admin.Service\ZhonTai.Plate.Admin.Service.csproj" />
     <ProjectReference Include="..\..\plates\ZhonTai.Plate.Personal\ZhonTai.Plate.Personnel.HttpApi\ZhonTai.Plate.Personnel.HttpApi.csproj" />
+    <ProjectReference Include="..\..\plates\ZhonTai.Plate.Personal\ZhonTai.Plate.Personnel.Repository\ZhonTai.Plate.Personnel.Repository.csproj" />
+    <ProjectReference Include="..\..\plates\ZhonTai.Plate.Personal\ZhonTai.Plate.Personnel.Service\ZhonTai.Plate.Personnel.Service.csproj" />
   </ItemGroup>
 
   <ItemGroup>

+ 1 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Abstractions/LogAbstract.cs

@@ -11,7 +11,7 @@ namespace ZhonTai.Plate.Admin.Domain
         /// <summary>
         /// 租户Id
         /// </summary>
-        [Column(Position = -10, CanUpdate = false)]
+        [Column(Position = 2, CanUpdate = false)]
         public long? TenantId { get; set; }
 
         /// <summary>

+ 38 - 233
src/plates/ZhonTai.Plate.Personal/ZhonTai.Plate.Personnel.Repository/Base/DbHelper.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/DbHelper.cs

@@ -1,28 +1,21 @@
-using ZhonTai.Common.Attributes;
-using ZhonTai.Common.Auth;
-using ZhonTai.Common.Domain.Entities;
-using ZhonTai.Common.Configs;
-using ZhonTai.Common.Extensions;
-using ZhonTai.Common.Helpers;
-using ZhonTai.Plate.Admin.Domain;
-using ZhonTai.Plate.Personnel.Domain;
-using ZhonTai.Plate.Personnel.Repository.Output;
-using FreeSql;
-using FreeSql.Aop;
-using FreeSql.DataAnnotations;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Serialization;
+using Microsoft.Extensions.DependencyModel;
 using System;
 using System.Collections.Generic;
-using System.IO;
 using System.Linq;
 using System.Reflection;
 using System.Threading.Tasks;
+using FreeSql;
+using FreeSql.Aop;
+using FreeSql.DataAnnotations;
+using ZhonTai.Common.Attributes;
+using ZhonTai.Common.Auth;
+using ZhonTai.Common.Domain.Entities;
+using ZhonTai.Common.Configs;
+using ZhonTai.Common.Extensions;
+using ZhonTai.Common.Domain.Db;
 using Yitter.IdGenerator;
-using ZhonTai.Plate.Admin.Domain.Dual;
-using ZhonTai.Plate.Admin.Domain.Tenant;
 
-namespace ZhonTai.Plate.Admin.Repository
+namespace ZhonTai.Plate.Admin.Domain
 {
     public class DbHelper
     {
@@ -30,7 +23,7 @@ namespace ZhonTai.Plate.Admin.Repository
         /// 偏移时间
         /// </summary>
         public static TimeSpan TimeOffset;
-
+         
         /// <summary>
         /// 创建数据库
         /// </summary>
@@ -65,16 +58,15 @@ namespace ZhonTai.Plate.Admin.Repository
         /// <returns></returns>
         public static Type[] GetEntityTypes()
         {
-            List<string> assemblyNames = new List<string>()
-            {
-                "ZhonTai.Plate.Admin.Domain"
-            };
+            Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
+                .Where(a => a.Name.StartsWith("ZhonTai") && a.Name.EndsWith("Domain"))
+                .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
 
             List<Type> entityTypes = new List<Type>();
 
-            foreach (var assemblyName in assemblyNames)
+            foreach (var assembly in assemblies)
             {
-                foreach (Type type in Assembly.Load(assemblyName).GetExportedTypes())
+                foreach (Type type in assembly.GetExportedTypes())
                 {
                     foreach (Attribute attribute in type.GetCustomAttributes())
                     {
@@ -220,97 +212,6 @@ namespace ZhonTai.Plate.Admin.Repository
             Console.WriteLine($" {(msg.NotNull() ? msg : $"sync {dbType} structure")} succeed");
         }
 
-        /// <summary>
-        /// 检查实体属性是否为自增长
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <returns></returns>
-        private static bool CheckIdentity<T>() where T : class
-        {
-            var isIdentity = false;
-            var properties = typeof(T).GetProperties();
-            foreach (var property in properties)
-            {
-                if (property.GetCustomAttributes(typeof(ColumnAttribute), false).FirstOrDefault() is ColumnAttribute columnAttribute && columnAttribute.IsIdentity)
-                {
-                    isIdentity = true;
-                    break;
-                }
-            }
-
-            return isIdentity;
-        }
-
-        /// <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>
-        private static async Task InitDtDataAsync<T>(
-            IFreeSql db,
-            IUnitOfWork unitOfWork,
-            System.Data.Common.DbTransaction tran,
-            T[] data,
-            DbConfig dbConfig = null
-        ) where T : class, new()
-        {
-            var table = typeof(T).GetCustomAttributes(typeof(TableAttribute), false).FirstOrDefault() as TableAttribute;
-            var tableName = table.Name;
-
-            try
-            {
-                if (await db.Queryable<T>().AnyAsync())
-                {
-                    Console.WriteLine($" table: {tableName} record already exists");
-                    return;
-                }
-
-                if (!(data?.Length > 0))
-                {
-                    Console.WriteLine($" table: {tableName} import data []");
-                    return;
-                }
-
-                var repo = db.GetRepositoryBase<T>();
-                var insert = db.Insert<T>();
-                if (unitOfWork != null)
-                {
-                    repo.UnitOfWork = unitOfWork;
-                    insert = insert.WithTransaction(tran);
-                }
-
-                var isIdentity = CheckIdentity<T>();
-                if (isIdentity)
-                {
-                    if (dbConfig.Type == DataType.SqlServer)
-                    {
-                        var insrtSql = insert.AppendData(data).InsertIdentity().ToSql();
-                        await repo.Orm.Ado.ExecuteNonQueryAsync($"SET IDENTITY_INSERT {tableName} ON\n {insrtSql} \nSET IDENTITY_INSERT {tableName} OFF");
-                    }
-                    else
-                    {
-                        await insert.AppendData(data).InsertIdentity().ExecuteAffrowsAsync();
-                    }
-                }
-                else
-                {
-                    repo.DbContextOptions.EnableAddOrUpdateNavigateList = true;
-                    await repo.InsertAsync(data);
-                }
-
-                Console.WriteLine($" table: {tableName} sync data succeed");
-            }
-            catch (Exception ex)
-            {
-                Console.WriteLine($" table: {tableName} sync data failed.\n{ex.Message}");
-            }
-        }
-
         /// <summary>
         /// 同步数据审计方法
         /// </summary>
@@ -388,36 +289,22 @@ namespace ZhonTai.Plate.Admin.Repository
         {
             try
             {
-                //db.Aop.CurdBefore += (s, e) =>
-                //{
-                //    Console.WriteLine($"{e.Sql}\r\n");
-                //};
-
                 Console.WriteLine("\r\n sync data started");
 
                 db.Aop.AuditValue += SyncDataAuditValue;
 
-                var fileName = appConfig.Tenant ? "data-share.json" : "data.json";
-                var filePath = Path.Combine(AppContext.BaseDirectory, $"Db/Data/{fileName}").ToPath();
-                var jsonData = FileHelper.ReadFile(filePath);
-                var data = JsonConvert.DeserializeObject<Data>(jsonData);
+                Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
+                .Where(a => a.Name.StartsWith("ZhonTai"))
+                .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
 
-                using (var uow = db.CreateUnitOfWork())
-                using (var tran = uow.GetOrBeginTransaction())
-                {
-                    var dualRepo = db.GetRepositoryBase<DualEntity>();
-                    dualRepo.UnitOfWork = uow;
-                    if (!await dualRepo.Select.AnyAsync())
-                    {
-                        await dualRepo.InsertAsync(new DualEntity { });
-                    }
+                List<ISyncData> syncDatas = assemblies.Select(assembly => assembly.GetTypes()
+                .Where(x => typeof(ISyncData).GetTypeInfo().IsAssignableFrom(x.GetTypeInfo()) && x.GetTypeInfo().IsClass && !x.GetTypeInfo().IsAbstract))
+                .SelectMany(registerTypes =>
+                    registerTypes.Select(registerType => (ISyncData)Activator.CreateInstance(registerType))).ToList();
 
-                    //人事
-                    await InitDtDataAsync(db, uow, tran, data.Positions, dbConfig);
-                    await InitDtDataAsync(db, uow, tran, data.OrganizationTree, dbConfig);
-                    await InitDtDataAsync(db, uow, tran, data.Employees, dbConfig);
-
-                    uow.Commit();
+                foreach (ISyncData syncData in syncDatas)
+                {
+                    await syncData.SyncDataAsync(db, dbConfig, appConfig);
                 }
 
                 db.Aop.AuditValue -= SyncDataAuditValue;
@@ -431,112 +318,30 @@ namespace ZhonTai.Plate.Admin.Repository
         }
 
         /// <summary>
-        /// 生成极简数据
+        /// 生成数据
         /// </summary>
         /// <param name="db"></param>
         /// <param name="appConfig"></param>
         /// <returns></returns>
-        public static async Task GenerateSimpleJsonDataAsync(IFreeSql db, AppConfig appConfig = null)
+        public static async Task GenerateDataAsync(IFreeSql db, AppConfig appConfig = null)
         {
             try
             {
                 Console.WriteLine("\r\n generate data started");
 
-                #region 数据表
+                Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
+                .Where(a => a.Name.StartsWith("ZhonTai"))
+                .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
 
-                //人事
-                #region 部门
+                List<IGenerateData> generateDatas = assemblies.Select(assembly => assembly.GetTypes()
+                .Where(x => typeof(IGenerateData).GetTypeInfo().IsAssignableFrom(x.GetTypeInfo()) && x.GetTypeInfo().IsClass && !x.GetTypeInfo().IsAbstract))
+                .SelectMany(registerTypes =>
+                    registerTypes.Select(registerType => (IGenerateData)Activator.CreateInstance(registerType))).ToList();
 
-                var organizations = await db.Queryable<OrganizationEntity>().ToListAsync<OrganizationDataOutput>();
-                var organizationTree = organizations.ToTree((r, c) =>
+                foreach (IGenerateData generateData in generateDatas)
                 {
-                    return c.ParentId == 0;
-                },
-                (r, c) =>
-                {
-                    return r.Id == c.ParentId;
-                },
-                (r, datalist) =>
-                {
-                    r.Childs ??= new List<OrganizationDataOutput>();
-                    r.Childs.AddRange(datalist);
-                });
-
-                #endregion
-
-                #region 岗位
-
-                var positions = await db.Queryable<PositionEntity>().ToListAsync<PositionDataOutput>();
-
-                #endregion
-
-                #region 员工
-
-                var employees = await db.Queryable<EmployeeEntity>().ToListAsync<EmployeeDataOutput>();
-
-                #endregion
-
-                #endregion
-
-                #region 生成数据
-                var settings = new JsonSerializerSettings();
-                settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
-                settings.NullValueHandling = NullValueHandling.Ignore;
-                settings.DefaultValueHandling = DefaultValueHandling.Ignore;
-                var jsonData = JsonConvert.SerializeObject(new
-                {
-                    organizationTree,
-                    positions,
-                    employees
-                },
-                //Formatting.Indented,
-                settings
-                );
-                
-                var isTenant = appConfig.Tenant;
-                var fileName = isTenant ? "data-share.json" : "data.json";
-                var filePath = Path.Combine(Directory.GetCurrentDirectory(), $"Db/Data/{fileName}").ToPath();
-                FileHelper.WriteFile(filePath, jsonData);
-
-                if (isTenant)
-                {
-                    #region 租户
-
-                    var tenants = await db.Queryable<TenantEntity>().ToListAsync(a => new
-                    {
-                        a.Id,
-                        a.Code
-                    });
-
-                    #endregion
-
-                    var tenantId = tenants.Where(a => a.Code.ToLower() == "zhontai").FirstOrDefault().Id;
-                    organizationTree = organizations.Where(a => a.TenantId == tenantId).ToList().ToTree((r, c) =>
-                    {
-                        return c.ParentId == 0;
-                    },
-                    (r, c) =>
-                    {
-                        return r.Id == c.ParentId;
-                    },
-                    (r, datalist) =>
-                    {
-                        r.Childs ??= new List<OrganizationDataOutput>();
-                        r.Childs.AddRange(datalist);
-                    });
-
-                    jsonData = JsonConvert.SerializeObject(new
-                    {
-                        organizationTree,
-                        positions,
-                        employees
-                    },
-                    settings
-                    );
-                    filePath = Path.Combine(Directory.GetCurrentDirectory(), "Db/Data/data.json").ToPath();
-                    FileHelper.WriteFile(filePath, jsonData);
+                    await generateData.GenerateDataAsync(db, appConfig);
                 }
-                #endregion
 
                 Console.WriteLine(" generate data succeed\r\n");
             }

+ 1 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Base/DefaultRepositoryBase.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/DefaultRepositoryBase.cs

@@ -1,7 +1,7 @@
 using System;
 using System.Linq.Expressions;
 
-namespace ZhonTai.Plate.Admin.Repository
+namespace ZhonTai.Plate.Admin.Domain
 {
     public class DefaultRepositoryBase<TEntity, TKey> : RepositoryBase<TEntity, TKey> where TEntity : class, new()
     {

+ 1 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Base/FreeSqlRepositoryExtensions.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/FreeSqlRepositoryExtensions.cs

@@ -1,4 +1,4 @@
-using ZhonTai.Plate.Admin.Repository;
+using ZhonTai.Plate.Admin.Domain;
 using System;
 using System.Linq.Expressions;
 using ZhonTai.Common.Domain.Repositories;

+ 28 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/GenerateData.cs

@@ -0,0 +1,28 @@
+using System;
+using System.Linq;
+using System.IO;
+using Newtonsoft.Json;
+using FreeSql.DataAnnotations;
+using ZhonTai.Common.Helpers;
+using ZhonTai.Common.Domain.Db;
+using System.Collections.Generic;
+using Newtonsoft.Json.Serialization;
+
+namespace ZhonTai.Plate.Admin.Domain
+{
+    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.NullValueHandling = NullValueHandling.Ignore;
+            settings.DefaultValueHandling = DefaultValueHandling.Ignore;
+
+            var table = typeof(T).GetCustomAttributes(typeof(TableAttribute), false).FirstOrDefault() as TableAttribute;
+            var filePath = Path.Combine(Directory.GetCurrentDirectory(), $"{path}/{table.Name}{(isTenant ? ".tenant" : "")}.json").ToPath();
+            var jsonData = JsonConvert.SerializeObject(data, Formatting.Indented, settings);
+            FileHelper.WriteFile(filePath, jsonData);
+        }
+    }
+}

+ 1 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Base/IdleBusExtesions.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/IdleBusExtesions.cs

@@ -8,7 +8,7 @@ using ZhonTai.Plate.Admin.Domain.Tenant.Dtos;
 using ZhonTai.Plate.Admin.Domain.Tenant;
 using ZhonTai.Plate.Admin.Domain.Dual;
 
-namespace ZhonTai.Plate.Admin.Repository
+namespace ZhonTai.Plate.Admin.Domain
 {
     public static class IdleBusExtesions
     {

+ 1 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Base/MyUnitOfWorkManager.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/MyUnitOfWorkManager.cs

@@ -1,7 +1,7 @@
 using FreeSql;
 using System;
 
-namespace ZhonTai.Plate.Admin.Repository
+namespace ZhonTai.Plate.Admin.Domain
 {
     public class MyUnitOfWorkManager : UnitOfWorkManager
     {

+ 1 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Base/RepositoryBase.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/RepositoryBase.cs

@@ -5,7 +5,7 @@ using System.Linq.Expressions;
 using System.Threading.Tasks;
 using ZhonTai.Common.Domain.Repositories;
 
-namespace ZhonTai.Plate.Admin.Repository
+namespace ZhonTai.Plate.Admin.Domain
 {
     public class RepositoryBase<TEntity, TKey> : BaseRepository<TEntity, TKey>, IRepositoryBase<TEntity, TKey> where TEntity : class, new()
     {

+ 124 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/SyncData.cs

@@ -0,0 +1,124 @@
+using System;
+using System.Linq;
+using System.Threading.Tasks;
+using System.IO;
+using Newtonsoft.Json;
+using FreeSql;
+using FreeSql.DataAnnotations;
+using ZhonTai.Common.Helpers;
+using ZhonTai.Common.Configs;
+
+namespace ZhonTai.Plate.Admin.Domain
+{
+    public abstract class SyncData
+    {
+        /// <summary>
+        /// 检查实体属性是否为自增长
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        private bool CheckIdentity<T>() where T : class
+        {
+            var isIdentity = false;
+            var properties = typeof(T).GetProperties();
+            foreach (var property in properties)
+            {
+                if (property.GetCustomAttributes(typeof(ColumnAttribute), false).FirstOrDefault() is ColumnAttribute columnAttribute && columnAttribute.IsIdentity)
+                {
+                    isIdentity = true;
+                    break;
+                }
+            }
+
+            return isIdentity;
+        }
+
+        /// <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>
+        protected virtual async Task InitDataAsync<T>(
+            IFreeSql db,
+            IUnitOfWork unitOfWork,
+            System.Data.Common.DbTransaction tran,
+            T[] data,
+            DbConfig dbConfig = null
+        ) where T : class, new()
+        {
+            var table = typeof(T).GetCustomAttributes(typeof(TableAttribute), false).FirstOrDefault() as TableAttribute;
+            var tableName = table.Name;
+
+            try
+            {
+                if (await db.Queryable<T>().AnyAsync())
+                {
+                    Console.WriteLine($" table: {tableName} record already exists");
+                    return;
+                }
+
+                if (!(data?.Length > 0))
+                {
+                    Console.WriteLine($" table: {tableName} import data []");
+                    return;
+                }
+
+                var repo = db.GetRepositoryBase<T>();
+                var insert = db.Insert<T>();
+                if (unitOfWork != null)
+                {
+                    repo.UnitOfWork = unitOfWork;
+                    insert = insert.WithTransaction(tran);
+                }
+
+                var isIdentity = CheckIdentity<T>();
+                if (isIdentity)
+                {
+                    if (dbConfig.Type == DataType.SqlServer)
+                    {
+                        var insrtSql = insert.AppendData(data).InsertIdentity().ToSql();
+                        await repo.Orm.Ado.ExecuteNonQueryAsync($"SET IDENTITY_INSERT {tableName} ON\n {insrtSql} \nSET IDENTITY_INSERT {tableName} OFF");
+                    }
+                    else
+                    {
+                        await insert.AppendData(data).InsertIdentity().ExecuteAffrowsAsync();
+                    }
+                }
+                else
+                {
+                    repo.DbContextOptions.EnableAddOrUpdateNavigateList = true;
+                    await repo.InsertAsync(data);
+                }
+
+                Console.WriteLine($" table: {tableName} sync data succeed");
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine($" table: {tableName} sync data failed.\n{ex.Message}");
+                throw;
+            }
+        }
+
+        protected virtual T[] GetData<T>(bool isTenant = false)
+        {
+            var table = typeof(T).GetCustomAttributes(typeof(TableAttribute), false).FirstOrDefault() as TableAttribute;
+            var fileName = $"{table.Name}{(isTenant ? ".tenant" : "")}.json";
+            var filePath = Path.Combine(AppContext.BaseDirectory, $"InitData/Admin/{fileName}").ToPath();
+            if (!File.Exists(filePath))
+            {
+                var msg = $"文件{filePath}不存在";
+                Console.WriteLine(msg);
+                throw new Exception(msg);
+            }
+            var jsonData = FileHelper.ReadFile(filePath);
+            var data = JsonConvert.DeserializeObject<T[]>(jsonData);
+
+            return data;
+        }
+    }
+}

+ 1 - 2
src/shared/ZhonTai.HttpApi/Aop/TransactionAsyncInterceptor.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/TransactionAsyncInterceptor.cs

@@ -1,12 +1,11 @@
 using ZhonTai.Common.Attributes;
 using ZhonTai.Common.Output;
-using ZhonTai.Plate.Admin.Repository;
 using Castle.DynamicProxy;
 using FreeSql;
 using System.Linq;
 using System.Threading.Tasks;
 
-namespace ZhonTai.HttpApi.Aop
+namespace ZhonTai.Plate.Admin.Domain
 {
     public class TransactionAsyncInterceptor : IAsyncInterceptor
     {

+ 1 - 1
src/shared/ZhonTai.HttpApi/Aop/TransactionInterceptor.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Base/TransactionInterceptor.cs

@@ -1,6 +1,6 @@
 using Castle.DynamicProxy;
 
-namespace ZhonTai.HttpApi.Aop
+namespace ZhonTai.Plate.Admin.Domain
 {
     public class TransactionInterceptor : IInterceptor
     {

+ 1 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Dictionary/DictionaryEntity.cs

@@ -14,7 +14,7 @@ namespace ZhonTai.Plate.Admin.Domain.Dictionary
         /// <summary>
         /// 租户Id
         /// </summary>
-        [Column(Position = -10, CanUpdate = false)]
+        [Column(Position = 2, CanUpdate = false)]
         public long? TenantId { get; set; }
 
         /// <summary>

+ 1 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/DictionaryType/DictionaryTypeEntity.cs

@@ -13,7 +13,7 @@ namespace ZhonTai.Plate.Admin.Domain.DictionaryType
         /// <summary>
         /// 租户Id
         /// </summary>
-        [Column(Position = -10, CanUpdate = false)]
+        [Column(Position = 2, CanUpdate = false)]
         public long? TenantId { get; set; }
 
         /// <summary>

+ 1 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Document/DocumentEntity.cs

@@ -13,7 +13,7 @@ namespace ZhonTai.Plate.Admin.Domain.Document
         /// <summary>
         /// 租户Id
         /// </summary>
-        [Column(Position = -10, CanUpdate = false)]
+        [Column(Position = 2, CanUpdate = false)]
         public long? TenantId { get; set; }
 
         /// <summary>

+ 1 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/Role/RoleEntity.cs

@@ -20,7 +20,7 @@ namespace ZhonTai.Plate.Admin.Domain.Role
         /// <summary>
         /// 租户Id
         /// </summary>
-        [Column(Position = -10, CanUpdate = false)]
+        [Column(Position = 2, CanUpdate = false)]
         public long? TenantId { get; set; }
 
         /// <summary>

+ 1 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/User/UserEntity.cs

@@ -18,7 +18,7 @@ namespace ZhonTai.Plate.Admin.Domain.User
         /// <summary>
         /// 租户Id
         /// </summary>
-        [Column(Position = -10)]
+        [Column(Position = 2)]
         public long? TenantId { get; set; }
 
         public TenantEntity Tenant { get; set; }

+ 6 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Domain/ZhonTai.Plate.Admin.Domain.csproj

@@ -18,7 +18,12 @@
     <DocumentationFile></DocumentationFile>
     <NoWarn>1701;1702;1591</NoWarn>
   </PropertyGroup>
-
+	
+    <ItemGroup>
+	    <PackageReference Include="Castle.Core.AsyncInterceptor" Version="2.0.0" />
+	    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="5.0.0" />
+    </ItemGroup>
+	
   <ItemGroup>
     <ProjectReference Include="..\..\..\shared\ZhonTai.Common\ZhonTai.Common.csproj" />
   </ItemGroup>

+ 1 - 1
src/shared/ZhonTai.HttpApi/Aop/AopHelper.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Aop/AopHelper.cs

@@ -3,7 +3,7 @@ using System;
 using System.Reflection;
 using System.Threading.Tasks;
 
-namespace ZhonTai.HttpApi.Aop
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Aop
 {
     public class AopHelper
     {

+ 1 - 1
src/shared/ZhonTai.HttpApi/Attributes/LoginAttribute.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Attributes/LoginAttribute.cs

@@ -1,6 +1,6 @@
 using System;
 
-namespace ZhonTai.HttpApi.Attributes
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Attributes
 {
     /// <summary>
     /// 启用登录

+ 1 - 1
src/shared/ZhonTai.HttpApi/Attributes/NoOprationLogAttribute.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Attributes/NoOprationLogAttribute.cs

@@ -1,6 +1,6 @@
 using System;
 
-namespace ZhonTai.HttpApi.Attributes
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Attributes
 {
     /// <summary>
     /// 禁用操作日志

+ 3 - 3
src/shared/ZhonTai.HttpApi/Attributes/ValidateInputAttribute.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Attributes/ValidateInputAttribute.cs

@@ -1,12 +1,12 @@
-using ZhonTai.Common.Output;
-using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.Filters;
 using Microsoft.Extensions.Logging;
 using System;
 using System.Linq;
+using ZhonTai.Common.Output;
 
-namespace ZhonTai.HttpApi.Attributes
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Attributes
 {
     /// <summary>
     /// 输入模型验证

+ 4 - 4
src/shared/ZhonTai.HttpApi/Attributes/ValidatePermissionAttribute.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Attributes/ValidatePermissionAttribute.cs

@@ -1,14 +1,14 @@
-using ZhonTai.HttpApi.Auth;
-using ZhonTai.Common.Auth;
-using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.Filters;
 using Microsoft.Extensions.DependencyInjection;
 using System;
 using System.Linq;
 using System.Threading.Tasks;
+using ZhonTai.Plate.Admin.HttpApi.Shared.Auth;
+using ZhonTai.Common.Auth;
 
-namespace ZhonTai.HttpApi.Attributes
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Attributes
 {
     /// <summary>
     /// 启用权限验证

+ 3 - 3
src/shared/ZhonTai.HttpApi/Attributes/VersionRouteAttribute.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Attributes/VersionRouteAttribute.cs

@@ -1,9 +1,9 @@
-using ZhonTai.HttpApi.Enums;
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.ApiExplorer;
 using System;
+using ZhonTai.Plate.Admin.HttpApi.Shared.Enums;
 
-namespace ZhonTai.HttpApi.Attributes
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Attributes
 {
     /// <summary>
     /// 自定义路由 /api/{version}/[area]/[controler]/[action]

+ 1 - 1
src/shared/ZhonTai.HttpApi/Auth/IPermissionHandler.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Auth/IPermissionHandler.cs

@@ -1,6 +1,6 @@
 using System.Threading.Tasks;
 
-namespace ZhonTai.HttpApi.Auth
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Auth
 {
     /// <summary>
     /// 权限处理接口

+ 1 - 1
src/shared/ZhonTai.HttpApi/Auth/PermissionHandler.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Auth/PermissionHandler.cs

@@ -2,7 +2,7 @@
 using System.Threading.Tasks;
 using ZhonTai.Plate.Admin.Service.User;
 
-namespace ZhonTai.HttpApi.Auth
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Auth
 {
     /// <summary>
     /// 权限处理

+ 4 - 4
src/shared/ZhonTai.HttpApi/Auth/ResponseAuthenticationHandler.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Auth/ResponseAuthenticationHandler.cs

@@ -1,5 +1,4 @@
-using ZhonTai.Common.Extensions;
-using Microsoft.AspNetCore.Authentication;
+using Microsoft.AspNetCore.Authentication;
 using Microsoft.AspNetCore.Http;
 using Microsoft.Extensions.Logging;
 using Microsoft.Extensions.Options;
@@ -8,9 +7,10 @@ using Newtonsoft.Json.Serialization;
 using System;
 using System.Text.Encodings.Web;
 using System.Threading.Tasks;
-using StatusCodes = ZhonTai.HttpApi.Enums.StatusCodes;
+using ZhonTai.Common.Extensions;
+using StatusCodes = ZhonTai.Plate.Admin.HttpApi.Shared.Enums.StatusCodes;
 
-namespace ZhonTai.HttpApi.Auth
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Auth
 {
     /// <summary>
     /// 响应认证处理器

+ 2 - 2
src/shared/ZhonTai.HttpApi/BaseController.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/BaseController.cs

@@ -1,7 +1,7 @@
 using Microsoft.AspNetCore.Mvc;
-using ZhonTai.HttpApi.Attributes;
+using ZhonTai.Plate.Admin.HttpApi.Shared.Attributes;
 
-namespace ZhonTai.HttpApi
+namespace ZhonTai.Plate.Admin.HttpApi.Shared
 {
     /// <summary>
     /// 基础控制器

+ 22 - 17
src/shared/ZhonTai.HttpApi/BaseStartup.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/BaseStartup.cs

@@ -10,6 +10,7 @@ using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.DependencyInjection.Extensions;
 using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.DependencyModel;
 using Microsoft.IdentityModel.Tokens;
 using Microsoft.OpenApi.Models;
 using Newtonsoft.Json;
@@ -20,23 +21,25 @@ using System.IdentityModel.Tokens.Jwt;
 using System.Linq;
 using System.Reflection;
 using System.Text;
+using Mapster;
 using Yitter.IdGenerator;
 //using FluentValidation;
 //using FluentValidation.AspNetCore;
-using ZhonTai.HttpApi.Auth;
+using ZhonTai.Plate.Admin.HttpApi.Shared.Auth;
 using ZhonTai.Common.Auth;
 using ZhonTai.Common.Cache;
 using ZhonTai.Common.Configs;
 using ZhonTai.Common.Consts;
 using ZhonTai.Common.Helpers;
-using ZhonTai.HttpApi.Db;
-using ZhonTai.HttpApi.Enums;
-using ZhonTai.HttpApi.Extensions;
-using ZhonTai.HttpApi.Filters;
-using ZhonTai.HttpApi.Logs;
-using ZhonTai.HttpApi.RegisterModules;
-
-namespace ZhonTai.HttpApi
+using ZhonTai.Plate.Admin.HttpApi.Shared.Db;
+using ZhonTai.Plate.Admin.HttpApi.Shared.Enums;
+using ZhonTai.Plate.Admin.HttpApi.Shared.Extensions;
+using ZhonTai.Plate.Admin.HttpApi.Shared.Filters;
+using ZhonTai.Plate.Admin.HttpApi.Shared.Logs;
+using ZhonTai.Plate.Admin.HttpApi.Shared.RegisterModules;
+using MapsterMapper;
+
+namespace ZhonTai.Plate.Admin.HttpApi.Shared
 {
     public abstract class BaseStartup
     {
@@ -55,7 +58,7 @@ namespace ZhonTai.HttpApi
             _appConfig = _configHelper.Get<AppConfig>("appconfig", env.EnvironmentName) ?? new AppConfig();
         }
 
-        public void ConfigureServices(IServiceCollection services)
+        public virtual void ConfigureServices(IServiceCollection services)
         {
             //雪花漂移算法
             YitIdHelper.SetIdGenerator(new IdGeneratorOptions(1) { WorkerIdBitLength = 6 });
@@ -97,12 +100,15 @@ namespace ZhonTai.HttpApi
             var uploadConfig = _configHelper.Load("uploadconfig", _env.EnvironmentName, true);
             services.Configure<UploadConfig>(uploadConfig);
 
-            #region AutoMapper 自动映射
+            #region Mapster 映射配置
 
-            var serviceAssembly = Assembly.Load("ZhonTai.Plate.Admin.Service");
-            services.AddAutoMapper(serviceAssembly);
+            Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
+                .Where(a => a.Name.StartsWith("ZhonTai"))
+                .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
+            services.AddScoped<IMapper>(sp => new Mapper());
+            TypeAdapterConfig.GlobalSettings.Scan(assemblies);
 
-            #endregion AutoMapper 自动映射
+            #endregion Mapster 映射配置
 
             #region Cors 跨域
             services.AddCors(options =>
@@ -308,7 +314,6 @@ namespace ZhonTai.HttpApi
 
             if (_appConfig.Log.Operation)
             {
-                //services.AddSingleton<ILogHandler, LogHandler>();
                 services.AddScoped<ILogHandler, LogHandler>();
             }
 
@@ -374,7 +379,7 @@ namespace ZhonTai.HttpApi
             services.Configure<ConsoleLifetimeOptions>(opts => opts.SuppressStatusMessages = true);
         }
 
-        public void ConfigureContainer(ContainerBuilder builder)
+        public virtual void ConfigureContainer(ContainerBuilder builder)
         {
             #region AutoFac IOC容器
 
@@ -400,7 +405,7 @@ namespace ZhonTai.HttpApi
             #endregion AutoFac IOC容器
         }
 
-        public void Configure(IApplicationBuilder app)
+        public virtual void Configure(IApplicationBuilder app)
         {
             #region app配置
 

+ 3 - 5
src/shared/ZhonTai.HttpApi/Db/DBServiceCollectionExtensions.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Db/DBServiceCollectionExtensions.cs

@@ -8,10 +8,10 @@ using ZhonTai.Common.Domain.Entities;
 using ZhonTai.Common.Configs;
 using ZhonTai.Common.Dbs;
 using ZhonTai.Common.Helpers;
-using ZhonTai.Plate.Admin.Repository;
+using ZhonTai.Plate.Admin.Domain;
 using ZhonTai.Plate.Admin.Domain.Dual;
 
-namespace ZhonTai.HttpApi.Db
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Db
 {
     public static class DBServiceCollectionExtensions
     {
@@ -94,7 +94,7 @@ namespace ZhonTai.HttpApi.Db
             //生成数据包
             if (dbConfig.GenerateData && !dbConfig.CreateDb && !dbConfig.SyncData)
             {
-                await DbHelper.GenerateSimpleJsonDataAsync(fsql, appConfig);
+                await DbHelper.GenerateDataAsync(fsql, appConfig);
             }
 
             #region 监听Curd操作
@@ -135,8 +135,6 @@ namespace ZhonTai.HttpApi.Db
                     }
                 }
             }
-
-            
         }
 
         /// <summary>

+ 1 - 1
src/shared/ZhonTai.HttpApi/Enums/ApiVersion.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Enums/ApiVersion.cs

@@ -1,4 +1,4 @@
-namespace ZhonTai.HttpApi.Enums
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Enums
 {
     /// <summary>
     /// 接口版本

+ 1 - 1
src/shared/ZhonTai.HttpApi/Enums/StatusCodes.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Enums/StatusCodes.cs

@@ -1,6 +1,6 @@
 using System.ComponentModel;
 
-namespace ZhonTai.HttpApi.Enums
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Enums
 {
     /// <summary>
     /// 状态码枚举

+ 3 - 3
src/shared/ZhonTai.HttpApi/Extensions/RateLimitServiceCollectionExtensions.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Extensions/RateLimitServiceCollectionExtensions.cs

@@ -1,11 +1,11 @@
-using ZhonTai.Common.Configs;
-using AspNetCoreRateLimit;
+using AspNetCoreRateLimit;
 using Microsoft.Extensions.Caching.Distributed;
 using Microsoft.Extensions.Caching.Redis;
 using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
+using ZhonTai.Common.Configs;
 
-namespace ZhonTai.HttpApi.Extensions
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Extensions
 {
     public static class RateLimitServiceCollectionExtensions
     {

+ 3 - 3
src/shared/ZhonTai.HttpApi/Extensions/UploadConfigApplicationBuilderExtensions.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Extensions/UploadConfigApplicationBuilderExtensions.cs

@@ -1,11 +1,11 @@
-using ZhonTai.Common.Configs;
-using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Builder;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.FileProviders;
 using Microsoft.Extensions.Options;
 using System.IO;
+using ZhonTai.Common.Configs;
 
-namespace ZhonTai.HttpApi.Extensions
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Extensions
 {
     public static class UploadConfigApplicationBuilderExtensions
     {

+ 20 - 15
src/shared/ZhonTai.HttpApi/Filters/AdminExceptionFilter.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Filters/AdminExceptionFilter.cs

@@ -1,16 +1,16 @@
-using ZhonTai.Common.Extensions;
-using ZhonTai.Common.Output;
-using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Hosting;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.Filters;
 using Microsoft.Extensions.Hosting;
 using Microsoft.Extensions.Logging;
 using System.Threading.Tasks;
+using ZhonTai.Common.Extensions;
+using ZhonTai.Common.Output;
 
-namespace ZhonTai.HttpApi.Filters
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Filters
 {
     /// <summary>
-    /// Admin异常错误过滤
+    /// Admin控制器异常错误过滤
     /// </summary>
     public class AdminExceptionFilter : IExceptionFilter, IAsyncExceptionFilter
     {
@@ -25,19 +25,24 @@ namespace ZhonTai.HttpApi.Filters
 
         public void OnException(ExceptionContext context)
         {
-            string message;
-            if (_env.IsProduction())
+            if (context.ExceptionHandled == false)
             {
-                message = Enums.StatusCodes.Status500InternalServerError.ToDescription();
-            }
-            else
-            {
-                message = context.Exception.Message;
+                string message;
+                if (_env.IsProduction())
+                {
+                    message = Enums.StatusCodes.Status500InternalServerError.ToDescription();
+                }
+                else
+                {
+                    message = context.Exception.Message;
+                }
+
+                _logger.LogError(context.Exception, "");
+                var data = ResponseOutput.NotOk(message);
+                context.Result = new InternalServerErrorResult(data);
             }
 
-            _logger.LogError(context.Exception, "");
-            var data = ResponseOutput.NotOk(message);
-            context.Result = new InternalServerErrorResult(data);
+            context.ExceptionHandled = true;
         }
 
         public Task OnExceptionAsync(ExceptionContext context)

+ 4 - 4
src/shared/ZhonTai.HttpApi/Filters/LogActionFilter.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Filters/LogActionFilter.cs

@@ -1,10 +1,10 @@
-using ZhonTai.HttpApi.Attributes;
-using ZhonTai.HttpApi.Logs;
-using Microsoft.AspNetCore.Mvc.Filters;
+using Microsoft.AspNetCore.Mvc.Filters;
 using System.Linq;
 using System.Threading.Tasks;
+using ZhonTai.Plate.Admin.HttpApi.Shared.Attributes;
+using ZhonTai.Plate.Admin.HttpApi.Shared.Logs;
 
-namespace ZhonTai.HttpApi.Filters
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Filters
 {
     public class LogActionFilter : IAsyncActionFilter
     {

+ 1 - 1
src/shared/ZhonTai.HttpApi/HostBuilderProvider.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/HostBuilderProvider.cs

@@ -10,7 +10,7 @@ using LogLevel = Microsoft.Extensions.Logging.LogLevel;
 using ZhonTai.Common.Configs;
 using ZhonTai.Common.Helpers;
 
-namespace ZhonTai.HttpApi
+namespace ZhonTai.Plate.Admin.HttpApi.Shared
 {
     public class HostBuilderProvider
     {

+ 13 - 11
src/shared/ZhonTai.HttpApi/Logs/ApiHelper.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Logs/ApiHelper.cs

@@ -1,13 +1,9 @@
-using ZhonTai.Common.Attributes;
-using ZhonTai.Common.Helpers;
-using ZhonTai.Plate.Admin.Repository;
-using Newtonsoft.Json;
-using System;
-using System.Collections.Generic;
-using System.IO;
+using System.Collections.Generic;
 using System.Linq;
+using ZhonTai.Common.Attributes;
+using ZhonTai.Plate.Admin.Domain.Api;
 
-namespace ZhonTai.HttpApi.Logs
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Logs
 {
     /// <summary>
     /// Api帮助类
@@ -18,6 +14,12 @@ namespace ZhonTai.HttpApi.Logs
         private List<ApiHelperDto> _apis;
         private static readonly object _lockObject = new object();
 
+        private readonly IApiRepository _apiRepository;
+        public ApiHelper(IApiRepository apiRepository)
+        {
+            _apiRepository = apiRepository;
+        }
+
         public List<ApiHelperDto> GetApis()
         {
             if (_apis != null && _apis.Any())
@@ -29,9 +31,9 @@ namespace ZhonTai.HttpApi.Logs
                     return _apis;
 
                 _apis = new List<ApiHelperDto>();
-                var filePath = Path.Combine(AppContext.BaseDirectory, "Db/Data/data.json").ToPath();
-                var jsonData = FileHelper.ReadFile(filePath);
-                var apis = JsonConvert.DeserializeObject<Data>(jsonData).Apis;
+
+                var apis = _apiRepository.Select.ToList(a => new { a.Id, a.ParentId, a.Label, a.Path });
+
                 foreach (var api in apis)
                 {
                     var parentLabel = apis.FirstOrDefault(a => a.Id == api.ParentId)?.Label;

+ 1 - 1
src/shared/ZhonTai.HttpApi/Logs/ILogHandler.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Logs/ILogHandler.cs

@@ -1,7 +1,7 @@
 using Microsoft.AspNetCore.Mvc.Filters;
 using System.Threading.Tasks;
 
-namespace ZhonTai.HttpApi.Logs
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Logs
 {
     /// <summary>
     /// 操作日志处理接口

+ 1 - 1
src/shared/ZhonTai.HttpApi/Logs/LogHandler.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/Logs/LogHandler.cs

@@ -11,7 +11,7 @@ using ZhonTai.Plate.Admin.Service.OprationLog.Input;
 
 //using Newtonsoft.Json;
 
-namespace ZhonTai.HttpApi.Logs
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.Logs
 {
     /// <summary>
     /// 操作日志处理

+ 1 - 2
src/shared/ZhonTai.HttpApi/RegisterModules/ControllerModule.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/RegisterModules/ControllerModule.cs

@@ -5,7 +5,7 @@ using System.Linq;
 using System.Reflection;
 using Module = Autofac.Module;
 
-namespace ZhonTai.HttpApi.RegisterModules
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.RegisterModules
 {
     public class ControllerModule : Module
     {
@@ -18,7 +18,6 @@ namespace ZhonTai.HttpApi.RegisterModules
 
         protected override void Load(ContainerBuilder builder)
         {
-
             var controllerTypes = Assembly.GetExecutingAssembly().GetExportedTypes()
             .Where(type => typeof(ControllerBase).IsAssignableFrom(type))
             .ToArray();

+ 9 - 7
src/shared/ZhonTai.HttpApi/RegisterModules/RepositoryModule.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/RegisterModules/RepositoryModule.cs

@@ -3,14 +3,14 @@ using System.Linq;
 using System.Reflection;
 using Autofac;
 using Module = Autofac.Module;
-using ZhonTai.Plate.Admin.Repository;
+using ZhonTai.Plate.Admin.Domain;
 using ZhonTai.Common.Domain.Repositories;
+using Microsoft.Extensions.DependencyModel;
 
-namespace ZhonTai.HttpApi.RegisterModules
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.RegisterModules
 {
     public class RepositoryModule : Module
     {
-        private readonly string _assemblyName;
         private readonly string _assemblySuffixName;
 
         /// <summary>
@@ -18,17 +18,19 @@ namespace ZhonTai.HttpApi.RegisterModules
         /// </summary>
         /// <param name="assemblyName">程序集名称</param>
         /// <param name="assemblySuffixName">程序集后缀名</param>
-        public RepositoryModule(string assemblyName = "ZhonTai.Plate.Admin.Repository", string assemblySuffixName = "Repository")
+        public RepositoryModule(string assemblySuffixName = "Repository")
         {
-            _assemblyName = assemblyName;
             _assemblySuffixName = assemblySuffixName;
         }
 
         protected override void Load(ContainerBuilder builder)
         {
             //仓储
-            var assemblyRepository = Assembly.Load(_assemblyName);
-            builder.RegisterAssemblyTypes(assemblyRepository)
+            Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
+                .Where(a => a.Name.EndsWith(_assemblySuffixName))
+                .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
+
+            builder.RegisterAssemblyTypes(assemblies)
             .Where(a => a.Name.EndsWith(_assemblySuffixName))
             .AsImplementedInterfaces()
             .InstancePerLifetimeScope()

+ 11 - 10
src/shared/ZhonTai.HttpApi/RegisterModules/ServiceModule.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/RegisterModules/ServiceModule.cs

@@ -1,20 +1,19 @@
-
-using ZhonTai.HttpApi.Aop;
-using ZhonTai.Common.Configs;
-using Autofac;
+using Autofac;
 using Autofac.Extras.DynamicProxy;
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Reflection;
 using Module = Autofac.Module;
+using ZhonTai.Plate.Admin.Domain;
+using ZhonTai.Common.Configs;
+using Microsoft.Extensions.DependencyModel;
 
-namespace ZhonTai.HttpApi.RegisterModules
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.RegisterModules
 {
     public class ServiceModule : Module
     {
         private readonly AppConfig _appConfig;
-        private readonly string _assemblyName;
         private readonly string _assemblySuffixName;
 
         /// <summary>
@@ -23,10 +22,9 @@ namespace ZhonTai.HttpApi.RegisterModules
         /// <param name="appConfig">AppConfig</param>
         /// <param name="assemblyName">程序集名称</param>
         /// <param name="assemblySuffixName">程序集后缀名</param>
-        public ServiceModule(AppConfig appConfig, string assemblyName = "ZhonTai.Plate.Admin.Service", string assemblySuffixName = "Service")
+        public ServiceModule(AppConfig appConfig, string assemblySuffixName = "Service")
         {
             _appConfig = appConfig;
-            _assemblyName = assemblyName;
             _assemblySuffixName = assemblySuffixName;
         }
 
@@ -42,8 +40,11 @@ namespace ZhonTai.HttpApi.RegisterModules
             }
 
             //服务
-            var assemblyServices = Assembly.Load(_assemblyName);
-            builder.RegisterAssemblyTypes(assemblyServices)
+            Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
+                .Where(a => a.Name.EndsWith(_assemblySuffixName))
+                .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
+
+            builder.RegisterAssemblyTypes(assemblies)
             .Where(a => a.Name.EndsWith(_assemblySuffixName))
             .AsImplementedInterfaces()
             .InstancePerLifetimeScope()

+ 3 - 4
src/shared/ZhonTai.HttpApi/RegisterModules/SingleInstanceModule.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/RegisterModules/SingleInstanceModule.cs

@@ -1,12 +1,11 @@
-
-using ZhonTai.Common.Attributes;
-using Autofac;
+using Autofac;
 using Microsoft.Extensions.DependencyModel;
 using System.Linq;
 using System.Reflection;
 using Module = Autofac.Module;
+using ZhonTai.Common.Attributes;
 
-namespace ZhonTai.HttpApi.RegisterModules
+namespace ZhonTai.Plate.Admin.HttpApi.Shared.RegisterModules
 {
     public class SingleInstanceModule : Module
     {

+ 4 - 4
src/shared/ZhonTai.HttpApi/ZhonTai.HttpApi.csproj → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi.Shared/ZhonTai.Plate.Admin.HttpApi.Shared.csproj

@@ -7,7 +7,6 @@
 		<PackageReference Include="AspNetCoreRateLimit" Version="4.0.1" />
 		<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.1.0" />
 		<PackageReference Include="Caching.CSRedis" Version="3.6.60" />
-		<PackageReference Include="Castle.Core.AsyncInterceptor" Version="2.0.0" />
 		<PackageReference Include="FluentValidation.AspNetCore" Version="10.3.3" />
 		<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="3.0.1" />
 		<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.9" />
@@ -15,11 +14,12 @@
 		<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="5.0.0" />
 		<PackageReference Include="Microsoft.Extensions.PlatformAbstractions" Version="1.1.0" />
 		<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.1" />
+		<PackageReference Include="Mapster" Version="7.2.0" />
 	</ItemGroup>
 	
 	<ItemGroup>
-	  <ProjectReference Include="..\..\plates\ZhonTai.Plate.Admin\ZhonTai.Plate.Admin.Repository\ZhonTai.Plate.Admin.Repository.csproj" />
-	  <ProjectReference Include="..\..\plates\ZhonTai.Plate.Admin\ZhonTai.Plate.Admin.Service\ZhonTai.Plate.Admin.Service.csproj" />
-	  <ProjectReference Include="..\ZhonTai.Common\ZhonTai.Common.csproj" />
+	  <ProjectReference Include="..\..\..\shared\ZhonTai.Common\ZhonTai.Common.csproj" />
+	  <ProjectReference Include="..\ZhonTai.Plate.Admin.Domain\ZhonTai.Plate.Admin.Domain.csproj" />
+	  <ProjectReference Include="..\ZhonTai.Plate.Admin.Service.Contracts\ZhonTai.Plate.Admin.Service.Contracts.csproj" />
 	</ItemGroup>
 </Project>

+ 1 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi/Controllers/AreaController.cs

@@ -1,5 +1,5 @@
 using Microsoft.AspNetCore.Mvc;
-using ZhonTai.HttpApi;
+using ZhonTai.Plate.Admin.HttpApi.Shared;
 
 namespace ZhonTai.Plate.Admin.HttpApi
 {

+ 1 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi/Controllers/AuthController.cs

@@ -7,7 +7,7 @@ using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Cors;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.ModelBinding;
-using ZhonTai.HttpApi.Attributes;
+using ZhonTai.Plate.Admin.HttpApi.Shared.Attributes;
 using ZhonTai.Common.Auth;
 using ZhonTai.Common.Consts;
 using ZhonTai.Common.Extensions;

+ 1 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi/Controllers/UserController.cs

@@ -2,7 +2,7 @@
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.Extensions.Options;
 using System.Threading.Tasks;
-using ZhonTai.HttpApi.Attributes;
+using ZhonTai.Plate.Admin.HttpApi.Shared.Attributes;
 using ZhonTai.Common.Auth;
 using ZhonTai.Common.Configs;
 using ZhonTai.Common.Helpers;

+ 1 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.HttpApi/ZhonTai.Plate.Admin.HttpApi.csproj

@@ -5,7 +5,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <ProjectReference Include="..\..\..\shared\ZhonTai.HttpApi\ZhonTai.HttpApi.csproj" />
+    <ProjectReference Include="..\ZhonTai.Plate.Admin.HttpApi.Shared\ZhonTai.Plate.Admin.HttpApi.Shared.csproj" />
   </ItemGroup>
 
 </Project>

+ 1 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Api/ApiRepository.cs

@@ -1,3 +1,4 @@
+using ZhonTai.Plate.Admin.Domain;
 using ZhonTai.Plate.Admin.Domain.Api;
 
 namespace ZhonTai.Plate.Admin.Repository

+ 0 - 37
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Base/Data.cs

@@ -1,37 +0,0 @@
-using ZhonTai.Plate.Admin.Domain.Api;
-using ZhonTai.Plate.Admin.Domain.Dictionary;
-using ZhonTai.Plate.Admin.Domain.DictionaryType;
-using ZhonTai.Plate.Admin.Domain.Permission;
-using ZhonTai.Plate.Admin.Domain.PermissionApi;
-using ZhonTai.Plate.Admin.Domain.Role;
-using ZhonTai.Plate.Admin.Domain.RolePermission;
-using ZhonTai.Plate.Admin.Domain.Tenant;
-using ZhonTai.Plate.Admin.Domain.TenantPermission;
-using ZhonTai.Plate.Admin.Domain.User;
-using ZhonTai.Plate.Admin.Domain.UserRole;
-using ZhonTai.Plate.Admin.Domain.View;
-
-namespace ZhonTai.Plate.Admin.Repository
-{
-    /// <summary>
-    /// 数据
-    /// </summary>
-    public partial class Data
-    {
-        #region Admin
-        public DictionaryTypeEntity[] DictionaryTypes { get; set; }
-        public DictionaryEntity[] Dictionaries { get; set; }
-        public ApiEntity[] Apis { get; set; }
-        public ApiEntity[] ApiTree { get; set; }
-        public ViewEntity[] ViewTree { get; set; }
-        public PermissionEntity[] PermissionTree { get; set; }
-        public UserEntity[] Users { get; set; }
-        public RoleEntity[] Roles { get; set; }
-        public UserRoleEntity[] UserRoles { get; set; }
-        public RolePermissionEntity[] RolePermissions { get; set; }
-        public TenantEntity[] Tenants { get; set; }
-        public TenantPermissionEntity[] TenantPermissions { get; set; }
-        public PermissionApiEntity[] PermissionApis { get; set; }
-        #endregion
-    }
-}

+ 0 - 687
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Base/DbHelper.cs

@@ -1,687 +0,0 @@
-using ZhonTai.Common.Attributes;
-using ZhonTai.Common.Auth;
-using ZhonTai.Common.Domain.Entities;
-using ZhonTai.Common.Configs;
-using ZhonTai.Common.Extensions;
-using ZhonTai.Common.Helpers;
-using FreeSql;
-using FreeSql.Aop;
-using FreeSql.DataAnnotations;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Serialization;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Threading.Tasks;
-using Yitter.IdGenerator;
-using ZhonTai.Plate.Admin.Domain.DictionaryType;
-using ZhonTai.Plate.Admin.Domain.Dictionary;
-using ZhonTai.Plate.Admin.Domain.DictionaryType.Dtos;
-using ZhonTai.Plate.Admin.Domain.Dictionary.Dtos;
-using ZhonTai.Plate.Admin.Domain.Dual;
-using ZhonTai.Plate.Admin.Domain.Api;
-using ZhonTai.Plate.Admin.Domain.Api.Dtos;
-using ZhonTai.Plate.Admin.Domain.View.Dtos;
-using ZhonTai.Plate.Admin.Domain.Permission.Dtos;
-using ZhonTai.Plate.Admin.Domain.Permission;
-using ZhonTai.Plate.Admin.Domain.User;
-using ZhonTai.Plate.Admin.Domain.User.Dtos;
-using ZhonTai.Plate.Admin.Domain.Role;
-using ZhonTai.Plate.Admin.Domain.Role.Dtos;
-using ZhonTai.Plate.Admin.Domain.UserRole;
-using ZhonTai.Plate.Admin.Domain.RolePermission;
-using ZhonTai.Plate.Admin.Domain.Tenant;
-using ZhonTai.Plate.Admin.Domain.TenantPermission;
-using ZhonTai.Plate.Admin.Domain.PermissionApi;
-using ZhonTai.Plate.Admin.Domain.View;
-
-namespace ZhonTai.Plate.Admin.Repository
-{
-    public class DbHelper
-    {
-        /// <summary>
-        /// 偏移时间
-        /// </summary>
-        public static TimeSpan TimeOffset;
-         
-        /// <summary>
-        /// 创建数据库
-        /// </summary>
-        /// <param name="dbConfig"></param>
-        /// <returns></returns>
-        public async static Task CreateDatabaseAsync(DbConfig dbConfig)
-        {
-            if (!dbConfig.CreateDb || dbConfig.Type == DataType.Sqlite)
-            {
-                return;
-            }
-
-            var db = new FreeSqlBuilder()
-                    .UseConnectionString(dbConfig.Type, dbConfig.CreateDbConnectionString)
-                    .Build();
-
-            try
-            {
-                Console.WriteLine("\r\n create database started");
-                await db.Ado.ExecuteNonQueryAsync(dbConfig.CreateDbSql);
-                Console.WriteLine(" create database succeed");
-            }
-            catch (Exception e)
-            {
-                Console.WriteLine($" create database failed.\n {e.Message}");
-            }
-        }
-
-        /// <summary>
-        /// 获得指定程序集表实体
-        /// </summary>
-        /// <returns></returns>
-        public static Type[] GetEntityTypes()
-        {
-            List<string> assemblyNames = new List<string>()
-            {
-                "ZhonTai.Plate.Admin.Domain"
-            };
-
-            List<Type> entityTypes = new List<Type>();
-
-            foreach (var assemblyName in assemblyNames)
-            {
-                foreach (Type type in Assembly.Load(assemblyName).GetExportedTypes())
-                {
-                    foreach (Attribute attribute in type.GetCustomAttributes())
-                    {
-                        if (attribute is TableAttribute tableAttribute)
-                        {
-                            if (tableAttribute.DisableSyncStructure == false)
-                            {
-                                entityTypes.Add(type);
-                            }
-                        }
-                    }
-                }
-            }
-
-            return entityTypes.ToArray();
-        }
-
-        /// <summary>
-        /// 配置实体
-        /// </summary>
-        public static void ConfigEntity(IFreeSql db, AppConfig appConfig = null)
-        {
-            //租户生成和操作租户Id
-            if (!appConfig.Tenant)
-            {
-                var iTenant = nameof(ITenant);
-                var tenantId = nameof(ITenant.TenantId);
-
-                //获得指定程序集表实体
-                var entityTypes = GetEntityTypes();
-
-                foreach (var entityType in entityTypes)
-                {
-                    if (entityType.GetInterfaces().Any(a => a.Name == iTenant))
-                    {
-                        db.CodeFirst.Entity(entityType, a =>
-                        {
-                            a.Ignore(tenantId);
-                        });
-                    }
-                }
-            }
-        }
-
-        /// <summary>
-        /// 审计数据
-        /// </summary>
-        /// <param name="e"></param>
-        /// <param name="timeOffset"></param>
-        /// <param name="user"></param>
-        public static void AuditValue(AuditValueEventArgs e, TimeSpan timeOffset, IUser user)
-        {
-            if (e.Property.GetCustomAttribute<ServerTimeAttribute>(false) != null
-                   && (e.Column.CsType == typeof(DateTime) || e.Column.CsType == typeof(DateTime?))
-                   && (e.Value == null || (DateTime)e.Value == default || (DateTime?)e.Value == default))
-            {
-                e.Value = DateTime.Now.Subtract(timeOffset);
-            }
-
-            if (e.Column.CsType == typeof(long)
-            && e.Property.GetCustomAttribute<SnowflakeAttribute>(false) is SnowflakeAttribute snowflakeAttribute
-            && snowflakeAttribute.Enable && (e.Value == null || (long)e.Value == default || (long?)e.Value == default))
-            {
-                e.Value = YitIdHelper.NextId();
-            }
-
-            if (user == null || user.Id <= 0)
-            {
-                return;
-            }
-
-            if (e.AuditValueType == AuditValueType.Insert)
-            {
-                switch (e.Property.Name)
-                {
-                    case "CreatedUserId":
-                        if (e.Value == null || (long)e.Value == default || (long?)e.Value == default)
-                        {
-                            e.Value = user.Id;
-                        }
-                        break;
-
-                    case "CreatedUserName":
-                        if (e.Value == null || ((string)e.Value).IsNull())
-                        {
-                            e.Value = user.Name;
-                        }
-                        break;
-
-                    case "TenantId":
-                        if (e.Value == null || (long)e.Value == default || (long?)e.Value == default)
-                        {
-                            e.Value = user.TenantId;
-                        }
-                        break;
-                }
-            }
-            else if (e.AuditValueType == AuditValueType.Update)
-            {
-                switch (e.Property.Name)
-                {
-                    case "ModifiedUserId":
-                        e.Value = user.Id;
-                        break;
-
-                    case "ModifiedUserName":
-                        e.Value = user.Name;
-                        break;
-                }
-            }
-        }
-
-        /// <summary>
-        /// 同步结构
-        /// </summary>
-        public static void SyncStructure(IFreeSql db, string msg = null, DbConfig dbConfig = null, AppConfig appConfig = null)
-        {
-            //打印结构比对脚本
-            //var dDL = db.CodeFirst.GetComparisonDDLStatements<PermissionEntity>();
-            //Console.WriteLine("\r\n " + dDL);
-
-            //打印结构同步脚本
-            //db.Aop.SyncStructureAfter += (s, e) =>
-            //{
-            //    if (e.Sql.NotNull())
-            //    {
-            //        Console.WriteLine(" sync structure sql:\n" + e.Sql);
-            //    }
-            //};
-
-            // 同步结构
-            var dbType = dbConfig.Type.ToString();
-            Console.WriteLine($"\r\n {(msg.NotNull() ? msg : $"sync {dbType} structure")} started");
-            if (dbConfig.Type == DataType.Oracle)
-            {
-                db.CodeFirst.IsSyncStructureToUpper = true;
-            }
-
-            //获得指定程序集表实体
-            var entityTypes = GetEntityTypes();
-
-            db.CodeFirst.SyncStructure(entityTypes);
-            Console.WriteLine($" {(msg.NotNull() ? msg : $"sync {dbType} structure")} succeed");
-        }
-
-        /// <summary>
-        /// 检查实体属性是否为自增长
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <returns></returns>
-        private static bool CheckIdentity<T>() where T : class
-        {
-            var isIdentity = false;
-            var properties = typeof(T).GetProperties();
-            foreach (var property in properties)
-            {
-                if (property.GetCustomAttributes(typeof(ColumnAttribute), false).FirstOrDefault() is ColumnAttribute columnAttribute && columnAttribute.IsIdentity)
-                {
-                    isIdentity = true;
-                    break;
-                }
-            }
-
-            return isIdentity;
-        }
-
-        /// <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>
-        private static async Task InitDtDataAsync<T>(
-            IFreeSql db,
-            IUnitOfWork unitOfWork,
-            System.Data.Common.DbTransaction tran,
-            T[] data,
-            DbConfig dbConfig = null
-        ) where T : class, new()
-        {
-            var table = typeof(T).GetCustomAttributes(typeof(TableAttribute), false).FirstOrDefault() as TableAttribute;
-            var tableName = table.Name;
-
-            try
-            {
-                if (await db.Queryable<T>().AnyAsync())
-                {
-                    Console.WriteLine($" table: {tableName} record already exists");
-                    return;
-                }
-
-                if (!(data?.Length > 0))
-                {
-                    Console.WriteLine($" table: {tableName} import data []");
-                    return;
-                }
-
-                var repo = db.GetRepositoryBase<T>();
-                var insert = db.Insert<T>();
-                if (unitOfWork != null)
-                {
-                    repo.UnitOfWork = unitOfWork;
-                    insert = insert.WithTransaction(tran);
-                }
-
-                var isIdentity = CheckIdentity<T>();
-                if (isIdentity)
-                {
-                    if (dbConfig.Type == DataType.SqlServer)
-                    {
-                        var insrtSql = insert.AppendData(data).InsertIdentity().ToSql();
-                        await repo.Orm.Ado.ExecuteNonQueryAsync($"SET IDENTITY_INSERT {tableName} ON\n {insrtSql} \nSET IDENTITY_INSERT {tableName} OFF");
-                    }
-                    else
-                    {
-                        await insert.AppendData(data).InsertIdentity().ExecuteAffrowsAsync();
-                    }
-                }
-                else
-                {
-                    repo.DbContextOptions.EnableAddOrUpdateNavigateList = true;
-                    await repo.InsertAsync(data);
-                }
-
-                Console.WriteLine($" table: {tableName} sync data succeed");
-            }
-            catch (Exception ex)
-            {
-                Console.WriteLine($" table: {tableName} sync data failed.\n{ex.Message}");
-            }
-        }
-
-        /// <summary>
-        /// 同步数据审计方法
-        /// </summary>
-        /// <param name="s"></param>
-        /// <param name="e"></param>
-        private static void SyncDataAuditValue(object s, AuditValueEventArgs e)
-        {
-            var user = new { Id = 161223411986501, Name = "admin", TenantId = 161223412138053 };
-
-            if (e.Property.GetCustomAttribute<ServerTimeAttribute>(false) != null
-                   && (e.Column.CsType == typeof(DateTime) || e.Column.CsType == typeof(DateTime?))
-                   && (e.Value == null || (DateTime)e.Value == default || (DateTime?)e.Value == default))
-            {
-                e.Value = DateTime.Now.Subtract(TimeOffset);
-            }
-
-            if (e.Column.CsType == typeof(long)
-            && e.Property.GetCustomAttribute<SnowflakeAttribute>(false) != null
-            && (e.Value == null || (long)e.Value == default || (long?)e.Value == default))
-            {
-                e.Value = YitIdHelper.NextId();
-            }
-
-            if (user == null || user.Id <= 0)
-            {
-                return;
-            }
-
-            if (e.AuditValueType == AuditValueType.Insert)
-            {
-                switch (e.Property.Name)
-                {
-                    case "CreatedUserId":
-                        if (e.Value == null || (long)e.Value == default || (long?)e.Value == default)
-                        {
-                            e.Value = user.Id;
-                        }
-                        break;
-
-                    case "CreatedUserName":
-                        if (e.Value == null || ((string)e.Value).IsNull())
-                        {
-                            e.Value = user.Name;
-                        }
-                        break;
-
-                    case "TenantId":
-                        if (e.Value == null || (long)e.Value == default || (long?)e.Value == default)
-                        {
-                            e.Value = user.TenantId;
-                        }
-                        break;
-                }
-            }
-            else if (e.AuditValueType == AuditValueType.Update)
-            {
-                switch (e.Property.Name)
-                {
-                    case "ModifiedUserId":
-                        e.Value = user.Id;
-                        break;
-
-                    case "ModifiedUserName":
-                        e.Value = user.Name;
-                        break;
-                }
-            }
-        }
-
-        /// <summary>
-        /// 同步数据
-        /// </summary>
-        /// <returns></returns>
-        public static async Task SyncDataAsync(IFreeSql db, DbConfig dbConfig = null, AppConfig appConfig = null)
-        {
-            try
-            {
-                //db.Aop.CurdBefore += (s, e) =>
-                //{
-                //    Console.WriteLine($"{e.Sql}\r\n");
-                //};
-
-                Console.WriteLine("\r\n sync data started");
-
-                db.Aop.AuditValue += SyncDataAuditValue;
-
-                var fileName = appConfig.Tenant ? "data-share.json" : "data.json";
-                var filePath = Path.Combine(AppContext.BaseDirectory, $"Db/Data/{fileName}").ToPath();
-                var jsonData = FileHelper.ReadFile(filePath);
-                var data = JsonConvert.DeserializeObject<Data>(jsonData);
-
-                using (var uow = db.CreateUnitOfWork())
-                using (var tran = uow.GetOrBeginTransaction())
-                {
-                    var dualRepo = db.GetRepositoryBase<DualEntity>();
-                    dualRepo.UnitOfWork = uow;
-                    if (!await dualRepo.Select.AnyAsync())
-                    {
-                        await dualRepo.InsertAsync(new DualEntity { });
-                    }
-
-                    //admin
-                    await InitDtDataAsync(db, uow, tran, data.DictionaryTypes, dbConfig);
-                    await InitDtDataAsync(db, uow, tran, data.Dictionaries, dbConfig);
-                    await InitDtDataAsync(db, uow, tran, data.ApiTree, dbConfig);
-                    await InitDtDataAsync(db, uow, tran, data.ViewTree, dbConfig);
-                    await InitDtDataAsync(db, uow, tran, data.PermissionTree, dbConfig);
-                    await InitDtDataAsync(db, uow, tran, data.Users, dbConfig);
-                    await InitDtDataAsync(db, uow, tran, data.Roles, dbConfig);
-                    await InitDtDataAsync(db, uow, tran, data.UserRoles, dbConfig);
-                    await InitDtDataAsync(db, uow, tran, data.RolePermissions, dbConfig);
-                    await InitDtDataAsync(db, uow, tran, data.Tenants, dbConfig);
-                    await InitDtDataAsync(db, uow, tran, data.TenantPermissions, dbConfig);
-                    await InitDtDataAsync(db, uow, tran, data.PermissionApis, dbConfig);
-
-                    uow.Commit();
-                }
-
-                db.Aop.AuditValue -= SyncDataAuditValue;
-
-                Console.WriteLine(" sync data succeed\r\n");
-            }
-            catch (Exception ex)
-            {
-                throw new Exception($" sync data failed.\n{ex.Message}");
-            }
-        }
-
-        /// <summary>
-        /// 生成极简数据
-        /// </summary>
-        /// <param name="db"></param>
-        /// <param name="appConfig"></param>
-        /// <returns></returns>
-        public static async Task GenerateSimpleJsonDataAsync(IFreeSql db, AppConfig appConfig = null)
-        {
-            try
-            {
-                Console.WriteLine("\r\n generate data started");
-
-                #region 数据表
-
-
-                //admin
-                #region 数据字典
-                
-                var dictionaryTypes = await db.Queryable<DictionaryTypeEntity>().ToListAsync<DictionaryTypeDataOutput>();
-                var dictionaries = await db.Queryable<DictionaryEntity>().ToListAsync<DictionaryDataOutput>();
-
-                #endregion
-
-                #region 接口
-
-                var apis = await db.Queryable<ApiEntity>().ToListAsync<ApiDataOutput>();
-                var apiTree = apis.ToTree((r, c) =>
-                {
-                    return c.ParentId == 0;
-                },
-                (r, c) =>
-                {
-                    return r.Id == c.ParentId;
-                },
-                (r, datalist) =>
-                {
-                    r.Childs ??= new List<ApiDataOutput>();
-                    r.Childs.AddRange(datalist);
-                });
-
-                #endregion
-
-                #region 视图
-
-                var views = await db.Queryable<ViewEntity>().ToListAsync<ViewDataOutput>();
-                var viewTree = views.ToTree((r, c) =>
-                {
-                    return c.ParentId == 0;
-                },
-               (r, c) =>
-               {
-                   return r.Id == c.ParentId;
-               },
-               (r, datalist) =>
-               {
-                   r.Childs ??= new List<ViewDataOutput>();
-                   r.Childs.AddRange(datalist);
-               });
-
-                #endregion
-
-                #region 权限
-
-                var permissions = await db.Queryable<PermissionEntity>().ToListAsync<PermissionDataOutput>();
-                var permissionTree = permissions.ToTree((r, c) =>
-                {
-                    return c.ParentId == 0;
-                },
-               (r, c) =>
-               {
-                   return r.Id == c.ParentId;
-               },
-               (r, datalist) =>
-               {
-                   r.Childs ??= new List<PermissionDataOutput>();
-                   r.Childs.AddRange(datalist);
-               });
-
-                #endregion
-
-                #region 用户
-
-                var users = await db.Queryable<UserEntity>().ToListAsync<UserDataOutput>();
-
-                #endregion
-
-                #region 角色
-
-                var roles = await db.Queryable<RoleEntity>().ToListAsync<RoleDataOutput>();
-
-                #endregion
-
-                #region 用户角色
-
-                var userRoles = await db.Queryable<UserRoleEntity>().ToListAsync(a => new
-                {
-                    a.Id,
-                    a.UserId,
-                    a.RoleId
-                });
-
-                #endregion
-
-                #region 角色权限
-
-                var rolePermissions = await db.Queryable<RolePermissionEntity>().ToListAsync(a => new
-                {
-                    a.Id,
-                    a.RoleId,
-                    a.PermissionId
-                });
-
-                #endregion
-
-                #region 租户
-
-                var tenants = await db.Queryable<TenantEntity>().ToListAsync(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
-                });
-
-                #endregion
-
-                #region 租户权限
-
-                var tenantPermissions = await db.Queryable<TenantPermissionEntity>().ToListAsync(a => new
-                {
-                    a.Id,
-                    a.TenantId,
-                    a.PermissionId
-                });
-
-                #endregion
-
-                #region 权限接口
-
-                var permissionApis = await db.Queryable<PermissionApiEntity>().ToListAsync(a => new
-                {
-                    a.Id,
-                    a.PermissionId,
-                    a.ApiId
-                });
-
-                #endregion
-
-                #endregion
-
-                if (!(users?.Count > 0))
-                {
-                    return;
-                }
-
-                #region 生成数据
-                var settings = new JsonSerializerSettings();
-                settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
-                settings.NullValueHandling = NullValueHandling.Ignore;
-                settings.DefaultValueHandling = DefaultValueHandling.Ignore;
-                var jsonData = JsonConvert.SerializeObject(new
-                {
-                    dictionaries,
-                    dictionaryTypes,
-                    apis,
-                    apiTree,
-                    viewTree,
-                    permissionTree,
-                    users,
-                    roles,
-                    userRoles,
-                    rolePermissions,
-                    tenants,
-                    tenantPermissions,
-                    permissionApis
-                },
-                //Formatting.Indented,
-                settings
-                );
-                
-                var isTenant = appConfig.Tenant;
-                var fileName = isTenant ? "data-share.json" : "data.json";
-                var filePath = Path.Combine(Directory.GetCurrentDirectory(), $"Db/Data/{fileName}").ToPath();
-                FileHelper.WriteFile(filePath, jsonData);
-
-                if (isTenant)
-                {
-                    var tenantId = tenants.Where(a => a.Code.ToLower() == "zhontai").FirstOrDefault().Id;
-
-                    jsonData = JsonConvert.SerializeObject(new
-                    {
-                        dictionaries = dictionaries.Where(a=>a.TenantId == tenantId),
-                        dictionaryTypes = dictionaryTypes.Where(a => a.TenantId == tenantId),
-                        apis,
-                        apiTree,
-                        viewTree,
-                        permissionTree,
-                        users = users.Where(a => a.TenantId == tenantId),
-                        roles = roles.Where(a => a.TenantId == tenantId),
-                        userRoles,
-                        rolePermissions,
-                        tenants,
-                        tenantPermissions,
-                        permissionApis
-                    },
-                    settings
-                    );
-                    filePath = Path.Combine(Directory.GetCurrentDirectory(), "Db/Data/data.json").ToPath();
-                    FileHelper.WriteFile(filePath, jsonData);
-                }
-                #endregion
-
-                Console.WriteLine(" generate data succeed\r\n");
-            }
-            catch (Exception ex)
-            {
-                throw new Exception($" generate data failed。\n{ex.Message}\r\n");
-            }
-        }
-    }
-}

+ 209 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/CustomGenerateData.cs

@@ -0,0 +1,209 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using ZhonTai.Common.Domain.Db;
+using ZhonTai.Plate.Admin.Domain.DictionaryType;
+using ZhonTai.Plate.Admin.Domain.Dictionary;
+using ZhonTai.Plate.Admin.Domain.DictionaryType.Dtos;
+using ZhonTai.Plate.Admin.Domain.Dictionary.Dtos;
+using ZhonTai.Plate.Admin.Domain.Api;
+using ZhonTai.Plate.Admin.Domain.Api.Dtos;
+using ZhonTai.Plate.Admin.Domain.View.Dtos;
+using ZhonTai.Plate.Admin.Domain.Permission.Dtos;
+using ZhonTai.Plate.Admin.Domain.Permission;
+using ZhonTai.Plate.Admin.Domain.User;
+using ZhonTai.Plate.Admin.Domain.User.Dtos;
+using ZhonTai.Plate.Admin.Domain.Role;
+using ZhonTai.Plate.Admin.Domain.Role.Dtos;
+using ZhonTai.Plate.Admin.Domain.UserRole;
+using ZhonTai.Plate.Admin.Domain.RolePermission;
+using ZhonTai.Plate.Admin.Domain.Tenant;
+using ZhonTai.Plate.Admin.Domain.TenantPermission;
+using ZhonTai.Plate.Admin.Domain.PermissionApi;
+using ZhonTai.Plate.Admin.Domain.View;
+using ZhonTai.Common.Configs;
+using ZhonTai.Common.Extensions;
+using ZhonTai.Plate.Admin.Domain;
+
+namespace ZhonTai.Plate.Admin.Repository
+{
+    public class CustomGenerateData : GenerateData, IGenerateData
+    {
+        public virtual async Task GenerateDataAsync(IFreeSql db, AppConfig appConfig)
+        {
+            #region 读取数据
+
+            //admin
+            #region 数据字典
+
+            var dictionaryTypes = await db.Queryable<DictionaryTypeEntity>().ToListAsync<DictionaryTypeDataOutput>();
+            var dictionaries = await db.Queryable<DictionaryEntity>().ToListAsync<DictionaryDataOutput>();
+
+            #endregion
+
+            #region 接口
+
+            var apis = await db.Queryable<ApiEntity>().ToListAsync<ApiDataOutput>();
+            var apiTree = apis.ToTree((r, c) =>
+            {
+                return c.ParentId == 0;
+            },
+            (r, c) =>
+            {
+                return r.Id == c.ParentId;
+            },
+            (r, datalist) =>
+            {
+                r.Childs ??= new List<ApiDataOutput>();
+                r.Childs.AddRange(datalist);
+            });
+
+            #endregion
+
+            #region 视图
+
+            var views = await db.Queryable<ViewEntity>().ToListAsync<ViewDataOutput>();
+            var viewTree = views.ToTree((r, c) =>
+            {
+                return c.ParentId == 0;
+            },
+           (r, c) =>
+           {
+               return r.Id == c.ParentId;
+           },
+           (r, datalist) =>
+           {
+               r.Childs ??= new List<ViewDataOutput>();
+               r.Childs.AddRange(datalist);
+           });
+
+            #endregion
+
+            #region 权限
+
+            var permissions = await db.Queryable<PermissionEntity>().ToListAsync<PermissionDataOutput>();
+            var permissionTree = permissions.ToTree((r, c) =>
+            {
+                return c.ParentId == 0;
+            },
+           (r, c) =>
+           {
+               return r.Id == c.ParentId;
+           },
+           (r, datalist) =>
+           {
+               r.Childs ??= new List<PermissionDataOutput>();
+               r.Childs.AddRange(datalist);
+           });
+
+            #endregion
+
+            #region 用户
+
+            var users = await db.Queryable<UserEntity>().ToListAsync<UserDataOutput>();
+
+            #endregion
+
+            #region 角色
+
+            var roles = await db.Queryable<RoleEntity>().ToListAsync<RoleDataOutput>();
+
+            #endregion
+
+            #region 用户角色
+
+            var userRoles = await db.Queryable<UserRoleEntity>().ToListAsync(a => new
+            {
+                a.Id,
+                a.UserId,
+                a.RoleId
+            });
+
+            #endregion
+
+            #region 角色权限
+
+            var rolePermissions = await db.Queryable<RolePermissionEntity>().ToListAsync(a => new
+            {
+                a.Id,
+                a.RoleId,
+                a.PermissionId
+            });
+
+            #endregion
+
+            #region 租户
+
+            var tenants = await db.Queryable<TenantEntity>().ToListAsync(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
+            });
+
+            #endregion
+
+            #region 租户权限
+
+            var tenantPermissions = await db.Queryable<TenantPermissionEntity>().ToListAsync(a => new
+            {
+                a.Id,
+                a.TenantId,
+                a.PermissionId
+            });
+
+            #endregion
+
+            #region 权限接口
+
+            var permissionApis = await db.Queryable<PermissionApiEntity>().ToListAsync(a => new
+            {
+                a.Id,
+                a.PermissionId,
+                a.ApiId
+            });
+
+            #endregion
+
+            #endregion
+
+            #region 生成数据
+
+            var isTenant = appConfig.Tenant;
+
+            SaveDataToJsonFile<DictionaryEntity>(dictionaries, isTenant);
+            SaveDataToJsonFile<DictionaryTypeEntity>(dictionaryTypes, isTenant);
+            SaveDataToJsonFile<UserEntity>(users, isTenant);
+            SaveDataToJsonFile<RoleEntity>(roles, isTenant);
+            if (isTenant)
+            {
+                var tenantId = tenants.Where(a => a.Code.ToLower() == "zhontai").FirstOrDefault()?.Id;
+                SaveDataToJsonFile<DictionaryEntity>(dictionaries.Where(a => a.TenantId == tenantId));
+                SaveDataToJsonFile<DictionaryTypeEntity>(dictionaryTypes.Where(a => a.TenantId == tenantId));
+                SaveDataToJsonFile<UserEntity>(users.Where(a => a.TenantId == tenantId), false);
+                SaveDataToJsonFile<RoleEntity>(roles.Where(a => a.TenantId == tenantId));
+            }
+            SaveDataToJsonFile<UserRoleEntity>(userRoles);
+            SaveDataToJsonFile<ApiEntity>(apiTree);
+            SaveDataToJsonFile<ViewEntity>(viewTree);
+            SaveDataToJsonFile<PermissionEntity>(permissionTree);
+            SaveDataToJsonFile<PermissionApiEntity>(permissionApis);
+            SaveDataToJsonFile<RolePermissionEntity>(rolePermissions);
+            SaveDataToJsonFile<TenantEntity>(tenants);
+            SaveDataToJsonFile<TenantPermissionEntity>(tenantPermissions, propsContractResolver: new PropsContractResolver());
+
+            #endregion
+        }
+    }
+}

+ 77 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/CustomSyncData.cs

@@ -0,0 +1,77 @@
+using System.Threading.Tasks;
+using ZhonTai.Common.Domain.Db;
+using ZhonTai.Plate.Admin.Domain.DictionaryType;
+using ZhonTai.Plate.Admin.Domain.Dictionary;
+using ZhonTai.Plate.Admin.Domain.Api;
+using ZhonTai.Plate.Admin.Domain.Permission;
+using ZhonTai.Plate.Admin.Domain.User;
+using ZhonTai.Plate.Admin.Domain.Role;
+using ZhonTai.Plate.Admin.Domain.UserRole;
+using ZhonTai.Plate.Admin.Domain.RolePermission;
+using ZhonTai.Plate.Admin.Domain.Tenant;
+using ZhonTai.Plate.Admin.Domain.TenantPermission;
+using ZhonTai.Plate.Admin.Domain.PermissionApi;
+using ZhonTai.Plate.Admin.Domain.View;
+using ZhonTai.Common.Configs;
+using ZhonTai.Plate.Admin.Domain.Dual;
+using ZhonTai.Plate.Admin.Domain;
+
+namespace ZhonTai.Plate.Admin.Repository
+{
+    public class CustomSyncData : SyncData, ISyncData
+    {
+        public virtual async Task SyncDataAsync(IFreeSql db, DbConfig dbConfig = null, AppConfig appConfig = null)
+        {
+            using (var uow = db.CreateUnitOfWork())
+            using (var tran = uow.GetOrBeginTransaction())
+            {
+                var dualRepo = db.GetRepositoryBase<DualEntity>();
+                dualRepo.UnitOfWork = uow;
+                if (!await dualRepo.Select.AnyAsync())
+                {
+                    await dualRepo.InsertAsync(new DualEntity { });
+                }
+
+                var isTenant = appConfig.Tenant;
+
+                var dictionaryTypes = GetData<DictionaryTypeEntity>(isTenant);
+                await InitDataAsync(db, uow, tran, dictionaryTypes, dbConfig);
+
+                var dictionaries = GetData<DictionaryEntity>(isTenant);
+                await InitDataAsync(db, uow, tran, dictionaries, dbConfig);
+
+                var users = GetData<UserEntity>(isTenant);
+                await InitDataAsync(db, uow, tran, users, dbConfig);
+
+                var roles = GetData<RoleEntity>(isTenant);
+                await InitDataAsync(db, uow, tran, roles, dbConfig);
+
+                var apiTree = GetData<ApiEntity>();
+                await InitDataAsync(db, uow, tran, apiTree, dbConfig);
+
+                var viewTree = GetData<ViewEntity>();
+                await InitDataAsync(db, uow, tran, viewTree, dbConfig);
+
+                var permissionTree = GetData<PermissionEntity>();
+                await InitDataAsync(db, uow, tran, permissionTree, dbConfig);
+
+                var userRoles = GetData<UserRoleEntity>();
+                await InitDataAsync(db, uow, tran, userRoles, dbConfig);
+
+                var rolePermissions = GetData<RolePermissionEntity>();
+                await InitDataAsync(db, uow, tran, rolePermissions, dbConfig);
+
+                var tenants = GetData<TenantEntity>();
+                await InitDataAsync(db, uow, tran, tenants, dbConfig);
+
+                var tenantPermissions = GetData<TenantPermissionEntity>();
+                await InitDataAsync(db, uow, tran, tenantPermissions, dbConfig);
+
+                var permissionApis = GetData<PermissionApiEntity>();
+                await InitDataAsync(db, uow, tran, permissionApis, dbConfig);
+
+                uow.Commit();
+            }
+        }
+    }
+}

+ 2 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Dictionary/DictionaryRepository.cs

@@ -1,4 +1,5 @@
-using ZhonTai.Plate.Admin.Domain.Dictionary;
+using ZhonTai.Plate.Admin.Domain;
+using ZhonTai.Plate.Admin.Domain.Dictionary;
 
 namespace ZhonTai.Plate.Admin.Repository
 {

+ 2 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/DictionaryType/DictionaryTypeRepository.cs

@@ -1,4 +1,5 @@
-using ZhonTai.Plate.Admin.Domain.DictionaryType;
+using ZhonTai.Plate.Admin.Domain;
+using ZhonTai.Plate.Admin.Domain.DictionaryType;
 
 namespace ZhonTai.Plate.Admin.Repository
 {

+ 2 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Document/DocumentRepository.cs

@@ -1,4 +1,5 @@
-using ZhonTai.Plate.Admin.Domain.Document;
+using ZhonTai.Plate.Admin.Domain;
+using ZhonTai.Plate.Admin.Domain.Document;
 
 namespace ZhonTai.Plate.Admin.Repository
 {

+ 2 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/DocumentImage/DocumentImageRepository.cs

@@ -1,4 +1,5 @@
-using ZhonTai.Plate.Admin.Domain.DocumentImage;
+using ZhonTai.Plate.Admin.Domain;
+using ZhonTai.Plate.Admin.Domain.DocumentImage;
 
 namespace ZhonTai.Plate.Admin.Repository
 {

+ 1 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/LoginLog/LoginLogRepository.cs

@@ -1,3 +1,4 @@
+using ZhonTai.Plate.Admin.Domain;
 using ZhonTai.Plate.Admin.Domain.LoginLog;
 
 namespace ZhonTai.Plate.Admin.Repository

+ 1 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/OprationLog/OprationLogRepository.cs

@@ -1,3 +1,4 @@
+using ZhonTai.Plate.Admin.Domain;
 using ZhonTai.Plate.Admin.Domain.OprationLog;
 
 namespace ZhonTai.Plate.Admin.Repository

+ 2 - 1
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Permission/PermissionRepository.cs

@@ -1,4 +1,5 @@
-using ZhonTai.Plate.Admin.Domain.Permission;
+using ZhonTai.Plate.Admin.Domain;
+using ZhonTai.Plate.Admin.Domain.Permission;
 
 namespace ZhonTai.Plate.Admin.Repository
 {

+ 1 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Role/RoleRepository.cs

@@ -1,3 +1,4 @@
+using ZhonTai.Plate.Admin.Domain;
 using ZhonTai.Plate.Admin.Domain.Role;
 
 namespace ZhonTai.Plate.Admin.Repository

+ 1 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/Tenant/TenantRepository.cs

@@ -1,3 +1,4 @@
+using ZhonTai.Plate.Admin.Domain;
 using ZhonTai.Plate.Admin.Domain.Tenant;
 
 namespace ZhonTai.Plate.Admin.Repository

+ 1 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/User/UserRepository.cs

@@ -1,3 +1,4 @@
+using ZhonTai.Plate.Admin.Domain;
 using ZhonTai.Plate.Admin.Domain.User;
 
 namespace ZhonTai.Plate.Admin.Repository

+ 1 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Repository/View/ViewRepositoryRepository.cs

@@ -1,3 +1,4 @@
+using ZhonTai.Plate.Admin.Domain;
 using ZhonTai.Plate.Admin.Domain.View;
 
 namespace ZhonTai.Plate.Admin.Repository

+ 0 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service/Api/IApiService.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Api/IApiService.cs


+ 0 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service/Api/Input/ApiAddInput.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Api/Input/ApiAddInput.cs


+ 0 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service/Api/Input/ApiSyncDto.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Api/Input/ApiSyncDto.cs


+ 0 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service/Api/Input/ApiSyncInput.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Api/Input/ApiSyncInput.cs


+ 0 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service/Api/Input/ApiUpdateInput.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Api/Input/ApiUpdateInput.cs


+ 0 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service/Api/Output/ApiGetOutput.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Api/Output/ApiGetOutput.cs


+ 0 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service/Api/Output/ApiListOutput.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Api/Output/ApiListOutput.cs


+ 0 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service/Auth/IAuthService.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Auth/IAuthService.cs


+ 0 - 0
src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service/Auth/Input/AuthLoginInput.cs → src/plates/ZhonTai.Plate.Admin/ZhonTai.Plate.Admin.Service.Contracts/Auth/Input/AuthLoginInput.cs


Some files were not shown because too many files changed in this diff