diff --git a/aspnet-core/LINGYUN.MicroService.All.sln b/aspnet-core/LINGYUN.MicroService.All.sln
index 420af0943..82c506068 100644
--- a/aspnet-core/LINGYUN.MicroService.All.sln
+++ b/aspnet-core/LINGYUN.MicroService.All.sln
@@ -177,17 +177,20 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.HttpAp
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.HttpApi.Client", "modules\identity\LINGYUN.Abp.Identity.HttpApi.Client\LINGYUN.Abp.Identity.HttpApi.Client.csproj", "{7DDEAEA9-E392-469C-ACB6-908C5BAD669E}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "file-management", "file-management", "{B05CB08F-C088-4D6D-97EE-A94A5D1AE4A6}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "oss-management", "oss-management", "{B05CB08F-C088-4D6D-97EE-A94A5D1AE4A6}"
+ ProjectSection(SolutionItems) = preProject
+ modules\cloud-aliyun\LINGYUN.Abp.Aliyun\README.md = modules\cloud-aliyun\LINGYUN.Abp.Aliyun\README.md
+ EndProjectSection
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Application", "modules\file-management\LINGYUN.Abp.FileManagement.Application\LINGYUN.Abp.FileManagement.Application.csproj", "{F3D50E3E-34D2-48C1-AB0D-ADCF92DC07D0}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Application", "modules\oss-management\LINGYUN.Abp.OssManagement.Application\LINGYUN.Abp.OssManagement.Application.csproj", "{F3D50E3E-34D2-48C1-AB0D-ADCF92DC07D0}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Application.Contracts", "modules\file-management\LINGYUN.Abp.FileManagement.Application.Contracts\LINGYUN.Abp.FileManagement.Application.Contracts.csproj", "{86A67B8C-EFA0-4103-B60F-312F07C15A7A}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Application.Contracts", "modules\oss-management\LINGYUN.Abp.OssManagement.Application.Contracts\LINGYUN.Abp.OssManagement.Application.Contracts.csproj", "{86A67B8C-EFA0-4103-B60F-312F07C15A7A}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.HttpApi", "modules\file-management\LINGYUN.Abp.FileManagement.HttpApi\LINGYUN.Abp.FileManagement.HttpApi.csproj", "{854E1A42-FEA4-420E-9E83-0A39EE03F1ED}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.HttpApi", "modules\oss-management\LINGYUN.Abp.OssManagement.HttpApi\LINGYUN.Abp.OssManagement.HttpApi.csproj", "{854E1A42-FEA4-420E-9E83-0A39EE03F1ED}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Domain.Shared", "modules\file-management\LINGYUN.Abp.FileManagement.Domain.Shared\LINGYUN.Abp.FileManagement.Domain.Shared.csproj", "{21FCEF89-9A3F-476E-833A-A9C2131B2AE6}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Domain.Shared", "modules\oss-management\LINGYUN.Abp.OssManagement.Domain.Shared\LINGYUN.Abp.OssManagement.Domain.Shared.csproj", "{21FCEF89-9A3F-476E-833A-A9C2131B2AE6}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Domain", "modules\file-management\LINGYUN.Abp.FileManagement.Domain\LINGYUN.Abp.FileManagement.Domain.csproj", "{14ECCFD6-2DC1-4124-BE26-15E8D28E3E90}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Domain", "modules\oss-management\LINGYUN.Abp.OssManagement.Domain\LINGYUN.Abp.OssManagement.Domain.csproj", "{14ECCFD6-2DC1-4124-BE26-15E8D28E3E90}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Platform.HttpApi.Host", "services\platform\LINGYUN.Platform.HttpApi.Host\LINGYUN.Platform.HttpApi.Host.csproj", "{372123C3-3AFD-42C8-BB80-778322EA72C3}"
EndProject
@@ -269,10 +272,18 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Tencent", "modu
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications.Sms", "modules\common\LINGYUN.Abp.Notifications.Sms\LINGYUN.Abp.Notifications.Sms.csproj", "{8C3312E7-F51E-4780-A893-CE0E0B80B579}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Aliyun.SettingManagement", "modules\cloud-aliyun\LINGYUN.Abp.Aliyun.SettingManagement\LINGYUN.Abp.Aliyun.SettingManagement.csproj", "{FE0F0889-C4AF-43C5-B851-B8CCC873BA2C}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Aliyun.SettingManagement", "modules\cloud-aliyun\LINGYUN.Abp.Aliyun.SettingManagement\LINGYUN.Abp.Aliyun.SettingManagement.csproj", "{FE0F0889-C4AF-43C5-B851-B8CCC873BA2C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Aliyun.Tests", "tests\LINGYUN.Abp.Aliyun.Tests\LINGYUN.Abp.Aliyun.Tests.csproj", "{B86EBB6F-A27F-4277-8265-937951A9DCB0}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Aliyun", "modules\oss-management\LINGYUN.Abp.OssManagement.Aliyun\LINGYUN.Abp.OssManagement.Aliyun.csproj", "{35B17218-9FB6-439E-AF73-9A1454BC923C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.FileSystem", "modules\oss-management\LINGYUN.Abp.OssManagement.FileSystem\LINGYUN.Abp.OssManagement.FileSystem.csproj", "{D5036D3F-1C53-47EE-BA50-AD290AE062D7}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.FileSystem.ImageSharp", "modules\oss-management\LINGYUN.Abp.OssManagement.FileSystem.ImageSharp\LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj", "{3E5EBCEC-78C9-4A1A-BF04-A216AA6A921F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.SettingManagement", "modules\oss-management\LINGYUN.Abp.OssManagement.SettingManagement\LINGYUN.Abp.OssManagement.SettingManagement.csproj", "{BD74BE00-54E4-4979-8797-E8027695F396}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -719,6 +730,22 @@ Global
{B86EBB6F-A27F-4277-8265-937951A9DCB0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B86EBB6F-A27F-4277-8265-937951A9DCB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B86EBB6F-A27F-4277-8265-937951A9DCB0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {35B17218-9FB6-439E-AF73-9A1454BC923C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {35B17218-9FB6-439E-AF73-9A1454BC923C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {35B17218-9FB6-439E-AF73-9A1454BC923C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {35B17218-9FB6-439E-AF73-9A1454BC923C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D5036D3F-1C53-47EE-BA50-AD290AE062D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D5036D3F-1C53-47EE-BA50-AD290AE062D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D5036D3F-1C53-47EE-BA50-AD290AE062D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D5036D3F-1C53-47EE-BA50-AD290AE062D7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3E5EBCEC-78C9-4A1A-BF04-A216AA6A921F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3E5EBCEC-78C9-4A1A-BF04-A216AA6A921F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3E5EBCEC-78C9-4A1A-BF04-A216AA6A921F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3E5EBCEC-78C9-4A1A-BF04-A216AA6A921F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BD74BE00-54E4-4979-8797-E8027695F396}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BD74BE00-54E4-4979-8797-E8027695F396}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BD74BE00-54E4-4979-8797-E8027695F396}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BD74BE00-54E4-4979-8797-E8027695F396}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -856,6 +883,10 @@ Global
{8C3312E7-F51E-4780-A893-CE0E0B80B579} = {8AC72641-30D3-4ACF-89FA-808FADC55C2E}
{FE0F0889-C4AF-43C5-B851-B8CCC873BA2C} = {14CDBAD1-10C8-464A-B445-1F727C988010}
{B86EBB6F-A27F-4277-8265-937951A9DCB0} = {370D7CD5-1E17-4F3D-BBFA-03429F6D4F2F}
+ {35B17218-9FB6-439E-AF73-9A1454BC923C} = {B05CB08F-C088-4D6D-97EE-A94A5D1AE4A6}
+ {D5036D3F-1C53-47EE-BA50-AD290AE062D7} = {B05CB08F-C088-4D6D-97EE-A94A5D1AE4A6}
+ {3E5EBCEC-78C9-4A1A-BF04-A216AA6A921F} = {B05CB08F-C088-4D6D-97EE-A94A5D1AE4A6}
+ {BD74BE00-54E4-4979-8797-E8027695F396} = {B05CB08F-C088-4D6D-97EE-A94A5D1AE4A6}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C95FDF91-16F2-4A8B-A4BE-0E62D1B66718}
diff --git a/aspnet-core/LINGYUN.MicroService.BackendAdmin.sln b/aspnet-core/LINGYUN.MicroService.BackendAdmin.sln
index affc535f7..cfba1f77b 100644
--- a/aspnet-core/LINGYUN.MicroService.BackendAdmin.sln
+++ b/aspnet-core/LINGYUN.MicroService.BackendAdmin.sln
@@ -43,9 +43,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "permissions-management", "p
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.PermissionManagement.Domain", "modules\permissions-management\LINGYUN.Abp.PermissionManagement.Domain\LINGYUN.Abp.PermissionManagement.Domain.csproj", "{7521486D-2144-4AFA-86AD-8E8021479DE6}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "file-management", "file-management", "{8F972C8E-F047-4883-A4BF-3423A2BAED36}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Domain.Shared", "modules\file-management\LINGYUN.Abp.FileManagement.Domain.Shared\LINGYUN.Abp.FileManagement.Domain.Shared.csproj", "{49F8CD24-85EA-479A-A376-CC31A0618AE7}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "oss-management", "oss-management", "{8F972C8E-F047-4883-A4BF-3423A2BAED36}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "account", "account", "{9DAD2CA8-16B6-4006-BD8E-EE3E9BAA3770}"
EndProject
@@ -67,7 +65,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.MiniProg
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Official", "modules\wechat\LINGYUN.Abp.WeChat.Official\LINGYUN.Abp.WeChat.Official.csproj", "{EAD2F955-88CA-4570-AB81-31FB2FF02605}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WeChat.SettingManagement", "modules\wechat\LINGYUN.Abp.WeChat.SettingManagement\LINGYUN.Abp.WeChat.SettingManagement.csproj", "{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.SettingManagement", "modules\wechat\LINGYUN.Abp.WeChat.SettingManagement\LINGYUN.Abp.WeChat.SettingManagement.csproj", "{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Application.Contracts", "modules\oss-management\LINGYUN.Abp.OssManagement.Application.Contracts\LINGYUN.Abp.OssManagement.Application.Contracts.csproj", "{5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -127,10 +127,6 @@ Global
{7521486D-2144-4AFA-86AD-8E8021479DE6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7521486D-2144-4AFA-86AD-8E8021479DE6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7521486D-2144-4AFA-86AD-8E8021479DE6}.Release|Any CPU.Build.0 = Release|Any CPU
- {49F8CD24-85EA-479A-A376-CC31A0618AE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {49F8CD24-85EA-479A-A376-CC31A0618AE7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {49F8CD24-85EA-479A-A376-CC31A0618AE7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {49F8CD24-85EA-479A-A376-CC31A0618AE7}.Release|Any CPU.Build.0 = Release|Any CPU
{AA2F7243-976C-47F3-9B4E-20CC22F8FCF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AA2F7243-976C-47F3-9B4E-20CC22F8FCF4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AA2F7243-976C-47F3-9B4E-20CC22F8FCF4}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -167,6 +163,10 @@ Global
{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -191,7 +191,6 @@ Global
{D25C4814-71AB-4A9D-8C76-298A7DE1A747} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C}
{7521486D-2144-4AFA-86AD-8E8021479DE6} = {D25C4814-71AB-4A9D-8C76-298A7DE1A747}
{8F972C8E-F047-4883-A4BF-3423A2BAED36} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C}
- {49F8CD24-85EA-479A-A376-CC31A0618AE7} = {8F972C8E-F047-4883-A4BF-3423A2BAED36}
{9DAD2CA8-16B6-4006-BD8E-EE3E9BAA3770} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C}
{AA2F7243-976C-47F3-9B4E-20CC22F8FCF4} = {9DAD2CA8-16B6-4006-BD8E-EE3E9BAA3770}
{E758D3A7-DB93-4EAC-A2ED-C2322D4F7D67} = {2F56344F-6E06-4F9B-A0F2-8A6F0AEB096A}
@@ -203,6 +202,7 @@ Global
{D42CE0F0-331F-4E5C-92CD-6B4DD6854E69} = {B36F627B-FD7D-4357-A623-F01AFF78B80D}
{EAD2F955-88CA-4570-AB81-31FB2FF02605} = {B36F627B-FD7D-4357-A623-F01AFF78B80D}
{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB} = {B36F627B-FD7D-4357-A623-F01AFF78B80D}
+ {5C3D0A48-4EE3-4968-9826-5F52ADDC22C4} = {8F972C8E-F047-4883-A4BF-3423A2BAED36}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1573B900-87BA-4AD3-B785-6DD78127ADEF}
diff --git a/aspnet-core/LINGYUN.MicroService.Platform.sln b/aspnet-core/LINGYUN.MicroService.Platform.sln
index 4d6f304f3..1115ca4dc 100644
--- a/aspnet-core/LINGYUN.MicroService.Platform.sln
+++ b/aspnet-core/LINGYUN.MicroService.Platform.sln
@@ -23,17 +23,17 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Platform.HttpApi.Ho
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "platform", "platform", "{4096EC6A-EEAD-4E5B-B087-393D7A4E5874}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "file-management", "file-management", "{C7D0EB39-3418-4A7C-AD94-FAB76F023E88}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "oss-management", "oss-management", "{C7D0EB39-3418-4A7C-AD94-FAB76F023E88}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Domain.Shared", "modules\file-management\LINGYUN.Abp.FileManagement.Domain.Shared\LINGYUN.Abp.FileManagement.Domain.Shared.csproj", "{4D3C1EBD-1A4A-4300-A889-72DA0E082BAE}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Domain.Shared", "modules\oss-management\LINGYUN.Abp.OssManagement.Domain.Shared\LINGYUN.Abp.OssManagement.Domain.Shared.csproj", "{4D3C1EBD-1A4A-4300-A889-72DA0E082BAE}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Domain", "modules\file-management\LINGYUN.Abp.FileManagement.Domain\LINGYUN.Abp.FileManagement.Domain.csproj", "{D6D4C667-B58C-4266-9929-AFE54C8F0FBA}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Domain", "modules\oss-management\LINGYUN.Abp.OssManagement.Domain\LINGYUN.Abp.OssManagement.Domain.csproj", "{D6D4C667-B58C-4266-9929-AFE54C8F0FBA}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Application.Contracts", "modules\file-management\LINGYUN.Abp.FileManagement.Application.Contracts\LINGYUN.Abp.FileManagement.Application.Contracts.csproj", "{A1561B9D-2EAB-4C6A-AE62-9D517A450D4D}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Application.Contracts", "modules\oss-management\LINGYUN.Abp.OssManagement.Application.Contracts\LINGYUN.Abp.OssManagement.Application.Contracts.csproj", "{A1561B9D-2EAB-4C6A-AE62-9D517A450D4D}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.Application", "modules\file-management\LINGYUN.Abp.FileManagement.Application\LINGYUN.Abp.FileManagement.Application.csproj", "{1C3A25AF-9A59-4532-88A4-E57BECFA7E96}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Application", "modules\oss-management\LINGYUN.Abp.OssManagement.Application\LINGYUN.Abp.OssManagement.Application.csproj", "{1C3A25AF-9A59-4532-88A4-E57BECFA7E96}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FileManagement.HttpApi", "modules\file-management\LINGYUN.Abp.FileManagement.HttpApi\LINGYUN.Abp.FileManagement.HttpApi.csproj", "{C616C167-E5DF-4141-98BE-F98C58890122}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.HttpApi", "modules\oss-management\LINGYUN.Abp.OssManagement.HttpApi\LINGYUN.Abp.OssManagement.HttpApi.csproj", "{C616C167-E5DF-4141-98BE-F98C58890122}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tenants", "tenants", "{8CDB2F58-9541-4FB2-8A37-079C5E6A1689}"
EndProject
@@ -45,9 +45,31 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TestsBase", "te
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.EntityFrameworkCore.Tests", "tests\LINGYUN.Abp.EntityFrameworkCore.Tests\LINGYUN.Abp.EntityFrameworkCore.Tests.csproj", "{B2C0271C-3FE6-4C45-B162-4DE00E542A55}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.EntityFrameworkCore.Tests", "tests\LINGYUN.Platform.EntityFrameworkCore.Tests\LINGYUN.Platform.EntityFrameworkCore.Tests.csproj", "{263C49A9-34B9-449B-ABBC-D328210C023D}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Platform.EntityFrameworkCore.Tests", "tests\LINGYUN.Platform.EntityFrameworkCore.Tests\LINGYUN.Platform.EntityFrameworkCore.Tests.csproj", "{263C49A9-34B9-449B-ABBC-D328210C023D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.Domain.Tests", "tests\LINGYUN.Platform.Domain.Tests\LINGYUN.Platform.Domain.Tests.csproj", "{C60A06F2-0F4C-483F-BE2B-B103F0D726CE}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Platform.Domain.Tests", "tests\LINGYUN.Platform.Domain.Tests\LINGYUN.Platform.Domain.Tests.csproj", "{C60A06F2-0F4C-483F-BE2B-B103F0D726CE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.OssManagement.Aliyun", "modules\oss-management\LINGYUN.Abp.OssManagement.Aliyun\LINGYUN.Abp.OssManagement.Aliyun.csproj", "{104EDC09-0CEA-4AB0-BFF5-B009D4679419}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{265D5E44-682B-49BC-984A-BDD8CA45E60E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Aliyun", "modules\cloud-aliyun\LINGYUN.Abp.Aliyun\LINGYUN.Abp.Aliyun.csproj", "{8A393F7F-85A2-48ED-9B56-9CEFF3BDE34A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BlobStoring.Aliyun", "modules\common\LINGYUN.Abp.BlobStoring.Aliyun\LINGYUN.Abp.BlobStoring.Aliyun.csproj", "{95E0D070-ACFB-40DF-A4EC-FC75EA5AF6B0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.OssManagement.FileSystem", "modules\oss-management\LINGYUN.Abp.OssManagement.FileSystem\LINGYUN.Abp.OssManagement.FileSystem.csproj", "{B5569DCD-445E-445B-87E7-D8D4E03F0F76}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.FileSystem.ImageSharp", "modules\oss-management\LINGYUN.Abp.OssManagement.FileSystem.ImageSharp\LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj", "{1AA232B1-5999-43AE-A5C8-7973AFCC8BD1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.LimitValidation", "modules\common\LINGYUN.Abp.Features.LimitValidation\LINGYUN.Abp.Features.LimitValidation.csproj", "{D121A3CF-7A7F-4349-ACCA-BED9433AFFEC}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.LimitValidation.Redis", "modules\common\LINGYUN.Abp.Features.LimitValidation.Redis\LINGYUN.Abp.Features.LimitValidation.Redis.csproj", "{644F2582-D655-43B5-9EA4-D010C94B33AF}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "setting-management", "setting-management", "{3855CE63-91CF-4F96-97F6-BEAB444B25CB}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.SettingManagement.Application.Contracts", "modules\settings\LINGYUN.Abp.SettingManagement.Application.Contracts\LINGYUN.Abp.SettingManagement.Application.Contracts.csproj", "{D1D288D1-3178-439F-8EFD-E29D6F66E673}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.OssManagement.SettingManagement", "modules\oss-management\LINGYUN.Abp.OssManagement.SettingManagement\LINGYUN.Abp.OssManagement.SettingManagement.csproj", "{07D1B07A-3C95-40A8-AA53-619EC067FD45}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -123,6 +145,42 @@ Global
{C60A06F2-0F4C-483F-BE2B-B103F0D726CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C60A06F2-0F4C-483F-BE2B-B103F0D726CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C60A06F2-0F4C-483F-BE2B-B103F0D726CE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {104EDC09-0CEA-4AB0-BFF5-B009D4679419}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {104EDC09-0CEA-4AB0-BFF5-B009D4679419}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {104EDC09-0CEA-4AB0-BFF5-B009D4679419}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {104EDC09-0CEA-4AB0-BFF5-B009D4679419}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8A393F7F-85A2-48ED-9B56-9CEFF3BDE34A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8A393F7F-85A2-48ED-9B56-9CEFF3BDE34A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8A393F7F-85A2-48ED-9B56-9CEFF3BDE34A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8A393F7F-85A2-48ED-9B56-9CEFF3BDE34A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {95E0D070-ACFB-40DF-A4EC-FC75EA5AF6B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {95E0D070-ACFB-40DF-A4EC-FC75EA5AF6B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {95E0D070-ACFB-40DF-A4EC-FC75EA5AF6B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {95E0D070-ACFB-40DF-A4EC-FC75EA5AF6B0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B5569DCD-445E-445B-87E7-D8D4E03F0F76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B5569DCD-445E-445B-87E7-D8D4E03F0F76}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B5569DCD-445E-445B-87E7-D8D4E03F0F76}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B5569DCD-445E-445B-87E7-D8D4E03F0F76}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1AA232B1-5999-43AE-A5C8-7973AFCC8BD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1AA232B1-5999-43AE-A5C8-7973AFCC8BD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1AA232B1-5999-43AE-A5C8-7973AFCC8BD1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1AA232B1-5999-43AE-A5C8-7973AFCC8BD1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D121A3CF-7A7F-4349-ACCA-BED9433AFFEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D121A3CF-7A7F-4349-ACCA-BED9433AFFEC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D121A3CF-7A7F-4349-ACCA-BED9433AFFEC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D121A3CF-7A7F-4349-ACCA-BED9433AFFEC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {644F2582-D655-43B5-9EA4-D010C94B33AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {644F2582-D655-43B5-9EA4-D010C94B33AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {644F2582-D655-43B5-9EA4-D010C94B33AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {644F2582-D655-43B5-9EA4-D010C94B33AF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D1D288D1-3178-439F-8EFD-E29D6F66E673}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D1D288D1-3178-439F-8EFD-E29D6F66E673}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D1D288D1-3178-439F-8EFD-E29D6F66E673}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D1D288D1-3178-439F-8EFD-E29D6F66E673}.Release|Any CPU.Build.0 = Release|Any CPU
+ {07D1B07A-3C95-40A8-AA53-619EC067FD45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {07D1B07A-3C95-40A8-AA53-619EC067FD45}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {07D1B07A-3C95-40A8-AA53-619EC067FD45}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {07D1B07A-3C95-40A8-AA53-619EC067FD45}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -148,6 +206,17 @@ Global
{B2C0271C-3FE6-4C45-B162-4DE00E542A55} = {CCEFF583-4EEE-433F-8568-9E64166B41FE}
{263C49A9-34B9-449B-ABBC-D328210C023D} = {CCEFF583-4EEE-433F-8568-9E64166B41FE}
{C60A06F2-0F4C-483F-BE2B-B103F0D726CE} = {CCEFF583-4EEE-433F-8568-9E64166B41FE}
+ {104EDC09-0CEA-4AB0-BFF5-B009D4679419} = {C7D0EB39-3418-4A7C-AD94-FAB76F023E88}
+ {265D5E44-682B-49BC-984A-BDD8CA45E60E} = {15BDA03E-DE8E-46E4-96A8-CA3F2872E812}
+ {8A393F7F-85A2-48ED-9B56-9CEFF3BDE34A} = {265D5E44-682B-49BC-984A-BDD8CA45E60E}
+ {95E0D070-ACFB-40DF-A4EC-FC75EA5AF6B0} = {265D5E44-682B-49BC-984A-BDD8CA45E60E}
+ {B5569DCD-445E-445B-87E7-D8D4E03F0F76} = {C7D0EB39-3418-4A7C-AD94-FAB76F023E88}
+ {1AA232B1-5999-43AE-A5C8-7973AFCC8BD1} = {C7D0EB39-3418-4A7C-AD94-FAB76F023E88}
+ {D121A3CF-7A7F-4349-ACCA-BED9433AFFEC} = {265D5E44-682B-49BC-984A-BDD8CA45E60E}
+ {644F2582-D655-43B5-9EA4-D010C94B33AF} = {265D5E44-682B-49BC-984A-BDD8CA45E60E}
+ {3855CE63-91CF-4F96-97F6-BEAB444B25CB} = {15BDA03E-DE8E-46E4-96A8-CA3F2872E812}
+ {D1D288D1-3178-439F-8EFD-E29D6F66E673} = {3855CE63-91CF-4F96-97F6-BEAB444B25CB}
+ {07D1B07A-3C95-40A8-AA53-619EC067FD45} = {C7D0EB39-3418-4A7C-AD94-FAB76F023E88}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {03D3B66F-8926-4C00-B7AB-A21761EC859E}
diff --git a/aspnet-core/database/ApiGateway-Init-SqlServer.sql b/aspnet-core/database/ApiGateway-Init-SqlServer.sql
index 42d962410..0e3e67cf2 100644
--- a/aspnet-core/database/ApiGateway-Init-SqlServer.sql
+++ b/aspnet-core/database/ApiGateway-Init-SqlServer.sql
@@ -11,7 +11,7 @@
Target Server Version : 12000000
File Encoding : 65001
- Date: 22/12/2020 14:45:18
+ Date: 11/03/2021 17:44:03
*/
@@ -73,7 +73,7 @@ GO
BEGIN TRANSACTION
GO
-INSERT INTO [apigateway].[appapigatewayaggregate] VALUES (N'5', N'{}', N'db569f15577848568bee9616d6b8b53c', N'TEST-APP', N'abp接口代理服务', N'1263083077348196352', N'platform-api-definition,backend-admin-api-definition,messages-api-definition,apigateway-api-definition,identity-server-api-definition,', N'/api/abp/api-definition', N'', N'1', N'AbpApiDefinitionAggregator', NULL, N''), (N'6', N'{}', N'870a2c5df9b34f8c9514aef0250fbb47', N'TEST-APP', N'abp框架配置', N'1263102116090970112', N'apigateway-configuration,platform-configuration,backend-admin-configuration,messages-configuration,identity-server-configuration,', N'/api/abp/application-configuration', N'', N'1', N'AbpApiDefinitionAggregator', NULL, N''), (N'8', N'{}', N'edc962f7e0844bb09cb0fb731f358b4b', N'TEST-APP', N'我的消息订阅', N'1322503807309881344', N'assignables-notifilers,my-subscribes,', N'/api/my-subscribes/assignables-notifilers', N'', N'1', N'AbpApiDefinitionAggregator', NULL, N''), (N'9', N'{}', N'dbfc4b5972034e8ba875551fa8dd29a1', N'TEST-APP', N'全局设置', N'1329708867127799808', N'setting-global,wechat-setting-global,', N'/api/setting-management/settings/by-global', N'', N'1', N'AbpApiDefinitionAggregator', NULL, N''), (N'10', N'{}', N'2035b334da4b450eaa3f0c4c54998d8b', N'TEST-APP', N'当前租户设置', N'1329709265255329792', N'setting-current-tenant,wechat-setting-current-tenant,', N'/api/setting-management/settings/by-current-tenant', N'', N'1', N'AbpApiDefinitionAggregator', NULL, N'')
+INSERT INTO [apigateway].[appapigatewayaggregate] VALUES (N'5', N'{}', N'db569f15577848568bee9616d6b8b53c', N'TEST-APP', N'abp接口代理服务', N'1263083077348196352', N'platform-api-definition,backend-admin-api-definition,messages-api-definition,apigateway-api-definition,identity-server-api-definition,', N'/api/abp/api-definition', N'', N'1', N'AbpApiDefinitionAggregator', NULL, N''), (N'6', N'{}', N'870a2c5df9b34f8c9514aef0250fbb47', N'TEST-APP', N'abp框架配置', N'1263102116090970112', N'apigateway-configuration,platform-configuration,backend-admin-configuration,messages-configuration,identity-server-configuration,', N'/api/abp/application-configuration', N'', N'1', N'AbpApiDefinitionAggregator', NULL, N''), (N'8', N'{}', N'edc962f7e0844bb09cb0fb731f358b4b', N'TEST-APP', N'我的消息订阅', N'1322503807309881344', N'assignables-notifilers,my-subscribes,', N'/api/my-subscribes/assignables-notifilers', N'', N'1', N'AbpApiDefinitionAggregator', NULL, N''), (N'9', N'{}', N'c65227b8a0e143b2a0b6186ffde3dfc1', N'TEST-APP', N'全局设置', N'1329708867127799808', N'setting-global,wechat-setting-global,aliyun-setting-global,oss-management-global,', N'/api/setting-management/settings/by-global', N'', N'1', N'AbpApiDefinitionAggregator', NULL, N''), (N'10', N'{}', N'29fb4cbfcdfe41478b931df8c549992b', N'TEST-APP', N'当前租户设置', N'1329709265255329792', N'setting-current-tenant,wechat-setting-current-tenant,aliyun-setting-current-tenant,oss-management-current-tenant,', N'/api/setting-management/settings/by-current-tenant', N'', N'1', N'AbpApiDefinitionAggregator', NULL, N'')
GO
COMMIT
@@ -120,7 +120,7 @@ GO
BEGIN TRANSACTION
GO
-INSERT INTO [apigateway].[appapigatewayauthoptions] VALUES (N'3', N'1261299170387169280', NULL, N''), (N'4', N'1261585859064872960', NULL, N''), (N'5', N'1261586605810368512', NULL, N''), (N'6', N'1261587558609436672', NULL, N''), (N'7', N'1261588213298348032', NULL, N''), (N'8', N'1261588367619375104', NULL, N''), (N'9', N'1261588628450557952', NULL, N''), (N'10', N'1261588881564221440', NULL, N''), (N'11', N'1261588983053795328', NULL, N''), (N'12', N'1261589139039961088', NULL, N''), (N'13', N'1261589197483393024', NULL, N''), (N'14', N'1261589278857084928', NULL, N''), (N'15', N'1261589420356124672', NULL, N''), (N'16', N'1261589960393736192', NULL, N''), (N'17', N'1261606600242085888', NULL, N''), (N'18', N'1261606689601732608', NULL, N''), (N'21', N'1262220447629058048', NULL, N''), (N'22', N'1262230734939758592', NULL, N''), (N'23', N'1262296916350869504', NULL, N''), (N'24', N'1262632376348594176', N'', N''), (N'25', N'1262632791869902848', N'', N''), (N'28', N'1262660336921235456', N'', N''), (N'29', N'1262660528277966848', N'', N''), (N'30', N'1262660706875625472', N'', N''), (N'31', N'1262660966393991168', N'', N''), (N'32', N'1262661109474283520', N'', N''), (N'33', N'1262663888804663296', N'', N''), (N'34', N'1262664024096133120', N'', N''), (N'35', N'1262664186252120064', N'', N''), (N'36', N'1262664357044178944', N'', N''), (N'37', N'1262664632928718848', N'', N''), (N'38', N'1262664751409418240', N'', N''), (N'39', N'1262664871274237952', N'', N''), (N'40', N'1262665026111164416', N'', N''), (N'41', N'1262665159905267712', N'', N''), (N'42', N'1262665329829105664', N'', N''), (N'43', N'1262665456471920640', N'', N''), (N'44', N'1262665628165754880', N'', N''), (N'45', N'1262666172682883072', N'', N''), (N'47', N'1262723402331885568', N'', N''), (N'48', N'1262935771746734080', N'', N''), (N'49', N'1262935906522304512', N'', N''), (N'52', N'1263074419073593344', N'', N''), (N'53', N'1263075249394790400', N'', N''), (N'54', N'1263075593499684864', N'', N''), (N'56', N'1263101898440146944', N'', N''), (N'57', N'1263303878648569856', N'', N''), (N'58', N'1263304204797648896', N'', N''), (N'59', N'1263304872891555840', N'', N''), (N'60', N'1263305106250047488', N'', N''), (N'61', N'1263305244594970624', N'', N''), (N'62', N'1263305430536855552', N'', N''), (N'63', N'1263639172959174656', N'', N''), (N'64', N'1264799968944640000', N'', N''), (N'65', N'1264800070161584128', N'', N''), (N'66', N'1267360794414161920', N'', N''), (N'67', N'1267383367629807616', N'', N''), (N'68', N'1267817055527632896', N'', N''), (N'69', N'1267817221286526976', N'', N''), (N'70', N'1268893687085518848', N'', N''), (N'94', N'1288657613998579712', N'', N''), (N'95', N'1288657941770854400', N'', N''), (N'96', N'1288658134067109888', N'', N''), (N'97', N'1288658305156964352', N'', N''), (N'98', N'1288658491216289792', N'', N''), (N'99', N'1288658638302142464', N'', N''), (N'100', N'1288658791784308736', N'', N''), (N'101', N'1290849478956199936', N'', N''), (N'102', N'1290849628051124224', N'', N''), (N'103', N'1290849798553776128', N'', N''), (N'105', N'1291259822512693248', N'', N''), (N'106', N'1292620505149145088', N'', N''), (N'107', N'1292620665505775616', N'', N''), (N'108', N'1292620843398791168', N'', N''), (N'109', N'1292621027574874112', N'', N''), (N'110', N'1292621363161137152', N'', N''), (N'111', N'1292621494837116928', N'', N''), (N'112', N'1292621629260365824', N'', N''), (N'113', N'1292622526073864192', N'', N''), (N'114', N'1293470838745821184', N'', N''), (N'115', N'1293471661785706496', N'', N''), (N'116', N'1293472678392721408', N'', N''), (N'117', N'1293472857510473728', N'', N''), (N'118', N'1299273336009359360', N'', N''), (N'119', N'1299273436282585088', N'', N''), (N'120', N'1299273618470567936', N'', N''), (N'121', N'1299273770182737920', N'', N''), (N'122', N'1299273978023084032', N'', N''), (N'123', N'1299274123225694208', N'', N''), (N'124', N'1299274222299348992', N'', N''), (N'125', N'1304238876758495232', N'', N''), (N'126', N'1304678610343383040', N'', N''), (N'127', N'1304679169305694208', N'', N''), (N'128', N'1310460417141817344', N'', N''), (N'129', N'1310502391475519488', N'', N''), (N'130', N'1310515546943569920', N'', N''), (N'131', N'1310515735292985344', N'', N''), (N'132', N'1316628769783480320', N'', N''), (N'133', N'1316628940663619584', N'', N''), (N'134', N'1316629112428756992', N'', N''), (N'135', N'1316652047017246720', N'', N''), (N'136', N'1316913899996737536', N'', N''), (N'137', N'1319200951383199744', N'', N''), (N'138', N'1319221929807024128', N'', N''), (N'139', N'1319554431134306304', N'', N''), (N'140', N'1319554550458060800', N'', N''), (N'141', N'1319554948434595840', N'', N''), (N'142', N'1319555067183730688', N'', N''), (N'143', N'1319555230765780992', N'', N''), (N'144', N'1319555333790470144', N'', N''), (N'145', N'1321001932510203904', N'', N''), (N'146', N'1321002059803136000', N'', N''), (N'147', N'1321002256440496128', N'', N''), (N'148', N'1321002350686507008', N'', N''), (N'149', N'1322190027988525056', N'', N''), (N'150', N'1322452079688458240', N'', N''), (N'151', N'1322452183929495552', N'', N''), (N'152', N'1322452308651319296', N'', N''), (N'153', N'1322452858176446464', N'', N''), (N'154', N'1322452989235863552', N'', N''), (N'155', N'1322453089655889920', N'', N''), (N'156', N'1329706860249804800', N'', N''), (N'157', N'1329707002411544576', N'', N''), (N'158', N'1329708512277098496', N'', N''), (N'159', N'1329708625917571072', N'', N''), (N'160', N'1335049839287357440', N'', N''), (N'161', N'1335050034221830144', N'', N''), (N'162', N'1335050145899368448', N'', N''), (N'163', N'1335050283434790912', N'', N''), (N'164', N'1335050381770248192', N'', N''), (N'165', N'1335050520941449216', N'', N''), (N'166', N'1335050615829188608', N'', N''), (N'167', N'1335111798720450560', N'', N''), (N'168', N'1335118541370314752', N'', N''), (N'169', N'1335118660417245184', N'', N''), (N'170', N'1335118782727344128', N'', N''), (N'171', N'1335118903200337920', N'', N''), (N'172', N'1336230645078921216', N'', N''), (N'173', N'1337314809113722880', N'', N''), (N'174', N'1337314938973569024', N'', N''), (N'175', N'1340961907637243904', N'', N'')
+INSERT INTO [apigateway].[appapigatewayauthoptions] VALUES (N'3', N'1261299170387169280', NULL, N''), (N'4', N'1261585859064872960', NULL, N''), (N'5', N'1261586605810368512', NULL, N''), (N'6', N'1261587558609436672', NULL, N''), (N'7', N'1261588213298348032', NULL, N''), (N'8', N'1261588367619375104', NULL, N''), (N'9', N'1261588628450557952', NULL, N''), (N'10', N'1261588881564221440', NULL, N''), (N'11', N'1261588983053795328', NULL, N''), (N'12', N'1261589139039961088', NULL, N''), (N'13', N'1261589197483393024', NULL, N''), (N'14', N'1261589278857084928', NULL, N''), (N'15', N'1261589420356124672', NULL, N''), (N'16', N'1261589960393736192', NULL, N''), (N'17', N'1261606600242085888', NULL, N''), (N'18', N'1261606689601732608', NULL, N''), (N'21', N'1262220447629058048', NULL, N''), (N'22', N'1262230734939758592', NULL, N''), (N'23', N'1262296916350869504', NULL, N''), (N'24', N'1262632376348594176', N'', N''), (N'25', N'1262632791869902848', N'', N''), (N'28', N'1262660336921235456', N'', N''), (N'29', N'1262660528277966848', N'', N''), (N'30', N'1262660706875625472', N'', N''), (N'31', N'1262660966393991168', N'', N''), (N'32', N'1262661109474283520', N'', N''), (N'33', N'1262663888804663296', N'', N''), (N'34', N'1262664024096133120', N'', N''), (N'35', N'1262664186252120064', N'', N''), (N'36', N'1262664357044178944', N'', N''), (N'37', N'1262664632928718848', N'', N''), (N'38', N'1262664751409418240', N'', N''), (N'39', N'1262664871274237952', N'', N''), (N'40', N'1262665026111164416', N'', N''), (N'41', N'1262665159905267712', N'', N''), (N'42', N'1262665329829105664', N'', N''), (N'43', N'1262665456471920640', N'', N''), (N'44', N'1262665628165754880', N'', N''), (N'45', N'1262666172682883072', N'', N''), (N'47', N'1262723402331885568', N'', N''), (N'48', N'1262935771746734080', N'', N''), (N'49', N'1262935906522304512', N'', N''), (N'52', N'1263074419073593344', N'', N''), (N'53', N'1263075249394790400', N'', N''), (N'54', N'1263075593499684864', N'', N''), (N'56', N'1263101898440146944', N'', N''), (N'57', N'1263303878648569856', N'', N''), (N'58', N'1263304204797648896', N'', N''), (N'59', N'1263304872891555840', N'', N''), (N'60', N'1263305106250047488', N'', N''), (N'61', N'1263305244594970624', N'', N''), (N'62', N'1263305430536855552', N'', N''), (N'63', N'1263639172959174656', N'', N''), (N'64', N'1264799968944640000', N'', N''), (N'65', N'1264800070161584128', N'', N''), (N'66', N'1267360794414161920', N'', N''), (N'67', N'1267383367629807616', N'', N''), (N'68', N'1267817055527632896', N'', N''), (N'69', N'1267817221286526976', N'', N''), (N'70', N'1268893687085518848', N'', N''), (N'94', N'1288657613998579712', N'', N''), (N'95', N'1288657941770854400', N'', N''), (N'96', N'1288658134067109888', N'', N''), (N'97', N'1288658305156964352', N'', N''), (N'98', N'1288658491216289792', N'', N''), (N'99', N'1288658638302142464', N'', N''), (N'100', N'1288658791784308736', N'', N''), (N'101', N'1290849478956199936', N'', N''), (N'102', N'1290849628051124224', N'', N''), (N'103', N'1290849798553776128', N'', N''), (N'105', N'1291259822512693248', N'', N''), (N'114', N'1293470838745821184', N'', N''), (N'115', N'1293471661785706496', N'', N''), (N'116', N'1293472678392721408', N'', N''), (N'117', N'1293472857510473728', N'', N''), (N'118', N'1299273336009359360', N'', N''), (N'119', N'1299273436282585088', N'', N''), (N'120', N'1299273618470567936', N'', N''), (N'121', N'1299273770182737920', N'', N''), (N'122', N'1299273978023084032', N'', N''), (N'123', N'1299274123225694208', N'', N''), (N'124', N'1299274222299348992', N'', N''), (N'125', N'1304238876758495232', N'', N''), (N'126', N'1304678610343383040', N'', N''), (N'127', N'1304679169305694208', N'', N''), (N'128', N'1310460417141817344', N'', N''), (N'129', N'1310502391475519488', N'', N''), (N'130', N'1310515546943569920', N'', N''), (N'131', N'1310515735292985344', N'', N''), (N'132', N'1316628769783480320', N'', N''), (N'133', N'1316628940663619584', N'', N''), (N'134', N'1316629112428756992', N'', N''), (N'135', N'1316652047017246720', N'', N''), (N'136', N'1316913899996737536', N'', N''), (N'137', N'1319200951383199744', N'', N''), (N'138', N'1319221929807024128', N'', N''), (N'139', N'1319554431134306304', N'', N''), (N'140', N'1319554550458060800', N'', N''), (N'141', N'1319554948434595840', N'', N''), (N'142', N'1319555067183730688', N'', N''), (N'143', N'1319555230765780992', N'', N''), (N'144', N'1319555333790470144', N'', N''), (N'145', N'1321001932510203904', N'', N''), (N'146', N'1321002059803136000', N'', N''), (N'147', N'1321002256440496128', N'', N''), (N'148', N'1321002350686507008', N'', N''), (N'149', N'1322190027988525056', N'', N''), (N'150', N'1322452079688458240', N'', N''), (N'151', N'1322452183929495552', N'', N''), (N'152', N'1322452308651319296', N'', N''), (N'153', N'1322452858176446464', N'', N''), (N'154', N'1322452989235863552', N'', N''), (N'155', N'1322453089655889920', N'', N''), (N'156', N'1329706860249804800', N'', N''), (N'157', N'1329707002411544576', N'', N''), (N'158', N'1329708512277098496', N'', N''), (N'159', N'1329708625917571072', N'', N''), (N'160', N'1335049839287357440', N'', N''), (N'161', N'1335050034221830144', N'', N''), (N'162', N'1335050145899368448', N'', N''), (N'163', N'1335050283434790912', N'', N''), (N'164', N'1335050381770248192', N'', N''), (N'165', N'1335050520941449216', N'', N''), (N'166', N'1335050615829188608', N'', N''), (N'167', N'1335111798720450560', N'', N''), (N'168', N'1335118541370314752', N'', N''), (N'169', N'1335118660417245184', N'', N''), (N'170', N'1335118782727344128', N'', N''), (N'171', N'1335118903200337920', N'', N''), (N'172', N'1336230645078921216', N'', N''), (N'173', N'1337314809113722880', N'', N''), (N'174', N'1337314938973569024', N'', N''), (N'175', N'1340961907637243904', N'', N''), (N'176', N'1341652247554379776', N'', N''), (N'177', N'1341652385555369984', N'', N''), (N'178', N'1342457939827552256', N'', N''), (N'179', N'1342458050112581632', N'', N''), (N'180', N'1363382062055915520', N'', N''), (N'181', N'1363382298501414912', N'', N''), (N'182', N'1368854800347848704', N'', N''), (N'183', N'1368855936576413696', N'', N''), (N'184', N'1368856295889854464', N'', N''), (N'185', N'1368856703572008960', N'', N''), (N'186', N'1368856819242524672', N'', N''), (N'187', N'1368856927887581184', N'', N''), (N'188', N'1368857128383700992', N'', N''), (N'189', N'1369560306297233408', N'', N''), (N'190', N'1369560450472239104', N'', N'')
GO
COMMIT
@@ -151,7 +151,7 @@ GO
BEGIN TRANSACTION
GO
-INSERT INTO [apigateway].[appapigatewaybalanceroptions] VALUES (N'1', N'1260841964962947072', NULL, N'LeastConnection', NULL, NULL), (N'4', NULL, N'1261299170387169280', N'LeastConnection', NULL, N'60000'), (N'5', NULL, N'1261585859064872960', NULL, NULL, NULL), (N'6', NULL, N'1261586605810368512', NULL, NULL, NULL), (N'7', NULL, N'1261587558609436672', NULL, NULL, NULL), (N'8', NULL, N'1261588213298348032', NULL, NULL, NULL), (N'9', NULL, N'1261588367619375104', NULL, NULL, NULL), (N'10', NULL, N'1261588628450557952', NULL, NULL, NULL), (N'11', NULL, N'1261588881564221440', NULL, NULL, NULL), (N'12', NULL, N'1261588983053795328', NULL, NULL, NULL), (N'13', NULL, N'1261589139039961088', NULL, NULL, NULL), (N'14', NULL, N'1261589197483393024', NULL, NULL, NULL), (N'15', NULL, N'1261589278857084928', NULL, NULL, NULL), (N'16', NULL, N'1261589420356124672', NULL, NULL, NULL), (N'17', NULL, N'1261589960393736192', N'LeastConnection', NULL, N'60000'), (N'18', NULL, N'1261606600242085888', NULL, NULL, NULL), (N'19', NULL, N'1261606689601732608', NULL, NULL, NULL), (N'22', NULL, N'1262220447629058048', NULL, NULL, NULL), (N'23', NULL, N'1262230734939758592', NULL, NULL, NULL), (N'24', NULL, N'1262296916350869504', NULL, NULL, NULL), (N'25', NULL, N'1262632376348594176', N'', N'', N'0'), (N'26', NULL, N'1262632791869902848', N'', N'', N'0'), (N'29', NULL, N'1262660336921235456', N'', N'', N'0'), (N'30', NULL, N'1262660528277966848', N'', N'', N'0'), (N'31', NULL, N'1262660706875625472', N'', N'', N'0'), (N'32', NULL, N'1262660966393991168', N'', N'', N'0'), (N'33', NULL, N'1262661109474283520', N'', N'', N'0'), (N'34', NULL, N'1262663888804663296', N'', N'', N'0'), (N'35', NULL, N'1262664024096133120', N'', N'', N'0'), (N'36', NULL, N'1262664186252120064', N'', N'', N'0'), (N'37', NULL, N'1262664357044178944', N'', N'', N'0'), (N'38', NULL, N'1262664632928718848', N'', N'', N'0'), (N'39', NULL, N'1262664751409418240', N'', N'', N'0'), (N'40', NULL, N'1262664871274237952', N'', N'', N'0'), (N'41', NULL, N'1262665026111164416', N'', N'', N'0'), (N'42', NULL, N'1262665159905267712', N'', N'', N'0'), (N'43', NULL, N'1262665329829105664', N'', N'', N'0'), (N'44', NULL, N'1262665456471920640', N'', N'', N'0'), (N'45', NULL, N'1262665628165754880', N'', N'', N'0'), (N'46', NULL, N'1262666172682883072', N'', N'', N'0'), (N'48', NULL, N'1262723402331885568', N'', N'', N'0'), (N'49', NULL, N'1262935771746734080', N'', N'', N'0'), (N'50', NULL, N'1262935906522304512', N'', N'', N'0'), (N'53', NULL, N'1263074419073593344', N'', N'', N'0'), (N'54', NULL, N'1263075249394790400', N'', N'', N'0'), (N'55', NULL, N'1263075593499684864', N'', N'', N'0'), (N'57', NULL, N'1263101898440146944', N'', N'', N'0'), (N'58', NULL, N'1263303878648569856', N'', N'', N'0'), (N'59', NULL, N'1263304204797648896', N'', N'', N'0'), (N'60', NULL, N'1263304872891555840', N'', N'', N'0'), (N'61', NULL, N'1263305106250047488', N'', N'', N'0'), (N'62', NULL, N'1263305244594970624', N'', N'', N'0'), (N'63', NULL, N'1263305430536855552', N'', N'', N'0'), (N'64', NULL, N'1263639172959174656', N'', N'', N'0'), (N'65', NULL, N'1264799968944640000', N'', N'', N'0'), (N'66', NULL, N'1264800070161584128', N'', N'', N'0'), (N'68', NULL, N'1267360794414161920', N'', N'', N'0'), (N'69', NULL, N'1267383367629807616', N'', N'', N'0'), (N'70', NULL, N'1267817055527632896', N'', N'', N'0'), (N'71', NULL, N'1267817221286526976', N'', N'', N'0'), (N'72', NULL, N'1268893687085518848', N'', N'', N'0'), (N'97', NULL, N'1288657613998579712', N'LeastConnection', N'', N'60000'), (N'98', NULL, N'1288657941770854400', N'', N'', N'0'), (N'99', NULL, N'1288658134067109888', N'', N'', N'0'), (N'100', NULL, N'1288658305156964352', N'', N'', N'0'), (N'101', NULL, N'1288658491216289792', N'', N'', N'0'), (N'102', NULL, N'1288658638302142464', N'', N'', N'0'), (N'103', NULL, N'1288658791784308736', N'', N'', N'0'), (N'104', NULL, N'1290849478956199936', N'', N'', N'0'), (N'105', NULL, N'1290849628051124224', N'', N'', N'0'), (N'106', NULL, N'1290849798553776128', N'', N'', N'0'), (N'108', NULL, N'1291259822512693248', N'', N'', N'0'), (N'109', NULL, N'1292620505149145088', N'', N'', N'0'), (N'110', NULL, N'1292620665505775616', N'', N'', N'0'), (N'111', NULL, N'1292620843398791168', N'', N'', N'0'), (N'112', NULL, N'1292621027574874112', N'', N'', N'0'), (N'113', NULL, N'1292621363161137152', N'', N'', N'0'), (N'114', NULL, N'1292621494837116928', N'', N'', N'0'), (N'115', NULL, N'1292621629260365824', N'', N'', N'0'), (N'116', NULL, N'1292622526073864192', N'', N'', N'0'), (N'117', NULL, N'1293470838745821184', N'', N'', N'0'), (N'118', NULL, N'1293471661785706496', N'', N'', N'0'), (N'119', NULL, N'1293472678392721408', N'', N'', N'0'), (N'120', NULL, N'1293472857510473728', N'', N'', N'0'), (N'121', NULL, N'1299273336009359360', N'', N'', N'0'), (N'122', NULL, N'1299273436282585088', N'', N'', N'0'), (N'123', NULL, N'1299273618470567936', N'', N'', N'0'), (N'124', NULL, N'1299273770182737920', N'', N'', N'0'), (N'125', NULL, N'1299273978023084032', N'', N'', N'0'), (N'126', NULL, N'1299274123225694208', N'', N'', N'0'), (N'127', NULL, N'1299274222299348992', N'', N'', N'0'), (N'128', NULL, N'1304238876758495232', N'', N'', N'0'), (N'129', NULL, N'1304678610343383040', N'', N'', N'0'), (N'130', NULL, N'1304679169305694208', N'', N'', N'0'), (N'131', NULL, N'1310460417141817344', N'', N'', N'0'), (N'132', NULL, N'1310502391475519488', N'', N'', N'0'), (N'133', NULL, N'1310515546943569920', N'', N'', N'0'), (N'134', NULL, N'1310515735292985344', N'', N'', N'0'), (N'135', NULL, N'1316628769783480320', N'', N'', N'0'), (N'136', NULL, N'1316628940663619584', N'', N'', N'0'), (N'137', NULL, N'1316629112428756992', N'', N'', N'0'), (N'138', NULL, N'1316652047017246720', N'', N'', N'0'), (N'139', NULL, N'1316913899996737536', N'', N'', N'0'), (N'140', NULL, N'1319200951383199744', N'', N'', N'0'), (N'141', NULL, N'1319221929807024128', N'', N'', N'0'), (N'142', NULL, N'1319554431134306304', N'', N'', N'0'), (N'143', NULL, N'1319554550458060800', N'', N'', N'0'), (N'144', NULL, N'1319554948434595840', N'', N'', N'0'), (N'145', NULL, N'1319555067183730688', N'', N'', N'0'), (N'146', NULL, N'1319555230765780992', N'', N'', N'0'), (N'147', NULL, N'1319555333790470144', N'', N'', N'0'), (N'148', NULL, N'1321001932510203904', N'', N'', N'0'), (N'149', NULL, N'1321002059803136000', N'', N'', N'0'), (N'150', NULL, N'1321002256440496128', N'', N'', N'0'), (N'151', NULL, N'1321002350686507008', N'', N'', N'0'), (N'152', NULL, N'1322190027988525056', N'', N'', N'0'), (N'153', NULL, N'1322452079688458240', N'', N'', N'0'), (N'154', NULL, N'1322452183929495552', N'', N'', N'0'), (N'155', NULL, N'1322452308651319296', N'', N'', N'0'), (N'156', NULL, N'1322452858176446464', N'', N'', N'0'), (N'157', NULL, N'1322452989235863552', N'', N'', N'0'), (N'158', NULL, N'1322453089655889920', N'', N'', N'0'), (N'159', NULL, N'1329706860249804800', N'', N'', N'0'), (N'160', NULL, N'1329707002411544576', N'', N'', N'0'), (N'161', NULL, N'1329708512277098496', N'', N'', N'0'), (N'162', NULL, N'1329708625917571072', N'', N'', N'0'), (N'163', NULL, N'1335049839287357440', N'', N'', N'0'), (N'164', NULL, N'1335050034221830144', N'', N'', N'0'), (N'165', NULL, N'1335050145899368448', N'', N'', N'0'), (N'166', NULL, N'1335050283434790912', N'', N'', N'0'), (N'167', NULL, N'1335050381770248192', N'', N'', N'0'), (N'168', NULL, N'1335050520941449216', N'', N'', N'0'), (N'169', NULL, N'1335050615829188608', N'', N'', N'0'), (N'170', NULL, N'1335111798720450560', N'', N'', N'0'), (N'171', NULL, N'1335118541370314752', N'', N'', N'0'), (N'172', NULL, N'1335118660417245184', N'', N'', N'0'), (N'173', NULL, N'1335118782727344128', N'', N'', N'0'), (N'174', NULL, N'1335118903200337920', N'', N'', N'0'), (N'175', NULL, N'1336230645078921216', N'', N'', N'0'), (N'176', NULL, N'1337314809113722880', N'', N'', N'0'), (N'177', NULL, N'1337314938973569024', N'', N'', N'0'), (N'178', NULL, N'1340961907637243904', N'', N'', N'0')
+INSERT INTO [apigateway].[appapigatewaybalanceroptions] VALUES (N'1', N'1260841964962947072', NULL, N'LeastConnection', NULL, NULL), (N'4', NULL, N'1261299170387169280', N'LeastConnection', NULL, N'60000'), (N'5', NULL, N'1261585859064872960', NULL, NULL, NULL), (N'6', NULL, N'1261586605810368512', NULL, NULL, NULL), (N'7', NULL, N'1261587558609436672', NULL, NULL, NULL), (N'8', NULL, N'1261588213298348032', NULL, NULL, NULL), (N'9', NULL, N'1261588367619375104', NULL, NULL, NULL), (N'10', NULL, N'1261588628450557952', NULL, NULL, NULL), (N'11', NULL, N'1261588881564221440', NULL, NULL, NULL), (N'12', NULL, N'1261588983053795328', NULL, NULL, NULL), (N'13', NULL, N'1261589139039961088', NULL, NULL, NULL), (N'14', NULL, N'1261589197483393024', NULL, NULL, NULL), (N'15', NULL, N'1261589278857084928', NULL, NULL, NULL), (N'16', NULL, N'1261589420356124672', NULL, NULL, NULL), (N'17', NULL, N'1261589960393736192', N'LeastConnection', NULL, N'60000'), (N'18', NULL, N'1261606600242085888', NULL, NULL, NULL), (N'19', NULL, N'1261606689601732608', NULL, NULL, NULL), (N'22', NULL, N'1262220447629058048', NULL, NULL, NULL), (N'23', NULL, N'1262230734939758592', NULL, NULL, NULL), (N'24', NULL, N'1262296916350869504', NULL, NULL, NULL), (N'25', NULL, N'1262632376348594176', N'', N'', N'0'), (N'26', NULL, N'1262632791869902848', N'', N'', N'0'), (N'29', NULL, N'1262660336921235456', N'', N'', N'0'), (N'30', NULL, N'1262660528277966848', N'', N'', N'0'), (N'31', NULL, N'1262660706875625472', N'', N'', N'0'), (N'32', NULL, N'1262660966393991168', N'', N'', N'0'), (N'33', NULL, N'1262661109474283520', N'', N'', N'0'), (N'34', NULL, N'1262663888804663296', N'', N'', N'0'), (N'35', NULL, N'1262664024096133120', N'', N'', N'0'), (N'36', NULL, N'1262664186252120064', N'', N'', N'0'), (N'37', NULL, N'1262664357044178944', N'', N'', N'0'), (N'38', NULL, N'1262664632928718848', N'', N'', N'0'), (N'39', NULL, N'1262664751409418240', N'', N'', N'0'), (N'40', NULL, N'1262664871274237952', N'', N'', N'0'), (N'41', NULL, N'1262665026111164416', N'', N'', N'0'), (N'42', NULL, N'1262665159905267712', N'', N'', N'0'), (N'43', NULL, N'1262665329829105664', N'', N'', N'0'), (N'44', NULL, N'1262665456471920640', N'', N'', N'0'), (N'45', NULL, N'1262665628165754880', N'', N'', N'0'), (N'46', NULL, N'1262666172682883072', N'', N'', N'0'), (N'48', NULL, N'1262723402331885568', N'', N'', N'0'), (N'49', NULL, N'1262935771746734080', N'', N'', N'0'), (N'50', NULL, N'1262935906522304512', N'', N'', N'0'), (N'53', NULL, N'1263074419073593344', N'', N'', N'0'), (N'54', NULL, N'1263075249394790400', N'', N'', N'0'), (N'55', NULL, N'1263075593499684864', N'', N'', N'0'), (N'57', NULL, N'1263101898440146944', N'', N'', N'0'), (N'58', NULL, N'1263303878648569856', N'', N'', N'0'), (N'59', NULL, N'1263304204797648896', N'', N'', N'0'), (N'60', NULL, N'1263304872891555840', N'', N'', N'0'), (N'61', NULL, N'1263305106250047488', N'', N'', N'0'), (N'62', NULL, N'1263305244594970624', N'', N'', N'0'), (N'63', NULL, N'1263305430536855552', N'', N'', N'0'), (N'64', NULL, N'1263639172959174656', N'', N'', N'0'), (N'65', NULL, N'1264799968944640000', N'', N'', N'0'), (N'66', NULL, N'1264800070161584128', N'', N'', N'0'), (N'68', NULL, N'1267360794414161920', N'', N'', N'0'), (N'69', NULL, N'1267383367629807616', N'', N'', N'0'), (N'70', NULL, N'1267817055527632896', N'', N'', N'0'), (N'71', NULL, N'1267817221286526976', N'', N'', N'0'), (N'72', NULL, N'1268893687085518848', N'', N'', N'0'), (N'97', NULL, N'1288657613998579712', N'LeastConnection', N'', N'60000'), (N'98', NULL, N'1288657941770854400', N'', N'', N'0'), (N'99', NULL, N'1288658134067109888', N'', N'', N'0'), (N'100', NULL, N'1288658305156964352', N'', N'', N'0'), (N'101', NULL, N'1288658491216289792', N'', N'', N'0'), (N'102', NULL, N'1288658638302142464', N'', N'', N'0'), (N'103', NULL, N'1288658791784308736', N'', N'', N'0'), (N'104', NULL, N'1290849478956199936', N'', N'', N'0'), (N'105', NULL, N'1290849628051124224', N'', N'', N'0'), (N'106', NULL, N'1290849798553776128', N'', N'', N'0'), (N'108', NULL, N'1291259822512693248', N'', N'', N'0'), (N'117', NULL, N'1293470838745821184', N'', N'', N'0'), (N'118', NULL, N'1293471661785706496', N'', N'', N'0'), (N'119', NULL, N'1293472678392721408', N'', N'', N'0'), (N'120', NULL, N'1293472857510473728', N'', N'', N'0'), (N'121', NULL, N'1299273336009359360', N'', N'', N'0'), (N'122', NULL, N'1299273436282585088', N'', N'', N'0'), (N'123', NULL, N'1299273618470567936', N'', N'', N'0'), (N'124', NULL, N'1299273770182737920', N'', N'', N'0'), (N'125', NULL, N'1299273978023084032', N'', N'', N'0'), (N'126', NULL, N'1299274123225694208', N'', N'', N'0'), (N'127', NULL, N'1299274222299348992', N'', N'', N'0'), (N'128', NULL, N'1304238876758495232', N'', N'', N'0'), (N'129', NULL, N'1304678610343383040', N'', N'', N'0'), (N'130', NULL, N'1304679169305694208', N'', N'', N'0'), (N'131', NULL, N'1310460417141817344', N'', N'', N'0'), (N'132', NULL, N'1310502391475519488', N'', N'', N'0'), (N'133', NULL, N'1310515546943569920', N'', N'', N'0'), (N'134', NULL, N'1310515735292985344', N'', N'', N'0'), (N'135', NULL, N'1316628769783480320', N'', N'', N'0'), (N'136', NULL, N'1316628940663619584', N'', N'', N'0'), (N'137', NULL, N'1316629112428756992', N'', N'', N'0'), (N'138', NULL, N'1316652047017246720', N'', N'', N'0'), (N'139', NULL, N'1316913899996737536', N'', N'', N'0'), (N'140', NULL, N'1319200951383199744', N'', N'', N'0'), (N'141', NULL, N'1319221929807024128', N'', N'', N'0'), (N'142', NULL, N'1319554431134306304', N'', N'', N'0'), (N'143', NULL, N'1319554550458060800', N'', N'', N'0'), (N'144', NULL, N'1319554948434595840', N'', N'', N'0'), (N'145', NULL, N'1319555067183730688', N'', N'', N'0'), (N'146', NULL, N'1319555230765780992', N'', N'', N'0'), (N'147', NULL, N'1319555333790470144', N'', N'', N'0'), (N'148', NULL, N'1321001932510203904', N'', N'', N'0'), (N'149', NULL, N'1321002059803136000', N'', N'', N'0'), (N'150', NULL, N'1321002256440496128', N'', N'', N'0'), (N'151', NULL, N'1321002350686507008', N'', N'', N'0'), (N'152', NULL, N'1322190027988525056', N'', N'', N'0'), (N'153', NULL, N'1322452079688458240', N'', N'', N'0'), (N'154', NULL, N'1322452183929495552', N'', N'', N'0'), (N'155', NULL, N'1322452308651319296', N'', N'', N'0'), (N'156', NULL, N'1322452858176446464', N'', N'', N'0'), (N'157', NULL, N'1322452989235863552', N'', N'', N'0'), (N'158', NULL, N'1322453089655889920', N'', N'', N'0'), (N'159', NULL, N'1329706860249804800', N'', N'', N'0'), (N'160', NULL, N'1329707002411544576', N'', N'', N'0'), (N'161', NULL, N'1329708512277098496', N'', N'', N'0'), (N'162', NULL, N'1329708625917571072', N'', N'', N'0'), (N'163', NULL, N'1335049839287357440', N'', N'', N'0'), (N'164', NULL, N'1335050034221830144', N'', N'', N'0'), (N'165', NULL, N'1335050145899368448', N'', N'', N'0'), (N'166', NULL, N'1335050283434790912', N'', N'', N'0'), (N'167', NULL, N'1335050381770248192', N'', N'', N'0'), (N'168', NULL, N'1335050520941449216', N'', N'', N'0'), (N'169', NULL, N'1335050615829188608', N'', N'', N'0'), (N'170', NULL, N'1335111798720450560', N'', N'', N'0'), (N'171', NULL, N'1335118541370314752', N'', N'', N'0'), (N'172', NULL, N'1335118660417245184', N'', N'', N'0'), (N'173', NULL, N'1335118782727344128', N'', N'', N'0'), (N'174', NULL, N'1335118903200337920', N'', N'', N'0'), (N'175', NULL, N'1336230645078921216', N'', N'', N'0'), (N'176', NULL, N'1337314809113722880', N'', N'', N'0'), (N'177', NULL, N'1337314938973569024', N'', N'', N'0'), (N'178', NULL, N'1340961907637243904', N'', N'', N'0'), (N'179', NULL, N'1341652247554379776', N'', N'', N'0'), (N'180', NULL, N'1341652385555369984', N'', N'', N'0'), (N'181', NULL, N'1342457939827552256', N'', N'', N'0'), (N'182', NULL, N'1342458050112581632', N'', N'', N'0'), (N'183', NULL, N'1363382062055915520', N'', N'', N'0'), (N'184', NULL, N'1363382298501414912', N'', N'', N'0'), (N'185', NULL, N'1368854800347848704', N'', N'', N'0'), (N'186', NULL, N'1368855936576413696', N'', N'', N'0'), (N'187', NULL, N'1368856295889854464', N'', N'', N'0'), (N'188', NULL, N'1368856703572008960', N'', N'', N'0'), (N'189', NULL, N'1368856819242524672', N'', N'', N'0'), (N'190', NULL, N'1368856927887581184', N'', N'', N'0'), (N'191', NULL, N'1368857128383700992', N'', N'', N'0'), (N'192', NULL, N'1369560306297233408', N'', N'', N'0'), (N'193', NULL, N'1369560450472239104', N'', N'', N'0')
GO
COMMIT
@@ -180,7 +180,7 @@ GO
BEGIN TRANSACTION
GO
-INSERT INTO [apigateway].[appapigatewaycacheoptions] VALUES (N'3', N'1261299170387169280', NULL, NULL), (N'4', N'1261585859064872960', NULL, NULL), (N'5', N'1261586605810368512', NULL, NULL), (N'6', N'1261587558609436672', NULL, NULL), (N'7', N'1261588213298348032', NULL, NULL), (N'8', N'1261588367619375104', NULL, NULL), (N'9', N'1261588628450557952', NULL, NULL), (N'10', N'1261588881564221440', NULL, NULL), (N'11', N'1261588983053795328', NULL, NULL), (N'12', N'1261589139039961088', NULL, NULL), (N'13', N'1261589197483393024', NULL, NULL), (N'14', N'1261589278857084928', NULL, NULL), (N'15', N'1261589420356124672', NULL, NULL), (N'16', N'1261589960393736192', NULL, NULL), (N'17', N'1261606600242085888', NULL, NULL), (N'18', N'1261606689601732608', NULL, NULL), (N'21', N'1262220447629058048', NULL, NULL), (N'22', N'1262230734939758592', NULL, NULL), (N'23', N'1262296916350869504', NULL, NULL), (N'24', N'1262632376348594176', NULL, NULL), (N'25', N'1262632791869902848', NULL, NULL), (N'28', N'1262660336921235456', N'0', N''), (N'29', N'1262660528277966848', N'0', N''), (N'30', N'1262660706875625472', N'0', N''), (N'31', N'1262660966393991168', N'0', N''), (N'32', N'1262661109474283520', N'0', N''), (N'33', N'1262663888804663296', N'0', N''), (N'34', N'1262664024096133120', N'0', N''), (N'35', N'1262664186252120064', N'0', N''), (N'36', N'1262664357044178944', N'0', N''), (N'37', N'1262664632928718848', N'0', N''), (N'38', N'1262664751409418240', N'0', N''), (N'39', N'1262664871274237952', N'0', N''), (N'40', N'1262665026111164416', N'0', N''), (N'41', N'1262665159905267712', N'0', N''), (N'42', N'1262665329829105664', N'0', N''), (N'43', N'1262665456471920640', N'0', N''), (N'44', N'1262665628165754880', NULL, NULL), (N'45', N'1262666172682883072', NULL, NULL), (N'47', N'1262723402331885568', NULL, NULL), (N'48', N'1262935771746734080', NULL, NULL), (N'49', N'1262935906522304512', NULL, NULL), (N'52', N'1263074419073593344', NULL, NULL), (N'53', N'1263075249394790400', N'0', N''), (N'54', N'1263075593499684864', N'0', N''), (N'56', N'1263101898440146944', NULL, NULL), (N'57', N'1263303878648569856', NULL, NULL), (N'58', N'1263304204797648896', NULL, NULL), (N'59', N'1263304872891555840', NULL, NULL), (N'60', N'1263305106250047488', NULL, NULL), (N'61', N'1263305244594970624', NULL, NULL), (N'62', N'1263305430536855552', NULL, NULL), (N'63', N'1263639172959174656', NULL, NULL), (N'64', N'1264799968944640000', NULL, NULL), (N'65', N'1264800070161584128', NULL, NULL), (N'66', N'1267360794414161920', NULL, NULL), (N'67', N'1267383367629807616', NULL, NULL), (N'68', N'1267817055527632896', NULL, NULL), (N'69', N'1267817221286526976', NULL, NULL), (N'70', N'1268893687085518848', NULL, NULL), (N'94', N'1288657613998579712', NULL, NULL), (N'95', N'1288657941770854400', N'0', N''), (N'96', N'1288658134067109888', N'0', N''), (N'97', N'1288658305156964352', N'0', N''), (N'98', N'1288658491216289792', N'0', N''), (N'99', N'1288658638302142464', NULL, NULL), (N'100', N'1288658791784308736', NULL, NULL), (N'101', N'1290849478956199936', NULL, NULL), (N'102', N'1290849628051124224', NULL, NULL), (N'103', N'1290849798553776128', NULL, NULL), (N'105', N'1291259822512693248', N'0', N''), (N'106', N'1292620505149145088', N'0', N''), (N'107', N'1292620665505775616', N'0', N''), (N'108', N'1292620843398791168', NULL, NULL), (N'109', N'1292621027574874112', N'0', N''), (N'110', N'1292621363161137152', N'0', N''), (N'111', N'1292621494837116928', N'0', N''), (N'112', N'1292621629260365824', N'0', N''), (N'113', N'1292622526073864192', N'0', N''), (N'114', N'1293470838745821184', N'0', N''), (N'115', N'1293471661785706496', N'0', N''), (N'116', N'1293472678392721408', N'0', N''), (N'117', N'1293472857510473728', N'0', N''), (N'118', N'1299273336009359360', NULL, NULL), (N'119', N'1299273436282585088', NULL, NULL), (N'120', N'1299273618470567936', NULL, NULL), (N'121', N'1299273770182737920', NULL, NULL), (N'122', N'1299273978023084032', NULL, NULL), (N'123', N'1299274123225694208', NULL, NULL), (N'124', N'1299274222299348992', NULL, NULL), (N'125', N'1304238876758495232', N'0', N''), (N'126', N'1304678610343383040', NULL, NULL), (N'127', N'1304679169305694208', NULL, NULL), (N'128', N'1310460417141817344', N'0', N''), (N'129', N'1310502391475519488', N'0', N''), (N'130', N'1310515546943569920', NULL, NULL), (N'131', N'1310515735292985344', NULL, NULL), (N'132', N'1316628769783480320', N'0', N''), (N'133', N'1316628940663619584', N'0', N''), (N'134', N'1316629112428756992', N'0', N''), (N'135', N'1316652047017246720', NULL, NULL), (N'136', N'1316913899996737536', N'0', N''), (N'137', N'1319200951383199744', N'0', N''), (N'138', N'1319221929807024128', N'0', N''), (N'139', N'1319554431134306304', NULL, NULL), (N'140', N'1319554550458060800', NULL, NULL), (N'141', N'1319554948434595840', N'0', N''), (N'142', N'1319555067183730688', N'0', N''), (N'143', N'1319555230765780992', N'0', N''), (N'144', N'1319555333790470144', N'0', N''), (N'145', N'1321001932510203904', N'0', N''), (N'146', N'1321002059803136000', N'0', N''), (N'147', N'1321002256440496128', N'0', N''), (N'148', N'1321002350686507008', N'0', N''), (N'149', N'1322190027988525056', N'0', N''), (N'150', N'1322452079688458240', NULL, NULL), (N'151', N'1322452183929495552', NULL, NULL), (N'152', N'1322452308651319296', NULL, NULL), (N'153', N'1322452858176446464', N'0', N''), (N'154', N'1322452989235863552', N'0', N''), (N'155', N'1322453089655889920', NULL, NULL), (N'156', N'1329706860249804800', N'0', N''), (N'157', N'1329707002411544576', N'0', N''), (N'158', N'1329708512277098496', N'0', N''), (N'159', N'1329708625917571072', N'0', N''), (N'160', N'1335049839287357440', NULL, NULL), (N'161', N'1335050034221830144', N'0', N''), (N'162', N'1335050145899368448', N'0', N''), (N'163', N'1335050283434790912', N'0', N''), (N'164', N'1335050381770248192', N'0', N''), (N'165', N'1335050520941449216', N'0', N''), (N'166', N'1335050615829188608', N'0', N''), (N'167', N'1335111798720450560', N'0', N''), (N'168', N'1335118541370314752', N'0', N''), (N'169', N'1335118660417245184', N'0', N''), (N'170', N'1335118782727344128', N'0', N''), (N'171', N'1335118903200337920', N'0', N''), (N'172', N'1336230645078921216', N'0', N''), (N'173', N'1337314809113722880', NULL, NULL), (N'174', N'1337314938973569024', N'0', N''), (N'175', N'1340961907637243904', N'0', N'')
+INSERT INTO [apigateway].[appapigatewaycacheoptions] VALUES (N'3', N'1261299170387169280', NULL, NULL), (N'4', N'1261585859064872960', NULL, NULL), (N'5', N'1261586605810368512', NULL, NULL), (N'6', N'1261587558609436672', NULL, NULL), (N'7', N'1261588213298348032', NULL, NULL), (N'8', N'1261588367619375104', NULL, NULL), (N'9', N'1261588628450557952', NULL, NULL), (N'10', N'1261588881564221440', NULL, NULL), (N'11', N'1261588983053795328', NULL, NULL), (N'12', N'1261589139039961088', NULL, NULL), (N'13', N'1261589197483393024', NULL, NULL), (N'14', N'1261589278857084928', NULL, NULL), (N'15', N'1261589420356124672', NULL, NULL), (N'16', N'1261589960393736192', NULL, NULL), (N'17', N'1261606600242085888', NULL, NULL), (N'18', N'1261606689601732608', NULL, NULL), (N'21', N'1262220447629058048', NULL, NULL), (N'22', N'1262230734939758592', NULL, NULL), (N'23', N'1262296916350869504', NULL, NULL), (N'24', N'1262632376348594176', NULL, NULL), (N'25', N'1262632791869902848', NULL, NULL), (N'28', N'1262660336921235456', N'0', N''), (N'29', N'1262660528277966848', N'0', N''), (N'30', N'1262660706875625472', N'0', N''), (N'31', N'1262660966393991168', N'0', N''), (N'32', N'1262661109474283520', N'0', N''), (N'33', N'1262663888804663296', N'0', N''), (N'34', N'1262664024096133120', N'0', N''), (N'35', N'1262664186252120064', N'0', N''), (N'36', N'1262664357044178944', N'0', N''), (N'37', N'1262664632928718848', N'0', N''), (N'38', N'1262664751409418240', N'0', N''), (N'39', N'1262664871274237952', N'0', N''), (N'40', N'1262665026111164416', N'0', N''), (N'41', N'1262665159905267712', N'0', N''), (N'42', N'1262665329829105664', N'0', N''), (N'43', N'1262665456471920640', N'0', N''), (N'44', N'1262665628165754880', NULL, NULL), (N'45', N'1262666172682883072', NULL, NULL), (N'47', N'1262723402331885568', NULL, NULL), (N'48', N'1262935771746734080', NULL, NULL), (N'49', N'1262935906522304512', NULL, NULL), (N'52', N'1263074419073593344', NULL, NULL), (N'53', N'1263075249394790400', N'0', N''), (N'54', N'1263075593499684864', N'0', N''), (N'56', N'1263101898440146944', NULL, NULL), (N'57', N'1263303878648569856', NULL, NULL), (N'58', N'1263304204797648896', NULL, NULL), (N'59', N'1263304872891555840', NULL, NULL), (N'60', N'1263305106250047488', NULL, NULL), (N'61', N'1263305244594970624', NULL, NULL), (N'62', N'1263305430536855552', NULL, NULL), (N'63', N'1263639172959174656', NULL, NULL), (N'64', N'1264799968944640000', NULL, NULL), (N'65', N'1264800070161584128', NULL, NULL), (N'66', N'1267360794414161920', NULL, NULL), (N'67', N'1267383367629807616', NULL, NULL), (N'68', N'1267817055527632896', NULL, NULL), (N'69', N'1267817221286526976', NULL, NULL), (N'70', N'1268893687085518848', NULL, NULL), (N'94', N'1288657613998579712', NULL, NULL), (N'95', N'1288657941770854400', N'0', N''), (N'96', N'1288658134067109888', N'0', N''), (N'97', N'1288658305156964352', N'0', N''), (N'98', N'1288658491216289792', N'0', N''), (N'99', N'1288658638302142464', NULL, NULL), (N'100', N'1288658791784308736', NULL, NULL), (N'101', N'1290849478956199936', NULL, NULL), (N'102', N'1290849628051124224', NULL, NULL), (N'103', N'1290849798553776128', NULL, NULL), (N'105', N'1291259822512693248', N'0', N''), (N'114', N'1293470838745821184', N'0', N''), (N'115', N'1293471661785706496', N'0', N''), (N'116', N'1293472678392721408', N'0', N''), (N'117', N'1293472857510473728', N'0', N''), (N'118', N'1299273336009359360', NULL, NULL), (N'119', N'1299273436282585088', NULL, NULL), (N'120', N'1299273618470567936', NULL, NULL), (N'121', N'1299273770182737920', NULL, NULL), (N'122', N'1299273978023084032', NULL, NULL), (N'123', N'1299274123225694208', NULL, NULL), (N'124', N'1299274222299348992', NULL, NULL), (N'125', N'1304238876758495232', N'0', N''), (N'126', N'1304678610343383040', NULL, NULL), (N'127', N'1304679169305694208', NULL, NULL), (N'128', N'1310460417141817344', N'0', N''), (N'129', N'1310502391475519488', N'0', N''), (N'130', N'1310515546943569920', NULL, NULL), (N'131', N'1310515735292985344', NULL, NULL), (N'132', N'1316628769783480320', N'0', N''), (N'133', N'1316628940663619584', N'0', N''), (N'134', N'1316629112428756992', N'0', N''), (N'135', N'1316652047017246720', NULL, NULL), (N'136', N'1316913899996737536', N'0', N''), (N'137', N'1319200951383199744', N'0', N''), (N'138', N'1319221929807024128', N'0', N''), (N'139', N'1319554431134306304', NULL, NULL), (N'140', N'1319554550458060800', NULL, NULL), (N'141', N'1319554948434595840', N'0', N''), (N'142', N'1319555067183730688', N'0', N''), (N'143', N'1319555230765780992', N'0', N''), (N'144', N'1319555333790470144', N'0', N''), (N'145', N'1321001932510203904', N'0', N''), (N'146', N'1321002059803136000', N'0', N''), (N'147', N'1321002256440496128', N'0', N''), (N'148', N'1321002350686507008', N'0', N''), (N'149', N'1322190027988525056', N'0', N''), (N'150', N'1322452079688458240', NULL, NULL), (N'151', N'1322452183929495552', NULL, NULL), (N'152', N'1322452308651319296', NULL, NULL), (N'153', N'1322452858176446464', N'0', N''), (N'154', N'1322452989235863552', N'0', N''), (N'155', N'1322453089655889920', NULL, NULL), (N'156', N'1329706860249804800', N'0', N''), (N'157', N'1329707002411544576', N'0', N''), (N'158', N'1329708512277098496', N'0', N''), (N'159', N'1329708625917571072', N'0', N''), (N'160', N'1335049839287357440', NULL, NULL), (N'161', N'1335050034221830144', N'0', N''), (N'162', N'1335050145899368448', N'0', N''), (N'163', N'1335050283434790912', N'0', N''), (N'164', N'1335050381770248192', N'0', N''), (N'165', N'1335050520941449216', N'0', N''), (N'166', N'1335050615829188608', N'0', N''), (N'167', N'1335111798720450560', N'0', N''), (N'168', N'1335118541370314752', N'0', N''), (N'169', N'1335118660417245184', N'0', N''), (N'170', N'1335118782727344128', N'0', N''), (N'171', N'1335118903200337920', N'0', N''), (N'172', N'1336230645078921216', N'0', N''), (N'173', N'1337314809113722880', NULL, NULL), (N'174', N'1337314938973569024', N'0', N''), (N'175', N'1340961907637243904', N'0', N''), (N'176', N'1341652247554379776', N'0', N''), (N'177', N'1341652385555369984', N'0', N''), (N'178', N'1342457939827552256', N'0', N''), (N'179', N'1342458050112581632', N'0', N''), (N'180', N'1363382062055915520', NULL, NULL), (N'181', N'1363382298501414912', NULL, NULL), (N'182', N'1368854800347848704', NULL, NULL), (N'183', N'1368855936576413696', NULL, NULL), (N'184', N'1368856295889854464', NULL, NULL), (N'185', N'1368856703572008960', NULL, NULL), (N'186', N'1368856819242524672', NULL, NULL), (N'187', N'1368856927887581184', NULL, NULL), (N'188', N'1368857128383700992', N'0', N''), (N'189', N'1369560306297233408', N'0', N''), (N'190', N'1369560450472239104', N'0', N'')
GO
COMMIT
@@ -335,7 +335,7 @@ GO
BEGIN TRANSACTION
GO
-INSERT INTO [apigateway].[appapigatewayhttpoptions] VALUES (N'1', N'1260841964962947072', NULL, NULL, N'0', N'0', N'1', N'0'), (N'4', NULL, N'1261299170387169280', N'1000', N'1', N'0', N'1', N'0'), (N'5', NULL, N'1261585859064872960', NULL, N'0', N'0', N'1', N'0'), (N'6', NULL, N'1261586605810368512', NULL, N'0', N'0', N'0', N'0'), (N'7', NULL, N'1261587558609436672', NULL, N'0', N'0', N'0', N'0'), (N'8', NULL, N'1261588213298348032', NULL, N'0', N'0', N'0', N'0'), (N'9', NULL, N'1261588367619375104', NULL, N'0', N'0', N'0', N'0'), (N'10', NULL, N'1261588628450557952', NULL, N'0', N'0', N'0', N'0'), (N'11', NULL, N'1261588881564221440', NULL, N'0', N'0', N'0', N'0'), (N'12', NULL, N'1261588983053795328', NULL, N'0', N'0', N'0', N'0'), (N'13', NULL, N'1261589139039961088', NULL, N'0', N'0', N'0', N'0'), (N'14', NULL, N'1261589197483393024', NULL, N'0', N'0', N'0', N'0'), (N'15', NULL, N'1261589278857084928', NULL, N'0', N'0', N'0', N'0'), (N'16', NULL, N'1261589420356124672', NULL, N'0', N'0', N'0', N'0'), (N'17', NULL, N'1261589960393736192', N'1000', N'1', N'0', N'1', N'0'), (N'18', NULL, N'1261606600242085888', NULL, N'0', N'0', N'0', N'0'), (N'19', NULL, N'1261606689601732608', NULL, N'0', N'0', N'0', N'0'), (N'22', NULL, N'1262220447629058048', NULL, N'0', N'0', N'1', N'0'), (N'23', NULL, N'1262230734939758592', NULL, N'0', N'0', N'1', N'0'), (N'24', NULL, N'1262296916350869504', NULL, N'0', N'0', N'1', N'0'), (N'25', NULL, N'1262632376348594176', N'0', N'0', N'0', N'0', N'0'), (N'26', NULL, N'1262632791869902848', N'0', N'0', N'0', N'0', N'0'), (N'29', NULL, N'1262660336921235456', N'0', N'0', N'0', N'0', N'0'), (N'30', NULL, N'1262660528277966848', N'0', N'0', N'0', N'0', N'0'), (N'31', NULL, N'1262660706875625472', N'0', N'0', N'0', N'0', N'0'), (N'32', NULL, N'1262660966393991168', N'0', N'0', N'0', N'0', N'0'), (N'33', NULL, N'1262661109474283520', N'0', N'0', N'0', N'0', N'0'), (N'34', NULL, N'1262663888804663296', N'0', N'0', N'0', N'0', N'0'), (N'35', NULL, N'1262664024096133120', N'0', N'0', N'0', N'0', N'0'), (N'36', NULL, N'1262664186252120064', N'0', N'0', N'0', N'0', N'0'), (N'37', NULL, N'1262664357044178944', N'0', N'0', N'0', N'0', N'0'), (N'38', NULL, N'1262664632928718848', N'0', N'0', N'0', N'0', N'0'), (N'39', NULL, N'1262664751409418240', N'0', N'0', N'0', N'0', N'0'), (N'40', NULL, N'1262664871274237952', N'0', N'0', N'0', N'0', N'0'), (N'41', NULL, N'1262665026111164416', N'0', N'0', N'0', N'0', N'0'), (N'42', NULL, N'1262665159905267712', N'0', N'0', N'0', N'0', N'0'), (N'43', NULL, N'1262665329829105664', N'0', N'0', N'0', N'0', N'0'), (N'44', NULL, N'1262665456471920640', N'0', N'0', N'0', N'0', N'0'), (N'45', NULL, N'1262665628165754880', N'0', N'0', N'0', N'0', N'0'), (N'46', NULL, N'1262666172682883072', N'0', N'0', N'0', N'0', N'0'), (N'48', NULL, N'1262723402331885568', N'0', N'0', N'0', N'0', N'0'), (N'49', NULL, N'1262935771746734080', N'0', N'0', N'0', N'0', N'0'), (N'50', NULL, N'1262935906522304512', N'0', N'0', N'0', N'0', N'0'), (N'53', NULL, N'1263074419073593344', N'0', N'0', N'0', N'0', N'0'), (N'54', NULL, N'1263075249394790400', N'0', N'0', N'0', N'0', N'0'), (N'55', NULL, N'1263075593499684864', N'0', N'0', N'0', N'0', N'0'), (N'57', NULL, N'1263101898440146944', N'0', N'0', N'0', N'0', N'0'), (N'58', NULL, N'1263303878648569856', N'0', N'0', N'0', N'0', N'0'), (N'59', NULL, N'1263304204797648896', N'0', N'0', N'0', N'0', N'0'), (N'60', NULL, N'1263304872891555840', N'0', N'0', N'0', N'0', N'0'), (N'61', NULL, N'1263305106250047488', N'0', N'0', N'0', N'0', N'0'), (N'62', NULL, N'1263305244594970624', N'0', N'0', N'0', N'0', N'0'), (N'63', NULL, N'1263305430536855552', N'0', N'0', N'0', N'0', N'0'), (N'64', NULL, N'1263639172959174656', N'0', N'0', N'0', N'0', N'0'), (N'65', NULL, N'1264799968944640000', N'0', N'0', N'0', N'0', N'0'), (N'66', NULL, N'1264800070161584128', N'0', N'0', N'0', N'0', N'0'), (N'68', NULL, N'1267360794414161920', N'0', N'0', N'0', N'0', N'0'), (N'69', NULL, N'1267383367629807616', N'0', N'0', N'0', N'0', N'0'), (N'70', NULL, N'1267817055527632896', N'0', N'0', N'0', N'0', N'0'), (N'71', NULL, N'1267817221286526976', N'0', N'0', N'0', N'0', N'0'), (N'72', NULL, N'1268893687085518848', N'0', N'0', N'0', N'0', N'0'), (N'97', NULL, N'1288657613998579712', N'1000', N'0', N'0', N'0', N'0'), (N'98', NULL, N'1288657941770854400', N'1000', N'0', N'0', N'0', N'0'), (N'99', NULL, N'1288658134067109888', N'1000', N'0', N'0', N'0', N'0'), (N'100', NULL, N'1288658305156964352', N'1000', N'0', N'0', N'0', N'0'), (N'101', NULL, N'1288658491216289792', N'1000', N'0', N'0', N'0', N'0'), (N'102', NULL, N'1288658638302142464', N'1000', N'0', N'0', N'0', N'0'), (N'103', NULL, N'1288658791784308736', N'1000', N'0', N'0', N'0', N'0'), (N'104', NULL, N'1290849478956199936', N'0', N'0', N'0', N'0', N'0'), (N'105', NULL, N'1290849628051124224', N'0', N'0', N'0', N'0', N'0'), (N'106', NULL, N'1290849798553776128', N'0', N'0', N'0', N'0', N'0'), (N'108', NULL, N'1291259822512693248', N'0', N'0', N'0', N'0', N'0'), (N'109', NULL, N'1292620505149145088', N'0', N'0', N'0', N'0', N'0'), (N'110', NULL, N'1292620665505775616', N'0', N'0', N'0', N'0', N'0'), (N'111', NULL, N'1292620843398791168', N'100', N'0', N'0', N'0', N'0'), (N'112', NULL, N'1292621027574874112', N'0', N'0', N'0', N'0', N'0'), (N'113', NULL, N'1292621363161137152', N'0', N'0', N'0', N'0', N'0'), (N'114', NULL, N'1292621494837116928', N'0', N'0', N'0', N'0', N'0'), (N'115', NULL, N'1292621629260365824', N'0', N'0', N'0', N'0', N'0'), (N'116', NULL, N'1292622526073864192', N'0', N'0', N'0', N'0', N'0'), (N'117', NULL, N'1293470838745821184', N'0', N'0', N'0', N'0', N'0'), (N'118', NULL, N'1293471661785706496', N'0', N'0', N'0', N'0', N'0'), (N'119', NULL, N'1293472678392721408', N'0', N'0', N'0', N'0', N'0'), (N'120', NULL, N'1293472857510473728', N'0', N'0', N'0', N'0', N'0'), (N'121', NULL, N'1299273336009359360', N'0', N'0', N'0', N'0', N'0'), (N'122', NULL, N'1299273436282585088', N'0', N'0', N'0', N'0', N'0'), (N'123', NULL, N'1299273618470567936', N'0', N'0', N'0', N'0', N'0'), (N'124', NULL, N'1299273770182737920', N'0', N'0', N'0', N'0', N'0'), (N'125', NULL, N'1299273978023084032', N'0', N'0', N'0', N'0', N'0'), (N'126', NULL, N'1299274123225694208', N'0', N'0', N'0', N'0', N'0'), (N'127', NULL, N'1299274222299348992', N'0', N'0', N'0', N'0', N'0'), (N'128', NULL, N'1304238876758495232', N'0', N'0', N'0', N'0', N'0'), (N'129', NULL, N'1304678610343383040', N'0', N'0', N'0', N'0', N'0'), (N'130', NULL, N'1304679169305694208', N'0', N'0', N'0', N'0', N'0'), (N'131', NULL, N'1310460417141817344', N'0', N'0', N'0', N'0', N'0'), (N'132', NULL, N'1310502391475519488', N'0', N'0', N'0', N'0', N'0'), (N'133', NULL, N'1310515546943569920', N'0', N'0', N'0', N'0', N'0'), (N'134', NULL, N'1310515735292985344', N'0', N'0', N'0', N'0', N'0'), (N'135', NULL, N'1316628769783480320', N'0', N'0', N'0', N'0', N'0'), (N'136', NULL, N'1316628940663619584', N'0', N'0', N'0', N'0', N'0'), (N'137', NULL, N'1316629112428756992', N'0', N'0', N'0', N'0', N'0'), (N'138', NULL, N'1316652047017246720', N'0', N'0', N'0', N'0', N'0'), (N'139', NULL, N'1316913899996737536', N'0', N'0', N'0', N'0', N'0'), (N'140', NULL, N'1319200951383199744', N'0', N'0', N'0', N'0', N'0'), (N'141', NULL, N'1319221929807024128', N'0', N'0', N'0', N'0', N'0'), (N'142', NULL, N'1319554431134306304', N'0', N'0', N'0', N'0', N'0'), (N'143', NULL, N'1319554550458060800', N'0', N'0', N'0', N'0', N'0'), (N'144', NULL, N'1319554948434595840', N'0', N'0', N'0', N'0', N'0'), (N'145', NULL, N'1319555067183730688', N'0', N'0', N'0', N'0', N'0'), (N'146', NULL, N'1319555230765780992', N'0', N'0', N'0', N'0', N'0'), (N'147', NULL, N'1319555333790470144', N'0', N'0', N'0', N'0', N'0'), (N'148', NULL, N'1321001932510203904', N'0', N'0', N'0', N'0', N'0'), (N'149', NULL, N'1321002059803136000', N'0', N'0', N'0', N'0', N'0'), (N'150', NULL, N'1321002256440496128', N'0', N'0', N'0', N'0', N'0'), (N'151', NULL, N'1321002350686507008', N'0', N'0', N'0', N'0', N'0'), (N'152', NULL, N'1322190027988525056', N'0', N'0', N'0', N'0', N'0'), (N'153', NULL, N'1322452079688458240', N'0', N'0', N'0', N'0', N'0'), (N'154', NULL, N'1322452183929495552', N'0', N'0', N'0', N'0', N'0'), (N'155', NULL, N'1322452308651319296', N'0', N'0', N'0', N'0', N'0'), (N'156', NULL, N'1322452858176446464', N'0', N'0', N'0', N'0', N'0'), (N'157', NULL, N'1322452989235863552', N'0', N'0', N'0', N'0', N'0'), (N'158', NULL, N'1322453089655889920', N'0', N'0', N'0', N'0', N'0'), (N'159', NULL, N'1329706860249804800', N'0', N'0', N'0', N'0', N'0'), (N'160', NULL, N'1329707002411544576', N'0', N'0', N'0', N'0', N'0'), (N'161', NULL, N'1329708512277098496', N'0', N'0', N'0', N'0', N'0'), (N'162', NULL, N'1329708625917571072', N'0', N'0', N'0', N'0', N'0'), (N'163', NULL, N'1335049839287357440', N'0', N'0', N'0', N'0', N'0'), (N'164', NULL, N'1335050034221830144', N'0', N'0', N'0', N'0', N'0'), (N'165', NULL, N'1335050145899368448', N'0', N'0', N'0', N'0', N'0'), (N'166', NULL, N'1335050283434790912', N'0', N'0', N'0', N'0', N'0'), (N'167', NULL, N'1335050381770248192', N'0', N'0', N'0', N'0', N'0'), (N'168', NULL, N'1335050520941449216', N'0', N'0', N'0', N'0', N'0'), (N'169', NULL, N'1335050615829188608', N'0', N'0', N'0', N'0', N'0'), (N'170', NULL, N'1335111798720450560', N'0', N'0', N'0', N'0', N'0'), (N'171', NULL, N'1335118541370314752', N'0', N'0', N'0', N'0', N'0'), (N'172', NULL, N'1335118660417245184', N'0', N'0', N'0', N'0', N'0'), (N'173', NULL, N'1335118782727344128', N'0', N'0', N'0', N'0', N'0'), (N'174', NULL, N'1335118903200337920', N'0', N'0', N'0', N'0', N'0'), (N'175', NULL, N'1336230645078921216', N'0', N'0', N'0', N'0', N'0'), (N'176', NULL, N'1337314809113722880', N'0', N'0', N'0', N'0', N'0'), (N'177', NULL, N'1337314938973569024', N'0', N'0', N'0', N'0', N'0'), (N'178', NULL, N'1340961907637243904', N'0', N'0', N'0', N'0', N'0')
+INSERT INTO [apigateway].[appapigatewayhttpoptions] VALUES (N'1', N'1260841964962947072', NULL, NULL, N'0', N'0', N'1', N'0'), (N'4', NULL, N'1261299170387169280', N'1000', N'1', N'0', N'1', N'0'), (N'5', NULL, N'1261585859064872960', NULL, N'0', N'0', N'1', N'0'), (N'6', NULL, N'1261586605810368512', NULL, N'0', N'0', N'0', N'0'), (N'7', NULL, N'1261587558609436672', NULL, N'0', N'0', N'0', N'0'), (N'8', NULL, N'1261588213298348032', NULL, N'0', N'0', N'0', N'0'), (N'9', NULL, N'1261588367619375104', NULL, N'0', N'0', N'0', N'0'), (N'10', NULL, N'1261588628450557952', NULL, N'0', N'0', N'0', N'0'), (N'11', NULL, N'1261588881564221440', NULL, N'0', N'0', N'0', N'0'), (N'12', NULL, N'1261588983053795328', NULL, N'0', N'0', N'0', N'0'), (N'13', NULL, N'1261589139039961088', NULL, N'0', N'0', N'0', N'0'), (N'14', NULL, N'1261589197483393024', NULL, N'0', N'0', N'0', N'0'), (N'15', NULL, N'1261589278857084928', NULL, N'0', N'0', N'0', N'0'), (N'16', NULL, N'1261589420356124672', NULL, N'0', N'0', N'0', N'0'), (N'17', NULL, N'1261589960393736192', N'1000', N'1', N'0', N'1', N'0'), (N'18', NULL, N'1261606600242085888', NULL, N'0', N'0', N'0', N'0'), (N'19', NULL, N'1261606689601732608', NULL, N'0', N'0', N'0', N'0'), (N'22', NULL, N'1262220447629058048', NULL, N'0', N'0', N'1', N'0'), (N'23', NULL, N'1262230734939758592', NULL, N'0', N'0', N'1', N'0'), (N'24', NULL, N'1262296916350869504', NULL, N'0', N'0', N'1', N'0'), (N'25', NULL, N'1262632376348594176', N'0', N'0', N'0', N'0', N'0'), (N'26', NULL, N'1262632791869902848', N'0', N'0', N'0', N'0', N'0'), (N'29', NULL, N'1262660336921235456', N'0', N'0', N'0', N'0', N'0'), (N'30', NULL, N'1262660528277966848', N'0', N'0', N'0', N'0', N'0'), (N'31', NULL, N'1262660706875625472', N'0', N'0', N'0', N'0', N'0'), (N'32', NULL, N'1262660966393991168', N'0', N'0', N'0', N'0', N'0'), (N'33', NULL, N'1262661109474283520', N'0', N'0', N'0', N'0', N'0'), (N'34', NULL, N'1262663888804663296', N'0', N'0', N'0', N'0', N'0'), (N'35', NULL, N'1262664024096133120', N'0', N'0', N'0', N'0', N'0'), (N'36', NULL, N'1262664186252120064', N'0', N'0', N'0', N'0', N'0'), (N'37', NULL, N'1262664357044178944', N'0', N'0', N'0', N'0', N'0'), (N'38', NULL, N'1262664632928718848', N'0', N'0', N'0', N'0', N'0'), (N'39', NULL, N'1262664751409418240', N'0', N'0', N'0', N'0', N'0'), (N'40', NULL, N'1262664871274237952', N'0', N'0', N'0', N'0', N'0'), (N'41', NULL, N'1262665026111164416', N'0', N'0', N'0', N'0', N'0'), (N'42', NULL, N'1262665159905267712', N'0', N'0', N'0', N'0', N'0'), (N'43', NULL, N'1262665329829105664', N'0', N'0', N'0', N'0', N'0'), (N'44', NULL, N'1262665456471920640', N'0', N'0', N'0', N'0', N'0'), (N'45', NULL, N'1262665628165754880', N'0', N'0', N'0', N'0', N'0'), (N'46', NULL, N'1262666172682883072', N'0', N'0', N'0', N'0', N'0'), (N'48', NULL, N'1262723402331885568', N'0', N'0', N'0', N'0', N'0'), (N'49', NULL, N'1262935771746734080', N'0', N'0', N'0', N'0', N'0'), (N'50', NULL, N'1262935906522304512', N'0', N'0', N'0', N'0', N'0'), (N'53', NULL, N'1263074419073593344', N'0', N'0', N'0', N'0', N'0'), (N'54', NULL, N'1263075249394790400', N'0', N'0', N'0', N'0', N'0'), (N'55', NULL, N'1263075593499684864', N'0', N'0', N'0', N'0', N'0'), (N'57', NULL, N'1263101898440146944', N'0', N'0', N'0', N'0', N'0'), (N'58', NULL, N'1263303878648569856', N'0', N'0', N'0', N'0', N'0'), (N'59', NULL, N'1263304204797648896', N'0', N'0', N'0', N'0', N'0'), (N'60', NULL, N'1263304872891555840', N'0', N'0', N'0', N'0', N'0'), (N'61', NULL, N'1263305106250047488', N'0', N'0', N'0', N'0', N'0'), (N'62', NULL, N'1263305244594970624', N'0', N'0', N'0', N'0', N'0'), (N'63', NULL, N'1263305430536855552', N'0', N'0', N'0', N'0', N'0'), (N'64', NULL, N'1263639172959174656', N'0', N'0', N'0', N'0', N'0'), (N'65', NULL, N'1264799968944640000', N'0', N'0', N'0', N'0', N'0'), (N'66', NULL, N'1264800070161584128', N'0', N'0', N'0', N'0', N'0'), (N'68', NULL, N'1267360794414161920', N'0', N'0', N'0', N'0', N'0'), (N'69', NULL, N'1267383367629807616', N'0', N'0', N'0', N'0', N'0'), (N'70', NULL, N'1267817055527632896', N'0', N'0', N'0', N'0', N'0'), (N'71', NULL, N'1267817221286526976', N'0', N'0', N'0', N'0', N'0'), (N'72', NULL, N'1268893687085518848', N'0', N'0', N'0', N'0', N'0'), (N'97', NULL, N'1288657613998579712', N'1000', N'0', N'0', N'0', N'0'), (N'98', NULL, N'1288657941770854400', N'1000', N'0', N'0', N'0', N'0'), (N'99', NULL, N'1288658134067109888', N'1000', N'0', N'0', N'0', N'0'), (N'100', NULL, N'1288658305156964352', N'1000', N'0', N'0', N'0', N'0'), (N'101', NULL, N'1288658491216289792', N'1000', N'0', N'0', N'0', N'0'), (N'102', NULL, N'1288658638302142464', N'1000', N'0', N'0', N'0', N'0'), (N'103', NULL, N'1288658791784308736', N'1000', N'0', N'0', N'0', N'0'), (N'104', NULL, N'1290849478956199936', N'0', N'0', N'0', N'0', N'0'), (N'105', NULL, N'1290849628051124224', N'0', N'0', N'0', N'0', N'0'), (N'106', NULL, N'1290849798553776128', N'0', N'0', N'0', N'0', N'0'), (N'108', NULL, N'1291259822512693248', N'0', N'0', N'0', N'0', N'0'), (N'117', NULL, N'1293470838745821184', N'0', N'0', N'0', N'0', N'0'), (N'118', NULL, N'1293471661785706496', N'0', N'0', N'0', N'0', N'0'), (N'119', NULL, N'1293472678392721408', N'0', N'0', N'0', N'0', N'0'), (N'120', NULL, N'1293472857510473728', N'0', N'0', N'0', N'0', N'0'), (N'121', NULL, N'1299273336009359360', N'0', N'0', N'0', N'0', N'0'), (N'122', NULL, N'1299273436282585088', N'0', N'0', N'0', N'0', N'0'), (N'123', NULL, N'1299273618470567936', N'0', N'0', N'0', N'0', N'0'), (N'124', NULL, N'1299273770182737920', N'0', N'0', N'0', N'0', N'0'), (N'125', NULL, N'1299273978023084032', N'0', N'0', N'0', N'0', N'0'), (N'126', NULL, N'1299274123225694208', N'0', N'0', N'0', N'0', N'0'), (N'127', NULL, N'1299274222299348992', N'0', N'0', N'0', N'0', N'0'), (N'128', NULL, N'1304238876758495232', N'0', N'0', N'0', N'0', N'0'), (N'129', NULL, N'1304678610343383040', N'0', N'0', N'0', N'0', N'0'), (N'130', NULL, N'1304679169305694208', N'0', N'0', N'0', N'0', N'0'), (N'131', NULL, N'1310460417141817344', N'0', N'0', N'0', N'0', N'0'), (N'132', NULL, N'1310502391475519488', N'0', N'0', N'0', N'0', N'0'), (N'133', NULL, N'1310515546943569920', N'0', N'0', N'0', N'0', N'0'), (N'134', NULL, N'1310515735292985344', N'0', N'0', N'0', N'0', N'0'), (N'135', NULL, N'1316628769783480320', N'0', N'0', N'0', N'0', N'0'), (N'136', NULL, N'1316628940663619584', N'0', N'0', N'0', N'0', N'0'), (N'137', NULL, N'1316629112428756992', N'0', N'0', N'0', N'0', N'0'), (N'138', NULL, N'1316652047017246720', N'0', N'0', N'0', N'0', N'0'), (N'139', NULL, N'1316913899996737536', N'0', N'0', N'0', N'0', N'0'), (N'140', NULL, N'1319200951383199744', N'0', N'0', N'0', N'0', N'0'), (N'141', NULL, N'1319221929807024128', N'0', N'0', N'0', N'0', N'0'), (N'142', NULL, N'1319554431134306304', N'0', N'0', N'0', N'0', N'0'), (N'143', NULL, N'1319554550458060800', N'0', N'0', N'0', N'0', N'0'), (N'144', NULL, N'1319554948434595840', N'0', N'0', N'0', N'0', N'0'), (N'145', NULL, N'1319555067183730688', N'0', N'0', N'0', N'0', N'0'), (N'146', NULL, N'1319555230765780992', N'0', N'0', N'0', N'0', N'0'), (N'147', NULL, N'1319555333790470144', N'0', N'0', N'0', N'0', N'0'), (N'148', NULL, N'1321001932510203904', N'0', N'0', N'0', N'0', N'0'), (N'149', NULL, N'1321002059803136000', N'0', N'0', N'0', N'0', N'0'), (N'150', NULL, N'1321002256440496128', N'0', N'0', N'0', N'0', N'0'), (N'151', NULL, N'1321002350686507008', N'0', N'0', N'0', N'0', N'0'), (N'152', NULL, N'1322190027988525056', N'0', N'0', N'0', N'0', N'0'), (N'153', NULL, N'1322452079688458240', N'0', N'0', N'0', N'0', N'0'), (N'154', NULL, N'1322452183929495552', N'0', N'0', N'0', N'0', N'0'), (N'155', NULL, N'1322452308651319296', N'0', N'0', N'0', N'0', N'0'), (N'156', NULL, N'1322452858176446464', N'0', N'0', N'0', N'0', N'0'), (N'157', NULL, N'1322452989235863552', N'0', N'0', N'0', N'0', N'0'), (N'158', NULL, N'1322453089655889920', N'0', N'0', N'0', N'0', N'0'), (N'159', NULL, N'1329706860249804800', N'0', N'0', N'0', N'0', N'0'), (N'160', NULL, N'1329707002411544576', N'0', N'0', N'0', N'0', N'0'), (N'161', NULL, N'1329708512277098496', N'0', N'0', N'0', N'0', N'0'), (N'162', NULL, N'1329708625917571072', N'0', N'0', N'0', N'0', N'0'), (N'163', NULL, N'1335049839287357440', N'0', N'0', N'0', N'0', N'0'), (N'164', NULL, N'1335050034221830144', N'0', N'0', N'0', N'0', N'0'), (N'165', NULL, N'1335050145899368448', N'0', N'0', N'0', N'0', N'0'), (N'166', NULL, N'1335050283434790912', N'0', N'0', N'0', N'0', N'0'), (N'167', NULL, N'1335050381770248192', N'0', N'0', N'0', N'0', N'0'), (N'168', NULL, N'1335050520941449216', N'0', N'0', N'0', N'0', N'0'), (N'169', NULL, N'1335050615829188608', N'0', N'0', N'0', N'0', N'0'), (N'170', NULL, N'1335111798720450560', N'0', N'0', N'0', N'0', N'0'), (N'171', NULL, N'1335118541370314752', N'0', N'0', N'0', N'0', N'0'), (N'172', NULL, N'1335118660417245184', N'0', N'0', N'0', N'0', N'0'), (N'173', NULL, N'1335118782727344128', N'0', N'0', N'0', N'0', N'0'), (N'174', NULL, N'1335118903200337920', N'0', N'0', N'0', N'0', N'0'), (N'175', NULL, N'1336230645078921216', N'0', N'0', N'0', N'0', N'0'), (N'176', NULL, N'1337314809113722880', N'0', N'0', N'0', N'0', N'0'), (N'177', NULL, N'1337314938973569024', N'0', N'0', N'0', N'0', N'0'), (N'178', NULL, N'1340961907637243904', N'0', N'0', N'0', N'0', N'0'), (N'179', NULL, N'1341652247554379776', N'0', N'0', N'0', N'0', N'0'), (N'180', NULL, N'1341652385555369984', N'0', N'0', N'0', N'0', N'0'), (N'181', NULL, N'1342457939827552256', N'0', N'0', N'0', N'0', N'0'), (N'182', NULL, N'1342458050112581632', N'0', N'0', N'0', N'0', N'0'), (N'183', NULL, N'1363382062055915520', N'0', N'0', N'0', N'0', N'0'), (N'184', NULL, N'1363382298501414912', N'0', N'0', N'0', N'0', N'0'), (N'185', NULL, N'1368854800347848704', N'0', N'0', N'0', N'0', N'0'), (N'186', NULL, N'1368855936576413696', N'0', N'0', N'0', N'0', N'0'), (N'187', NULL, N'1368856295889854464', N'0', N'0', N'0', N'0', N'0'), (N'188', NULL, N'1368856703572008960', N'0', N'0', N'0', N'0', N'0'), (N'189', NULL, N'1368856819242524672', N'0', N'0', N'0', N'0', N'0'), (N'190', NULL, N'1368856927887581184', N'0', N'0', N'0', N'0', N'0'), (N'191', NULL, N'1368857128383700992', N'0', N'0', N'0', N'0', N'0'), (N'192', NULL, N'1369560306297233408', N'0', N'0', N'0', N'0', N'0'), (N'193', NULL, N'1369560450472239104', N'0', N'0', N'0', N'0', N'0')
GO
COMMIT
@@ -366,7 +366,7 @@ GO
BEGIN TRANSACTION
GO
-INSERT INTO [apigateway].[appapigatewayqosoptions] VALUES (N'1', N'1260841964962947072', NULL, N'60', N'60000', N'30000'), (N'4', NULL, N'1261299170387169280', N'60', N'60000', N'30000'), (N'5', NULL, N'1261585859064872960', N'60', N'60000', N'30000'), (N'6', NULL, N'1261586605810368512', N'60', N'60000', N'30000'), (N'7', NULL, N'1261587558609436672', N'60', N'60000', N'30000'), (N'8', NULL, N'1261588213298348032', N'60', N'60000', N'30000'), (N'9', NULL, N'1261588367619375104', N'60', N'60000', N'30000'), (N'10', NULL, N'1261588628450557952', N'60', N'60000', N'30000'), (N'11', NULL, N'1261588881564221440', N'60', N'60000', N'30000'), (N'12', NULL, N'1261588983053795328', N'60', N'60000', N'30000'), (N'13', NULL, N'1261589139039961088', N'60', N'60000', N'30000'), (N'14', NULL, N'1261589197483393024', N'60', N'60000', N'30000'), (N'15', NULL, N'1261589278857084928', N'60', N'60000', N'30000'), (N'16', NULL, N'1261589420356124672', N'60', N'60000', N'30000'), (N'17', NULL, N'1261589960393736192', N'60', N'60000', N'30000'), (N'18', NULL, N'1261606600242085888', NULL, NULL, NULL), (N'19', NULL, N'1261606689601732608', NULL, NULL, NULL), (N'22', NULL, N'1262220447629058048', N'60', N'60000', N'30000'), (N'23', NULL, N'1262230734939758592', N'60', N'60000', N'30000'), (N'24', NULL, N'1262296916350869504', N'60', N'60000', N'30000'), (N'25', NULL, N'1262632376348594176', N'50', N'60000', N'30000'), (N'26', NULL, N'1262632791869902848', N'50', N'60000', N'30000'), (N'29', NULL, N'1262660336921235456', N'50', N'60000', N'30000'), (N'30', NULL, N'1262660528277966848', N'50', N'60000', N'30000'), (N'31', NULL, N'1262660706875625472', N'50', N'60000', N'30000'), (N'32', NULL, N'1262660966393991168', N'50', N'60000', N'30000'), (N'33', NULL, N'1262661109474283520', N'50', N'60000', N'30000'), (N'34', NULL, N'1262663888804663296', N'50', N'60000', N'30000'), (N'35', NULL, N'1262664024096133120', N'50', N'60000', N'30000'), (N'36', NULL, N'1262664186252120064', N'50', N'60000', N'30000'), (N'37', NULL, N'1262664357044178944', N'50', N'60000', N'30000'), (N'38', NULL, N'1262664632928718848', N'50', N'60000', N'30000'), (N'39', NULL, N'1262664751409418240', N'50', N'60000', N'30000'), (N'40', NULL, N'1262664871274237952', N'50', N'60000', N'30000'), (N'41', NULL, N'1262665026111164416', N'50', N'60000', N'30000'), (N'42', NULL, N'1262665159905267712', N'50', N'60000', N'30000'), (N'43', NULL, N'1262665329829105664', N'50', N'60000', N'30000'), (N'44', NULL, N'1262665456471920640', N'50', N'60000', N'30000'), (N'45', NULL, N'1262665628165754880', N'50', N'60000', N'30000'), (N'46', NULL, N'1262666172682883072', N'50', N'60000', N'30000'), (N'48', NULL, N'1262723402331885568', N'50', N'60000', N'30000'), (N'49', NULL, N'1262935771746734080', N'50', N'60000', N'30000'), (N'50', NULL, N'1262935906522304512', N'50', N'60000', N'30000'), (N'53', NULL, N'1263074419073593344', N'50', N'60000', N'30000'), (N'54', NULL, N'1263075249394790400', N'50', N'60000', N'30000'), (N'55', NULL, N'1263075593499684864', N'50', N'60000', N'30000'), (N'57', NULL, N'1263101898440146944', N'50', N'60000', N'120000'), (N'58', NULL, N'1263303878648569856', N'50', N'60000', N'30000'), (N'59', NULL, N'1263304204797648896', N'50', N'60000', N'120000'), (N'60', NULL, N'1263304872891555840', N'50', N'60000', N'30000'), (N'61', NULL, N'1263305106250047488', N'50', N'60000', N'30000'), (N'62', NULL, N'1263305244594970624', N'50', N'60000', N'30000'), (N'63', NULL, N'1263305430536855552', N'50', N'60000', N'30000'), (N'64', NULL, N'1263639172959174656', N'50', N'60000', N'30000'), (N'65', NULL, N'1264799968944640000', N'50', N'60000', N'30000'), (N'66', NULL, N'1264800070161584128', N'50', N'60000', N'30000'), (N'68', NULL, N'1267360794414161920', N'50', N'60000', N'30000'), (N'69', NULL, N'1267383367629807616', N'50', N'60000', N'30000'), (N'70', NULL, N'1267817055527632896', N'50', N'60000', N'30000'), (N'71', NULL, N'1267817221286526976', N'50', N'60000', N'30000'), (N'72', NULL, N'1268893687085518848', N'50', N'60000', N'30000'), (N'97', NULL, N'1288657613998579712', N'50', N'60000', N'30000'), (N'98', NULL, N'1288657941770854400', N'50', N'60000', N'30000'), (N'99', NULL, N'1288658134067109888', N'50', N'60000', N'30000'), (N'100', NULL, N'1288658305156964352', N'50', N'60000', N'30000'), (N'101', NULL, N'1288658491216289792', N'50', N'60000', N'30000'), (N'102', NULL, N'1288658638302142464', N'50', N'60000', N'30000'), (N'103', NULL, N'1288658791784308736', N'50', N'60000', N'30000'), (N'104', NULL, N'1290849478956199936', N'50', N'60000', N'30000'), (N'105', NULL, N'1290849628051124224', N'50', N'60000', N'30000'), (N'106', NULL, N'1290849798553776128', N'50', N'60000', N'30000'), (N'108', NULL, N'1291259822512693248', N'50', N'60000', N'30000'), (N'109', NULL, N'1292620505149145088', N'50', N'60000', N'30000'), (N'110', NULL, N'1292620665505775616', N'50', N'60000', N'30000'), (N'111', NULL, N'1292620843398791168', N'50', N'60000', N'1200000'), (N'112', NULL, N'1292621027574874112', N'50', N'60000', N'30000'), (N'113', NULL, N'1292621363161137152', N'50', N'60000', N'30000'), (N'114', NULL, N'1292621494837116928', N'50', N'60000', N'30000'), (N'115', NULL, N'1292621629260365824', N'50', N'60000', N'30000'), (N'116', NULL, N'1292622526073864192', N'50', N'60000', N'30000'), (N'117', NULL, N'1293470838745821184', N'50', N'60000', N'30000'), (N'118', NULL, N'1293471661785706496', N'50', N'60000', N'30000'), (N'119', NULL, N'1293472678392721408', N'50', N'60000', N'30000'), (N'120', NULL, N'1293472857510473728', N'50', N'60000', N'30000'), (N'121', NULL, N'1299273336009359360', N'50', N'60000', N'30000'), (N'122', NULL, N'1299273436282585088', N'50', N'60000', N'30000'), (N'123', NULL, N'1299273618470567936', N'50', N'60000', N'30000'), (N'124', NULL, N'1299273770182737920', N'50', N'60000', N'30000'), (N'125', NULL, N'1299273978023084032', N'50', N'60000', N'30000'), (N'126', NULL, N'1299274123225694208', N'50', N'60000', N'30000'), (N'127', NULL, N'1299274222299348992', N'50', N'60000', N'30000'), (N'128', NULL, N'1304238876758495232', N'50', N'60000', N'30000'), (N'129', NULL, N'1304678610343383040', N'50', N'60000', N'30000'), (N'130', NULL, N'1304679169305694208', N'50', N'60000', N'30000'), (N'131', NULL, N'1310460417141817344', N'50', N'60000', N'30000'), (N'132', NULL, N'1310502391475519488', N'50', N'60000', N'30000'), (N'133', NULL, N'1310515546943569920', N'50', N'60000', N'30000'), (N'134', NULL, N'1310515735292985344', N'50', N'60000', N'30000'), (N'135', NULL, N'1316628769783480320', N'50', N'60000', N'30000'), (N'136', NULL, N'1316628940663619584', N'50', N'60000', N'30000'), (N'137', NULL, N'1316629112428756992', N'50', N'60000', N'30000'), (N'138', NULL, N'1316652047017246720', N'50', N'60000', N'30000'), (N'139', NULL, N'1316913899996737536', N'50', N'60000', N'30000'), (N'140', NULL, N'1319200951383199744', N'50', N'60000', N'30000'), (N'141', NULL, N'1319221929807024128', N'50', N'60000', N'30000'), (N'142', NULL, N'1319554431134306304', N'50', N'60000', N'30000'), (N'143', NULL, N'1319554550458060800', N'50', N'60000', N'30000'), (N'144', NULL, N'1319554948434595840', N'50', N'60000', N'30000'), (N'145', NULL, N'1319555067183730688', N'50', N'60000', N'30000'), (N'146', NULL, N'1319555230765780992', N'50', N'60000', N'30000'), (N'147', NULL, N'1319555333790470144', N'50', N'60000', N'30000'), (N'148', NULL, N'1321001932510203904', N'50', N'60000', N'30000'), (N'149', NULL, N'1321002059803136000', N'50', N'60000', N'30000'), (N'150', NULL, N'1321002256440496128', N'50', N'60000', N'30000'), (N'151', NULL, N'1321002350686507008', N'50', N'60000', N'30000'), (N'152', NULL, N'1322190027988525056', N'50', N'60000', N'30000'), (N'153', NULL, N'1322452079688458240', N'50', N'60000', N'30000'), (N'154', NULL, N'1322452183929495552', N'50', N'60000', N'30000'), (N'155', NULL, N'1322452308651319296', N'50', N'60000', N'30000'), (N'156', NULL, N'1322452858176446464', N'50', N'60000', N'30000'), (N'157', NULL, N'1322452989235863552', N'50', N'60000', N'30000'), (N'158', NULL, N'1322453089655889920', N'50', N'60000', N'30000'), (N'159', NULL, N'1329706860249804800', N'50', N'60000', N'30000'), (N'160', NULL, N'1329707002411544576', N'50', N'60000', N'30000'), (N'161', NULL, N'1329708512277098496', N'50', N'60000', N'30000'), (N'162', NULL, N'1329708625917571072', N'50', N'60000', N'30000'), (N'163', NULL, N'1335049839287357440', N'50', N'60000', N'30000'), (N'164', NULL, N'1335050034221830144', N'50', N'60000', N'30000'), (N'165', NULL, N'1335050145899368448', N'50', N'60000', N'30000'), (N'166', NULL, N'1335050283434790912', N'50', N'60000', N'30000'), (N'167', NULL, N'1335050381770248192', N'50', N'60000', N'30000'), (N'168', NULL, N'1335050520941449216', N'50', N'60000', N'30000'), (N'169', NULL, N'1335050615829188608', N'50', N'60000', N'30000'), (N'170', NULL, N'1335111798720450560', N'50', N'60000', N'30000'), (N'171', NULL, N'1335118541370314752', N'50', N'60000', N'30000'), (N'172', NULL, N'1335118660417245184', N'50', N'60000', N'30000'), (N'173', NULL, N'1335118782727344128', N'50', N'60000', N'30000'), (N'174', NULL, N'1335118903200337920', N'50', N'60000', N'30000'), (N'175', NULL, N'1336230645078921216', N'50', N'60000', N'30000'), (N'176', NULL, N'1337314809113722880', N'50', N'60000', N'30000'), (N'177', NULL, N'1337314938973569024', N'50', N'60000', N'30000'), (N'178', NULL, N'1340961907637243904', N'50', N'60000', N'30000')
+INSERT INTO [apigateway].[appapigatewayqosoptions] VALUES (N'1', N'1260841964962947072', NULL, N'60', N'60000', N'30000'), (N'4', NULL, N'1261299170387169280', N'60', N'60000', N'30000'), (N'5', NULL, N'1261585859064872960', N'60', N'60000', N'30000'), (N'6', NULL, N'1261586605810368512', N'60', N'60000', N'30000'), (N'7', NULL, N'1261587558609436672', N'60', N'60000', N'30000'), (N'8', NULL, N'1261588213298348032', N'60', N'60000', N'30000'), (N'9', NULL, N'1261588367619375104', N'60', N'60000', N'30000'), (N'10', NULL, N'1261588628450557952', N'60', N'60000', N'30000'), (N'11', NULL, N'1261588881564221440', N'60', N'60000', N'30000'), (N'12', NULL, N'1261588983053795328', N'60', N'60000', N'30000'), (N'13', NULL, N'1261589139039961088', N'60', N'60000', N'30000'), (N'14', NULL, N'1261589197483393024', N'60', N'60000', N'30000'), (N'15', NULL, N'1261589278857084928', N'60', N'60000', N'30000'), (N'16', NULL, N'1261589420356124672', N'60', N'60000', N'30000'), (N'17', NULL, N'1261589960393736192', N'60', N'60000', N'30000'), (N'18', NULL, N'1261606600242085888', NULL, NULL, NULL), (N'19', NULL, N'1261606689601732608', NULL, NULL, NULL), (N'22', NULL, N'1262220447629058048', N'60', N'60000', N'30000'), (N'23', NULL, N'1262230734939758592', N'60', N'60000', N'30000'), (N'24', NULL, N'1262296916350869504', N'60', N'60000', N'30000'), (N'25', NULL, N'1262632376348594176', N'50', N'60000', N'30000'), (N'26', NULL, N'1262632791869902848', N'50', N'60000', N'30000'), (N'29', NULL, N'1262660336921235456', N'50', N'60000', N'30000'), (N'30', NULL, N'1262660528277966848', N'50', N'60000', N'30000'), (N'31', NULL, N'1262660706875625472', N'50', N'60000', N'30000'), (N'32', NULL, N'1262660966393991168', N'50', N'60000', N'30000'), (N'33', NULL, N'1262661109474283520', N'50', N'60000', N'30000'), (N'34', NULL, N'1262663888804663296', N'50', N'60000', N'30000'), (N'35', NULL, N'1262664024096133120', N'50', N'60000', N'30000'), (N'36', NULL, N'1262664186252120064', N'50', N'60000', N'30000'), (N'37', NULL, N'1262664357044178944', N'50', N'60000', N'30000'), (N'38', NULL, N'1262664632928718848', N'50', N'60000', N'30000'), (N'39', NULL, N'1262664751409418240', N'50', N'60000', N'30000'), (N'40', NULL, N'1262664871274237952', N'50', N'60000', N'30000'), (N'41', NULL, N'1262665026111164416', N'50', N'60000', N'30000'), (N'42', NULL, N'1262665159905267712', N'50', N'60000', N'30000'), (N'43', NULL, N'1262665329829105664', N'50', N'60000', N'30000'), (N'44', NULL, N'1262665456471920640', N'50', N'60000', N'30000'), (N'45', NULL, N'1262665628165754880', N'50', N'60000', N'30000'), (N'46', NULL, N'1262666172682883072', N'50', N'60000', N'30000'), (N'48', NULL, N'1262723402331885568', N'50', N'60000', N'30000'), (N'49', NULL, N'1262935771746734080', N'50', N'60000', N'30000'), (N'50', NULL, N'1262935906522304512', N'50', N'60000', N'30000'), (N'53', NULL, N'1263074419073593344', N'50', N'60000', N'30000'), (N'54', NULL, N'1263075249394790400', N'50', N'60000', N'30000'), (N'55', NULL, N'1263075593499684864', N'50', N'60000', N'30000'), (N'57', NULL, N'1263101898440146944', N'50', N'60000', N'120000'), (N'58', NULL, N'1263303878648569856', N'50', N'60000', N'30000'), (N'59', NULL, N'1263304204797648896', N'50', N'60000', N'120000'), (N'60', NULL, N'1263304872891555840', N'50', N'60000', N'30000'), (N'61', NULL, N'1263305106250047488', N'50', N'60000', N'30000'), (N'62', NULL, N'1263305244594970624', N'50', N'60000', N'30000'), (N'63', NULL, N'1263305430536855552', N'50', N'60000', N'30000'), (N'64', NULL, N'1263639172959174656', N'50', N'60000', N'30000'), (N'65', NULL, N'1264799968944640000', N'50', N'60000', N'30000'), (N'66', NULL, N'1264800070161584128', N'50', N'60000', N'30000'), (N'68', NULL, N'1267360794414161920', N'50', N'60000', N'30000'), (N'69', NULL, N'1267383367629807616', N'50', N'60000', N'30000'), (N'70', NULL, N'1267817055527632896', N'50', N'60000', N'30000'), (N'71', NULL, N'1267817221286526976', N'50', N'60000', N'30000'), (N'72', NULL, N'1268893687085518848', N'50', N'60000', N'30000'), (N'97', NULL, N'1288657613998579712', N'50', N'60000', N'30000'), (N'98', NULL, N'1288657941770854400', N'50', N'60000', N'30000'), (N'99', NULL, N'1288658134067109888', N'50', N'60000', N'30000'), (N'100', NULL, N'1288658305156964352', N'50', N'60000', N'30000'), (N'101', NULL, N'1288658491216289792', N'50', N'60000', N'30000'), (N'102', NULL, N'1288658638302142464', N'50', N'60000', N'30000'), (N'103', NULL, N'1288658791784308736', N'50', N'60000', N'30000'), (N'104', NULL, N'1290849478956199936', N'50', N'60000', N'30000'), (N'105', NULL, N'1290849628051124224', N'50', N'60000', N'30000'), (N'106', NULL, N'1290849798553776128', N'50', N'60000', N'30000'), (N'108', NULL, N'1291259822512693248', N'50', N'60000', N'30000'), (N'117', NULL, N'1293470838745821184', N'50', N'60000', N'30000'), (N'118', NULL, N'1293471661785706496', N'50', N'60000', N'30000'), (N'119', NULL, N'1293472678392721408', N'50', N'60000', N'30000'), (N'120', NULL, N'1293472857510473728', N'50', N'60000', N'30000'), (N'121', NULL, N'1299273336009359360', N'50', N'60000', N'30000'), (N'122', NULL, N'1299273436282585088', N'50', N'60000', N'30000'), (N'123', NULL, N'1299273618470567936', N'50', N'60000', N'30000'), (N'124', NULL, N'1299273770182737920', N'50', N'60000', N'30000'), (N'125', NULL, N'1299273978023084032', N'50', N'60000', N'30000'), (N'126', NULL, N'1299274123225694208', N'50', N'60000', N'30000'), (N'127', NULL, N'1299274222299348992', N'50', N'60000', N'30000'), (N'128', NULL, N'1304238876758495232', N'50', N'60000', N'30000'), (N'129', NULL, N'1304678610343383040', N'50', N'60000', N'30000'), (N'130', NULL, N'1304679169305694208', N'50', N'60000', N'30000'), (N'131', NULL, N'1310460417141817344', N'50', N'60000', N'30000'), (N'132', NULL, N'1310502391475519488', N'50', N'60000', N'30000'), (N'133', NULL, N'1310515546943569920', N'50', N'60000', N'30000'), (N'134', NULL, N'1310515735292985344', N'50', N'60000', N'30000'), (N'135', NULL, N'1316628769783480320', N'50', N'60000', N'30000'), (N'136', NULL, N'1316628940663619584', N'50', N'60000', N'30000'), (N'137', NULL, N'1316629112428756992', N'50', N'60000', N'30000'), (N'138', NULL, N'1316652047017246720', N'50', N'60000', N'30000'), (N'139', NULL, N'1316913899996737536', N'50', N'60000', N'30000'), (N'140', NULL, N'1319200951383199744', N'50', N'60000', N'30000'), (N'141', NULL, N'1319221929807024128', N'50', N'60000', N'30000'), (N'142', NULL, N'1319554431134306304', N'50', N'60000', N'30000'), (N'143', NULL, N'1319554550458060800', N'50', N'60000', N'30000'), (N'144', NULL, N'1319554948434595840', N'50', N'60000', N'30000'), (N'145', NULL, N'1319555067183730688', N'50', N'60000', N'30000'), (N'146', NULL, N'1319555230765780992', N'50', N'60000', N'30000'), (N'147', NULL, N'1319555333790470144', N'50', N'60000', N'30000'), (N'148', NULL, N'1321001932510203904', N'50', N'60000', N'30000'), (N'149', NULL, N'1321002059803136000', N'50', N'60000', N'30000'), (N'150', NULL, N'1321002256440496128', N'50', N'60000', N'30000'), (N'151', NULL, N'1321002350686507008', N'50', N'60000', N'30000'), (N'152', NULL, N'1322190027988525056', N'50', N'60000', N'30000'), (N'153', NULL, N'1322452079688458240', N'50', N'60000', N'30000'), (N'154', NULL, N'1322452183929495552', N'50', N'60000', N'30000'), (N'155', NULL, N'1322452308651319296', N'50', N'60000', N'30000'), (N'156', NULL, N'1322452858176446464', N'50', N'60000', N'30000'), (N'157', NULL, N'1322452989235863552', N'50', N'60000', N'30000'), (N'158', NULL, N'1322453089655889920', N'50', N'60000', N'30000'), (N'159', NULL, N'1329706860249804800', N'50', N'60000', N'30000'), (N'160', NULL, N'1329707002411544576', N'50', N'60000', N'30000'), (N'161', NULL, N'1329708512277098496', N'50', N'60000', N'30000'), (N'162', NULL, N'1329708625917571072', N'50', N'60000', N'30000'), (N'163', NULL, N'1335049839287357440', N'50', N'60000', N'30000'), (N'164', NULL, N'1335050034221830144', N'50', N'60000', N'30000'), (N'165', NULL, N'1335050145899368448', N'50', N'60000', N'30000'), (N'166', NULL, N'1335050283434790912', N'50', N'60000', N'30000'), (N'167', NULL, N'1335050381770248192', N'50', N'60000', N'30000'), (N'168', NULL, N'1335050520941449216', N'50', N'60000', N'30000'), (N'169', NULL, N'1335050615829188608', N'50', N'60000', N'30000'), (N'170', NULL, N'1335111798720450560', N'50', N'60000', N'30000'), (N'171', NULL, N'1335118541370314752', N'50', N'60000', N'30000'), (N'172', NULL, N'1335118660417245184', N'50', N'60000', N'30000'), (N'173', NULL, N'1335118782727344128', N'50', N'60000', N'30000'), (N'174', NULL, N'1335118903200337920', N'50', N'60000', N'30000'), (N'175', NULL, N'1336230645078921216', N'50', N'60000', N'30000'), (N'176', NULL, N'1337314809113722880', N'50', N'60000', N'30000'), (N'177', NULL, N'1337314938973569024', N'50', N'60000', N'30000'), (N'178', NULL, N'1340961907637243904', N'50', N'60000', N'30000'), (N'179', NULL, N'1341652247554379776', N'50', N'60000', N'30000'), (N'180', NULL, N'1341652385555369984', N'50', N'60000', N'30000'), (N'181', NULL, N'1342457939827552256', N'50', N'60000', N'30000'), (N'182', NULL, N'1342458050112581632', N'50', N'60000', N'30000'), (N'183', NULL, N'1363382062055915520', N'50', N'60000', N'30000'), (N'184', NULL, N'1363382298501414912', N'50', N'60000', N'30000'), (N'185', NULL, N'1368854800347848704', N'50', N'60000', N'30000'), (N'186', NULL, N'1368855936576413696', N'50', N'60000', N'30000'), (N'187', NULL, N'1368856295889854464', N'50', N'60000', N'30000'), (N'188', NULL, N'1368856703572008960', N'50', N'60000', N'30000'), (N'189', NULL, N'1368856819242524672', N'50', N'60000', N'30000'), (N'190', NULL, N'1368856927887581184', N'50', N'60000', N'30000'), (N'191', NULL, N'1368857128383700992', N'50', N'60000', N'30000'), (N'192', NULL, N'1369560306297233408', N'50', N'60000', N'30000'), (N'193', NULL, N'1369560450472239104', N'50', N'60000', N'30000')
GO
COMMIT
@@ -431,7 +431,7 @@ GO
BEGIN TRANSACTION
GO
-INSERT INTO [apigateway].[appapigatewayratelimitrule] VALUES (N'3', N'1261299170387169280', NULL, N'', N'0', NULL, NULL, NULL), (N'4', N'1261585859064872960', NULL, N'', N'0', NULL, NULL, NULL), (N'5', N'1261586605810368512', NULL, N'', N'0', NULL, NULL, NULL), (N'6', N'1261587558609436672', NULL, N'', N'0', NULL, NULL, NULL), (N'7', N'1261588213298348032', NULL, N'', N'0', NULL, NULL, NULL), (N'8', N'1261588367619375104', NULL, N'', N'0', NULL, NULL, NULL), (N'9', N'1261588628450557952', NULL, N'', N'0', NULL, NULL, NULL), (N'10', N'1261588881564221440', NULL, N'', N'0', NULL, NULL, NULL), (N'11', N'1261588983053795328', NULL, N'', N'0', NULL, NULL, NULL), (N'12', N'1261589139039961088', NULL, N'', N'0', NULL, NULL, NULL), (N'13', N'1261589197483393024', NULL, N'', N'0', NULL, NULL, NULL), (N'14', N'1261589278857084928', NULL, N'', N'0', NULL, NULL, NULL), (N'15', N'1261589420356124672', NULL, N'', N'0', NULL, NULL, NULL), (N'16', N'1261589960393736192', NULL, N'', N'0', NULL, NULL, NULL), (N'17', N'1261606600242085888', NULL, N'', N'0', NULL, NULL, NULL), (N'18', N'1261606689601732608', NULL, N'', N'0', NULL, NULL, NULL), (N'21', N'1262220447629058048', NULL, N'', N'0', NULL, NULL, NULL), (N'22', N'1262230734939758592', NULL, N'', N'0', NULL, NULL, NULL), (N'23', N'1262296916350869504', NULL, N'', N'0', NULL, NULL, NULL), (N'24', N'1262632376348594176', NULL, N'', N'0', NULL, NULL, NULL), (N'25', N'1262632791869902848', NULL, N'', N'0', NULL, NULL, NULL), (N'28', N'1262660336921235456', NULL, N'', N'0', NULL, NULL, NULL), (N'29', N'1262660528277966848', NULL, N'', N'0', NULL, NULL, NULL), (N'30', N'1262660706875625472', NULL, N'', N'0', NULL, NULL, NULL), (N'31', N'1262660966393991168', NULL, N'', N'0', NULL, NULL, NULL), (N'32', N'1262661109474283520', NULL, N'', N'0', NULL, NULL, NULL), (N'33', N'1262663888804663296', NULL, N'', N'0', NULL, NULL, NULL), (N'34', N'1262664024096133120', NULL, N'', N'0', NULL, NULL, NULL), (N'35', N'1262664186252120064', NULL, N'', N'0', NULL, NULL, NULL), (N'36', N'1262664357044178944', NULL, N'', N'0', NULL, NULL, NULL), (N'37', N'1262664632928718848', NULL, N'', N'0', NULL, NULL, NULL), (N'38', N'1262664751409418240', NULL, N'', N'0', NULL, NULL, NULL), (N'39', N'1262664871274237952', NULL, N'', N'0', NULL, NULL, NULL), (N'40', N'1262665026111164416', NULL, N'', N'0', NULL, NULL, NULL), (N'41', N'1262665159905267712', NULL, N'', N'0', NULL, NULL, NULL), (N'42', N'1262665329829105664', NULL, N'', N'0', NULL, NULL, NULL), (N'43', N'1262665456471920640', NULL, N'', N'0', NULL, NULL, NULL), (N'44', N'1262665628165754880', NULL, N'', N'0', NULL, NULL, NULL), (N'45', N'1262666172682883072', NULL, N'', N'0', NULL, NULL, NULL), (N'47', N'1262723402331885568', NULL, N'', N'0', NULL, NULL, NULL), (N'48', N'1262935771746734080', NULL, N'', N'0', NULL, NULL, NULL), (N'49', N'1262935906522304512', NULL, N'', N'0', NULL, NULL, NULL), (N'52', N'1263074419073593344', NULL, N'', N'0', NULL, NULL, NULL), (N'53', N'1263075249394790400', NULL, N'', N'0', NULL, NULL, NULL), (N'54', N'1263075593499684864', NULL, N'', N'0', NULL, NULL, NULL), (N'56', N'1263101898440146944', NULL, N'', N'0', NULL, NULL, NULL), (N'57', N'1263303878648569856', NULL, N'', N'0', NULL, NULL, NULL), (N'58', N'1263304204797648896', NULL, N'', N'0', NULL, NULL, NULL), (N'59', N'1263304872891555840', NULL, N'', N'0', NULL, NULL, NULL), (N'60', N'1263305106250047488', NULL, N'', N'0', NULL, NULL, NULL), (N'61', N'1263305244594970624', NULL, N'', N'0', NULL, NULL, NULL), (N'62', N'1263305430536855552', NULL, N'', N'0', NULL, NULL, NULL), (N'63', N'1263639172959174656', NULL, N'', N'0', NULL, NULL, NULL), (N'64', N'1264799968944640000', NULL, N'', N'0', NULL, NULL, NULL), (N'65', N'1264800070161584128', NULL, N'', N'0', NULL, NULL, NULL), (N'66', N'1267360794414161920', NULL, N'', N'0', NULL, NULL, NULL), (N'67', N'1267383367629807616', NULL, N'', N'0', NULL, NULL, NULL), (N'68', N'1267817055527632896', NULL, N'', N'0', NULL, NULL, NULL), (N'69', N'1267817221286526976', NULL, N'', N'0', NULL, NULL, NULL), (N'70', N'1268893687085518848', NULL, N'', N'0', NULL, NULL, NULL), (N'94', N'1288657613998579712', NULL, N'', N'1', N'1m', N'60', N'200'), (N'95', N'1288657941770854400', NULL, N'', N'0', NULL, NULL, NULL), (N'96', N'1288658134067109888', NULL, N'', N'0', NULL, NULL, NULL), (N'97', N'1288658305156964352', NULL, N'', N'0', NULL, NULL, NULL), (N'98', N'1288658491216289792', NULL, N'', N'0', NULL, NULL, NULL), (N'99', N'1288658638302142464', NULL, N'', N'0', NULL, NULL, NULL), (N'100', N'1288658791784308736', NULL, N'', N'0', NULL, NULL, NULL), (N'101', N'1290849478956199936', NULL, N'', N'0', NULL, NULL, NULL), (N'102', N'1290849628051124224', NULL, N'', N'0', NULL, NULL, NULL), (N'103', N'1290849798553776128', NULL, N'', N'0', NULL, NULL, NULL), (N'105', N'1291259822512693248', NULL, N'', N'0', NULL, NULL, NULL), (N'106', N'1292620505149145088', NULL, N'', N'0', NULL, NULL, NULL), (N'107', N'1292620665505775616', NULL, N'', N'0', NULL, NULL, NULL), (N'108', N'1292620843398791168', NULL, N'', N'0', NULL, NULL, NULL), (N'109', N'1292621027574874112', NULL, N'', N'0', NULL, NULL, NULL), (N'110', N'1292621363161137152', NULL, N'', N'0', NULL, NULL, NULL), (N'111', N'1292621494837116928', NULL, N'', N'0', NULL, NULL, NULL), (N'112', N'1292621629260365824', NULL, N'', N'0', NULL, NULL, NULL), (N'113', N'1292622526073864192', NULL, N'', N'0', NULL, NULL, NULL), (N'114', N'1293470838745821184', NULL, N'', N'0', NULL, NULL, NULL), (N'115', N'1293471661785706496', NULL, N'', N'0', NULL, NULL, NULL), (N'116', N'1293472678392721408', NULL, N'', N'0', NULL, NULL, NULL), (N'117', N'1293472857510473728', NULL, N'', N'0', NULL, NULL, NULL), (N'118', N'1299273336009359360', NULL, N'', N'0', NULL, NULL, NULL), (N'119', N'1299273436282585088', NULL, N'', N'0', NULL, NULL, NULL), (N'120', N'1299273618470567936', NULL, N'', N'0', NULL, NULL, NULL), (N'121', N'1299273770182737920', NULL, N'', N'0', NULL, NULL, NULL), (N'122', N'1299273978023084032', NULL, N'', N'0', NULL, NULL, NULL), (N'123', N'1299274123225694208', NULL, N'', N'0', NULL, NULL, NULL), (N'124', N'1299274222299348992', NULL, N'', N'0', NULL, NULL, NULL), (N'125', N'1304238876758495232', NULL, N'', N'0', NULL, NULL, NULL), (N'126', N'1304678610343383040', NULL, N'', N'0', NULL, NULL, NULL), (N'127', N'1304679169305694208', NULL, N'', N'0', NULL, NULL, NULL), (N'128', N'1310460417141817344', NULL, N'', N'0', NULL, NULL, NULL), (N'129', N'1310502391475519488', NULL, N'', N'0', NULL, NULL, NULL), (N'130', N'1310515546943569920', NULL, N'', N'0', NULL, NULL, NULL), (N'131', N'1310515735292985344', NULL, N'', N'0', NULL, NULL, NULL), (N'132', N'1316628769783480320', NULL, N'', N'0', NULL, NULL, NULL), (N'133', N'1316628940663619584', NULL, N'', N'0', NULL, NULL, NULL), (N'134', N'1316629112428756992', NULL, N'', N'0', NULL, NULL, NULL), (N'135', N'1316652047017246720', NULL, N'', N'0', NULL, NULL, NULL), (N'136', N'1316913899996737536', NULL, N'', N'0', NULL, NULL, NULL), (N'137', N'1319200951383199744', NULL, N'', N'0', NULL, NULL, NULL), (N'138', N'1319221929807024128', NULL, N'', N'0', NULL, NULL, NULL), (N'139', N'1319554431134306304', NULL, N'', N'0', NULL, NULL, NULL), (N'140', N'1319554550458060800', NULL, N'', N'0', NULL, NULL, NULL), (N'141', N'1319554948434595840', NULL, N'', N'0', NULL, NULL, NULL), (N'142', N'1319555067183730688', NULL, N'', N'0', NULL, NULL, NULL), (N'143', N'1319555230765780992', NULL, N'', N'0', NULL, NULL, NULL), (N'144', N'1319555333790470144', NULL, N'', N'0', NULL, NULL, NULL), (N'145', N'1321001932510203904', NULL, N'', N'0', NULL, NULL, NULL), (N'146', N'1321002059803136000', NULL, N'', N'0', NULL, NULL, NULL), (N'147', N'1321002256440496128', NULL, N'', N'0', NULL, NULL, NULL), (N'148', N'1321002350686507008', NULL, N'', N'0', NULL, NULL, NULL), (N'149', N'1322190027988525056', NULL, N'', N'0', NULL, NULL, NULL), (N'150', N'1322452079688458240', NULL, N'', N'0', NULL, NULL, NULL), (N'151', N'1322452183929495552', NULL, N'', N'0', NULL, NULL, NULL), (N'152', N'1322452308651319296', NULL, N'', N'0', NULL, NULL, NULL), (N'153', N'1322452858176446464', NULL, N'', N'0', NULL, NULL, NULL), (N'154', N'1322452989235863552', NULL, N'', N'0', NULL, NULL, NULL), (N'155', N'1322453089655889920', NULL, N'', N'0', NULL, NULL, NULL), (N'156', N'1329706860249804800', NULL, N'', N'0', NULL, NULL, NULL), (N'157', N'1329707002411544576', NULL, N'', N'0', NULL, NULL, NULL), (N'158', N'1329708512277098496', NULL, N'', N'0', NULL, NULL, NULL), (N'159', N'1329708625917571072', NULL, N'', N'0', NULL, NULL, NULL), (N'160', N'1335049839287357440', NULL, N'', N'0', NULL, NULL, NULL), (N'161', N'1335050034221830144', NULL, N'', N'0', NULL, NULL, NULL), (N'162', N'1335050145899368448', NULL, N'', N'0', NULL, NULL, NULL), (N'163', N'1335050283434790912', NULL, N'', N'0', NULL, NULL, NULL), (N'164', N'1335050381770248192', NULL, N'', N'0', NULL, NULL, NULL), (N'165', N'1335050520941449216', NULL, N'', N'0', NULL, NULL, NULL), (N'166', N'1335050615829188608', NULL, N'', N'0', NULL, NULL, NULL), (N'167', N'1335111798720450560', NULL, N'', N'0', NULL, NULL, NULL), (N'168', N'1335118541370314752', NULL, N'', N'0', NULL, NULL, NULL), (N'169', N'1335118660417245184', NULL, N'', N'0', NULL, NULL, NULL), (N'170', N'1335118782727344128', NULL, N'', N'0', NULL, NULL, NULL), (N'171', N'1335118903200337920', NULL, N'', N'0', NULL, NULL, NULL), (N'172', N'1336230645078921216', NULL, N'', N'0', NULL, NULL, NULL), (N'173', N'1337314809113722880', NULL, N'', N'0', NULL, NULL, NULL), (N'174', N'1337314938973569024', NULL, N'', N'0', NULL, NULL, NULL), (N'175', N'1340961907637243904', NULL, N'', N'0', NULL, NULL, NULL)
+INSERT INTO [apigateway].[appapigatewayratelimitrule] VALUES (N'3', N'1261299170387169280', NULL, N'', N'0', NULL, NULL, NULL), (N'4', N'1261585859064872960', NULL, N'', N'0', NULL, NULL, NULL), (N'5', N'1261586605810368512', NULL, N'', N'0', NULL, NULL, NULL), (N'6', N'1261587558609436672', NULL, N'', N'0', NULL, NULL, NULL), (N'7', N'1261588213298348032', NULL, N'', N'0', NULL, NULL, NULL), (N'8', N'1261588367619375104', NULL, N'', N'0', NULL, NULL, NULL), (N'9', N'1261588628450557952', NULL, N'', N'0', NULL, NULL, NULL), (N'10', N'1261588881564221440', NULL, N'', N'0', NULL, NULL, NULL), (N'11', N'1261588983053795328', NULL, N'', N'0', NULL, NULL, NULL), (N'12', N'1261589139039961088', NULL, N'', N'0', NULL, NULL, NULL), (N'13', N'1261589197483393024', NULL, N'', N'0', NULL, NULL, NULL), (N'14', N'1261589278857084928', NULL, N'', N'0', NULL, NULL, NULL), (N'15', N'1261589420356124672', NULL, N'', N'0', NULL, NULL, NULL), (N'16', N'1261589960393736192', NULL, N'', N'0', NULL, NULL, NULL), (N'17', N'1261606600242085888', NULL, N'', N'0', NULL, NULL, NULL), (N'18', N'1261606689601732608', NULL, N'', N'0', NULL, NULL, NULL), (N'21', N'1262220447629058048', NULL, N'', N'0', NULL, NULL, NULL), (N'22', N'1262230734939758592', NULL, N'', N'0', NULL, NULL, NULL), (N'23', N'1262296916350869504', NULL, N'', N'0', NULL, NULL, NULL), (N'24', N'1262632376348594176', NULL, N'', N'0', NULL, NULL, NULL), (N'25', N'1262632791869902848', NULL, N'', N'0', NULL, NULL, NULL), (N'28', N'1262660336921235456', NULL, N'', N'0', NULL, NULL, NULL), (N'29', N'1262660528277966848', NULL, N'', N'0', NULL, NULL, NULL), (N'30', N'1262660706875625472', NULL, N'', N'0', NULL, NULL, NULL), (N'31', N'1262660966393991168', NULL, N'', N'0', NULL, NULL, NULL), (N'32', N'1262661109474283520', NULL, N'', N'0', NULL, NULL, NULL), (N'33', N'1262663888804663296', NULL, N'', N'0', NULL, NULL, NULL), (N'34', N'1262664024096133120', NULL, N'', N'0', NULL, NULL, NULL), (N'35', N'1262664186252120064', NULL, N'', N'0', NULL, NULL, NULL), (N'36', N'1262664357044178944', NULL, N'', N'0', NULL, NULL, NULL), (N'37', N'1262664632928718848', NULL, N'', N'0', NULL, NULL, NULL), (N'38', N'1262664751409418240', NULL, N'', N'0', NULL, NULL, NULL), (N'39', N'1262664871274237952', NULL, N'', N'0', NULL, NULL, NULL), (N'40', N'1262665026111164416', NULL, N'', N'0', NULL, NULL, NULL), (N'41', N'1262665159905267712', NULL, N'', N'0', NULL, NULL, NULL), (N'42', N'1262665329829105664', NULL, N'', N'0', NULL, NULL, NULL), (N'43', N'1262665456471920640', NULL, N'', N'0', NULL, NULL, NULL), (N'44', N'1262665628165754880', NULL, N'', N'0', NULL, NULL, NULL), (N'45', N'1262666172682883072', NULL, N'', N'0', NULL, NULL, NULL), (N'47', N'1262723402331885568', NULL, N'', N'0', NULL, NULL, NULL), (N'48', N'1262935771746734080', NULL, N'', N'0', NULL, NULL, NULL), (N'49', N'1262935906522304512', NULL, N'', N'0', NULL, NULL, NULL), (N'52', N'1263074419073593344', NULL, N'', N'0', NULL, NULL, NULL), (N'53', N'1263075249394790400', NULL, N'', N'0', NULL, NULL, NULL), (N'54', N'1263075593499684864', NULL, N'', N'0', NULL, NULL, NULL), (N'56', N'1263101898440146944', NULL, N'', N'0', NULL, NULL, NULL), (N'57', N'1263303878648569856', NULL, N'', N'0', NULL, NULL, NULL), (N'58', N'1263304204797648896', NULL, N'', N'0', NULL, NULL, NULL), (N'59', N'1263304872891555840', NULL, N'', N'0', NULL, NULL, NULL), (N'60', N'1263305106250047488', NULL, N'', N'0', NULL, NULL, NULL), (N'61', N'1263305244594970624', NULL, N'', N'0', NULL, NULL, NULL), (N'62', N'1263305430536855552', NULL, N'', N'0', NULL, NULL, NULL), (N'63', N'1263639172959174656', NULL, N'', N'0', NULL, NULL, NULL), (N'64', N'1264799968944640000', NULL, N'', N'0', NULL, NULL, NULL), (N'65', N'1264800070161584128', NULL, N'', N'0', NULL, NULL, NULL), (N'66', N'1267360794414161920', NULL, N'', N'0', NULL, NULL, NULL), (N'67', N'1267383367629807616', NULL, N'', N'0', NULL, NULL, NULL), (N'68', N'1267817055527632896', NULL, N'', N'0', NULL, NULL, NULL), (N'69', N'1267817221286526976', NULL, N'', N'0', NULL, NULL, NULL), (N'70', N'1268893687085518848', NULL, N'', N'0', NULL, NULL, NULL), (N'94', N'1288657613998579712', NULL, N'', N'1', N'1m', N'60', N'200'), (N'95', N'1288657941770854400', NULL, N'', N'0', NULL, NULL, NULL), (N'96', N'1288658134067109888', NULL, N'', N'0', NULL, NULL, NULL), (N'97', N'1288658305156964352', NULL, N'', N'0', NULL, NULL, NULL), (N'98', N'1288658491216289792', NULL, N'', N'0', NULL, NULL, NULL), (N'99', N'1288658638302142464', NULL, N'', N'0', NULL, NULL, NULL), (N'100', N'1288658791784308736', NULL, N'', N'0', NULL, NULL, NULL), (N'101', N'1290849478956199936', NULL, N'', N'0', NULL, NULL, NULL), (N'102', N'1290849628051124224', NULL, N'', N'0', NULL, NULL, NULL), (N'103', N'1290849798553776128', NULL, N'', N'0', NULL, NULL, NULL), (N'105', N'1291259822512693248', NULL, N'', N'0', NULL, NULL, NULL), (N'114', N'1293470838745821184', NULL, N'', N'0', NULL, NULL, NULL), (N'115', N'1293471661785706496', NULL, N'', N'0', NULL, NULL, NULL), (N'116', N'1293472678392721408', NULL, N'', N'0', NULL, NULL, NULL), (N'117', N'1293472857510473728', NULL, N'', N'0', NULL, NULL, NULL), (N'118', N'1299273336009359360', NULL, N'', N'0', NULL, NULL, NULL), (N'119', N'1299273436282585088', NULL, N'', N'0', NULL, NULL, NULL), (N'120', N'1299273618470567936', NULL, N'', N'0', NULL, NULL, NULL), (N'121', N'1299273770182737920', NULL, N'', N'0', NULL, NULL, NULL), (N'122', N'1299273978023084032', NULL, N'', N'0', NULL, NULL, NULL), (N'123', N'1299274123225694208', NULL, N'', N'0', NULL, NULL, NULL), (N'124', N'1299274222299348992', NULL, N'', N'0', NULL, NULL, NULL), (N'125', N'1304238876758495232', NULL, N'', N'0', NULL, NULL, NULL), (N'126', N'1304678610343383040', NULL, N'', N'0', NULL, NULL, NULL), (N'127', N'1304679169305694208', NULL, N'', N'0', NULL, NULL, NULL), (N'128', N'1310460417141817344', NULL, N'', N'0', NULL, NULL, NULL), (N'129', N'1310502391475519488', NULL, N'', N'0', NULL, NULL, NULL), (N'130', N'1310515546943569920', NULL, N'', N'0', NULL, NULL, NULL), (N'131', N'1310515735292985344', NULL, N'', N'0', NULL, NULL, NULL), (N'132', N'1316628769783480320', NULL, N'', N'0', NULL, NULL, NULL), (N'133', N'1316628940663619584', NULL, N'', N'0', NULL, NULL, NULL), (N'134', N'1316629112428756992', NULL, N'', N'0', NULL, NULL, NULL), (N'135', N'1316652047017246720', NULL, N'', N'0', NULL, NULL, NULL), (N'136', N'1316913899996737536', NULL, N'', N'0', NULL, NULL, NULL), (N'137', N'1319200951383199744', NULL, N'', N'0', NULL, NULL, NULL), (N'138', N'1319221929807024128', NULL, N'', N'0', NULL, NULL, NULL), (N'139', N'1319554431134306304', NULL, N'', N'0', NULL, NULL, NULL), (N'140', N'1319554550458060800', NULL, N'', N'0', NULL, NULL, NULL), (N'141', N'1319554948434595840', NULL, N'', N'0', NULL, NULL, NULL), (N'142', N'1319555067183730688', NULL, N'', N'0', NULL, NULL, NULL), (N'143', N'1319555230765780992', NULL, N'', N'0', NULL, NULL, NULL), (N'144', N'1319555333790470144', NULL, N'', N'0', NULL, NULL, NULL), (N'145', N'1321001932510203904', NULL, N'', N'0', NULL, NULL, NULL), (N'146', N'1321002059803136000', NULL, N'', N'0', NULL, NULL, NULL), (N'147', N'1321002256440496128', NULL, N'', N'0', NULL, NULL, NULL), (N'148', N'1321002350686507008', NULL, N'', N'0', NULL, NULL, NULL), (N'149', N'1322190027988525056', NULL, N'', N'0', NULL, NULL, NULL), (N'150', N'1322452079688458240', NULL, N'', N'0', NULL, NULL, NULL), (N'151', N'1322452183929495552', NULL, N'', N'0', NULL, NULL, NULL), (N'152', N'1322452308651319296', NULL, N'', N'0', NULL, NULL, NULL), (N'153', N'1322452858176446464', NULL, N'', N'0', NULL, NULL, NULL), (N'154', N'1322452989235863552', NULL, N'', N'0', NULL, NULL, NULL), (N'155', N'1322453089655889920', NULL, N'', N'0', NULL, NULL, NULL), (N'156', N'1329706860249804800', NULL, N'', N'0', NULL, NULL, NULL), (N'157', N'1329707002411544576', NULL, N'', N'0', NULL, NULL, NULL), (N'158', N'1329708512277098496', NULL, N'', N'0', NULL, NULL, NULL), (N'159', N'1329708625917571072', NULL, N'', N'0', NULL, NULL, NULL), (N'160', N'1335049839287357440', NULL, N'', N'0', NULL, NULL, NULL), (N'161', N'1335050034221830144', NULL, N'', N'0', NULL, NULL, NULL), (N'162', N'1335050145899368448', NULL, N'', N'0', NULL, NULL, NULL), (N'163', N'1335050283434790912', NULL, N'', N'0', NULL, NULL, NULL), (N'164', N'1335050381770248192', NULL, N'', N'0', NULL, NULL, NULL), (N'165', N'1335050520941449216', NULL, N'', N'0', NULL, NULL, NULL), (N'166', N'1335050615829188608', NULL, N'', N'0', NULL, NULL, NULL), (N'167', N'1335111798720450560', NULL, N'', N'0', NULL, NULL, NULL), (N'168', N'1335118541370314752', NULL, N'', N'0', NULL, NULL, NULL), (N'169', N'1335118660417245184', NULL, N'', N'0', NULL, NULL, NULL), (N'170', N'1335118782727344128', NULL, N'', N'0', NULL, NULL, NULL), (N'171', N'1335118903200337920', NULL, N'', N'0', NULL, NULL, NULL), (N'172', N'1336230645078921216', NULL, N'', N'0', NULL, NULL, NULL), (N'173', N'1337314809113722880', NULL, N'', N'0', NULL, NULL, NULL), (N'174', N'1337314938973569024', NULL, N'', N'0', NULL, NULL, NULL), (N'175', N'1340961907637243904', NULL, N'', N'0', NULL, NULL, NULL), (N'176', N'1341652247554379776', NULL, N'', N'0', NULL, NULL, NULL), (N'177', N'1341652385555369984', NULL, N'', N'0', NULL, NULL, NULL), (N'178', N'1342457939827552256', NULL, N'', N'0', NULL, NULL, NULL), (N'179', N'1342458050112581632', NULL, N'', N'0', NULL, NULL, NULL), (N'180', N'1363382062055915520', NULL, N'', N'0', NULL, NULL, NULL), (N'181', N'1363382298501414912', NULL, N'', N'0', NULL, NULL, NULL), (N'182', N'1368854800347848704', NULL, N'', N'0', NULL, NULL, NULL), (N'183', N'1368855936576413696', NULL, N'', N'0', NULL, NULL, NULL), (N'184', N'1368856295889854464', NULL, N'', N'0', NULL, NULL, NULL), (N'185', N'1368856703572008960', NULL, N'', N'0', NULL, NULL, NULL), (N'186', N'1368856819242524672', NULL, N'', N'0', NULL, NULL, NULL), (N'187', N'1368856927887581184', NULL, N'', N'0', NULL, NULL, NULL), (N'188', N'1368857128383700992', NULL, N'', N'0', NULL, NULL, NULL), (N'189', N'1369560306297233408', NULL, N'', N'0', NULL, NULL, NULL), (N'190', N'1369560450472239104', NULL, N'', N'0', NULL, NULL, NULL)
GO
COMMIT
@@ -486,7 +486,7 @@ GO
BEGIN TRANSACTION
GO
-INSERT INTO [apigateway].[appapigatewayreroute] VALUES (N'4', N'{}', N'84059fcecc91498b9beafac914865e2c', N'1261299170387169280', N'【后台管理】- 权限管理', N'/api/permission-management/permissions', N'', NULL, N'/api/permission-management/permissions', N'GET,PUT,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30010,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'5', N'{}', N'f2312eed73cc4d3cbefcd1816849fd74', N'1261585859064872960', N'【身份认证服务】- 客户端', N'/api/identity-server/clients', N'', NULL, N'/api/identity-server/clients', N'POST,GET,', N'', N'', N'X-Forwarded-For:{RemoteIpAddress},', N'', N'', N'', NULL, N'1', N'', NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'6', N'{}', N'b764ec7b994147abb12974bfcee4a0a9', N'1261586605810368512', N'【身份认证服务】- 管理客户端', N'/api/identity-server/clients/{Id}', N'', NULL, N'/api/identity-server/clients/{Id}', N'GET,DELETE,PUT,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'7', N'{}', N'b4ce189320804dc6b87e602594e93d35', N'1261587558609436672', N'【服务网关管理】- 路由组管理', N'/api/ApiGateway/RouteGroups', N'', N'', N'/api/ApiGateway/RouteGroups', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'8', N'{}', N'8736fefa36da4b129f3fcf6aa095f2ce', N'1261588213298348032', N'【服务网关管理】- 查询单个路由组', N'/api/ApiGateway/RouteGroups/By-AppId/{AppId}', N'', N'', N'/api/ApiGateway/RouteGroups/By-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'9', N'{}', N'befd14ad39e244bc9dea7e0c01e642ce', N'1261588367619375104', N'【服务网关管理】- 查询所有有效路由组', N'/api/ApiGateway/RouteGroups/Actived', N'', N'', N'/api/ApiGateway/RouteGroups/Actived', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'10', N'{}', N'0a95945d77144ce69addb0d1e8d37837', N'1261588628450557952', N'【服务网关管理】- 基础配置', N'/api/ApiGateway/Globals', N'', N'', N'/api/ApiGateway/Globals', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'11', N'{}', N'70ee7f919bf44b42b549c905316bfd75', N'1261588881564221440', N'【服务网关管理】- 查询单个基础配置', N'/api/ApiGateway/Globals/By-AppId/{AppId}', N'', N'', N'/api/ApiGateway/Globals/By-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'12', N'{}', N'caf54542d561428a9123ebed88e4b2e9', N'1261588983053795328', N'【服务网关管理】- 路由配置', N'/api/ApiGateway/Routes', N'', N'', N'/api/ApiGateway/Routes', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'13', N'{}', N'df6c48fdaab44a37842992ae61c59dc5', N'1261589139039961088', N'【服务网关管理】- 通过标识查询路由', N'/api/ApiGateway/Routes/By-RouteId/{RouteId}', N'', N'', N'/api/ApiGateway/Routes/By-RouteId/{RouteId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'14', N'{}', N'aaeaedebd24a4011ad565b5559f84c5f', N'1261589197483393024', N'【服务网关管理】- 通过名称查询路由', N'/api/ApiGateway/Routes/By-RouteName/{RouteName}', N'', N'', N'/api/ApiGateway/Routes/By-RouteName/{RouteName}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'15', N'{}', N'559c9f1b2b8c44caac86f7a643a16aaa', N'1261589278857084928', N'【服务网关管理】- 通过应用标识查询路由', N'/api/ApiGateway/Routes/By-AppId/{AppId}', N'', N'', N'/api/ApiGateway/Routes/By-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'16', N'{}', N'00d0a12f403a4a919c99c534bd76d0d0', N'1261589420356124672', N'【服务网关管理】- 清空应用标识下所有路由', N'/api/ApiGateway/Routes/Clear', N'', N'', N'/api/ApiGateway/Routes/Clear', N'DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'17', N'{}', N'8c308f1386ad49c799cd281eb95170ac', N'1261589960393736192', N'【服务网关管理】- 通过应用标识查询动态路由', N'/api/ApiGateway/DynamicRoutes/By-AppId/{AppId}', N'', NULL, N'/api/ApiGateway/DynamicRoutes/By-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'18', N'{}', N'e659ebbf61534a978335cfeabdc0b375', N'1261606600242085888', N'【服务网关管理】- 通过应用标识查询聚合路由', N'/api/ApiGateway/Aggregates/by-AppId/{AppId}', N'', NULL, N'/api/ApiGateway/Aggregates/by-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'19', N'{}', N'd665e4491b81413385858601d9cf9a1d', N'1261606689601732608', N'【服务网关管理】- 聚合路由', N'/api/ApiGateway/Aggregates', N'', NULL, N'/api/ApiGateway/Aggregates', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'22', N'{}', N'2aad614e2c2a497593a4784ff639c3d9', N'1262220447629058048', N'【身份认证服务】- 克隆客户端', N'/api/identity-server/clients/{id}/clone', N'', NULL, N'/api/identity-server/clients/{id}/clone', N'POST,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'23', N'{}', N'1504c5e4a7334298878339a305445b21', N'1262230734939758592', N'【身份认证服务】- 可用的Api资源', N'/api/identity-server/clients/assignable-api-resources', N'', NULL, N'/api/identity-server/clients/assignable-api-resources', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, N'assignable-api-resources', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'25', N'{}', N'53dd1751d9104940a966006a5e93d1fa', N'1262296916350869504', N'【身份认证服务】- 可用的身份资源', N'/api/identity-server/clients/assignable-identity-resources', N'', NULL, N'/api/identity-server/clients/assignable-identity-resources', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, N'assignable-identity-resources', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'26', N'{}', N'3fccd1318d0d47d9aef85542668829a6', N'1262632376348594176', N'【身份认证服务】- Api资源', N'/api/identity-server/api-resources', N'', N'', N'/api/identity-server/api-resources', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'27', N'{}', N'de6bd0ddea6d4019b4855be5442fafdc', N'1262632791869902848', N'【身份认证服务】- 管理Api资源', N'/api/identity-server/api-resources/{id}', N'', N'', N'/api/identity-server/api-resources/{id}', N'GET,DELETE,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'30', N'{}', N'0f9875697b74420c9dc2eaf77099b210', N'1262660336921235456', N'【身份认证服务】- 用户登录', N'/api/account/login', N'', N'', N'/api/account/login', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'31', N'{}', N'a890c6ecc6a64c9fa313a0f6b5406e1c', N'1262660528277966848', N'【身份认证服务】- 用户登出', N'/api/account/logout', N'', N'', N'/api/account/logout', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'32', N'{}', N'88de580b6beb4d9d9d4367840ba1fcea', N'1262660706875625472', N'【身份认证服务】- 检查密码', N'/api/account/checkPassword', N'', N'', N'/api/account/checkPassword', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'33', N'{}', N'78f3c1adc7a54696af37a419eda47c62', N'1262660966393991168', N'【身份认证服务】- 个人信息页', N'/api/identity/my-profile', N'', N'', N'/api/identity/my-profile', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'34', N'{}', N'95b23aa5cebb40598a78c0761cfd0b26', N'1262661109474283520', N'【身份认证服务】- 修改密码', N'/api/identity/my-profile/change-password', N'', N'', N'/api/identity/my-profile/change-password', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'35', N'{}', N'4828f7c2aff8485189f37aba5de62d60', N'1262663888804663296', N'【身份认证管理】- 角色管理', N'/api/identity/roles', N'', N'', N'/api/identity/roles', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'36', N'{}', N'0fddcd3b50a24c6795ec9034fdb44778', N'1262664024096133120', N'【身份认证服务】- 角色列表', N'/api/identity/roles/all', N'', N'', N'/api/identity/roles/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'37', N'{}', N'191e555219e845069dfd93793263a840', N'1262664186252120064', N'【身份认证服务】- 单个角色', N'/api/identity/roles/{id}', N'', N'', N'/api/identity/roles/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'38', N'{}', N'c316858e82f74e6ca6e923d6b3a3fa76', N'1262664357044178944', N'【身份认证服务】- 用户注册', N'/api/account/register', N'', N'', N'/api/account/register', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'39', N'{}', N'db53b6f957914a10a6a97ba306b1f6ef', N'1262664632928718848', N'【身份认证服务】- 单个用户', N'/api/identity/users/{id}', N'', N'', N'/api/identity/users/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'40', N'{}', N'1833434b8ce34f8ab791e7e950f4c61f', N'1262664751409418240', N'【身份认证服务】- 用户管理', N'/api/identity/users', N'', N'', N'/api/identity/users', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'41', N'{}', N'b3c963a1612144918bffaf272697498c', N'1262664871274237952', N'【身份认证服务】- 用户角色', N'/api/identity/users/{id}/roles', N'', N'', N'/api/identity/users/{id}/roles', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'42', N'{}', N'33dd757b79cb4f52994af13bfb4f6783', N'1262665026111164416', N'【身份认证服务】- 通过用户名查询用户', N'/api/identity/users/by-username/{userName}', N'', N'', N'/api/identity/users/by-username/{userName}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'43', N'{}', N'e46fd6cb3a104da3aadfe0149fe4de68', N'1262665159905267712', N'【身份认证服务】- 通过邮件查询用户', N'/api/identity/users/by-email/{email}', N'', N'', N'/api/identity/users/by-email/{email}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'44', N'{}', N'8c8ec5ad6aaa4145981ee7ac876c36c9', N'1262665329829105664', N'【身份认证服务】- 通过标识查询用户', N'/api/identity/users/lookup/{id}', N'', N'', N'/api/identity/users/lookup/{id}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'45', N'{}', N'f5c0c8c02c0846fdbe5015cd86f3d81b', N'1262665456471920640', N'【身份认证服务】- 通过名称查询用户', N'/api/identity/users/lookup/by-username/{userName}', N'', N'', N'/api/identity/users/lookup/by-username/{userName}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'46', N'{}', N'ecf0ea4a3e3c4b2e8fa3621514d00c74', N'1262665628165754880', N'【基础服务】- 通过名称查询租户', N'/api/abp/multi-tenancy/tenants/by-name/{name}', N'', N'', N'/api/abp/multi-tenancy/tenants/by-name/{name}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'47', N'{}', N'69132bc515b64005af4292ce0dee5626', N'1262666172682883072', N'【基础服务】- 通过标识查询租户', N'/api/abp/multi-tenancy/tenants/by-id/{id}', N'', N'', N'/api/abp/multi-tenancy/tenants/by-id/{id}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'49', N'{}', N'35f48d7bc3694bbf95d64fe59aa631ac', N'1262723402331885568', N'【身份认证服务】- 已有的跨域资源', N'/api/identity-server/clients/distinct-cors-origins', N'', N'', N'/api/identity-server/clients/distinct-cors-origins', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'distinct-cors-origins', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'50', N'{}', N'f333d028839d4fc2aafa8509e674d7dd', N'1262935771746734080', N'【身份认证服务】- 身份资源', N'/api/identity-server/identity-resources', N'', N'', N'/api/identity-server/identity-resources', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'51', N'{}', N'dffd1bfaca5b4c1890221678f2b16cd5', N'1262935906522304512', N'【身份认证服务】- 身份资源管理', N'/api/identity-server/identity-resources/{id}', N'', N'', N'/api/identity-server/identity-resources/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'54', N'{}', N'7b847d8434bc4d1db07fa8961d90c14a', N'1263074419073593344', N'【服务网关管理】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/apigateway/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30001,', N'', N'', N'apigateway-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'55', N'{}', N'ca2cedfa620045a9adef0be2f958c4bc', N'1263075249394790400', N'【服务网关管理】- 查询聚合路由', N'/api/ApiGateway/Aggregates/{RouteId}', N'', N'', N'/api/ApiGateway/Aggregates/{RouteId}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30001,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'57', N'{}', N'98fbc99fc8644946ac0a72cc3dc5fd1f', N'1263075593499684864', N'【服务网关管理】- 聚合路由配置', N'/api/ApiGateway/Aggregates/RouteConfig', N'', N'', N'/api/ApiGateway/Aggregates/RouteConfig', N'POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30001,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'59', N'{}', N'c692b30c72d4424eb4740ac49f4e9373', N'1263101898440146944', N'【服务网关管理】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/apigateway/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30001,', N'', N'', N'apigateway-configuration', N'0', N'120000', N'1', N'', N'TEST-APP'), (N'60', N'{}', N'8409117162504f71aa66982f05c38a80', N'1263303878648569856', N'【平台服务】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/platform/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'platform-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'61', N'{}', N'9f520820071b4e14bc94ab57989cea1f', N'1263304204797648896', N'【平台服务】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/platform/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'platform-configuration', N'0', N'120000', N'1', N'', N'TEST-APP'), (N'62', N'{}', N'530ab314560f41678b40f48da9383d51', N'1263304872891555840', N'【后台管理】- 租户管理', N'/api/tenant-management/tenants', N'', N'', N'/api/tenant-management/tenants', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'63', N'{}', N'21334c6da4c349cc883c38c13de0e754', N'1263305106250047488', N'【后台管理】- 特定租户管理', N'/api/tenant-management/tenants/{id}', N'', N'', N'/api/tenant-management/tenants/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'64', N'{}', N'cc8fdf1b2d0b414ebf2dc51a6dc78305', N'1263305244594970624', N'【后台管理】- 租户连接字符串', N'/api/tenant-management/tenants/{id}/connection-string', N'', N'', N'/api/tenant-management/tenants/{id}/concatenation', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'2', N'30000', N'1', N'', N'TEST-APP'), (N'65', N'{}', N'aaf285ed10da4024ba561d5cf8c6322b', N'1263305430536855552', N'【后台管理】- 特定租户连接字符串', N'/api/tenant-management/tenants/{id}/connection-string/{name}', N'', N'', N'/api/tenant-management/tenants/{id}/concatenation/{name}', N'GET,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'66', N'{}', N'6a7da198f4c84d94969a437adc47642b', N'1263639172959174656', N'【后台管理】- 全局设置', N'/api/setting-management/settings/by-global', N'', N'', N'/api/setting-management/settings/by-global/app', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'setting-global', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'67', N'{}', N'755b4dce5c34444785fa3b647fef4131', N'1264799968944640000', N'【身份认证服务】- 验证手机号', N'/api/account/phone/verify', N'', N'', N'/api/account/phone/verify', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'68', N'{}', N'535191c570ae453ab320012304d7a62c', N'1264800070161584128', N'【身份认证服务】- 手机号注册', N'/api/account/phone/register', N'', N'', N'/api/account/phone/register', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'69', N'{}', N'723c9b111f9f4a1aa804118cdde193d3', N'1267360794414161920', N'【消息服务】- 通知', N'/signalr-hubs/notifications/{everything}', N'', N'', N'/signalr-hubs/notifications/{everything}', N'POST,GET,OPTIONS,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'ws', N'127.0.0.1:30020,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'70', N'{}', N'f3aa2b42dd9f468aa5aae4ef64754427', N'1267383367629807616', N'【消息服务】- 通知0', N'/signalr-hubs/notifications', N'', N'', N'/signalr-hubs/notifications', N'GET,POST,PUT,DELETE,OPTIONS,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'ws', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'71', N'{}', N'0344947bb79b401baa2ef7b4e58297f6', N'1267817055527632896', N'【消息服务】- 聊天', N'/signalr-hubs/messages', N'', N'', N'/signalr-hubs/messages', N'GET,POST,PUT,DELETE,OPTIONS,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'ws', N'127.0.0.1:30020,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'72', N'{}', N'6676b5e5f76d40739f9ccc3e371e2f18', N'1267817221286526976', N'【消息服务】- 聊天1', N'/signalr-hubs/messages/{everything}', N'', N'', N'/signalr-hubs/messages/{everything}', N'GET,POST,PUT,DELETE,OPTIONS,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'ws', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'73', N'{}', N'cfb5f09a12bf495fbcaf2fa5d9123a40', N'1268893687085518848', N'【身份认证服务】- 重置密码', N'/api/account/phone/reset-password', N'', N'', N'/api/account/phone/reset-password', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'101', N'{}', N'997a4c27a433458aafed9b8aa252d957', N'1288657613998579712', N'【身份认证服务】- 组织机构列表', N'/api/identity/organization-units', N'', N'', N'/api/identity/organization-units', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'102', N'{}', N'a2c6acc9882a425ab26bd3ad5a9c17c6', N'1288657941770854400', N'【身份认证服务】- 组织机构管理', N'/api/identity/organization-units/{id}', N'', N'', N'/api/identity/organization-units/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'103', N'{}', N'390acfb0e16943c6b61e731d47c282e9', N'1288658134067109888', N'【身份认证服务】- 组织机构移动', N'/api/identity/organization-units/{id}/move', N'', N'', N'/api/identity/organization-units/{id}/move', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'104', N'{}', N'3515e75becf9447492ad60466b27c397', N'1288658305156964352', N'【身份认证服务】- 查询组织机构子级', N'/api/identity/organization-units/find-children', N'', N'', N'/api/identity/organization-units/find-children', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'105', N'{}', N'aab0a24d930f4f9687497e5ccaac2a31', N'1288658491216289792', N'【身份认证服务】- 查询组织机构最后一个子节点', N'/api/identity/organization-units/last-children', N'', N'', N'/api/identity/organization-units/last-children', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'106', N'{}', N'9b7c999b1c5140c497bc15914a815401', N'1288658638302142464', N'【身份认证服务】- 未加入组织机构角色', N'/api/identity/organization-units/{id}/unadded-roles', N'', N'', N'/api/identity/organization-units/{id}/unadded-roles', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'107', N'{}', N'b0cdb3f6908e42bd934ca99a78f22c3f', N'1288658791784308736', N'【身份认证服务】- 未加入组织机构用户', N'/api/identity/organization-units/{id}/unadded-users', N'', N'', N'/api/identity/organization-units/{id}/unadded-users', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'108', N'{}', N'9362040d10a94fb991f60bc391efcb85', N'1290849478956199936', N'【后台管理】- 当前租户设置', N'/api/setting-management/settings/by-current-tenant', N'', N'', N'/api/setting-management/settings/by-current-tenant/app', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'setting-current-tenant', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'109', N'{}', N'a7df3a04805d4cc8a6e6b3823c6dd468', N'1290849628051124224', N'【后台管理】- 用户设置', N'/api/setting-management/settings/by-user/{userId}', N'', N'', N'/api/setting-management/settings/by-user/{userId}', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'110', N'{}', N'ef6e38a529a345fab67f6a627cf20635', N'1290849798553776128', N'【后台管理】- 当前用户设置', N'/api/setting-management/settings/by-current-user', N'', N'', N'/api/setting-management/settings/by-current-user', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'112', N'{}', N'9844fed6507844f2ac64bd08649bd3a6', N'1291259822512693248', N'【身份认证服务】- 查询组织机构根节点', N'/api/identity/organization-units/root-node', N'', N'', N'/api/identity/organization-units/root-node', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'113', N'{}', N'24d8794cf8f943b4ac45d2bcccf7c128', N'1292620505149145088', N'【平台服务】- 文件系统', N'/api/file-management/file-system', N'', N'', N'/api/file-management/file-system', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'114', N'{}', N'0acf6762d3af43efb655107e0039f5fc', N'1292620665505775616', N'【平台服务】- 文件系统 - 目录管理', N'/api/file-management/file-system/folders', N'', N'', N'/api/file-management/file-system/folders', N'POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'115', N'{}', N'8b4363f70865419089b5f62ba35382df', N'1292620843398791168', N'【平台服务】- 文件系统 - 文件管理', N'/api/file-management/file-system/files', N'', N'', N'/api/file-management/file-system/files', N'GET,POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'1200000', N'1', N'', N'TEST-APP'), (N'116', N'{}', N'7eb315567bbc470bbbfd26923c5d0aba', N'1292621027574874112', N'【平台服务】- 文件系统 - 复制目录', N'/api/file-management/file-system/folders/copy', N'', N'', N'/api/file-management/file-system/folders/copy', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'117', N'{}', N'af5853680cff454fa66ff6022f18da23', N'1292621363161137152', N'【平台服务】- 文件系统 - 移动目录', N'/api/file-management/file-system/folders/move', N'', N'', N'/api/file-management/file-system/folders/move', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'118', N'{}', N'6daa6d8c8adb466899988fd8181c29a8', N'1292621494837116928', N'【平台服务】- 文件系统 - 复制文件', N'/api/file-management/file-system/files/copy', N'', N'', N'/api/file-management/file-system/files/copy', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'119', N'{}', N'9560caaa3bd9424984c44724aa54bfe9', N'1292621629260365824', N'【平台服务】- 文件系统 - 移动文件', N'/api/file-management/file-system/files/move', N'', N'', N'/api/file-management/file-system/files/move', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'120', N'{}', N'fc2aaa6035484201b9014912930fb7cb', N'1292622526073864192', N'【平台服务】- 文件系统 - 详情页', N'/api/file-management/file-system/profile', N'', N'', N'/api/file-management/file-system/profile', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'121', N'{}', N'c6c7b027000942dda8ba0d2e2d8cf705', N'1293470838745821184', N'【后台管理】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/backend-admin/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'backend-admin-configuration', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'122', N'{}', N'becd4342079d4399abda5b5ba3b46fdc', N'1293471661785706496', N'【消息服务】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/messages/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'messages-configuration', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'123', N'{}', N'c828140cee3043c18ffc274f6461f0f2', N'1293472678392721408', N'【后台管理】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/backend-admin/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'backend-admin-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'124', N'{}', N'e683cff8066d4c2899a17d0f618f1a0b', N'1293472857510473728', N'【消息服务】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/messages/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'messages-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'125', N'{}', N'0e9c3bff5b58428eba97a5516140ba5e', N'1299273336009359360', N'【消息服务】- Hangfire仪表板 ', N'/hangfire', N'', N'', N'/hangfire', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'126', N'{}', N'e906924ad3a947cf8e6956e2dd258192', N'1299273436282585088', N'【消息服务】- Hangfire仪表板 - 主页', N'/hangfire/', N'', N'', N'/hangfire/', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'127', N'{}', N'e02f2049efbc4ee1ad6629bd0341ed2b', N'1299273618470567936', N'【消息服务】- Hangfire仪表板 - 状态', N'/hangfire/stats', N'', N'', N'/hangfire/stats', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'128', N'{}', N'f8d2b2f0f1d649c2a07eeef23d6adb0e', N'1299273770182737920', N'【消息服务】- Hangfire仪表板 - 作业管理', N'/hangfire/jobs/{everything}', N'', N'', N'/hangfire/jobs/{everything}', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'129', N'{}', N'9785be7a29774b468e271b23009fe115', N'1299273978023084032', N'【消息服务】- Hangfire仪表板 - 重试', N'/hangfire/retries', N'', N'', N'/hangfire/retries', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'130', N'{}', N'9c0c1cd196bb45c0bc03fafb7a1eb8f2', N'1299274123225694208', N'【消息服务】- Hangfire仪表板 - 周期性作业', N'/hangfire/recurring', N'', N'', N'/hangfire/recurring', N'GET,POST,DELETE,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'131', N'{}', N'243bafe828be463ea63a3e2b521f9923', N'1299274222299348992', N'【消息服务】- Hangfire仪表板 - 服务器列表', N'/hangfire/servers', N'', N'', N'/hangfire/servers', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'132', N'{}', N'57a8ac1b41bb434cad38fbde0e2ba2f0', N'1304238876758495232', N'【后台管理】- 管理功能', N'/api/feature-management/features', N'', N'', N'/api/feature-management/features', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'133', N'{}', N'40a150f629b047f587c91a9436a699c0', N'1304678610343383040', N'【身份认证服务】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/identity-server/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'identity-server-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'134', N'{}', N'3a2d5d538fa44ac690402fc5c4e1a401', N'1304679169305694208', N'【身份认证服务】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/identity-server/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'identity-server-configuration', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'135', N'{}', N'2ecfe7483bc94c28ad0769b654eb765d', N'1310460417141817344', N'【后台管理】- 审计日志列表', N'/api/auditing/audit-log', N'', N'', N'/api/auditing/audit-log', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'136', N'{}', N'744e340c0024462d88458b7ea9605b3c', N'1310502391475519488', N'【后台服务】- 安全日志列表', N'/api/auditing/security-log', N'', N'', N'/api/auditing/security-log', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'137', N'{}', N'a99639f4172547c4ba9b4f4ca5cb4ab9', N'1310515546943569920', N'【后台服务】- 安全日志', N'/api/auditing/security-log/{id}', N'', N'', N'/api/auditing/security-log/{id}', N'DELETE,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'138', N'{}', N'c3ebc82d55f640fb9d70a911e97e4ec1', N'1310515735292985344', N'【后台管理】- 审计日志', N'/api/auditing/audit-log/{id}', N'', N'', N'/api/auditing/audit-log/{id}', N'DELETE,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'139', N'{}', N'0379fcb3a9cd4b13b562b3b5b5c3eb7d', N'1316628769783480320', N'【身份认证服务】- 声明类型', N'/api/identity/claim-types', N'', N'', N'/api/identity/claim-types', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'140', N'{}', N'de25c9a80d994f728b37eb483b2f5127', N'1316628940663619584', N'【身份认证服务】- 管理声明类型', N'/api/identity/claim-types/{id}', N'', N'', N'/api/identity/claim-types/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'141', N'{}', N'25c19106baff4cf3a877ae8cd690a1b5', N'1316629112428756992', N'【身份认证服务】- 查询在用的声明类型列表', N'/api/identity/claim-types/actived-list', N'', N'', N'/api/identity/claim-types/actived-list', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'142', N'{}', N'7d3b941d8c4d4d3ebc05b6332308b992', N'1316652047017246720', N'【身份认证服务】- 管理用户声明', N'/api/identity/users/{id}/claims', N'', N'', N'/api/identity/users/{id}/claims', N'POST,PUT,DELETE,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'143', N'{}', N'b86af44a34a14db4b482df8550f1bde1', N'1316913899996737536', N'【身份认证管理】- 管理角色声明', N'/api/identity/roles/claims/{id}', N'', N'', N'/api/identity/roles/claims/{id}', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'144', N'{}', N'51a14bc295044de985ae014fbcc5bddf', N'1319200951383199744', N'【IdentityServer4】- 发现端点', N'/.well-known/openid-configuration', N'', N'', N'/.well-known/openid-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:44385,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'145', N'{}', N'9d859a444d774e93818237e53b6cc102', N'1319221929807024128', N'【身份认证服务】- 查询所有组织机构', N'/api/identity/organization-units/all', N'', N'', N'/api/identity/organization-units/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'146', N'{}', N'89f42175b24540caba2a1fded145acf8', N'1319554431134306304', N'【身份认证服务】- 管理组织机构用户', N'/api/identity/organization-units/{id}/users', N'', N'', N'/api/identity/organization-units/{id}/users', N'POST,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'147', N'{}', N'126d82509cec43eda712e94737b01039', N'1319554550458060800', N'【身份认证服务】- 管理组织机构角色', N'/api/identity/organization-units/{id}/roles', N'', N'', N'/api/identity/organization-units/{id}/roles', N'POST,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'148', N'{}', N'824f5eee6877489f96f1022e306c968a', N'1319554948434595840', N'【身份认证服务】- 管理角色组织机构', N'/api/identity/roles/{id}/organization-units', N'', N'', N'/api/identity/roles/{id}/organization-units', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'149', N'{}', N'fe1379d4a13f41afb6410f4c948871f3', N'1319555067183730688', N'【身份认证服务】- 删除角色组织机构', N'/api/identity/roles/{id}/organization-units/{ouId}', N'', N'', N'/api/identity/roles/{id}/organization-units/{ouId}', N'DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'150', N'{}', N'197a69bb723346aba3601bd61e7fa655', N'1319555230765780992', N'【身份认证服务】- 管理用户组织机构', N'/api/identity/users/{id}/organization-units', N'', N'', N'/api/identity/users/{id}/organization-units', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'151', N'{}', N'1a7e6d0b1c95484f82a75a2ce6e6f453', N'1319555333790470144', N'【身份认证服务】- 删除用户组织机构', N'/api/identity/users/{id}/organization-units/{ouId}', N'', N'', N'/api/identity/users/{id}/organization-units/{ouId}', N'DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'152', N'{}', N'ecfa9bbd19694097b33e691b653f2124', N'1321001932510203904', N'【消息服务】- 我的消息', N'/api/im/chat/my-messages', N'', N'', N'/api/im/chat/my-messages', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'153', N'{}', N'4867ad188ca54acb8b961d20297b6545', N'1321002059803136000', N'【消息服务】- 我的最近消息', N'/api/im/chat/my-last-messages', N'', N'', N'/api/im/chat/my-last-messages', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'154', N'{}', N'291ab802d7bc4af98fc15c509f98fa75', N'1321002256440496128', N'【消息服务】- 我的朋友', N'/api/im/my-friends', N'', N'', N'/api/im/my-friends', N'GET,POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'155', N'{}', N'08438dabb1e849988e0c304f82b08a10', N'1321002350686507008', N'【消息服务】- 我的所有朋友', N'/api/im/my-friends/all', N'', N'', N'/api/im/my-friends/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'156', N'{}', N'cecf632785b7402299764698369c751f', N'1322190027988525056', N'【消息服务】- 发送好友请求', N'/api/im/my-friends/add-request', N'', N'', N'/api/im/my-friends/add-request', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'157', N'{}', N'91b088ab3e164116b8c4a2b6109e37e9', N'1322452079688458240', N'【消息服务】- 我的订阅', N'/api/my-subscribes', N'', N'', N'/api/my-subscribes', N'GET,POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'158', N'{}', N'b9f57600634b40c087ac0730926895e2', N'1322452183929495552', N'【消息服务】- 我的订阅列表', N'/api/my-subscribes/all', N'', N'', N'/api/my-subscribes/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'my-subscribes', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'159', N'{}', N'8e6a0c6759df42e29b9abd4d833646a3', N'1322452308651319296', N'【消息服务】- 是否已订阅', N'/api/my-subscribes/is-subscribed/{Name}', N'', N'', N'/api/my-subscribes/is-subscribed/{Name}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'160', N'{}', N'6b747d0acfee478ea64241b7ea519861', N'1322452858176446464', N'【消息服务】- 我的通知', N'/api/my-notifilers', N'', N'', N'/api/my-notifilers', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'161', N'{}', N'25a64613f37f44cf8efff8d0cf6cd0ca', N'1322452989235863552', N'【消息服务】- 管理我的通知', N'/api/my-notifilers/{id}', N'', N'', N'/api/my-notifilers/{id}', N'GET,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'162', N'{}', N'ddc7f13aaa2741b28c2102fbff18d836', N'1322453089655889920', N'【消息服务】- 可用通知列表', N'/api/my-notifilers/assignables', N'', N'', N'/api/my-notifilers/assignables', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'assignables-notifilers', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'163', N'{}', N'1d586107d7e240b3bfc14c8ca04baea8', N'1329706860249804800', N'【微信管理】- 微信公共配置', N'/api/setting-management/wechat/by-global', N'', N'', N'/api/setting-management/wechat/by-global', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'wechat-setting-global', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'164', N'{}', N'bd9b34dd564f405bb3a063d6a719ce6e', N'1329707002411544576', N'【微信管理】- 微信租户配置', N'/api/setting-management/wechat/by-current-tenant', N'', N'', N'/api/setting-management/wechat/by-current-tenant', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'wechat-setting-current-tenant', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'165', N'{}', N'e9847659244b47dc80101b1c3f4edb31', N'1329708512277098496', N'【后台管理】- 变更全局设置', N'/api/setting-management/settings/change-global', N'', N'', N'/api/setting-management/settings/change-global', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'166', N'{}', N'94c3692dea394b39ac0cc19f60fc1964', N'1329708625917571072', N'【后台管理】- 变更当前租户设置', N'/api/setting-management/settings/change-current-tenant', N'', N'', N'/api/setting-management/settings/change-current-tenant', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'167', N'{}', N'626efeddcc0a474aa5e472b6089ca6fe', N'1335049839287357440', N'【平台服务】- 菜单管理', N'/api/platform/menus', N'', N'', N'/api/platform/menus', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'168', N'{}', N'e4b4acf5f7dd4015828bdcd735424937', N'1335050034221830144', N'【平台服务】- 管理菜单', N'/api/platform/menus/{id}', N'', N'', N'/api/platform/menus/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'169', N'{}', N'bbdb31a7eaba4bf7bead6a7e1151872c', N'1335050145899368448', N'【平台服务】- 获取当前用户菜单', N'/api/platform/menus/by-current-user', N'', N'', N'/api/platform/menus/by-current-user', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'170', N'{}', N'56a6d15682ba489aa46296cd8235cf81', N'1335050283434790912', N'【平台服务】- 管理用户菜单', N'/api/platform/menus/by-user', N'', N'', N'/api/platform/menus/by-user', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'171', N'{}', N'484dc97d5f4843fc85679c1faf1488bf', N'1335050381770248192', N'【平台服务】- 获取用户菜单', N'/api/platform/menus/by-user/{userId}/{platformType}', N'', N'', N'/api/platform/menus/by-user/{userId}/{platformType}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'172', N'{}', N'63b34bbe4d3b41f397432aa12e73a40d', N'1335050520941449216', N'【平台服务】- 管理角色菜单', N'/api/platform/menus/by-role', N'', N'', N'/api/platform/menus/by-role', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'173', N'{}', N'c858522741c941bf838aef7eba34b213', N'1335050615829188608', N'【平台服务】- 获取角色菜单', N'/api/platform/menus/by-role/{role}/{platformType}', N'', N'', N'/api/platform/menus/by-role/{role}/{platformType}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'174', N'{}', N'da02cbd7a46746f288bb98d40af03a21', N'1335111798720450560', N'【平台服务】- 获取所有数据字典', N'/api/platform/datas/all', N'', N'', N'/api/platform/datas/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'175', N'{}', N'6c6096b6593c47398d59f73ab62e54a3', N'1335118541370314752', N'【平台服务】- 数据字典', N'/api/platform/datas', N'', N'', N'/api/platform/datas', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'176', N'{}', N'5efb1b49a1cc4d34a3e338b9e83c12c7', N'1335118660417245184', N'【平台服务】- 管理数据字典', N'/api/platform/datas/{id}', N'', N'', N'/api/platform/datas/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'177', N'{}', N'00bd2892c6574942bda538aa9d3513cd', N'1335118782727344128', N'【平台服务】- 增加数据字典项目', N'/api/platform/datas/{id}/items', N'', N'', N'/api/platform/datas/{id}/items', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'178', N'{}', N'9fae5da5d4634eaab7a59d643a8248a7', N'1335118903200337920', N'【平台服务】- 管理数据字典项目', N'/api/platform/datas/{id}/items/{name}', N'', N'', N'/api/platform/datas/{id}/items/{name}', N'DELETE,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'179', N'{}', N'70d6120e560f41c3879ec4549636cdb8', N'1336230645078921216', N'【平台服务】- 获取所有菜单', N'/api/platform/menus/all', N'', N'', N'/api/platform/menus/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'180', N'{}', N'c67549cd6cd246f08d9f6ce93c906c21', N'1337314809113722880', N'【平台服务】- 布局', N'/api/platform/layouts', N'', N'', N'/api/platform/layouts', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'181', N'{}', N'bacca946a092434cb2ee5994c88f2c33', N'1337314938973569024', N'【平台服务】- 管理布局', N'/api/platform/layouts/{id}', N'', N'', N'/api/platform/layouts/{id}', N'GET,DELETE,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'182', N'{}', N'741fdd4cc05a4025a9073a2e1ab9d5ea', N'1340961907637243904', N'【平台服务】- 获取所有布局', N'/api/platform/layouts/all', N'', N'', N'/api/platform/layouts/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP')
+INSERT INTO [apigateway].[appapigatewayreroute] VALUES (N'4', N'{}', N'84059fcecc91498b9beafac914865e2c', N'1261299170387169280', N'【后台管理】- 权限管理', N'/api/permission-management/permissions', N'', NULL, N'/api/permission-management/permissions', N'GET,PUT,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30010,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'5', N'{}', N'f2312eed73cc4d3cbefcd1816849fd74', N'1261585859064872960', N'【身份认证服务】- 客户端', N'/api/identity-server/clients', N'', NULL, N'/api/identity-server/clients', N'POST,GET,', N'', N'', N'X-Forwarded-For:{RemoteIpAddress},', N'', N'', N'', NULL, N'1', N'', NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'6', N'{}', N'b764ec7b994147abb12974bfcee4a0a9', N'1261586605810368512', N'【身份认证服务】- 管理客户端', N'/api/identity-server/clients/{Id}', N'', NULL, N'/api/identity-server/clients/{Id}', N'GET,DELETE,PUT,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'7', N'{}', N'b4ce189320804dc6b87e602594e93d35', N'1261587558609436672', N'【服务网关管理】- 路由组管理', N'/api/ApiGateway/RouteGroups', N'', N'', N'/api/ApiGateway/RouteGroups', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'8', N'{}', N'8736fefa36da4b129f3fcf6aa095f2ce', N'1261588213298348032', N'【服务网关管理】- 查询单个路由组', N'/api/ApiGateway/RouteGroups/By-AppId/{AppId}', N'', N'', N'/api/ApiGateway/RouteGroups/By-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'9', N'{}', N'befd14ad39e244bc9dea7e0c01e642ce', N'1261588367619375104', N'【服务网关管理】- 查询所有有效路由组', N'/api/ApiGateway/RouteGroups/Actived', N'', N'', N'/api/ApiGateway/RouteGroups/Actived', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'10', N'{}', N'0a95945d77144ce69addb0d1e8d37837', N'1261588628450557952', N'【服务网关管理】- 基础配置', N'/api/ApiGateway/Globals', N'', N'', N'/api/ApiGateway/Globals', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'11', N'{}', N'70ee7f919bf44b42b549c905316bfd75', N'1261588881564221440', N'【服务网关管理】- 查询单个基础配置', N'/api/ApiGateway/Globals/By-AppId/{AppId}', N'', N'', N'/api/ApiGateway/Globals/By-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'12', N'{}', N'caf54542d561428a9123ebed88e4b2e9', N'1261588983053795328', N'【服务网关管理】- 路由配置', N'/api/ApiGateway/Routes', N'', N'', N'/api/ApiGateway/Routes', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'13', N'{}', N'df6c48fdaab44a37842992ae61c59dc5', N'1261589139039961088', N'【服务网关管理】- 通过标识查询路由', N'/api/ApiGateway/Routes/By-RouteId/{RouteId}', N'', N'', N'/api/ApiGateway/Routes/By-RouteId/{RouteId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'14', N'{}', N'aaeaedebd24a4011ad565b5559f84c5f', N'1261589197483393024', N'【服务网关管理】- 通过名称查询路由', N'/api/ApiGateway/Routes/By-RouteName/{RouteName}', N'', N'', N'/api/ApiGateway/Routes/By-RouteName/{RouteName}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'15', N'{}', N'559c9f1b2b8c44caac86f7a643a16aaa', N'1261589278857084928', N'【服务网关管理】- 通过应用标识查询路由', N'/api/ApiGateway/Routes/By-AppId/{AppId}', N'', N'', N'/api/ApiGateway/Routes/By-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'16', N'{}', N'00d0a12f403a4a919c99c534bd76d0d0', N'1261589420356124672', N'【服务网关管理】- 清空应用标识下所有路由', N'/api/ApiGateway/Routes/Clear', N'', N'', N'/api/ApiGateway/Routes/Clear', N'DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, N'', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'17', N'{}', N'8c308f1386ad49c799cd281eb95170ac', N'1261589960393736192', N'【服务网关管理】- 通过应用标识查询动态路由', N'/api/ApiGateway/DynamicRoutes/By-AppId/{AppId}', N'', NULL, N'/api/ApiGateway/DynamicRoutes/By-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'18', N'{}', N'e659ebbf61534a978335cfeabdc0b375', N'1261606600242085888', N'【服务网关管理】- 通过应用标识查询聚合路由', N'/api/ApiGateway/Aggregates/by-AppId/{AppId}', N'', NULL, N'/api/ApiGateway/Aggregates/by-AppId/{AppId}', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'19', N'{}', N'd665e4491b81413385858601d9cf9a1d', N'1261606689601732608', N'【服务网关管理】- 聚合路由', N'/api/ApiGateway/Aggregates', N'', NULL, N'/api/ApiGateway/Aggregates', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30001,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'22', N'{}', N'2aad614e2c2a497593a4784ff639c3d9', N'1262220447629058048', N'【身份认证服务】- 克隆客户端', N'/api/identity-server/clients/{id}/clone', N'', NULL, N'/api/identity-server/clients/{id}/clone', N'POST,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, NULL, NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'23', N'{}', N'1504c5e4a7334298878339a305445b21', N'1262230734939758592', N'【身份认证服务】- 可用的Api资源', N'/api/identity-server/clients/assignable-api-resources', N'', NULL, N'/api/identity-server/clients/assignable-api-resources', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, N'assignable-api-resources', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'25', N'{}', N'53dd1751d9104940a966006a5e93d1fa', N'1262296916350869504', N'【身份认证服务】- 可用的身份资源', N'/api/identity-server/clients/assignable-identity-resources', N'', NULL, N'/api/identity-server/clients/assignable-identity-resources', N'GET,', N'', N'', N'', N'', N'', N'', NULL, N'1', NULL, NULL, N'HTTP', N'127.0.0.1:30015,', N'', NULL, N'assignable-identity-resources', NULL, N'30000', N'1', NULL, N'TEST-APP'), (N'26', N'{}', N'3fccd1318d0d47d9aef85542668829a6', N'1262632376348594176', N'【身份认证服务】- Api资源', N'/api/identity-server/api-resources', N'', N'', N'/api/identity-server/api-resources', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'27', N'{}', N'de6bd0ddea6d4019b4855be5442fafdc', N'1262632791869902848', N'【身份认证服务】- 管理Api资源', N'/api/identity-server/api-resources/{id}', N'', N'', N'/api/identity-server/api-resources/{id}', N'GET,DELETE,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'30', N'{}', N'0f9875697b74420c9dc2eaf77099b210', N'1262660336921235456', N'【身份认证服务】- 用户登录', N'/api/account/login', N'', N'', N'/api/account/login', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'31', N'{}', N'a890c6ecc6a64c9fa313a0f6b5406e1c', N'1262660528277966848', N'【身份认证服务】- 用户登出', N'/api/account/logout', N'', N'', N'/api/account/logout', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'32', N'{}', N'88de580b6beb4d9d9d4367840ba1fcea', N'1262660706875625472', N'【身份认证服务】- 检查密码', N'/api/account/checkPassword', N'', N'', N'/api/account/checkPassword', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'33', N'{}', N'78f3c1adc7a54696af37a419eda47c62', N'1262660966393991168', N'【身份认证服务】- 个人信息页', N'/api/identity/my-profile', N'', N'', N'/api/identity/my-profile', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'34', N'{}', N'95b23aa5cebb40598a78c0761cfd0b26', N'1262661109474283520', N'【身份认证服务】- 修改密码', N'/api/identity/my-profile/change-password', N'', N'', N'/api/identity/my-profile/change-password', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'35', N'{}', N'4828f7c2aff8485189f37aba5de62d60', N'1262663888804663296', N'【身份认证管理】- 角色管理', N'/api/identity/roles', N'', N'', N'/api/identity/roles', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'36', N'{}', N'0fddcd3b50a24c6795ec9034fdb44778', N'1262664024096133120', N'【身份认证服务】- 角色列表', N'/api/identity/roles/all', N'', N'', N'/api/identity/roles/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'37', N'{}', N'191e555219e845069dfd93793263a840', N'1262664186252120064', N'【身份认证服务】- 单个角色', N'/api/identity/roles/{id}', N'', N'', N'/api/identity/roles/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'38', N'{}', N'c316858e82f74e6ca6e923d6b3a3fa76', N'1262664357044178944', N'【身份认证服务】- 用户注册', N'/api/account/register', N'', N'', N'/api/account/register', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'39', N'{}', N'db53b6f957914a10a6a97ba306b1f6ef', N'1262664632928718848', N'【身份认证服务】- 单个用户', N'/api/identity/users/{id}', N'', N'', N'/api/identity/users/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'40', N'{}', N'1833434b8ce34f8ab791e7e950f4c61f', N'1262664751409418240', N'【身份认证服务】- 用户管理', N'/api/identity/users', N'', N'', N'/api/identity/users', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'41', N'{}', N'b3c963a1612144918bffaf272697498c', N'1262664871274237952', N'【身份认证服务】- 用户角色', N'/api/identity/users/{id}/roles', N'', N'', N'/api/identity/users/{id}/roles', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'42', N'{}', N'33dd757b79cb4f52994af13bfb4f6783', N'1262665026111164416', N'【身份认证服务】- 通过用户名查询用户', N'/api/identity/users/by-username/{userName}', N'', N'', N'/api/identity/users/by-username/{userName}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'43', N'{}', N'e46fd6cb3a104da3aadfe0149fe4de68', N'1262665159905267712', N'【身份认证服务】- 通过邮件查询用户', N'/api/identity/users/by-email/{email}', N'', N'', N'/api/identity/users/by-email/{email}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'44', N'{}', N'8c8ec5ad6aaa4145981ee7ac876c36c9', N'1262665329829105664', N'【身份认证服务】- 通过标识查询用户', N'/api/identity/users/lookup/{id}', N'', N'', N'/api/identity/users/lookup/{id}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'45', N'{}', N'f5c0c8c02c0846fdbe5015cd86f3d81b', N'1262665456471920640', N'【身份认证服务】- 通过名称查询用户', N'/api/identity/users/lookup/by-username/{userName}', N'', N'', N'/api/identity/users/lookup/by-username/{userName}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'46', N'{}', N'ecf0ea4a3e3c4b2e8fa3621514d00c74', N'1262665628165754880', N'【基础服务】- 通过名称查询租户', N'/api/abp/multi-tenancy/tenants/by-name/{name}', N'', N'', N'/api/abp/multi-tenancy/tenants/by-name/{name}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'47', N'{}', N'69132bc515b64005af4292ce0dee5626', N'1262666172682883072', N'【基础服务】- 通过标识查询租户', N'/api/abp/multi-tenancy/tenants/by-id/{id}', N'', N'', N'/api/abp/multi-tenancy/tenants/by-id/{id}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'49', N'{}', N'35f48d7bc3694bbf95d64fe59aa631ac', N'1262723402331885568', N'【身份认证服务】- 已有的跨域资源', N'/api/identity-server/clients/distinct-cors-origins', N'', N'', N'/api/identity-server/clients/distinct-cors-origins', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'distinct-cors-origins', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'50', N'{}', N'f333d028839d4fc2aafa8509e674d7dd', N'1262935771746734080', N'【身份认证服务】- 身份资源', N'/api/identity-server/identity-resources', N'', N'', N'/api/identity-server/identity-resources', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'51', N'{}', N'dffd1bfaca5b4c1890221678f2b16cd5', N'1262935906522304512', N'【身份认证服务】- 身份资源管理', N'/api/identity-server/identity-resources/{id}', N'', N'', N'/api/identity-server/identity-resources/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'54', N'{}', N'7b847d8434bc4d1db07fa8961d90c14a', N'1263074419073593344', N'【服务网关管理】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/apigateway/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30001,', N'', N'', N'apigateway-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'55', N'{}', N'ca2cedfa620045a9adef0be2f958c4bc', N'1263075249394790400', N'【服务网关管理】- 查询聚合路由', N'/api/ApiGateway/Aggregates/{RouteId}', N'', N'', N'/api/ApiGateway/Aggregates/{RouteId}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30001,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'57', N'{}', N'98fbc99fc8644946ac0a72cc3dc5fd1f', N'1263075593499684864', N'【服务网关管理】- 聚合路由配置', N'/api/ApiGateway/Aggregates/RouteConfig', N'', N'', N'/api/ApiGateway/Aggregates/RouteConfig', N'POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30001,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'59', N'{}', N'c692b30c72d4424eb4740ac49f4e9373', N'1263101898440146944', N'【服务网关管理】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/apigateway/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30001,', N'', N'', N'apigateway-configuration', N'0', N'120000', N'1', N'', N'TEST-APP'), (N'60', N'{}', N'8409117162504f71aa66982f05c38a80', N'1263303878648569856', N'【平台服务】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/platform/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'platform-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'61', N'{}', N'9f520820071b4e14bc94ab57989cea1f', N'1263304204797648896', N'【平台服务】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/platform/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'platform-configuration', N'0', N'120000', N'1', N'', N'TEST-APP'), (N'62', N'{}', N'530ab314560f41678b40f48da9383d51', N'1263304872891555840', N'【后台管理】- 租户管理', N'/api/tenant-management/tenants', N'', N'', N'/api/tenant-management/tenants', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'63', N'{}', N'21334c6da4c349cc883c38c13de0e754', N'1263305106250047488', N'【后台管理】- 特定租户管理', N'/api/tenant-management/tenants/{id}', N'', N'', N'/api/tenant-management/tenants/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'64', N'{}', N'cc8fdf1b2d0b414ebf2dc51a6dc78305', N'1263305244594970624', N'【后台管理】- 租户连接字符串', N'/api/tenant-management/tenants/{id}/connection-string', N'', N'', N'/api/tenant-management/tenants/{id}/concatenation', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'2', N'30000', N'1', N'', N'TEST-APP'), (N'65', N'{}', N'aaf285ed10da4024ba561d5cf8c6322b', N'1263305430536855552', N'【后台管理】- 特定租户连接字符串', N'/api/tenant-management/tenants/{id}/connection-string/{name}', N'', N'', N'/api/tenant-management/tenants/{id}/concatenation/{name}', N'GET,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'66', N'{}', N'6a7da198f4c84d94969a437adc47642b', N'1263639172959174656', N'【后台管理】- 全局设置', N'/api/setting-management/settings/by-global', N'', N'', N'/api/setting-management/settings/by-global/app', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'setting-global', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'67', N'{}', N'755b4dce5c34444785fa3b647fef4131', N'1264799968944640000', N'【身份认证服务】- 验证手机号', N'/api/account/phone/verify', N'', N'', N'/api/account/phone/verify', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'68', N'{}', N'535191c570ae453ab320012304d7a62c', N'1264800070161584128', N'【身份认证服务】- 手机号注册', N'/api/account/phone/register', N'', N'', N'/api/account/phone/register', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'69', N'{}', N'723c9b111f9f4a1aa804118cdde193d3', N'1267360794414161920', N'【消息服务】- 通知', N'/signalr-hubs/notifications/{everything}', N'', N'', N'/signalr-hubs/notifications/{everything}', N'POST,GET,OPTIONS,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'ws', N'127.0.0.1:30020,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'70', N'{}', N'f3aa2b42dd9f468aa5aae4ef64754427', N'1267383367629807616', N'【消息服务】- 通知0', N'/signalr-hubs/notifications', N'', N'', N'/signalr-hubs/notifications', N'GET,POST,PUT,DELETE,OPTIONS,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'ws', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'71', N'{}', N'0344947bb79b401baa2ef7b4e58297f6', N'1267817055527632896', N'【消息服务】- 聊天', N'/signalr-hubs/messages', N'', N'', N'/signalr-hubs/messages', N'GET,POST,PUT,DELETE,OPTIONS,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'ws', N'127.0.0.1:30020,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'72', N'{}', N'6676b5e5f76d40739f9ccc3e371e2f18', N'1267817221286526976', N'【消息服务】- 聊天1', N'/signalr-hubs/messages/{everything}', N'', N'', N'/signalr-hubs/messages/{everything}', N'GET,POST,PUT,DELETE,OPTIONS,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'ws', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'73', N'{}', N'cfb5f09a12bf495fbcaf2fa5d9123a40', N'1268893687085518848', N'【身份认证服务】- 重置密码', N'/api/account/phone/reset-password', N'', N'', N'/api/account/phone/reset-password', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'101', N'{}', N'997a4c27a433458aafed9b8aa252d957', N'1288657613998579712', N'【身份认证服务】- 组织机构列表', N'/api/identity/organization-units', N'', N'', N'/api/identity/organization-units', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'102', N'{}', N'a2c6acc9882a425ab26bd3ad5a9c17c6', N'1288657941770854400', N'【身份认证服务】- 组织机构管理', N'/api/identity/organization-units/{id}', N'', N'', N'/api/identity/organization-units/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'1', N'30000', N'1', N'', N'TEST-APP'), (N'103', N'{}', N'390acfb0e16943c6b61e731d47c282e9', N'1288658134067109888', N'【身份认证服务】- 组织机构移动', N'/api/identity/organization-units/{id}/move', N'', N'', N'/api/identity/organization-units/{id}/move', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'104', N'{}', N'3515e75becf9447492ad60466b27c397', N'1288658305156964352', N'【身份认证服务】- 查询组织机构子级', N'/api/identity/organization-units/find-children', N'', N'', N'/api/identity/organization-units/find-children', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'105', N'{}', N'aab0a24d930f4f9687497e5ccaac2a31', N'1288658491216289792', N'【身份认证服务】- 查询组织机构最后一个子节点', N'/api/identity/organization-units/last-children', N'', N'', N'/api/identity/organization-units/last-children', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'106', N'{}', N'9b7c999b1c5140c497bc15914a815401', N'1288658638302142464', N'【身份认证服务】- 未加入组织机构角色', N'/api/identity/organization-units/{id}/unadded-roles', N'', N'', N'/api/identity/organization-units/{id}/unadded-roles', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'107', N'{}', N'b0cdb3f6908e42bd934ca99a78f22c3f', N'1288658791784308736', N'【身份认证服务】- 未加入组织机构用户', N'/api/identity/organization-units/{id}/unadded-users', N'', N'', N'/api/identity/organization-units/{id}/unadded-users', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'108', N'{}', N'9362040d10a94fb991f60bc391efcb85', N'1290849478956199936', N'【后台管理】- 当前租户设置', N'/api/setting-management/settings/by-current-tenant', N'', N'', N'/api/setting-management/settings/by-current-tenant/app', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'setting-current-tenant', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'109', N'{}', N'a7df3a04805d4cc8a6e6b3823c6dd468', N'1290849628051124224', N'【后台管理】- 用户设置', N'/api/setting-management/settings/by-user/{userId}', N'', N'', N'/api/setting-management/settings/by-user/{userId}', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'110', N'{}', N'ef6e38a529a345fab67f6a627cf20635', N'1290849798553776128', N'【后台管理】- 当前用户设置', N'/api/setting-management/settings/by-current-user', N'', N'', N'/api/setting-management/settings/by-current-user', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'112', N'{}', N'9844fed6507844f2ac64bd08649bd3a6', N'1291259822512693248', N'【身份认证服务】- 查询组织机构根节点', N'/api/identity/organization-units/root-node', N'', N'', N'/api/identity/organization-units/root-node', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'121', N'{}', N'c6c7b027000942dda8ba0d2e2d8cf705', N'1293470838745821184', N'【后台管理】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/backend-admin/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'backend-admin-configuration', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'122', N'{}', N'becd4342079d4399abda5b5ba3b46fdc', N'1293471661785706496', N'【消息服务】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/messages/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'messages-configuration', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'123', N'{}', N'c828140cee3043c18ffc274f6461f0f2', N'1293472678392721408', N'【后台管理】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/backend-admin/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'backend-admin-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'124', N'{}', N'e683cff8066d4c2899a17d0f618f1a0b', N'1293472857510473728', N'【消息服务】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/messages/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'messages-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'125', N'{}', N'0e9c3bff5b58428eba97a5516140ba5e', N'1299273336009359360', N'【消息服务】- Hangfire仪表板 ', N'/hangfire', N'', N'', N'/hangfire', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'126', N'{}', N'e906924ad3a947cf8e6956e2dd258192', N'1299273436282585088', N'【消息服务】- Hangfire仪表板 - 主页', N'/hangfire/', N'', N'', N'/hangfire/', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'127', N'{}', N'e02f2049efbc4ee1ad6629bd0341ed2b', N'1299273618470567936', N'【消息服务】- Hangfire仪表板 - 状态', N'/hangfire/stats', N'', N'', N'/hangfire/stats', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'128', N'{}', N'f8d2b2f0f1d649c2a07eeef23d6adb0e', N'1299273770182737920', N'【消息服务】- Hangfire仪表板 - 作业管理', N'/hangfire/jobs/{everything}', N'', N'', N'/hangfire/jobs/{everything}', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'129', N'{}', N'9785be7a29774b468e271b23009fe115', N'1299273978023084032', N'【消息服务】- Hangfire仪表板 - 重试', N'/hangfire/retries', N'', N'', N'/hangfire/retries', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'130', N'{}', N'9c0c1cd196bb45c0bc03fafb7a1eb8f2', N'1299274123225694208', N'【消息服务】- Hangfire仪表板 - 周期性作业', N'/hangfire/recurring', N'', N'', N'/hangfire/recurring', N'GET,POST,DELETE,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'131', N'{}', N'243bafe828be463ea63a3e2b521f9923', N'1299274222299348992', N'【消息服务】- Hangfire仪表板 - 服务器列表', N'/hangfire/servers', N'', N'', N'/hangfire/servers', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'132', N'{}', N'57a8ac1b41bb434cad38fbde0e2ba2f0', N'1304238876758495232', N'【后台管理】- 管理功能', N'/api/feature-management/features', N'', N'', N'/api/feature-management/features', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'133', N'{}', N'40a150f629b047f587c91a9436a699c0', N'1304678610343383040', N'【身份认证服务】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/identity-server/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'identity-server-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'134', N'{}', N'3a2d5d538fa44ac690402fc5c4e1a401', N'1304679169305694208', N'【身份认证服务】- 框架配置', N'/api/abp/application-configuration', N'', N'', N'/api/abp/identity-server/application-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'identity-server-configuration', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'135', N'{}', N'2ecfe7483bc94c28ad0769b654eb765d', N'1310460417141817344', N'【后台管理】- 审计日志列表', N'/api/auditing/audit-log', N'', N'', N'/api/auditing/audit-log', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'136', N'{}', N'744e340c0024462d88458b7ea9605b3c', N'1310502391475519488', N'【后台服务】- 安全日志列表', N'/api/auditing/security-log', N'', N'', N'/api/auditing/security-log', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'137', N'{}', N'a99639f4172547c4ba9b4f4ca5cb4ab9', N'1310515546943569920', N'【后台服务】- 安全日志', N'/api/auditing/security-log/{id}', N'', N'', N'/api/auditing/security-log/{id}', N'DELETE,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'138', N'{}', N'c3ebc82d55f640fb9d70a911e97e4ec1', N'1310515735292985344', N'【后台管理】- 审计日志', N'/api/auditing/audit-log/{id}', N'', N'', N'/api/auditing/audit-log/{id}', N'DELETE,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'139', N'{}', N'0379fcb3a9cd4b13b562b3b5b5c3eb7d', N'1316628769783480320', N'【身份认证服务】- 声明类型', N'/api/identity/claim-types', N'', N'', N'/api/identity/claim-types', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'140', N'{}', N'de25c9a80d994f728b37eb483b2f5127', N'1316628940663619584', N'【身份认证服务】- 管理声明类型', N'/api/identity/claim-types/{id}', N'', N'', N'/api/identity/claim-types/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'141', N'{}', N'25c19106baff4cf3a877ae8cd690a1b5', N'1316629112428756992', N'【身份认证服务】- 查询在用的声明类型列表', N'/api/identity/claim-types/actived-list', N'', N'', N'/api/identity/claim-types/actived-list', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'142', N'{}', N'7d3b941d8c4d4d3ebc05b6332308b992', N'1316652047017246720', N'【身份认证服务】- 管理用户声明', N'/api/identity/users/{id}/claims', N'', N'', N'/api/identity/users/{id}/claims', N'POST,PUT,DELETE,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'143', N'{}', N'b86af44a34a14db4b482df8550f1bde1', N'1316913899996737536', N'【身份认证管理】- 管理角色声明', N'/api/identity/roles/claims/{id}', N'', N'', N'/api/identity/roles/claims/{id}', N'GET,POST,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'144', N'{}', N'51a14bc295044de985ae014fbcc5bddf', N'1319200951383199744', N'【IdentityServer4】- 发现端点', N'/.well-known/openid-configuration', N'', N'', N'/.well-known/openid-configuration', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:44385,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'145', N'{}', N'9d859a444d774e93818237e53b6cc102', N'1319221929807024128', N'【身份认证服务】- 查询所有组织机构', N'/api/identity/organization-units/all', N'', N'', N'/api/identity/organization-units/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'146', N'{}', N'89f42175b24540caba2a1fded145acf8', N'1319554431134306304', N'【身份认证服务】- 管理组织机构用户', N'/api/identity/organization-units/{id}/users', N'', N'', N'/api/identity/organization-units/{id}/users', N'POST,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'147', N'{}', N'126d82509cec43eda712e94737b01039', N'1319554550458060800', N'【身份认证服务】- 管理组织机构角色', N'/api/identity/organization-units/{id}/roles', N'', N'', N'/api/identity/organization-units/{id}/roles', N'POST,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'148', N'{}', N'824f5eee6877489f96f1022e306c968a', N'1319554948434595840', N'【身份认证服务】- 管理角色组织机构', N'/api/identity/roles/{id}/organization-units', N'', N'', N'/api/identity/roles/{id}/organization-units', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'149', N'{}', N'fe1379d4a13f41afb6410f4c948871f3', N'1319555067183730688', N'【身份认证服务】- 删除角色组织机构', N'/api/identity/roles/{id}/organization-units/{ouId}', N'', N'', N'/api/identity/roles/{id}/organization-units/{ouId}', N'DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'150', N'{}', N'197a69bb723346aba3601bd61e7fa655', N'1319555230765780992', N'【身份认证服务】- 管理用户组织机构', N'/api/identity/users/{id}/organization-units', N'', N'', N'/api/identity/users/{id}/organization-units', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'151', N'{}', N'1a7e6d0b1c95484f82a75a2ce6e6f453', N'1319555333790470144', N'【身份认证服务】- 删除用户组织机构', N'/api/identity/users/{id}/organization-units/{ouId}', N'', N'', N'/api/identity/users/{id}/organization-units/{ouId}', N'DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'152', N'{}', N'ecfa9bbd19694097b33e691b653f2124', N'1321001932510203904', N'【消息服务】- 我的消息', N'/api/im/chat/my-messages', N'', N'', N'/api/im/chat/my-messages', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'153', N'{}', N'4867ad188ca54acb8b961d20297b6545', N'1321002059803136000', N'【消息服务】- 我的最近消息', N'/api/im/chat/my-last-messages', N'', N'', N'/api/im/chat/my-last-messages', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'154', N'{}', N'291ab802d7bc4af98fc15c509f98fa75', N'1321002256440496128', N'【消息服务】- 我的朋友', N'/api/im/my-friends', N'', N'', N'/api/im/my-friends', N'GET,POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'155', N'{}', N'08438dabb1e849988e0c304f82b08a10', N'1321002350686507008', N'【消息服务】- 我的所有朋友', N'/api/im/my-friends/all', N'', N'', N'/api/im/my-friends/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'156', N'{}', N'cecf632785b7402299764698369c751f', N'1322190027988525056', N'【消息服务】- 发送好友请求', N'/api/im/my-friends/add-request', N'', N'', N'/api/im/my-friends/add-request', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'157', N'{}', N'91b088ab3e164116b8c4a2b6109e37e9', N'1322452079688458240', N'【消息服务】- 我的订阅', N'/api/my-subscribes', N'', N'', N'/api/my-subscribes', N'GET,POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'158', N'{}', N'b9f57600634b40c087ac0730926895e2', N'1322452183929495552', N'【消息服务】- 我的订阅列表', N'/api/my-subscribes/all', N'', N'', N'/api/my-subscribes/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'my-subscribes', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'159', N'{}', N'8e6a0c6759df42e29b9abd4d833646a3', N'1322452308651319296', N'【消息服务】- 是否已订阅', N'/api/my-subscribes/is-subscribed/{Name}', N'', N'', N'/api/my-subscribes/is-subscribed/{Name}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'160', N'{}', N'6b747d0acfee478ea64241b7ea519861', N'1322452858176446464', N'【消息服务】- 我的通知', N'/api/my-notifilers', N'', N'', N'/api/my-notifilers', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'161', N'{}', N'25a64613f37f44cf8efff8d0cf6cd0ca', N'1322452989235863552', N'【消息服务】- 管理我的通知', N'/api/my-notifilers/{id}', N'', N'', N'/api/my-notifilers/{id}', N'GET,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'162', N'{}', N'ddc7f13aaa2741b28c2102fbff18d836', N'1322453089655889920', N'【消息服务】- 可用通知列表', N'/api/my-notifilers/assignables', N'', N'', N'/api/my-notifilers/assignables', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30020,', N'', N'', N'assignables-notifilers', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'163', N'{}', N'1d586107d7e240b3bfc14c8ca04baea8', N'1329706860249804800', N'【微信管理】- 微信公共配置', N'/api/setting-management/wechat/by-global', N'', N'', N'/api/setting-management/wechat/by-global', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'wechat-setting-global', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'164', N'{}', N'bd9b34dd564f405bb3a063d6a719ce6e', N'1329707002411544576', N'【微信管理】- 微信租户配置', N'/api/setting-management/wechat/by-current-tenant', N'', N'', N'/api/setting-management/wechat/by-current-tenant', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'wechat-setting-current-tenant', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'165', N'{}', N'e9847659244b47dc80101b1c3f4edb31', N'1329708512277098496', N'【后台管理】- 变更全局设置', N'/api/setting-management/settings/change-global', N'', N'', N'/api/setting-management/settings/change-global', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'166', N'{}', N'94c3692dea394b39ac0cc19f60fc1964', N'1329708625917571072', N'【后台管理】- 变更当前租户设置', N'/api/setting-management/settings/change-current-tenant', N'', N'', N'/api/setting-management/settings/change-current-tenant', N'PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'167', N'{}', N'626efeddcc0a474aa5e472b6089ca6fe', N'1335049839287357440', N'【平台服务】- 菜单管理', N'/api/platform/menus', N'', N'', N'/api/platform/menus', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'168', N'{}', N'e4b4acf5f7dd4015828bdcd735424937', N'1335050034221830144', N'【平台服务】- 管理菜单', N'/api/platform/menus/{id}', N'', N'', N'/api/platform/menus/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'169', N'{}', N'bbdb31a7eaba4bf7bead6a7e1151872c', N'1335050145899368448', N'【平台服务】- 获取当前用户菜单', N'/api/platform/menus/by-current-user', N'', N'', N'/api/platform/menus/by-current-user', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'170', N'{}', N'56a6d15682ba489aa46296cd8235cf81', N'1335050283434790912', N'【平台服务】- 管理用户菜单', N'/api/platform/menus/by-user', N'', N'', N'/api/platform/menus/by-user', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'171', N'{}', N'484dc97d5f4843fc85679c1faf1488bf', N'1335050381770248192', N'【平台服务】- 获取用户菜单', N'/api/platform/menus/by-user/{userId}/{platformType}', N'', N'', N'/api/platform/menus/by-user/{userId}/{platformType}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'172', N'{}', N'63b34bbe4d3b41f397432aa12e73a40d', N'1335050520941449216', N'【平台服务】- 管理角色菜单', N'/api/platform/menus/by-role', N'', N'', N'/api/platform/menus/by-role', N'GET,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'173', N'{}', N'c858522741c941bf838aef7eba34b213', N'1335050615829188608', N'【平台服务】- 获取角色菜单', N'/api/platform/menus/by-role/{role}/{platformType}', N'', N'', N'/api/platform/menus/by-role/{role}/{platformType}', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'174', N'{}', N'da02cbd7a46746f288bb98d40af03a21', N'1335111798720450560', N'【平台服务】- 获取所有数据字典', N'/api/platform/datas/all', N'', N'', N'/api/platform/datas/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'175', N'{}', N'6c6096b6593c47398d59f73ab62e54a3', N'1335118541370314752', N'【平台服务】- 数据字典', N'/api/platform/datas', N'', N'', N'/api/platform/datas', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'176', N'{}', N'5efb1b49a1cc4d34a3e338b9e83c12c7', N'1335118660417245184', N'【平台服务】- 管理数据字典', N'/api/platform/datas/{id}', N'', N'', N'/api/platform/datas/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'177', N'{}', N'00bd2892c6574942bda538aa9d3513cd', N'1335118782727344128', N'【平台服务】- 增加数据字典项目', N'/api/platform/datas/{id}/items', N'', N'', N'/api/platform/datas/{id}/items', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'178', N'{}', N'9fae5da5d4634eaab7a59d643a8248a7', N'1335118903200337920', N'【平台服务】- 管理数据字典项目', N'/api/platform/datas/{id}/items/{name}', N'', N'', N'/api/platform/datas/{id}/items/{name}', N'DELETE,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'179', N'{}', N'70d6120e560f41c3879ec4549636cdb8', N'1336230645078921216', N'【平台服务】- 获取所有菜单', N'/api/platform/menus/all', N'', N'', N'/api/platform/menus/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'180', N'{}', N'c67549cd6cd246f08d9f6ce93c906c21', N'1337314809113722880', N'【平台服务】- 布局', N'/api/platform/layouts', N'', N'', N'/api/platform/layouts', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'181', N'{}', N'bacca946a092434cb2ee5994c88f2c33', N'1337314938973569024', N'【平台服务】- 管理布局', N'/api/platform/layouts/{id}', N'', N'', N'/api/platform/layouts/{id}', N'GET,DELETE,PUT,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'182', N'{}', N'741fdd4cc05a4025a9073a2e1ab9d5ea', N'1340961907637243904', N'【平台服务】- 获取所有布局', N'/api/platform/layouts/all', N'', N'', N'/api/platform/layouts/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'183', N'{}', N'26a1ef4016704dab8c254f90bc26ecfe', N'1341652247554379776', N'【身份认证服务】- Api范围', N'/api/identity-server/api-scopes', N'', N'', N'/api/identity-server/api-scopes', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'184', N'{}', N'3bfc1fef7f5446638f91c9b6e2fb12db', N'1341652385555369984', N'【身份认证服务】- 管理Api范围', N'/api/identity-server/api-scopes/{id}', N'', N'', N'/api/identity-server/api-scopes/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'185', N'{}', N'3288c25dd61e491db95313ca72016918', N'1342457939827552256', N'【身份认证服务】- 持久授权', N'/api/identity-server/persisted-grants', N'', N'', N'/api/identity-server/persisted-grants', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'186', N'{}', N'23f94678093148f58ba842096c3a0e39', N'1342458050112581632', N'【身份认证服务】- 管理持久授权', N'/api/identity-server/persisted-grants/{id}', N'', N'', N'/api/identity-server/persisted-grants/{id}', N'GET,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30015,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'187', N'{}', N'1f61a3e35b374277ae2c13c671bc5d30', N'1363382062055915520', N'【阿里云】- 阿里云公共配置', N'/api/setting-management/aliyun/by-global', N'', N'', N'/api/setting-management/aliyun/by-global', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'aliyun-setting-global', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'188', N'{}', N'46001a60f3d54b85a8417f6af24066e5', N'1363382298501414912', N'【阿里云】- 阿里云租户配置', N'/api/setting-management/aliyun/by-current-tenant', N'', N'', N'/api/setting-management/aliyun/by-current-tenant', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30010,', N'', N'', N'aliyun-setting-current-tenant', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'189', N'{}', N'0d21bec8bcc044bf9000227663039ef4', N'1368854800347848704', N'【Oss对象存储】- 管理容器(Bucket)', N'/api/oss-management/containes/{name}', N'', N'', N'/api/oss-management/containes/{name}', N'POST,GET,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'190', N'{}', N'ca33dc2834e4439d9ca7827fb31c70f8', N'1368855936576413696', N'【Oss对象存储】- 获取容器列表', N'/api/oss-management/containes', N'', N'', N'/api/oss-management/containes', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'191', N'{}', N'e00fb37d9757471fbd1e64dca92e5d7d', N'1368856295889854464', N'【Oss对象存储】- 获取对象列表', N'/api/oss-management/containes/objects', N'', N'', N'/api/oss-management/containes/objects', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'192', N'{}', N'cef75a4f7eac43789a3e246229fd5a1b', N'1368856703572008960', N'【Oss对象存储】- 管理Oss对象', N'/api/oss-management/objects', N'', N'', N'/api/oss-management/objects', N'GET,POST,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'193', N'{}', N'ee0d5e6de17c481ca2c0ee5c156b1973', N'1368856819242524672', N'【Oss对象存储】- 上传Oss对象', N'/api/oss-management/objects/upload', N'', N'', N'/api/oss-management/objects/upload', N'POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'194', N'{}', N'6c1a0f98129d418cba55a52dbdd88937', N'1368856927887581184', N'【Oss对象存储】- 批量删除Oss对象', N'/api/oss-management/objects/bulk-delete', N'', N'', N'/api/oss-management/objects/bulk-delete', N'DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'195', N'{}', N'de285bf4b6114032a45d5611ea8e3101', N'1368857128383700992', N'【Oss对象存储】- 静态文件管理', N'/api/files/static/{everything}', N'', N'', N'/api/files/static/{everything}', N'POST,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'196', N'{}', N'6287c30d31c147faae917cb6e52636ec', N'1369560306297233408', N'【Oss对象存储】- 获取公共配置', N'/api/setting-management/oss-management/by-global', N'', N'', N'/api/setting-management/oss-management/by-global', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'oss-management-global', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'197', N'{}', N'1012bb902aba47ada9a374fc73ed2632', N'1369560450472239104', N'【Oss对象存储】- 获取租户配置', N'/api/setting-management/oss-management/by-current-tenant', N'', N'', N'/api/setting-management/oss-management/by-current-tenant', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30025,', N'', N'', N'oss-management-current-tenant', N'0', N'30000', N'1', N'', N'TEST-APP')
GO
COMMIT
@@ -556,7 +556,7 @@ GO
BEGIN TRANSACTION
GO
-INSERT INTO [apigateway].[appapigatewaysecurityoptions] VALUES (N'3', N'1261299170387169280', N'', N''), (N'4', N'1261585859064872960', N'', N''), (N'5', N'1261586605810368512', N'', N''), (N'6', N'1261587558609436672', N'', N''), (N'7', N'1261588213298348032', N'', N''), (N'8', N'1261588367619375104', N'', N''), (N'9', N'1261588628450557952', N'', N''), (N'10', N'1261588881564221440', N'', N''), (N'11', N'1261588983053795328', N'', N''), (N'12', N'1261589139039961088', N'', N''), (N'13', N'1261589197483393024', N'', N''), (N'14', N'1261589278857084928', N'', N''), (N'15', N'1261589420356124672', N'', N''), (N'16', N'1261589960393736192', N'', N''), (N'17', N'1261606600242085888', N'', N''), (N'18', N'1261606689601732608', N'', N''), (N'21', N'1262220447629058048', N'', N''), (N'22', N'1262230734939758592', N'', N''), (N'23', N'1262296916350869504', N'', N''), (N'24', N'1262632376348594176', N'', N''), (N'25', N'1262632791869902848', N'', N''), (N'28', N'1262660336921235456', N'', N''), (N'29', N'1262660528277966848', N'', N''), (N'30', N'1262660706875625472', N'', N''), (N'31', N'1262660966393991168', N'', N''), (N'32', N'1262661109474283520', N'', N''), (N'33', N'1262663888804663296', N'', N''), (N'34', N'1262664024096133120', N'', N''), (N'35', N'1262664186252120064', N'', N''), (N'36', N'1262664357044178944', N'', N''), (N'37', N'1262664632928718848', N'', N''), (N'38', N'1262664751409418240', N'', N''), (N'39', N'1262664871274237952', N'', N''), (N'40', N'1262665026111164416', N'', N''), (N'41', N'1262665159905267712', N'', N''), (N'42', N'1262665329829105664', N'', N''), (N'43', N'1262665456471920640', N'', N''), (N'44', N'1262665628165754880', N'', N''), (N'45', N'1262666172682883072', N'', N''), (N'47', N'1262723402331885568', N'', N''), (N'48', N'1262935771746734080', N'', N''), (N'49', N'1262935906522304512', N'', N''), (N'52', N'1263074419073593344', N'', N''), (N'53', N'1263075249394790400', N'', N''), (N'54', N'1263075593499684864', N'', N''), (N'56', N'1263101898440146944', N'', N''), (N'57', N'1263303878648569856', N'', N''), (N'58', N'1263304204797648896', N'', N''), (N'59', N'1263304872891555840', N'', N''), (N'60', N'1263305106250047488', N'', N''), (N'61', N'1263305244594970624', N'', N''), (N'62', N'1263305430536855552', N'', N''), (N'63', N'1263639172959174656', N'', N''), (N'64', N'1264799968944640000', N'', N''), (N'65', N'1264800070161584128', N'', N''), (N'66', N'1267360794414161920', N'', N''), (N'67', N'1267383367629807616', N'', N''), (N'68', N'1267817055527632896', N'', N''), (N'69', N'1267817221286526976', N'', N''), (N'70', N'1268893687085518848', N'', N''), (N'94', N'1288657613998579712', N'', N''), (N'95', N'1288657941770854400', N'', N''), (N'96', N'1288658134067109888', N'', N''), (N'97', N'1288658305156964352', N'', N''), (N'98', N'1288658491216289792', N'', N''), (N'99', N'1288658638302142464', N'', N''), (N'100', N'1288658791784308736', N'', N''), (N'101', N'1290849478956199936', N'', N''), (N'102', N'1290849628051124224', N'', N''), (N'103', N'1290849798553776128', N'', N''), (N'105', N'1291259822512693248', N'', N''), (N'106', N'1292620505149145088', N'', N''), (N'107', N'1292620665505775616', N'', N''), (N'108', N'1292620843398791168', N'', N''), (N'109', N'1292621027574874112', N'', N''), (N'110', N'1292621363161137152', N'', N''), (N'111', N'1292621494837116928', N'', N''), (N'112', N'1292621629260365824', N'', N''), (N'113', N'1292622526073864192', N'', N''), (N'114', N'1293470838745821184', N'', N''), (N'115', N'1293471661785706496', N'', N''), (N'116', N'1293472678392721408', N'', N''), (N'117', N'1293472857510473728', N'', N''), (N'118', N'1299273336009359360', N'127.0.0.1', N''), (N'119', N'1299273436282585088', N'127.0.0.1', N''), (N'120', N'1299273618470567936', N'127.0.0.1', N''), (N'121', N'1299273770182737920', N'127.0.0.1', N''), (N'122', N'1299273978023084032', N'127.0.0.1', N''), (N'123', N'1299274123225694208', N'127.0.0.1', N''), (N'124', N'1299274222299348992', N'127.0.0.1', N''), (N'125', N'1304238876758495232', N'', N''), (N'126', N'1304678610343383040', N'', N''), (N'127', N'1304679169305694208', N'', N''), (N'128', N'1310460417141817344', N'', N''), (N'129', N'1310502391475519488', N'', N''), (N'130', N'1310515546943569920', N'', N''), (N'131', N'1310515735292985344', N'', N''), (N'132', N'1316628769783480320', N'', N''), (N'133', N'1316628940663619584', N'', N''), (N'134', N'1316629112428756992', N'', N''), (N'135', N'1316652047017246720', N'', N''), (N'136', N'1316913899996737536', N'', N''), (N'137', N'1319200951383199744', N'', N''), (N'138', N'1319221929807024128', N'', N''), (N'139', N'1319554431134306304', N'', N''), (N'140', N'1319554550458060800', N'', N''), (N'141', N'1319554948434595840', N'', N''), (N'142', N'1319555067183730688', N'', N''), (N'143', N'1319555230765780992', N'', N''), (N'144', N'1319555333790470144', N'', N''), (N'145', N'1321001932510203904', N'', N''), (N'146', N'1321002059803136000', N'', N''), (N'147', N'1321002256440496128', N'', N''), (N'148', N'1321002350686507008', N'', N''), (N'149', N'1322190027988525056', N'', N''), (N'150', N'1322452079688458240', N'', N''), (N'151', N'1322452183929495552', N'', N''), (N'152', N'1322452308651319296', N'', N''), (N'153', N'1322452858176446464', N'', N''), (N'154', N'1322452989235863552', N'', N''), (N'155', N'1322453089655889920', N'', N''), (N'156', N'1329706860249804800', N'', N''), (N'157', N'1329707002411544576', N'', N''), (N'158', N'1329708512277098496', N'', N''), (N'159', N'1329708625917571072', N'', N''), (N'160', N'1335049839287357440', N'', N''), (N'161', N'1335050034221830144', N'', N''), (N'162', N'1335050145899368448', N'', N''), (N'163', N'1335050283434790912', N'', N''), (N'164', N'1335050381770248192', N'', N''), (N'165', N'1335050520941449216', N'', N''), (N'166', N'1335050615829188608', N'', N''), (N'167', N'1335111798720450560', N'', N''), (N'168', N'1335118541370314752', N'', N''), (N'169', N'1335118660417245184', N'', N''), (N'170', N'1335118782727344128', N'', N''), (N'171', N'1335118903200337920', N'', N''), (N'172', N'1336230645078921216', N'', N''), (N'173', N'1337314809113722880', N'', N''), (N'174', N'1337314938973569024', N'', N''), (N'175', N'1340961907637243904', N'', N'')
+INSERT INTO [apigateway].[appapigatewaysecurityoptions] VALUES (N'3', N'1261299170387169280', N'', N''), (N'4', N'1261585859064872960', N'', N''), (N'5', N'1261586605810368512', N'', N''), (N'6', N'1261587558609436672', N'', N''), (N'7', N'1261588213298348032', N'', N''), (N'8', N'1261588367619375104', N'', N''), (N'9', N'1261588628450557952', N'', N''), (N'10', N'1261588881564221440', N'', N''), (N'11', N'1261588983053795328', N'', N''), (N'12', N'1261589139039961088', N'', N''), (N'13', N'1261589197483393024', N'', N''), (N'14', N'1261589278857084928', N'', N''), (N'15', N'1261589420356124672', N'', N''), (N'16', N'1261589960393736192', N'', N''), (N'17', N'1261606600242085888', N'', N''), (N'18', N'1261606689601732608', N'', N''), (N'21', N'1262220447629058048', N'', N''), (N'22', N'1262230734939758592', N'', N''), (N'23', N'1262296916350869504', N'', N''), (N'24', N'1262632376348594176', N'', N''), (N'25', N'1262632791869902848', N'', N''), (N'28', N'1262660336921235456', N'', N''), (N'29', N'1262660528277966848', N'', N''), (N'30', N'1262660706875625472', N'', N''), (N'31', N'1262660966393991168', N'', N''), (N'32', N'1262661109474283520', N'', N''), (N'33', N'1262663888804663296', N'', N''), (N'34', N'1262664024096133120', N'', N''), (N'35', N'1262664186252120064', N'', N''), (N'36', N'1262664357044178944', N'', N''), (N'37', N'1262664632928718848', N'', N''), (N'38', N'1262664751409418240', N'', N''), (N'39', N'1262664871274237952', N'', N''), (N'40', N'1262665026111164416', N'', N''), (N'41', N'1262665159905267712', N'', N''), (N'42', N'1262665329829105664', N'', N''), (N'43', N'1262665456471920640', N'', N''), (N'44', N'1262665628165754880', N'', N''), (N'45', N'1262666172682883072', N'', N''), (N'47', N'1262723402331885568', N'', N''), (N'48', N'1262935771746734080', N'', N''), (N'49', N'1262935906522304512', N'', N''), (N'52', N'1263074419073593344', N'', N''), (N'53', N'1263075249394790400', N'', N''), (N'54', N'1263075593499684864', N'', N''), (N'56', N'1263101898440146944', N'', N''), (N'57', N'1263303878648569856', N'', N''), (N'58', N'1263304204797648896', N'', N''), (N'59', N'1263304872891555840', N'', N''), (N'60', N'1263305106250047488', N'', N''), (N'61', N'1263305244594970624', N'', N''), (N'62', N'1263305430536855552', N'', N''), (N'63', N'1263639172959174656', N'', N''), (N'64', N'1264799968944640000', N'', N''), (N'65', N'1264800070161584128', N'', N''), (N'66', N'1267360794414161920', N'', N''), (N'67', N'1267383367629807616', N'', N''), (N'68', N'1267817055527632896', N'', N''), (N'69', N'1267817221286526976', N'', N''), (N'70', N'1268893687085518848', N'', N''), (N'94', N'1288657613998579712', N'', N''), (N'95', N'1288657941770854400', N'', N''), (N'96', N'1288658134067109888', N'', N''), (N'97', N'1288658305156964352', N'', N''), (N'98', N'1288658491216289792', N'', N''), (N'99', N'1288658638302142464', N'', N''), (N'100', N'1288658791784308736', N'', N''), (N'101', N'1290849478956199936', N'', N''), (N'102', N'1290849628051124224', N'', N''), (N'103', N'1290849798553776128', N'', N''), (N'105', N'1291259822512693248', N'', N''), (N'114', N'1293470838745821184', N'', N''), (N'115', N'1293471661785706496', N'', N''), (N'116', N'1293472678392721408', N'', N''), (N'117', N'1293472857510473728', N'', N''), (N'118', N'1299273336009359360', N'127.0.0.1', N''), (N'119', N'1299273436282585088', N'127.0.0.1', N''), (N'120', N'1299273618470567936', N'127.0.0.1', N''), (N'121', N'1299273770182737920', N'127.0.0.1', N''), (N'122', N'1299273978023084032', N'127.0.0.1', N''), (N'123', N'1299274123225694208', N'127.0.0.1', N''), (N'124', N'1299274222299348992', N'127.0.0.1', N''), (N'125', N'1304238876758495232', N'', N''), (N'126', N'1304678610343383040', N'', N''), (N'127', N'1304679169305694208', N'', N''), (N'128', N'1310460417141817344', N'', N''), (N'129', N'1310502391475519488', N'', N''), (N'130', N'1310515546943569920', N'', N''), (N'131', N'1310515735292985344', N'', N''), (N'132', N'1316628769783480320', N'', N''), (N'133', N'1316628940663619584', N'', N''), (N'134', N'1316629112428756992', N'', N''), (N'135', N'1316652047017246720', N'', N''), (N'136', N'1316913899996737536', N'', N''), (N'137', N'1319200951383199744', N'', N''), (N'138', N'1319221929807024128', N'', N''), (N'139', N'1319554431134306304', N'', N''), (N'140', N'1319554550458060800', N'', N''), (N'141', N'1319554948434595840', N'', N''), (N'142', N'1319555067183730688', N'', N''), (N'143', N'1319555230765780992', N'', N''), (N'144', N'1319555333790470144', N'', N''), (N'145', N'1321001932510203904', N'', N''), (N'146', N'1321002059803136000', N'', N''), (N'147', N'1321002256440496128', N'', N''), (N'148', N'1321002350686507008', N'', N''), (N'149', N'1322190027988525056', N'', N''), (N'150', N'1322452079688458240', N'', N''), (N'151', N'1322452183929495552', N'', N''), (N'152', N'1322452308651319296', N'', N''), (N'153', N'1322452858176446464', N'', N''), (N'154', N'1322452989235863552', N'', N''), (N'155', N'1322453089655889920', N'', N''), (N'156', N'1329706860249804800', N'', N''), (N'157', N'1329707002411544576', N'', N''), (N'158', N'1329708512277098496', N'', N''), (N'159', N'1329708625917571072', N'', N''), (N'160', N'1335049839287357440', N'', N''), (N'161', N'1335050034221830144', N'', N''), (N'162', N'1335050145899368448', N'', N''), (N'163', N'1335050283434790912', N'', N''), (N'164', N'1335050381770248192', N'', N''), (N'165', N'1335050520941449216', N'', N''), (N'166', N'1335050615829188608', N'', N''), (N'167', N'1335111798720450560', N'', N''), (N'168', N'1335118541370314752', N'', N''), (N'169', N'1335118660417245184', N'', N''), (N'170', N'1335118782727344128', N'', N''), (N'171', N'1335118903200337920', N'', N''), (N'172', N'1336230645078921216', N'', N''), (N'173', N'1337314809113722880', N'', N''), (N'174', N'1337314938973569024', N'', N''), (N'175', N'1340961907637243904', N'', N''), (N'176', N'1341652247554379776', N'', N''), (N'177', N'1341652385555369984', N'', N''), (N'178', N'1342457939827552256', N'', N''), (N'179', N'1342458050112581632', N'', N''), (N'180', N'1363382062055915520', N'', N''), (N'181', N'1363382298501414912', N'', N''), (N'182', N'1368854800347848704', N'', N''), (N'183', N'1368855936576413696', N'', N''), (N'184', N'1368856295889854464', N'', N''), (N'185', N'1368856703572008960', N'', N''), (N'186', N'1368856819242524672', N'', N''), (N'187', N'1368856927887581184', N'', N''), (N'188', N'1368857128383700992', N'', N''), (N'189', N'1369560306297233408', N'', N''), (N'190', N'1369560450472239104', N'', N'')
GO
COMMIT
@@ -583,19 +583,6 @@ CREATE TABLE [apigateway].[cap.published] (
GO
--- ----------------------------
--- Records of cap.published
--- ----------------------------
-BEGIN TRANSACTION
-GO
-
-INSERT INTO [apigateway].[cap.published] VALUES (N'1340961909189136384', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1340961909189136384","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/12/21 18:06:47 +08:00","cap-corr-id":"1340961909189136384","cap-corr-seq":"0"},"Value":{"DateTime":"2020-12-21T18:06:47.6668667+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2020-12-21 18:06:48', N'2020-12-22 18:06:48', N'Succeeded'), (N'1341265150657449984', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-callback-name":null,"cap-msg-id":"1341265150657449984","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2020/12/22 14:11:46 +08:00","cap-corr-id":"1341265150657449984","cap-corr-seq":"0"},"Value":{"DateTime":"2020-12-22T14:11:46.0753073+08:00","AppId":"TEST-APP","Method":"Modify","Object":"ReRoute"}}', N'0', N'2020-12-22 14:11:46', N'2020-12-23 14:11:46', N'Succeeded')
-GO
-
-COMMIT
-GO
-
-
-- ----------------------------
-- Table structure for cap.received
-- ----------------------------
diff --git a/aspnet-core/database/ApiGateway-Init.sql b/aspnet-core/database/ApiGateway-Init.sql
index 3b707771f..00af54afa 100644
--- a/aspnet-core/database/ApiGateway-Init.sql
+++ b/aspnet-core/database/ApiGateway-Init.sql
@@ -11,7 +11,7 @@
Target Server Version : 80020
File Encoding : 65001
- Date: 22/12/2020 14:45:05
+ Date: 11/03/2021 17:43:45
*/
SET NAMES utf8mb4;
@@ -62,8 +62,8 @@ CREATE TABLE `appapigatewayaggregate` (
INSERT INTO `appapigatewayaggregate` VALUES (5, '{}', 'db569f15577848568bee9616d6b8b53c', 'TEST-APP', 'abp接口代理服务', 1263083077348196352, 'platform-api-definition,backend-admin-api-definition,messages-api-definition,apigateway-api-definition,identity-server-api-definition,', '/api/abp/api-definition', '', 1, 'AbpApiDefinitionAggregator', NULL, '');
INSERT INTO `appapigatewayaggregate` VALUES (6, '{}', '870a2c5df9b34f8c9514aef0250fbb47', 'TEST-APP', 'abp框架配置', 1263102116090970112, 'apigateway-configuration,platform-configuration,backend-admin-configuration,messages-configuration,identity-server-configuration,', '/api/abp/application-configuration', '', 1, 'AbpApiDefinitionAggregator', NULL, '');
INSERT INTO `appapigatewayaggregate` VALUES (8, '{}', 'edc962f7e0844bb09cb0fb731f358b4b', 'TEST-APP', '我的消息订阅', 1322503807309881344, 'assignables-notifilers,my-subscribes,', '/api/my-subscribes/assignables-notifilers', '', 1, 'AbpApiDefinitionAggregator', NULL, '');
-INSERT INTO `appapigatewayaggregate` VALUES (9, '{}', 'dbfc4b5972034e8ba875551fa8dd29a1', 'TEST-APP', '全局设置', 1329708867127799808, 'setting-global,wechat-setting-global,', '/api/setting-management/settings/by-global', '', 1, 'AbpApiDefinitionAggregator', NULL, '');
-INSERT INTO `appapigatewayaggregate` VALUES (10, '{}', '2035b334da4b450eaa3f0c4c54998d8b', 'TEST-APP', '当前租户设置', 1329709265255329792, 'setting-current-tenant,wechat-setting-current-tenant,', '/api/setting-management/settings/by-current-tenant', '', 1, 'AbpApiDefinitionAggregator', NULL, '');
+INSERT INTO `appapigatewayaggregate` VALUES (9, '{}', 'c65227b8a0e143b2a0b6186ffde3dfc1', 'TEST-APP', '全局设置', 1329708867127799808, 'setting-global,wechat-setting-global,aliyun-setting-global,oss-management-global,', '/api/setting-management/settings/by-global', '', 1, 'AbpApiDefinitionAggregator', NULL, '');
+INSERT INTO `appapigatewayaggregate` VALUES (10, '{}', '29fb4cbfcdfe41478b931df8c549992b', 'TEST-APP', '当前租户设置', 1329709265255329792, 'setting-current-tenant,wechat-setting-current-tenant,aliyun-setting-current-tenant,oss-management-current-tenant,', '/api/setting-management/settings/by-current-tenant', '', 1, 'AbpApiDefinitionAggregator', NULL, '');
-- ----------------------------
-- Table structure for appapigatewayaggregateconfig
@@ -93,7 +93,7 @@ CREATE TABLE `appapigatewayauthoptions` (
PRIMARY KEY (`Id`) USING BTREE,
UNIQUE INDEX `IX_AppApiGatewayAuthOptions_ReRouteId`(`ReRouteId`) USING BTREE,
CONSTRAINT `FK_AppApiGatewayAuthOptions_AppApiGatewayReRoute_ReRouteId` FOREIGN KEY (`ReRouteId`) REFERENCES `appapigatewayreroute` (`ReRouteId`) ON DELETE CASCADE ON UPDATE RESTRICT
-) ENGINE = InnoDB AUTO_INCREMENT = 176 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 191 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of appapigatewayauthoptions
@@ -169,14 +169,6 @@ INSERT INTO `appapigatewayauthoptions` VALUES (101, 1290849478956199936, '', '')
INSERT INTO `appapigatewayauthoptions` VALUES (102, 1290849628051124224, '', '');
INSERT INTO `appapigatewayauthoptions` VALUES (103, 1290849798553776128, '', '');
INSERT INTO `appapigatewayauthoptions` VALUES (105, 1291259822512693248, '', '');
-INSERT INTO `appapigatewayauthoptions` VALUES (106, 1292620505149145088, '', '');
-INSERT INTO `appapigatewayauthoptions` VALUES (107, 1292620665505775616, '', '');
-INSERT INTO `appapigatewayauthoptions` VALUES (108, 1292620843398791168, '', '');
-INSERT INTO `appapigatewayauthoptions` VALUES (109, 1292621027574874112, '', '');
-INSERT INTO `appapigatewayauthoptions` VALUES (110, 1292621363161137152, '', '');
-INSERT INTO `appapigatewayauthoptions` VALUES (111, 1292621494837116928, '', '');
-INSERT INTO `appapigatewayauthoptions` VALUES (112, 1292621629260365824, '', '');
-INSERT INTO `appapigatewayauthoptions` VALUES (113, 1292622526073864192, '', '');
INSERT INTO `appapigatewayauthoptions` VALUES (114, 1293470838745821184, '', '');
INSERT INTO `appapigatewayauthoptions` VALUES (115, 1293471661785706496, '', '');
INSERT INTO `appapigatewayauthoptions` VALUES (116, 1293472678392721408, '', '');
@@ -239,6 +231,21 @@ INSERT INTO `appapigatewayauthoptions` VALUES (172, 1336230645078921216, '', '')
INSERT INTO `appapigatewayauthoptions` VALUES (173, 1337314809113722880, '', '');
INSERT INTO `appapigatewayauthoptions` VALUES (174, 1337314938973569024, '', '');
INSERT INTO `appapigatewayauthoptions` VALUES (175, 1340961907637243904, '', '');
+INSERT INTO `appapigatewayauthoptions` VALUES (176, 1341652247554379776, '', '');
+INSERT INTO `appapigatewayauthoptions` VALUES (177, 1341652385555369984, '', '');
+INSERT INTO `appapigatewayauthoptions` VALUES (178, 1342457939827552256, '', '');
+INSERT INTO `appapigatewayauthoptions` VALUES (179, 1342458050112581632, '', '');
+INSERT INTO `appapigatewayauthoptions` VALUES (180, 1363382062055915520, '', '');
+INSERT INTO `appapigatewayauthoptions` VALUES (181, 1363382298501414912, '', '');
+INSERT INTO `appapigatewayauthoptions` VALUES (182, 1368854800347848704, '', '');
+INSERT INTO `appapigatewayauthoptions` VALUES (183, 1368855936576413696, '', '');
+INSERT INTO `appapigatewayauthoptions` VALUES (184, 1368856295889854464, '', '');
+INSERT INTO `appapigatewayauthoptions` VALUES (185, 1368856703572008960, '', '');
+INSERT INTO `appapigatewayauthoptions` VALUES (186, 1368856819242524672, '', '');
+INSERT INTO `appapigatewayauthoptions` VALUES (187, 1368856927887581184, '', '');
+INSERT INTO `appapigatewayauthoptions` VALUES (188, 1368857128383700992, '', '');
+INSERT INTO `appapigatewayauthoptions` VALUES (189, 1369560306297233408, '', '');
+INSERT INTO `appapigatewayauthoptions` VALUES (190, 1369560450472239104, '', '');
-- ----------------------------
-- Table structure for appapigatewaybalanceroptions
@@ -256,7 +263,7 @@ CREATE TABLE `appapigatewaybalanceroptions` (
UNIQUE INDEX `IX_AppApiGatewayBalancerOptions_ReRouteId`(`ReRouteId`) USING BTREE,
CONSTRAINT `FK_AppApiGatewayBalancerOptions_AppApiGatewayGlobalConfiguratio~` FOREIGN KEY (`ItemId`) REFERENCES `appapigatewayglobalconfiguration` (`ItemId`) ON DELETE CASCADE ON UPDATE RESTRICT,
CONSTRAINT `FK_AppApiGatewayBalancerOptions_AppApiGatewayReRoute_ReRouteId` FOREIGN KEY (`ReRouteId`) REFERENCES `appapigatewayreroute` (`ReRouteId`) ON DELETE CASCADE ON UPDATE RESTRICT
-) ENGINE = InnoDB AUTO_INCREMENT = 179 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 194 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of appapigatewaybalanceroptions
@@ -333,14 +340,6 @@ INSERT INTO `appapigatewaybalanceroptions` VALUES (104, NULL, 129084947895619993
INSERT INTO `appapigatewaybalanceroptions` VALUES (105, NULL, 1290849628051124224, '', '', 0);
INSERT INTO `appapigatewaybalanceroptions` VALUES (106, NULL, 1290849798553776128, '', '', 0);
INSERT INTO `appapigatewaybalanceroptions` VALUES (108, NULL, 1291259822512693248, '', '', 0);
-INSERT INTO `appapigatewaybalanceroptions` VALUES (109, NULL, 1292620505149145088, '', '', 0);
-INSERT INTO `appapigatewaybalanceroptions` VALUES (110, NULL, 1292620665505775616, '', '', 0);
-INSERT INTO `appapigatewaybalanceroptions` VALUES (111, NULL, 1292620843398791168, '', '', 0);
-INSERT INTO `appapigatewaybalanceroptions` VALUES (112, NULL, 1292621027574874112, '', '', 0);
-INSERT INTO `appapigatewaybalanceroptions` VALUES (113, NULL, 1292621363161137152, '', '', 0);
-INSERT INTO `appapigatewaybalanceroptions` VALUES (114, NULL, 1292621494837116928, '', '', 0);
-INSERT INTO `appapigatewaybalanceroptions` VALUES (115, NULL, 1292621629260365824, '', '', 0);
-INSERT INTO `appapigatewaybalanceroptions` VALUES (116, NULL, 1292622526073864192, '', '', 0);
INSERT INTO `appapigatewaybalanceroptions` VALUES (117, NULL, 1293470838745821184, '', '', 0);
INSERT INTO `appapigatewaybalanceroptions` VALUES (118, NULL, 1293471661785706496, '', '', 0);
INSERT INTO `appapigatewaybalanceroptions` VALUES (119, NULL, 1293472678392721408, '', '', 0);
@@ -403,6 +402,21 @@ INSERT INTO `appapigatewaybalanceroptions` VALUES (175, NULL, 133623064507892121
INSERT INTO `appapigatewaybalanceroptions` VALUES (176, NULL, 1337314809113722880, '', '', 0);
INSERT INTO `appapigatewaybalanceroptions` VALUES (177, NULL, 1337314938973569024, '', '', 0);
INSERT INTO `appapigatewaybalanceroptions` VALUES (178, NULL, 1340961907637243904, '', '', 0);
+INSERT INTO `appapigatewaybalanceroptions` VALUES (179, NULL, 1341652247554379776, '', '', 0);
+INSERT INTO `appapigatewaybalanceroptions` VALUES (180, NULL, 1341652385555369984, '', '', 0);
+INSERT INTO `appapigatewaybalanceroptions` VALUES (181, NULL, 1342457939827552256, '', '', 0);
+INSERT INTO `appapigatewaybalanceroptions` VALUES (182, NULL, 1342458050112581632, '', '', 0);
+INSERT INTO `appapigatewaybalanceroptions` VALUES (183, NULL, 1363382062055915520, '', '', 0);
+INSERT INTO `appapigatewaybalanceroptions` VALUES (184, NULL, 1363382298501414912, '', '', 0);
+INSERT INTO `appapigatewaybalanceroptions` VALUES (185, NULL, 1368854800347848704, '', '', 0);
+INSERT INTO `appapigatewaybalanceroptions` VALUES (186, NULL, 1368855936576413696, '', '', 0);
+INSERT INTO `appapigatewaybalanceroptions` VALUES (187, NULL, 1368856295889854464, '', '', 0);
+INSERT INTO `appapigatewaybalanceroptions` VALUES (188, NULL, 1368856703572008960, '', '', 0);
+INSERT INTO `appapigatewaybalanceroptions` VALUES (189, NULL, 1368856819242524672, '', '', 0);
+INSERT INTO `appapigatewaybalanceroptions` VALUES (190, NULL, 1368856927887581184, '', '', 0);
+INSERT INTO `appapigatewaybalanceroptions` VALUES (191, NULL, 1368857128383700992, '', '', 0);
+INSERT INTO `appapigatewaybalanceroptions` VALUES (192, NULL, 1369560306297233408, '', '', 0);
+INSERT INTO `appapigatewaybalanceroptions` VALUES (193, NULL, 1369560450472239104, '', '', 0);
-- ----------------------------
-- Table structure for appapigatewaycacheoptions
@@ -416,7 +430,7 @@ CREATE TABLE `appapigatewaycacheoptions` (
PRIMARY KEY (`Id`) USING BTREE,
UNIQUE INDEX `IX_AppApiGatewayCacheOptions_ReRouteId`(`ReRouteId`) USING BTREE,
CONSTRAINT `FK_AppApiGatewayCacheOptions_AppApiGatewayReRoute_ReRouteId` FOREIGN KEY (`ReRouteId`) REFERENCES `appapigatewayreroute` (`ReRouteId`) ON DELETE CASCADE ON UPDATE RESTRICT
-) ENGINE = InnoDB AUTO_INCREMENT = 176 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 191 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of appapigatewaycacheoptions
@@ -492,14 +506,6 @@ INSERT INTO `appapigatewaycacheoptions` VALUES (101, 1290849478956199936, NULL,
INSERT INTO `appapigatewaycacheoptions` VALUES (102, 1290849628051124224, NULL, NULL);
INSERT INTO `appapigatewaycacheoptions` VALUES (103, 1290849798553776128, NULL, NULL);
INSERT INTO `appapigatewaycacheoptions` VALUES (105, 1291259822512693248, 0, '');
-INSERT INTO `appapigatewaycacheoptions` VALUES (106, 1292620505149145088, 0, '');
-INSERT INTO `appapigatewaycacheoptions` VALUES (107, 1292620665505775616, 0, '');
-INSERT INTO `appapigatewaycacheoptions` VALUES (108, 1292620843398791168, NULL, NULL);
-INSERT INTO `appapigatewaycacheoptions` VALUES (109, 1292621027574874112, 0, '');
-INSERT INTO `appapigatewaycacheoptions` VALUES (110, 1292621363161137152, 0, '');
-INSERT INTO `appapigatewaycacheoptions` VALUES (111, 1292621494837116928, 0, '');
-INSERT INTO `appapigatewaycacheoptions` VALUES (112, 1292621629260365824, 0, '');
-INSERT INTO `appapigatewaycacheoptions` VALUES (113, 1292622526073864192, 0, '');
INSERT INTO `appapigatewaycacheoptions` VALUES (114, 1293470838745821184, 0, '');
INSERT INTO `appapigatewaycacheoptions` VALUES (115, 1293471661785706496, 0, '');
INSERT INTO `appapigatewaycacheoptions` VALUES (116, 1293472678392721408, 0, '');
@@ -562,6 +568,21 @@ INSERT INTO `appapigatewaycacheoptions` VALUES (172, 1336230645078921216, 0, '')
INSERT INTO `appapigatewaycacheoptions` VALUES (173, 1337314809113722880, NULL, NULL);
INSERT INTO `appapigatewaycacheoptions` VALUES (174, 1337314938973569024, 0, '');
INSERT INTO `appapigatewaycacheoptions` VALUES (175, 1340961907637243904, 0, '');
+INSERT INTO `appapigatewaycacheoptions` VALUES (176, 1341652247554379776, 0, '');
+INSERT INTO `appapigatewaycacheoptions` VALUES (177, 1341652385555369984, 0, '');
+INSERT INTO `appapigatewaycacheoptions` VALUES (178, 1342457939827552256, 0, '');
+INSERT INTO `appapigatewaycacheoptions` VALUES (179, 1342458050112581632, 0, '');
+INSERT INTO `appapigatewaycacheoptions` VALUES (180, 1363382062055915520, NULL, NULL);
+INSERT INTO `appapigatewaycacheoptions` VALUES (181, 1363382298501414912, NULL, NULL);
+INSERT INTO `appapigatewaycacheoptions` VALUES (182, 1368854800347848704, NULL, NULL);
+INSERT INTO `appapigatewaycacheoptions` VALUES (183, 1368855936576413696, NULL, NULL);
+INSERT INTO `appapigatewaycacheoptions` VALUES (184, 1368856295889854464, NULL, NULL);
+INSERT INTO `appapigatewaycacheoptions` VALUES (185, 1368856703572008960, NULL, NULL);
+INSERT INTO `appapigatewaycacheoptions` VALUES (186, 1368856819242524672, NULL, NULL);
+INSERT INTO `appapigatewaycacheoptions` VALUES (187, 1368856927887581184, NULL, NULL);
+INSERT INTO `appapigatewaycacheoptions` VALUES (188, 1368857128383700992, 0, '');
+INSERT INTO `appapigatewaycacheoptions` VALUES (189, 1369560306297233408, 0, '');
+INSERT INTO `appapigatewaycacheoptions` VALUES (190, 1369560450472239104, 0, '');
-- ----------------------------
-- Table structure for appapigatewaydiscovery
@@ -671,7 +692,7 @@ CREATE TABLE `appapigatewayhttpoptions` (
UNIQUE INDEX `IX_AppApiGatewayHttpOptions_ReRouteId`(`ReRouteId`) USING BTREE,
CONSTRAINT `FK_AppApiGatewayHttpOptions_AppApiGatewayGlobalConfiguration_It~` FOREIGN KEY (`ItemId`) REFERENCES `appapigatewayglobalconfiguration` (`ItemId`) ON DELETE CASCADE ON UPDATE RESTRICT,
CONSTRAINT `FK_AppApiGatewayHttpOptions_AppApiGatewayReRoute_ReRouteId` FOREIGN KEY (`ReRouteId`) REFERENCES `appapigatewayreroute` (`ReRouteId`) ON DELETE CASCADE ON UPDATE RESTRICT
-) ENGINE = InnoDB AUTO_INCREMENT = 179 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 194 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of appapigatewayhttpoptions
@@ -748,14 +769,6 @@ INSERT INTO `appapigatewayhttpoptions` VALUES (104, NULL, 1290849478956199936, 0
INSERT INTO `appapigatewayhttpoptions` VALUES (105, NULL, 1290849628051124224, 0, 0, 0, 0, 0);
INSERT INTO `appapigatewayhttpoptions` VALUES (106, NULL, 1290849798553776128, 0, 0, 0, 0, 0);
INSERT INTO `appapigatewayhttpoptions` VALUES (108, NULL, 1291259822512693248, 0, 0, 0, 0, 0);
-INSERT INTO `appapigatewayhttpoptions` VALUES (109, NULL, 1292620505149145088, 0, 0, 0, 0, 0);
-INSERT INTO `appapigatewayhttpoptions` VALUES (110, NULL, 1292620665505775616, 0, 0, 0, 0, 0);
-INSERT INTO `appapigatewayhttpoptions` VALUES (111, NULL, 1292620843398791168, 100, 0, 0, 0, 0);
-INSERT INTO `appapigatewayhttpoptions` VALUES (112, NULL, 1292621027574874112, 0, 0, 0, 0, 0);
-INSERT INTO `appapigatewayhttpoptions` VALUES (113, NULL, 1292621363161137152, 0, 0, 0, 0, 0);
-INSERT INTO `appapigatewayhttpoptions` VALUES (114, NULL, 1292621494837116928, 0, 0, 0, 0, 0);
-INSERT INTO `appapigatewayhttpoptions` VALUES (115, NULL, 1292621629260365824, 0, 0, 0, 0, 0);
-INSERT INTO `appapigatewayhttpoptions` VALUES (116, NULL, 1292622526073864192, 0, 0, 0, 0, 0);
INSERT INTO `appapigatewayhttpoptions` VALUES (117, NULL, 1293470838745821184, 0, 0, 0, 0, 0);
INSERT INTO `appapigatewayhttpoptions` VALUES (118, NULL, 1293471661785706496, 0, 0, 0, 0, 0);
INSERT INTO `appapigatewayhttpoptions` VALUES (119, NULL, 1293472678392721408, 0, 0, 0, 0, 0);
@@ -818,6 +831,21 @@ INSERT INTO `appapigatewayhttpoptions` VALUES (175, NULL, 1336230645078921216, 0
INSERT INTO `appapigatewayhttpoptions` VALUES (176, NULL, 1337314809113722880, 0, 0, 0, 0, 0);
INSERT INTO `appapigatewayhttpoptions` VALUES (177, NULL, 1337314938973569024, 0, 0, 0, 0, 0);
INSERT INTO `appapigatewayhttpoptions` VALUES (178, NULL, 1340961907637243904, 0, 0, 0, 0, 0);
+INSERT INTO `appapigatewayhttpoptions` VALUES (179, NULL, 1341652247554379776, 0, 0, 0, 0, 0);
+INSERT INTO `appapigatewayhttpoptions` VALUES (180, NULL, 1341652385555369984, 0, 0, 0, 0, 0);
+INSERT INTO `appapigatewayhttpoptions` VALUES (181, NULL, 1342457939827552256, 0, 0, 0, 0, 0);
+INSERT INTO `appapigatewayhttpoptions` VALUES (182, NULL, 1342458050112581632, 0, 0, 0, 0, 0);
+INSERT INTO `appapigatewayhttpoptions` VALUES (183, NULL, 1363382062055915520, 0, 0, 0, 0, 0);
+INSERT INTO `appapigatewayhttpoptions` VALUES (184, NULL, 1363382298501414912, 0, 0, 0, 0, 0);
+INSERT INTO `appapigatewayhttpoptions` VALUES (185, NULL, 1368854800347848704, 0, 0, 0, 0, 0);
+INSERT INTO `appapigatewayhttpoptions` VALUES (186, NULL, 1368855936576413696, 0, 0, 0, 0, 0);
+INSERT INTO `appapigatewayhttpoptions` VALUES (187, NULL, 1368856295889854464, 0, 0, 0, 0, 0);
+INSERT INTO `appapigatewayhttpoptions` VALUES (188, NULL, 1368856703572008960, 0, 0, 0, 0, 0);
+INSERT INTO `appapigatewayhttpoptions` VALUES (189, NULL, 1368856819242524672, 0, 0, 0, 0, 0);
+INSERT INTO `appapigatewayhttpoptions` VALUES (190, NULL, 1368856927887581184, 0, 0, 0, 0, 0);
+INSERT INTO `appapigatewayhttpoptions` VALUES (191, NULL, 1368857128383700992, 0, 0, 0, 0, 0);
+INSERT INTO `appapigatewayhttpoptions` VALUES (192, NULL, 1369560306297233408, 0, 0, 0, 0, 0);
+INSERT INTO `appapigatewayhttpoptions` VALUES (193, NULL, 1369560450472239104, 0, 0, 0, 0, 0);
-- ----------------------------
-- Table structure for appapigatewayqosoptions
@@ -835,7 +863,7 @@ CREATE TABLE `appapigatewayqosoptions` (
UNIQUE INDEX `IX_AppApiGatewayQoSOptions_ReRouteId`(`ReRouteId`) USING BTREE,
CONSTRAINT `FK_AppApiGatewayQoSOptions_AppApiGatewayGlobalConfiguration_Ite~` FOREIGN KEY (`ItemId`) REFERENCES `appapigatewayglobalconfiguration` (`ItemId`) ON DELETE CASCADE ON UPDATE RESTRICT,
CONSTRAINT `FK_AppApiGatewayQoSOptions_AppApiGatewayReRoute_ReRouteId` FOREIGN KEY (`ReRouteId`) REFERENCES `appapigatewayreroute` (`ReRouteId`) ON DELETE CASCADE ON UPDATE RESTRICT
-) ENGINE = InnoDB AUTO_INCREMENT = 179 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 194 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of appapigatewayqosoptions
@@ -912,14 +940,6 @@ INSERT INTO `appapigatewayqosoptions` VALUES (104, NULL, 1290849478956199936, 50
INSERT INTO `appapigatewayqosoptions` VALUES (105, NULL, 1290849628051124224, 50, 60000, 30000);
INSERT INTO `appapigatewayqosoptions` VALUES (106, NULL, 1290849798553776128, 50, 60000, 30000);
INSERT INTO `appapigatewayqosoptions` VALUES (108, NULL, 1291259822512693248, 50, 60000, 30000);
-INSERT INTO `appapigatewayqosoptions` VALUES (109, NULL, 1292620505149145088, 50, 60000, 30000);
-INSERT INTO `appapigatewayqosoptions` VALUES (110, NULL, 1292620665505775616, 50, 60000, 30000);
-INSERT INTO `appapigatewayqosoptions` VALUES (111, NULL, 1292620843398791168, 50, 60000, 1200000);
-INSERT INTO `appapigatewayqosoptions` VALUES (112, NULL, 1292621027574874112, 50, 60000, 30000);
-INSERT INTO `appapigatewayqosoptions` VALUES (113, NULL, 1292621363161137152, 50, 60000, 30000);
-INSERT INTO `appapigatewayqosoptions` VALUES (114, NULL, 1292621494837116928, 50, 60000, 30000);
-INSERT INTO `appapigatewayqosoptions` VALUES (115, NULL, 1292621629260365824, 50, 60000, 30000);
-INSERT INTO `appapigatewayqosoptions` VALUES (116, NULL, 1292622526073864192, 50, 60000, 30000);
INSERT INTO `appapigatewayqosoptions` VALUES (117, NULL, 1293470838745821184, 50, 60000, 30000);
INSERT INTO `appapigatewayqosoptions` VALUES (118, NULL, 1293471661785706496, 50, 60000, 30000);
INSERT INTO `appapigatewayqosoptions` VALUES (119, NULL, 1293472678392721408, 50, 60000, 30000);
@@ -982,6 +1002,21 @@ INSERT INTO `appapigatewayqosoptions` VALUES (175, NULL, 1336230645078921216, 50
INSERT INTO `appapigatewayqosoptions` VALUES (176, NULL, 1337314809113722880, 50, 60000, 30000);
INSERT INTO `appapigatewayqosoptions` VALUES (177, NULL, 1337314938973569024, 50, 60000, 30000);
INSERT INTO `appapigatewayqosoptions` VALUES (178, NULL, 1340961907637243904, 50, 60000, 30000);
+INSERT INTO `appapigatewayqosoptions` VALUES (179, NULL, 1341652247554379776, 50, 60000, 30000);
+INSERT INTO `appapigatewayqosoptions` VALUES (180, NULL, 1341652385555369984, 50, 60000, 30000);
+INSERT INTO `appapigatewayqosoptions` VALUES (181, NULL, 1342457939827552256, 50, 60000, 30000);
+INSERT INTO `appapigatewayqosoptions` VALUES (182, NULL, 1342458050112581632, 50, 60000, 30000);
+INSERT INTO `appapigatewayqosoptions` VALUES (183, NULL, 1363382062055915520, 50, 60000, 30000);
+INSERT INTO `appapigatewayqosoptions` VALUES (184, NULL, 1363382298501414912, 50, 60000, 30000);
+INSERT INTO `appapigatewayqosoptions` VALUES (185, NULL, 1368854800347848704, 50, 60000, 30000);
+INSERT INTO `appapigatewayqosoptions` VALUES (186, NULL, 1368855936576413696, 50, 60000, 30000);
+INSERT INTO `appapigatewayqosoptions` VALUES (187, NULL, 1368856295889854464, 50, 60000, 30000);
+INSERT INTO `appapigatewayqosoptions` VALUES (188, NULL, 1368856703572008960, 50, 60000, 30000);
+INSERT INTO `appapigatewayqosoptions` VALUES (189, NULL, 1368856819242524672, 50, 60000, 30000);
+INSERT INTO `appapigatewayqosoptions` VALUES (190, NULL, 1368856927887581184, 50, 60000, 30000);
+INSERT INTO `appapigatewayqosoptions` VALUES (191, NULL, 1368857128383700992, 50, 60000, 30000);
+INSERT INTO `appapigatewayqosoptions` VALUES (192, NULL, 1369560306297233408, 50, 60000, 30000);
+INSERT INTO `appapigatewayqosoptions` VALUES (193, NULL, 1369560450472239104, 50, 60000, 30000);
-- ----------------------------
-- Table structure for appapigatewayratelimitoptions
@@ -1023,7 +1058,7 @@ CREATE TABLE `appapigatewayratelimitrule` (
UNIQUE INDEX `IX_AppApiGatewayRateLimitRule_ReRouteId`(`ReRouteId`) USING BTREE,
CONSTRAINT `FK_AppApiGatewayRateLimitRule_AppApiGatewayDynamicReRoute_Dynam~` FOREIGN KEY (`DynamicReRouteId`) REFERENCES `appapigatewaydynamicreroute` (`DynamicReRouteId`) ON DELETE CASCADE ON UPDATE RESTRICT,
CONSTRAINT `FK_AppApiGatewayRateLimitRule_AppApiGatewayReRoute_ReRouteId` FOREIGN KEY (`ReRouteId`) REFERENCES `appapigatewayreroute` (`ReRouteId`) ON DELETE CASCADE ON UPDATE RESTRICT
-) ENGINE = InnoDB AUTO_INCREMENT = 176 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 191 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of appapigatewayratelimitrule
@@ -1099,14 +1134,6 @@ INSERT INTO `appapigatewayratelimitrule` VALUES (101, 1290849478956199936, NULL,
INSERT INTO `appapigatewayratelimitrule` VALUES (102, 1290849628051124224, NULL, '', 0, NULL, NULL, NULL);
INSERT INTO `appapigatewayratelimitrule` VALUES (103, 1290849798553776128, NULL, '', 0, NULL, NULL, NULL);
INSERT INTO `appapigatewayratelimitrule` VALUES (105, 1291259822512693248, NULL, '', 0, NULL, NULL, NULL);
-INSERT INTO `appapigatewayratelimitrule` VALUES (106, 1292620505149145088, NULL, '', 0, NULL, NULL, NULL);
-INSERT INTO `appapigatewayratelimitrule` VALUES (107, 1292620665505775616, NULL, '', 0, NULL, NULL, NULL);
-INSERT INTO `appapigatewayratelimitrule` VALUES (108, 1292620843398791168, NULL, '', 0, NULL, NULL, NULL);
-INSERT INTO `appapigatewayratelimitrule` VALUES (109, 1292621027574874112, NULL, '', 0, NULL, NULL, NULL);
-INSERT INTO `appapigatewayratelimitrule` VALUES (110, 1292621363161137152, NULL, '', 0, NULL, NULL, NULL);
-INSERT INTO `appapigatewayratelimitrule` VALUES (111, 1292621494837116928, NULL, '', 0, NULL, NULL, NULL);
-INSERT INTO `appapigatewayratelimitrule` VALUES (112, 1292621629260365824, NULL, '', 0, NULL, NULL, NULL);
-INSERT INTO `appapigatewayratelimitrule` VALUES (113, 1292622526073864192, NULL, '', 0, NULL, NULL, NULL);
INSERT INTO `appapigatewayratelimitrule` VALUES (114, 1293470838745821184, NULL, '', 0, NULL, NULL, NULL);
INSERT INTO `appapigatewayratelimitrule` VALUES (115, 1293471661785706496, NULL, '', 0, NULL, NULL, NULL);
INSERT INTO `appapigatewayratelimitrule` VALUES (116, 1293472678392721408, NULL, '', 0, NULL, NULL, NULL);
@@ -1169,6 +1196,21 @@ INSERT INTO `appapigatewayratelimitrule` VALUES (172, 1336230645078921216, NULL,
INSERT INTO `appapigatewayratelimitrule` VALUES (173, 1337314809113722880, NULL, '', 0, NULL, NULL, NULL);
INSERT INTO `appapigatewayratelimitrule` VALUES (174, 1337314938973569024, NULL, '', 0, NULL, NULL, NULL);
INSERT INTO `appapigatewayratelimitrule` VALUES (175, 1340961907637243904, NULL, '', 0, NULL, NULL, NULL);
+INSERT INTO `appapigatewayratelimitrule` VALUES (176, 1341652247554379776, NULL, '', 0, NULL, NULL, NULL);
+INSERT INTO `appapigatewayratelimitrule` VALUES (177, 1341652385555369984, NULL, '', 0, NULL, NULL, NULL);
+INSERT INTO `appapigatewayratelimitrule` VALUES (178, 1342457939827552256, NULL, '', 0, NULL, NULL, NULL);
+INSERT INTO `appapigatewayratelimitrule` VALUES (179, 1342458050112581632, NULL, '', 0, NULL, NULL, NULL);
+INSERT INTO `appapigatewayratelimitrule` VALUES (180, 1363382062055915520, NULL, '', 0, NULL, NULL, NULL);
+INSERT INTO `appapigatewayratelimitrule` VALUES (181, 1363382298501414912, NULL, '', 0, NULL, NULL, NULL);
+INSERT INTO `appapigatewayratelimitrule` VALUES (182, 1368854800347848704, NULL, '', 0, NULL, NULL, NULL);
+INSERT INTO `appapigatewayratelimitrule` VALUES (183, 1368855936576413696, NULL, '', 0, NULL, NULL, NULL);
+INSERT INTO `appapigatewayratelimitrule` VALUES (184, 1368856295889854464, NULL, '', 0, NULL, NULL, NULL);
+INSERT INTO `appapigatewayratelimitrule` VALUES (185, 1368856703572008960, NULL, '', 0, NULL, NULL, NULL);
+INSERT INTO `appapigatewayratelimitrule` VALUES (186, 1368856819242524672, NULL, '', 0, NULL, NULL, NULL);
+INSERT INTO `appapigatewayratelimitrule` VALUES (187, 1368856927887581184, NULL, '', 0, NULL, NULL, NULL);
+INSERT INTO `appapigatewayratelimitrule` VALUES (188, 1368857128383700992, NULL, '', 0, NULL, NULL, NULL);
+INSERT INTO `appapigatewayratelimitrule` VALUES (189, 1369560306297233408, NULL, '', 0, NULL, NULL, NULL);
+INSERT INTO `appapigatewayratelimitrule` VALUES (190, 1369560450472239104, NULL, '', 0, NULL, NULL, NULL);
-- ----------------------------
-- Table structure for appapigatewayreroute
@@ -1208,7 +1250,7 @@ CREATE TABLE `appapigatewayreroute` (
PRIMARY KEY (`Id`) USING BTREE,
UNIQUE INDEX `AK_AppApiGatewayReRoute_ReRouteId`(`ReRouteId`) USING BTREE,
UNIQUE INDEX `IX_AppApiGatewayReRoute_AppId_DownstreamPathTemplate_UpstreamPa~`(`AppId`, `DownstreamPathTemplate`, `UpstreamPathTemplate`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 183 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 198 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of appapigatewayreroute
@@ -1284,14 +1326,6 @@ INSERT INTO `appapigatewayreroute` VALUES (108, '{}', '9362040d10a94fb991f60bc39
INSERT INTO `appapigatewayreroute` VALUES (109, '{}', 'a7df3a04805d4cc8a6e6b3823c6dd468', 1290849628051124224, '【后台管理】- 用户设置', '/api/setting-management/settings/by-user/{userId}', '', '', '/api/setting-management/settings/by-user/{userId}', 'GET,PUT,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30010,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
INSERT INTO `appapigatewayreroute` VALUES (110, '{}', 'ef6e38a529a345fab67f6a627cf20635', 1290849798553776128, '【后台管理】- 当前用户设置', '/api/setting-management/settings/by-current-user', '', '', '/api/setting-management/settings/by-current-user', 'GET,PUT,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30010,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
INSERT INTO `appapigatewayreroute` VALUES (112, '{}', '9844fed6507844f2ac64bd08649bd3a6', 1291259822512693248, '【身份认证服务】- 查询组织机构根节点', '/api/identity/organization-units/root-node', '', '', '/api/identity/organization-units/root-node', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
-INSERT INTO `appapigatewayreroute` VALUES (113, '{}', '24d8794cf8f943b4ac45d2bcccf7c128', 1292620505149145088, '【平台服务】- 文件系统', '/api/file-management/file-system', '', '', '/api/file-management/file-system', 'GET,PUT,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
-INSERT INTO `appapigatewayreroute` VALUES (114, '{}', '0acf6762d3af43efb655107e0039f5fc', 1292620665505775616, '【平台服务】- 文件系统 - 目录管理', '/api/file-management/file-system/folders', '', '', '/api/file-management/file-system/folders', 'POST,DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
-INSERT INTO `appapigatewayreroute` VALUES (115, '{}', '8b4363f70865419089b5f62ba35382df', 1292620843398791168, '【平台服务】- 文件系统 - 文件管理', '/api/file-management/file-system/files', '', '', '/api/file-management/file-system/files', 'GET,POST,DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 1200000, 1, '', 'TEST-APP');
-INSERT INTO `appapigatewayreroute` VALUES (116, '{}', '7eb315567bbc470bbbfd26923c5d0aba', 1292621027574874112, '【平台服务】- 文件系统 - 复制目录', '/api/file-management/file-system/folders/copy', '', '', '/api/file-management/file-system/folders/copy', 'PUT,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
-INSERT INTO `appapigatewayreroute` VALUES (117, '{}', 'af5853680cff454fa66ff6022f18da23', 1292621363161137152, '【平台服务】- 文件系统 - 移动目录', '/api/file-management/file-system/folders/move', '', '', '/api/file-management/file-system/folders/move', 'PUT,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
-INSERT INTO `appapigatewayreroute` VALUES (118, '{}', '6daa6d8c8adb466899988fd8181c29a8', 1292621494837116928, '【平台服务】- 文件系统 - 复制文件', '/api/file-management/file-system/files/copy', '', '', '/api/file-management/file-system/files/copy', 'PUT,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
-INSERT INTO `appapigatewayreroute` VALUES (119, '{}', '9560caaa3bd9424984c44724aa54bfe9', 1292621629260365824, '【平台服务】- 文件系统 - 移动文件', '/api/file-management/file-system/files/move', '', '', '/api/file-management/file-system/files/move', 'PUT,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
-INSERT INTO `appapigatewayreroute` VALUES (120, '{}', 'fc2aaa6035484201b9014912930fb7cb', 1292622526073864192, '【平台服务】- 文件系统 - 详情页', '/api/file-management/file-system/profile', '', '', '/api/file-management/file-system/profile', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
INSERT INTO `appapigatewayreroute` VALUES (121, '{}', 'c6c7b027000942dda8ba0d2e2d8cf705', 1293470838745821184, '【后台管理】- 框架配置', '/api/abp/application-configuration', '', '', '/api/abp/backend-admin/application-configuration', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30010,', '', '', 'backend-admin-configuration', 0, 30000, 1, '', 'TEST-APP');
INSERT INTO `appapigatewayreroute` VALUES (122, '{}', 'becd4342079d4399abda5b5ba3b46fdc', 1293471661785706496, '【消息服务】- 框架配置', '/api/abp/application-configuration', '', '', '/api/abp/messages/application-configuration', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30020,', '', '', 'messages-configuration', 0, 30000, 1, '', 'TEST-APP');
INSERT INTO `appapigatewayreroute` VALUES (123, '{}', 'c828140cee3043c18ffc274f6461f0f2', 1293472678392721408, '【后台管理】- 接口代理', '/api/abp/api-definition', '', '', '/api/abp/backend-admin/api-definition', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30010,', '', '', 'backend-admin-api-definition', 0, 30000, 1, '', 'TEST-APP');
@@ -1354,6 +1388,21 @@ INSERT INTO `appapigatewayreroute` VALUES (179, '{}', '70d6120e560f41c3879ec4549
INSERT INTO `appapigatewayreroute` VALUES (180, '{}', 'c67549cd6cd246f08d9f6ce93c906c21', 1337314809113722880, '【平台服务】- 布局', '/api/platform/layouts', '', '', '/api/platform/layouts', 'GET,POST,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
INSERT INTO `appapigatewayreroute` VALUES (181, '{}', 'bacca946a092434cb2ee5994c88f2c33', 1337314938973569024, '【平台服务】- 管理布局', '/api/platform/layouts/{id}', '', '', '/api/platform/layouts/{id}', 'GET,DELETE,PUT,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
INSERT INTO `appapigatewayreroute` VALUES (182, '{}', '741fdd4cc05a4025a9073a2e1ab9d5ea', 1340961907637243904, '【平台服务】- 获取所有布局', '/api/platform/layouts/all', '', '', '/api/platform/layouts/all', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
+INSERT INTO `appapigatewayreroute` VALUES (183, '{}', '26a1ef4016704dab8c254f90bc26ecfe', 1341652247554379776, '【身份认证服务】- Api范围', '/api/identity-server/api-scopes', '', '', '/api/identity-server/api-scopes', 'GET,POST,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
+INSERT INTO `appapigatewayreroute` VALUES (184, '{}', '3bfc1fef7f5446638f91c9b6e2fb12db', 1341652385555369984, '【身份认证服务】- 管理Api范围', '/api/identity-server/api-scopes/{id}', '', '', '/api/identity-server/api-scopes/{id}', 'GET,PUT,DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
+INSERT INTO `appapigatewayreroute` VALUES (185, '{}', '3288c25dd61e491db95313ca72016918', 1342457939827552256, '【身份认证服务】- 持久授权', '/api/identity-server/persisted-grants', '', '', '/api/identity-server/persisted-grants', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
+INSERT INTO `appapigatewayreroute` VALUES (186, '{}', '23f94678093148f58ba842096c3a0e39', 1342458050112581632, '【身份认证服务】- 管理持久授权', '/api/identity-server/persisted-grants/{id}', '', '', '/api/identity-server/persisted-grants/{id}', 'GET,DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
+INSERT INTO `appapigatewayreroute` VALUES (187, '{}', '1f61a3e35b374277ae2c13c671bc5d30', 1363382062055915520, '【阿里云】- 阿里云公共配置', '/api/setting-management/aliyun/by-global', '', '', '/api/setting-management/aliyun/by-global', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30010,', '', '', 'aliyun-setting-global', 0, 30000, 1, '', 'TEST-APP');
+INSERT INTO `appapigatewayreroute` VALUES (188, '{}', '46001a60f3d54b85a8417f6af24066e5', 1363382298501414912, '【阿里云】- 阿里云租户配置', '/api/setting-management/aliyun/by-current-tenant', '', '', '/api/setting-management/aliyun/by-current-tenant', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30010,', '', '', 'aliyun-setting-current-tenant', 0, 30000, 1, '', 'TEST-APP');
+INSERT INTO `appapigatewayreroute` VALUES (189, '{}', '0d21bec8bcc044bf9000227663039ef4', 1368854800347848704, '【Oss对象存储】- 管理容器(Bucket)', '/api/oss-management/containes/{name}', '', '', '/api/oss-management/containes/{name}', 'POST,GET,DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
+INSERT INTO `appapigatewayreroute` VALUES (190, '{}', 'ca33dc2834e4439d9ca7827fb31c70f8', 1368855936576413696, '【Oss对象存储】- 获取容器列表', '/api/oss-management/containes', '', '', '/api/oss-management/containes', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
+INSERT INTO `appapigatewayreroute` VALUES (191, '{}', 'e00fb37d9757471fbd1e64dca92e5d7d', 1368856295889854464, '【Oss对象存储】- 获取对象列表', '/api/oss-management/containes/objects', '', '', '/api/oss-management/containes/objects', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
+INSERT INTO `appapigatewayreroute` VALUES (192, '{}', 'cef75a4f7eac43789a3e246229fd5a1b', 1368856703572008960, '【Oss对象存储】- 管理Oss对象', '/api/oss-management/objects', '', '', '/api/oss-management/objects', 'GET,POST,DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
+INSERT INTO `appapigatewayreroute` VALUES (193, '{}', 'ee0d5e6de17c481ca2c0ee5c156b1973', 1368856819242524672, '【Oss对象存储】- 上传Oss对象', '/api/oss-management/objects/upload', '', '', '/api/oss-management/objects/upload', 'POST,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
+INSERT INTO `appapigatewayreroute` VALUES (194, '{}', '6c1a0f98129d418cba55a52dbdd88937', 1368856927887581184, '【Oss对象存储】- 批量删除Oss对象', '/api/oss-management/objects/bulk-delete', '', '', '/api/oss-management/objects/bulk-delete', 'DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
+INSERT INTO `appapigatewayreroute` VALUES (195, '{}', 'de285bf4b6114032a45d5611ea8e3101', 1368857128383700992, '【Oss对象存储】- 静态文件管理', '/api/files/static/{everything}', '', '', '/api/files/static/{everything}', 'POST,GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP');
+INSERT INTO `appapigatewayreroute` VALUES (196, '{}', '6287c30d31c147faae917cb6e52636ec', 1369560306297233408, '【Oss对象存储】- 获取公共配置', '/api/setting-management/oss-management/by-global', '', '', '/api/setting-management/oss-management/by-global', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', 'oss-management-global', 0, 30000, 1, '', 'TEST-APP');
+INSERT INTO `appapigatewayreroute` VALUES (197, '{}', '1012bb902aba47ada9a374fc73ed2632', 1369560450472239104, '【Oss对象存储】- 获取租户配置', '/api/setting-management/oss-management/by-current-tenant', '', '', '/api/setting-management/oss-management/by-current-tenant', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', 'oss-management-current-tenant', 0, 30000, 1, '', 'TEST-APP');
-- ----------------------------
-- Table structure for appapigatewayroutegroup
@@ -1397,7 +1446,7 @@ CREATE TABLE `appapigatewaysecurityoptions` (
PRIMARY KEY (`Id`) USING BTREE,
UNIQUE INDEX `IX_AppApiGatewaySecurityOptions_ReRouteId`(`ReRouteId`) USING BTREE,
CONSTRAINT `FK_AppApiGatewaySecurityOptions_AppApiGatewayReRoute_ReRouteId` FOREIGN KEY (`ReRouteId`) REFERENCES `appapigatewayreroute` (`ReRouteId`) ON DELETE CASCADE ON UPDATE RESTRICT
-) ENGINE = InnoDB AUTO_INCREMENT = 176 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 191 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of appapigatewaysecurityoptions
@@ -1473,14 +1522,6 @@ INSERT INTO `appapigatewaysecurityoptions` VALUES (101, 1290849478956199936, '',
INSERT INTO `appapigatewaysecurityoptions` VALUES (102, 1290849628051124224, '', '');
INSERT INTO `appapigatewaysecurityoptions` VALUES (103, 1290849798553776128, '', '');
INSERT INTO `appapigatewaysecurityoptions` VALUES (105, 1291259822512693248, '', '');
-INSERT INTO `appapigatewaysecurityoptions` VALUES (106, 1292620505149145088, '', '');
-INSERT INTO `appapigatewaysecurityoptions` VALUES (107, 1292620665505775616, '', '');
-INSERT INTO `appapigatewaysecurityoptions` VALUES (108, 1292620843398791168, '', '');
-INSERT INTO `appapigatewaysecurityoptions` VALUES (109, 1292621027574874112, '', '');
-INSERT INTO `appapigatewaysecurityoptions` VALUES (110, 1292621363161137152, '', '');
-INSERT INTO `appapigatewaysecurityoptions` VALUES (111, 1292621494837116928, '', '');
-INSERT INTO `appapigatewaysecurityoptions` VALUES (112, 1292621629260365824, '', '');
-INSERT INTO `appapigatewaysecurityoptions` VALUES (113, 1292622526073864192, '', '');
INSERT INTO `appapigatewaysecurityoptions` VALUES (114, 1293470838745821184, '', '');
INSERT INTO `appapigatewaysecurityoptions` VALUES (115, 1293471661785706496, '', '');
INSERT INTO `appapigatewaysecurityoptions` VALUES (116, 1293472678392721408, '', '');
@@ -1543,6 +1584,21 @@ INSERT INTO `appapigatewaysecurityoptions` VALUES (172, 1336230645078921216, '',
INSERT INTO `appapigatewaysecurityoptions` VALUES (173, 1337314809113722880, '', '');
INSERT INTO `appapigatewaysecurityoptions` VALUES (174, 1337314938973569024, '', '');
INSERT INTO `appapigatewaysecurityoptions` VALUES (175, 1340961907637243904, '', '');
+INSERT INTO `appapigatewaysecurityoptions` VALUES (176, 1341652247554379776, '', '');
+INSERT INTO `appapigatewaysecurityoptions` VALUES (177, 1341652385555369984, '', '');
+INSERT INTO `appapigatewaysecurityoptions` VALUES (178, 1342457939827552256, '', '');
+INSERT INTO `appapigatewaysecurityoptions` VALUES (179, 1342458050112581632, '', '');
+INSERT INTO `appapigatewaysecurityoptions` VALUES (180, 1363382062055915520, '', '');
+INSERT INTO `appapigatewaysecurityoptions` VALUES (181, 1363382298501414912, '', '');
+INSERT INTO `appapigatewaysecurityoptions` VALUES (182, 1368854800347848704, '', '');
+INSERT INTO `appapigatewaysecurityoptions` VALUES (183, 1368855936576413696, '', '');
+INSERT INTO `appapigatewaysecurityoptions` VALUES (184, 1368856295889854464, '', '');
+INSERT INTO `appapigatewaysecurityoptions` VALUES (185, 1368856703572008960, '', '');
+INSERT INTO `appapigatewaysecurityoptions` VALUES (186, 1368856819242524672, '', '');
+INSERT INTO `appapigatewaysecurityoptions` VALUES (187, 1368856927887581184, '', '');
+INSERT INTO `appapigatewaysecurityoptions` VALUES (188, 1368857128383700992, '', '');
+INSERT INTO `appapigatewaysecurityoptions` VALUES (189, 1369560306297233408, '', '');
+INSERT INTO `appapigatewaysecurityoptions` VALUES (190, 1369560450472239104, '', '');
-- ----------------------------
-- Table structure for cap.published
@@ -1561,12 +1617,6 @@ CREATE TABLE `cap.published` (
INDEX `IX_ExpiresAt`(`ExpiresAt`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
--- ----------------------------
--- Records of cap.published
--- ----------------------------
-INSERT INTO `cap.published` VALUES (1340961909189136384, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1340961909189136384\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/12/21 18:06:47 +08:00\",\"cap-corr-id\":\"1340961909189136384\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-12-21T18:06:47.6668667+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2020-12-21 18:06:48', '2020-12-22 18:06:48', 'Succeeded');
-INSERT INTO `cap.published` VALUES (1341265150657449984, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-callback-name\":null,\"cap-msg-id\":\"1341265150657449984\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2020/12/22 14:11:46 +08:00\",\"cap-corr-id\":\"1341265150657449984\",\"cap-corr-seq\":\"0\"},\"Value\":{\"DateTime\":\"2020-12-22T14:11:46.0753073+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Modify\",\"Object\":\"ReRoute\"}}', 0, '2020-12-22 14:11:46', '2020-12-23 14:11:46', 'Succeeded');
-
-- ----------------------------
-- Table structure for cap.received
-- ----------------------------
diff --git a/aspnet-core/modules/common/LINGYUN.Abp.AspNetCore.Mvc.Validation/LINGYUN.Abp.AspNetCore.Mvc.Validation.csproj b/aspnet-core/modules/common/LINGYUN.Abp.AspNetCore.Mvc.Validation/LINGYUN.Abp.AspNetCore.Mvc.Validation.csproj
index 32aa5c104..47b599dc4 100644
--- a/aspnet-core/modules/common/LINGYUN.Abp.AspNetCore.Mvc.Validation/LINGYUN.Abp.AspNetCore.Mvc.Validation.csproj
+++ b/aspnet-core/modules/common/LINGYUN.Abp.AspNetCore.Mvc.Validation/LINGYUN.Abp.AspNetCore.Mvc.Validation.csproj
@@ -3,7 +3,7 @@
- netcoreapp3.1
+ net5.0
diff --git a/aspnet-core/modules/common/LINGYUN.Abp.BlobStoring.Aliyun/LINGYUN.Abp.BlobStoring.Aliyun.csproj b/aspnet-core/modules/common/LINGYUN.Abp.BlobStoring.Aliyun/LINGYUN.Abp.BlobStoring.Aliyun.csproj
index 23161cf58..f8624e1da 100644
--- a/aspnet-core/modules/common/LINGYUN.Abp.BlobStoring.Aliyun/LINGYUN.Abp.BlobStoring.Aliyun.csproj
+++ b/aspnet-core/modules/common/LINGYUN.Abp.BlobStoring.Aliyun/LINGYUN.Abp.BlobStoring.Aliyun.csproj
@@ -9,7 +9,7 @@
-
+
diff --git a/aspnet-core/modules/common/LINGYUN.Abp.BlobStoring.Aliyun/LINGYUN/Abp/BlobStoring/Aliyun/IOssClientFactory.cs b/aspnet-core/modules/common/LINGYUN.Abp.BlobStoring.Aliyun/LINGYUN/Abp/BlobStoring/Aliyun/IOssClientFactory.cs
index 6299df543..4ec2aea01 100644
--- a/aspnet-core/modules/common/LINGYUN.Abp.BlobStoring.Aliyun/LINGYUN/Abp/BlobStoring/Aliyun/IOssClientFactory.cs
+++ b/aspnet-core/modules/common/LINGYUN.Abp.BlobStoring.Aliyun/LINGYUN/Abp/BlobStoring/Aliyun/IOssClientFactory.cs
@@ -5,6 +5,11 @@ namespace LINGYUN.Abp.BlobStoring.Aliyun
{
public interface IOssClientFactory
{
+ ///
+ /// 构建Oss客户端
+ ///
+ ///
+ Task CreateAsync();
///
/// 通过配置信息构建Oss客户端调用
///
diff --git a/aspnet-core/modules/common/LINGYUN.Abp.BlobStoring.Aliyun/LINGYUN/Abp/BlobStoring/Aliyun/OssClientFactory.cs b/aspnet-core/modules/common/LINGYUN.Abp.BlobStoring.Aliyun/LINGYUN/Abp/BlobStoring/Aliyun/OssClientFactory.cs
index aed9f2321..df8fd6c80 100644
--- a/aspnet-core/modules/common/LINGYUN.Abp.BlobStoring.Aliyun/LINGYUN/Abp/BlobStoring/Aliyun/OssClientFactory.cs
+++ b/aspnet-core/modules/common/LINGYUN.Abp.BlobStoring.Aliyun/LINGYUN/Abp/BlobStoring/Aliyun/OssClientFactory.cs
@@ -1,5 +1,7 @@
using Aliyun.OSS;
using LINGYUN.Abp.Aliyun;
+using System.Threading.Tasks;
+using Volo.Abp.BlobStoring;
using Volo.Abp.Caching;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Settings;
@@ -8,11 +10,21 @@ namespace LINGYUN.Abp.BlobStoring.Aliyun
{
public class OssClientFactory : AliyunClientFactory, IOssClientFactory, ITransientDependency
{
+ protected IBlobContainerConfigurationProvider ConfigurationProvider { get; }
public OssClientFactory(
- ISettingProvider settingProvider,
+ ISettingProvider settingProvider,
+ IBlobContainerConfigurationProvider configurationProvider,
IDistributedCache cache)
: base(settingProvider, cache)
{
+ ConfigurationProvider = configurationProvider;
+ }
+
+ public virtual async Task CreateAsync()
+ {
+ var configuration = ConfigurationProvider.Get();
+
+ return await CreateAsync(configuration.GetAliyunConfiguration());
}
///
/// 普通方式构建Oss客户端
diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.en.md b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.en.md
index 4e1aa34cf..1e12ef31a 100644
--- a/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.en.md
+++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.en.md
@@ -1,32 +1,32 @@
English | [简体中文](./README.md)
-# LINGYUN.Abp.Features.LimitValidation
+# LINGYUN.Abp.Features.LimitValidation
-Features limit validation component
+Features limit validation component
-Check the number of function calls defined to limit calls to the application by specific entities (tenants, users, clients, and so on)
+Check the number of function calls defined to limit calls to the application by specific entities (tenants, users, clients, and so on)
-Predefined policy
+Predefined policy
-LimitPolicy.Minute Calculate the flow by the minutes
-LimitPolicy.Hours Calculate the flow by the hours
-LimitPolicy.Days Calculate the flow by days
-LimitPolicy.Weeks Calculate the flow by weeks
-LimitPolicy.Month Calculate the flow by the number of month
-LimitPolicy.Years Calculate the flow by the number of years
+LimitPolicy.Minute Calculate the flow by the minutes
+LimitPolicy.Hours Calculate the flow by the hours
+LimitPolicy.Days Calculate the flow by days
+LimitPolicy.Weeks Calculate the flow by weeks
+LimitPolicy.Month Calculate the flow by the number of month
+LimitPolicy.Years Calculate the flow by the number of years
## How to use
```csharp
-[DependsOn(typeof(AbpFeaturesLimitValidationModule))]
+[DependsOn(typeof(AbpFeaturesLimitValidationModule))]
public class YouProjectModule : AbpModule
{
// other
}
```
-If you want to limit the policy duration by self-processing, override the default policy for the corresponding policy and always return a clock scale in seconds
+If you want to limit the policy duration by self-processing, override the default policy for the corresponding policy and always return a clock scale in seconds
```csharp
[DependsOn(typeof(AbpFeaturesLimitValidationModule))]
diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.md b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.md
index b52c3a723..ff6bb2852 100644
--- a/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.md
+++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.md
@@ -2,18 +2,18 @@
# LINGYUN.Abp.Features.LimitValidation
-功能上限验证组件
+功能上限验证组件
-检查定义的功能调用次数,来限制特定的实体(租户、用户、客户端等)对于应用程序的调用
+检查定义的功能调用次数,来限制特定的实体(租户、用户、客户端等)对于应用程序的调用
-预先设定了如下几个策略
+预先设定了如下几个策略
-LimitPolicy.Minute 按分钟计算流量
-LimitPolicy.Hours 按小时计算流量
-LimitPolicy.Days 按天数计算流量
-LimitPolicy.Weeks 按周数计算流量
-LimitPolicy.Month 按月数计算流量
-LimitPolicy.Years 按年数计算流量
+LimitPolicy.Minute 按分钟计算流量
+LimitPolicy.Hours 按小时计算流量
+LimitPolicy.Days 按天数计算流量
+LimitPolicy.Weeks 按周数计算流量
+LimitPolicy.Month 按月数计算流量
+LimitPolicy.Years 按年数计算流量
## 配置使用
@@ -26,7 +26,7 @@ public class YouProjectModule : AbpModule
}
```
-如果需要自行处理功能限制策略时长,请覆盖对应策略的默认策略,返回的时钟刻度单位始终是秒
+如果需要自行处理功能限制策略时长,请覆盖对应策略的默认策略,返回的时钟刻度单位始终是秒
```csharp
[DependsOn(typeof(AbpFeaturesLimitValidationModule))]
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/AbpFileManagementApplicationContractsModule.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/AbpFileManagementApplicationContractsModule.cs
deleted file mode 100644
index b4a0cd686..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/AbpFileManagementApplicationContractsModule.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using Volo.Abp.Application;
-using Volo.Abp.Modularity;
-
-namespace LINGYUN.Abp.FileManagement
-{
- [DependsOn(
- typeof(AbpFileManagementDomainSharedModule),
- typeof(AbpDddApplicationModule))]
- public class AbpFileManagementApplicationContractsModule : AbpModule
- {
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Features/AbpFileManagementFeatureDefinitionProvider.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Features/AbpFileManagementFeatureDefinitionProvider.cs
deleted file mode 100644
index 272a27e72..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Features/AbpFileManagementFeatureDefinitionProvider.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-using LINGYUN.Abp.FileManagement.Localization;
-using Volo.Abp.Features;
-using Volo.Abp.Localization;
-using Volo.Abp.Validation.StringValues;
-
-namespace LINGYUN.Abp.FileManagement.Features
-{
- public class AbpFileManagementFeatureDefinitionProvider : FeatureDefinitionProvider
- {
- public override void Define(IFeatureDefinitionContext context)
- {
- var featureGroup = context.AddGroup(
- name: AbpFileManagementFeatureNames.GroupName,
- displayName: L("Features:FileManagement"));
-
- var fileSystemFeature = featureGroup.AddFeature(
- name: AbpFileManagementFeatureNames.FileSystem.Default,
- displayName: L("Features:DisplayName:FileSystem"),
- description: L("Features:Description:FileSystem"));
-
- fileSystemFeature.CreateChild(
- name: AbpFileManagementFeatureNames.FileSystem.DownloadFile,
- defaultValue: false.ToString(),
- displayName: L("Features:DisplayName:DownloadFile"),
- description: L("Features:Description:DownloadFile"),
- valueType: new ToggleStringValueType(new BooleanValueValidator()));
-
- fileSystemFeature.CreateChild(
- name: AbpFileManagementFeatureNames.FileSystem.UploadFile,
- defaultValue: true.ToString(),
- displayName: L("Features:DisplayName:UploadFile"),
- description: L("Features:Description:UploadFile"),
- valueType: new ToggleStringValueType(new BooleanValueValidator()));
-
- // TODO: 此功能需要控制器协同,暂时不实现
- fileSystemFeature.CreateChild(
- name: AbpFileManagementFeatureNames.FileSystem.MaxUploadFileCount,
- defaultValue: 1.ToString(),
- displayName: L("Features:DisplayName:MaxUploadFileCount"),
- description: L("Features:Description:MaxUploadFileCount"),
- valueType: new FreeTextStringValueType(new NumericValueValidator(1, 10)));
- }
-
- protected ILocalizableString L(string name)
- {
- return LocalizableString.Create(name);
- }
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Features/AbpFileManagementFeatureNames.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Features/AbpFileManagementFeatureNames.cs
deleted file mode 100644
index 328d66946..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Features/AbpFileManagementFeatureNames.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-namespace LINGYUN.Abp.FileManagement.Features
-{
- public class AbpFileManagementFeatureNames
- {
- public const string GroupName = "Abp.FileManagement";
- public class FileSystem
- {
- public const string Default = GroupName + ".FileSystem";
- ///
- /// 下载文件功能
- ///
- public const string DownloadFile = Default + ".DownloadFile";
- ///
- /// 上传文件功能
- ///
- public const string UploadFile = Default + ".UploadFile";
- ///
- /// 最大上传文件
- ///
- public const string MaxUploadFileCount = Default + ".MaxUploadFileCount";
- }
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileCopyOrMoveDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileCopyOrMoveDto.cs
deleted file mode 100644
index d399c5571..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileCopyOrMoveDto.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace LINGYUN.Abp.FileManagement
-{
- public class FileCopyOrMoveDto
- {
- [StringLength(255)]
- public string Path { get; set; }
-
- [Required]
- [StringLength(255)]
- public string Name { get; set; }
-
- [Required]
- [StringLength(255)]
- public string ToPath { get; set; }
-
- [StringLength(255)]
- public string ToName { get; set; }
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileCreateDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileCreateDto.cs
deleted file mode 100644
index 59da9f99f..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileCreateDto.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.IO;
-using Volo.Abp.Auditing;
-using Volo.Abp.Validation;
-
-namespace LINGYUN.Abp.FileManagement
-{
- public class FileCreateDto
- {
- ///
- /// 文件名
- ///
- [Required]
- [StringLength(255)]
- public string FileName { get; set; }
- ///
- /// 文件路径
- ///
- [StringLength(255)]
- public string Path { get; set; }
- ///
- /// 文件数据,前端无需传递此参数,由控制器传递
- ///
- [DisableAuditing]
- [DisableValidation]// TODO: 需要禁用参数检查,否则会有一个框架方面的性能问题存在
- public byte[] Data { get; set; }
- ///
- /// 是否覆盖文件
- ///
- public bool Rewrite { get; set; } = false;
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileDeleteDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileDeleteDto.cs
deleted file mode 100644
index a12f6ff3c..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileDeleteDto.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace LINGYUN.Abp.FileManagement
-{
- public class FileDeleteDto
- {
- [StringLength(255)]
- public string Path { get; set; }
-
- [Required]
- [StringLength(255)]
- public string Name { get; set; }
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemDownloadDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemDownloadDto.cs
deleted file mode 100644
index b421dda4a..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemDownloadDto.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Text;
-
-namespace LINGYUN.Abp.FileManagement
-{
- public class FileSystemDownloadDto : FileSystemGetDto
- {
- ///
- /// 当前字节数
- ///
- public int CurrentByte { get; set; }
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemDto.cs
deleted file mode 100644
index aecbd0be0..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemDto.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using System;
-
-namespace LINGYUN.Abp.FileManagement
-{
- public class FileSystemDto
- {
- public FileSystemType Type { get; set; }
- public string Name { get; set; }
- public string Parent { get; set; }
- public string Extension { get; set; }
- public long? Size { get; set; }
- public DateTime CreationTime { get; set; }
- public DateTime? LastModificationTime { get; set; }
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemType.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemType.cs
deleted file mode 100644
index ecbcd214d..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemType.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace LINGYUN.Abp.FileManagement
-{
- public enum FileSystemType
- {
- Folder = 0,
- File = 1
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemUpdateDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemUpdateDto.cs
deleted file mode 100644
index 3f4193bf4..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemUpdateDto.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace LINGYUN.Abp.FileManagement
-{
- public class FileSystemUpdateDto
- {
- [Required]
- [StringLength(255)]
- public string NewName { get; set; }
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderCopyDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderCopyDto.cs
deleted file mode 100644
index ada1ca9a5..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderCopyDto.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace LINGYUN.Abp.FileManagement
-{
- public class FolderCopyDto
- {
- [Required]
- [StringLength(255)]
- public string CopyToPath { get; set; }
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderCreateDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderCreateDto.cs
deleted file mode 100644
index 9d2c09d93..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderCreateDto.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace LINGYUN.Abp.FileManagement
-{
- public class FolderCreateDto
- {
- [Required]
- [StringLength(255)]
- public string Path { get; set; }
-
- public string Parent { get; set; }
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderMoveDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderMoveDto.cs
deleted file mode 100644
index 760b79ad8..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FolderMoveDto.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace LINGYUN.Abp.FileManagement
-{
- public class FolderMoveDto
- {
- [Required]
- [StringLength(255)]
- public string MoveToPath { get; set; }
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetFileSystemListDto.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetFileSystemListDto.cs
deleted file mode 100644
index 29b4f02cb..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/GetFileSystemListDto.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using Volo.Abp.Application.Dtos;
-
-namespace LINGYUN.Abp.FileManagement
-{
- public class GetFileSystemListDto : PagedAndSortedResultRequestDto
- {
- // TODO: Windows最大路径长度,超过了貌似也无效了吧
- [StringLength(255)]
- public string Parent { get; set; }
-
- public string Filter { get; set; }
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/IFileSystemAppService.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/IFileSystemAppService.cs
deleted file mode 100644
index 4a5955161..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/IFileSystemAppService.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.IO;
-using System.Threading.Tasks;
-using Volo.Abp.Application.Dtos;
-using Volo.Abp.Application.Services;
-
-namespace LINGYUN.Abp.FileManagement
-{
- public interface IFileSystemAppService : IApplicationService
- {
- Task GetAsync(FileSystemGetDto input);
-
- Task> GetListAsync(GetFileSystemListDto input);
-
- Task CreateFolderAsync(FolderCreateDto input);
-
- Task UpdateAsync([Required, StringLength(255)] string name, FileSystemUpdateDto input);
-
- Task DeleteFolderAsync([Required, StringLength(255)] string path);
-
- Task MoveFolderAsync([Required, StringLength(255)] string path, FolderMoveDto input);
-
- Task CopyFolderAsync([Required, StringLength(255)] string path, FolderCopyDto input);
-
- Task CreateFileAsync(FileCreateDto input);
-
- Task DeleteFileAsync(FileDeleteDto input);
-
- Task MoveFileAsync(FileCopyOrMoveDto input);
-
- Task CopyFileAsync(FileCopyOrMoveDto input);
-
- Task DownloadFileAsync(FileSystemGetDto input);
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Permissions/AbpFileManagementPermissionDefinitionProvider.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Permissions/AbpFileManagementPermissionDefinitionProvider.cs
deleted file mode 100644
index 1c1ac9f1a..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Permissions/AbpFileManagementPermissionDefinitionProvider.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using LINGYUN.Abp.FileManagement.Localization;
-using Volo.Abp.Authorization.Permissions;
-using Volo.Abp.Localization;
-
-namespace LINGYUN.Abp.FileManagement.Permissions
-{
- public class AbpFileManagementPermissionDefinitionProvider : PermissionDefinitionProvider
- {
- public override void Define(IPermissionDefinitionContext context)
- {
- var fileManagement = context.AddGroup(AbpFileManagementPermissions.GroupName, L("Permission:FileManagement"));
-
- var fileSystem = fileManagement.AddPermission(AbpFileManagementPermissions.FileSystem.Default, L("Permission:FileSystem"));
- fileSystem.AddChild(AbpFileManagementPermissions.FileSystem.Create, L("Permission:CreateFolder"));
- fileSystem.AddChild(AbpFileManagementPermissions.FileSystem.Delete, L("Permission:DeleteFolder"));
- fileSystem.AddChild(AbpFileManagementPermissions.FileSystem.Update, L("Permission:UpdateFolder"));
- fileSystem.AddChild(AbpFileManagementPermissions.FileSystem.Copy, L("Permission:CopyFolder"));
- fileSystem.AddChild(AbpFileManagementPermissions.FileSystem.Move, L("Permission:MoveFolder"));
-
- var fileManager = fileSystem.AddChild(AbpFileManagementPermissions.FileSystem.FileManager.Default, L("Permission:FileManager"));
- fileManager.AddChild(AbpFileManagementPermissions.FileSystem.FileManager.Create, L("Permission:AppendFile"));
- fileManager.AddChild(AbpFileManagementPermissions.FileSystem.FileManager.Update, L("Permission:UpdateFile"));
- fileManager.AddChild(AbpFileManagementPermissions.FileSystem.FileManager.Delete, L("Permission:DeleteFile"));
- fileManager.AddChild(AbpFileManagementPermissions.FileSystem.FileManager.Copy, L("Permission:CopyFile"));
- fileManager.AddChild(AbpFileManagementPermissions.FileSystem.FileManager.Move, L("Permission:MoveFile"));
- fileManager.AddChild(AbpFileManagementPermissions.FileSystem.FileManager.Download, L("Permission:DownloadFile"));
- }
-
- private static LocalizableString L(string name)
- {
- return LocalizableString.Create(name);
- }
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Permissions/AbpFileManagementPermissions.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Permissions/AbpFileManagementPermissions.cs
deleted file mode 100644
index 6f33e940b..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/Permissions/AbpFileManagementPermissions.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-namespace LINGYUN.Abp.FileManagement.Permissions
-{
- public class AbpFileManagementPermissions
- {
- public const string GroupName = "AbpFileManagement";
-
- ///
- /// 文件系统
- ///
- public class FileSystem
- {
- public const string Default = GroupName + ".FileSystem";
-
- public const string Create = Default + ".Create";
-
- public const string Delete = Default + ".Delete";
-
- public const string Update = Default + ".Update";
-
- public const string Copy = Default + ".Copy";
-
- public const string Move = Default + ".Move";
- ///
- /// 文件管理
- ///
- public class FileManager
- {
- public const string Default = FileSystem.Default + ".FileManager";
-
- public const string Create = Default + ".Create";
-
- public const string Copy = Default + ".Copy";
-
- public const string Delete = Default + ".Delete";
-
- public const string Update = Default + ".Update";
-
- public const string Move = Default + ".Move";
-
- public const string Download = Default + ".Download";
- }
- }
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN.Abp.FileManagement.Application.csproj b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN.Abp.FileManagement.Application.csproj
deleted file mode 100644
index 6b654a444..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN.Abp.FileManagement.Application.csproj
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
- netstandard2.0
-
-
-
-
-
-
-
-
-
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/AbpFileManagementApplicationModule.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/AbpFileManagementApplicationModule.cs
deleted file mode 100644
index 4d52281a1..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/AbpFileManagementApplicationModule.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using Volo.Abp.Modularity;
-
-namespace LINGYUN.Abp.FileManagement
-{
- [DependsOn(
- typeof(AbpFileManagementDomainModule),
- typeof(AbpFileManagementApplicationContractsModule))]
- public class AbpFileManagementApplicationModule : AbpModule
- {
-
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileManagementApplicationServiceBase.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileManagementApplicationServiceBase.cs
deleted file mode 100644
index 3fb7d3781..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileManagementApplicationServiceBase.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using LINGYUN.Abp.FileManagement.Localization;
-using Volo.Abp.Application.Services;
-
-namespace LINGYUN.Abp.FileManagement
-{
- public class FileManagementApplicationServiceBase : ApplicationService
- {
- protected FileManagementApplicationServiceBase()
- {
- LocalizationResource = typeof(AbpFileManagementResource);
- }
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileSystemAppService.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileSystemAppService.cs
deleted file mode 100644
index ed08e336b..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application/LINGYUN/Abp/FileManagement/FileSystemAppService.cs
+++ /dev/null
@@ -1,467 +0,0 @@
-using LINGYUN.Abp.FileManagement.Permissions;
-using Microsoft.AspNetCore.Authorization;
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.IO;
-using System.Linq;
-using System.Threading.Tasks;
-using Volo.Abp;
-using Volo.Abp.Application.Dtos;
-using Volo.Abp.BlobStoring;
-using Volo.Abp.BlobStoring.FileSystem;
-
-namespace LINGYUN.Abp.FileManagement
-{
- [Authorize(AbpFileManagementPermissions.FileSystem.Default)]
- public class FileSystemAppService : FileManagementApplicationServiceBase, IFileSystemAppService
- {
- protected IBlobContainer BlobContainer { get; }
- protected IBlobContainerConfigurationProvider BlobContainerConfigurationProvider { get; }
- public FileSystemAppService(
- IBlobContainer blobContainer,
- IBlobContainerConfigurationProvider blobContainerConfigurationProvider)
- {
- BlobContainer = blobContainer;
- BlobContainerConfigurationProvider = blobContainerConfigurationProvider;
- }
-
- [Authorize(AbpFileManagementPermissions.FileSystem.FileManager.Copy)]
- public virtual Task CopyFileAsync(FileCopyOrMoveDto input)
- {
- string fileSystemPath = GetFileSystemPath(input.Path);
- var fileFullName = Path.Combine(fileSystemPath, input.Name);
- if (!File.Exists(fileFullName))
- {
- throw new UserFriendlyException(L["FilePathNotFound"]);
- }
- var copyToFilePath = GetFileSystemPath(input.ToPath);
- var copyToFileFullName = Path.Combine(copyToFilePath, input.ToName ?? input.Name);
- if (File.Exists(copyToFileFullName))
- {
- throw new UserFriendlyException(L["FilePathAlreadyExists"]);
- }
-
- File.Copy(fileFullName, copyToFileFullName);
-
- return Task.CompletedTask;
- }
-
- [Authorize(AbpFileManagementPermissions.FileSystem.Copy)]
- public virtual Task CopyFolderAsync([Required, StringLength(255)] string path, FolderCopyDto input)
- {
- string fileSystemPath = GetFileSystemPath(path);
- if (!Directory.Exists(fileSystemPath))
- {
- throw new UserFriendlyException(L["PathNotFound"]);
- }
- var copyToFilePath = GetFileSystemPath(input.CopyToPath);
- if (Directory.Exists(copyToFilePath))
- {
- throw new UserFriendlyException(L["FilePathAlreadyExists"]);
- }
-
- CopyDirectory(fileSystemPath, copyToFilePath);
-
- return Task.CompletedTask;
- }
-
- [Authorize(AbpFileManagementPermissions.FileSystem.FileManager.Create)]
- public virtual async Task CreateFileAsync(FileCreateDto input)
- {
- string fileSystemPath = GetFileSystemPath(input.Path);
- fileSystemPath = Path.Combine(fileSystemPath, input.FileName);
- var blobName = GetFileSystemRelativePath(fileSystemPath);
- // 去除第一个路径标识符
- blobName = blobName.RemovePreFix("/", "\\");
- if (!input.Rewrite && await BlobContainer.ExistsAsync(blobName))
- {
- throw new UserFriendlyException(L["FilePathAlreadyExists"]);
- }
- await BlobContainer.SaveAsync(blobName, input.Data, input.Rewrite);
- Array.Clear(input.Data, 0, input.Data.Length);
- }
-
- [Authorize(AbpFileManagementPermissions.FileSystem.Create)]
- public virtual Task CreateFolderAsync(FolderCreateDto input)
- {
- string fileSystemPath = GetFileSystemBashPath();
- if (!input.Parent.IsNullOrWhiteSpace())
- {
- fileSystemPath = GetFileSystemPath(input.Parent);
- }
- var newFloderPath = Path.Combine(fileSystemPath, input.Path);
- if (Directory.Exists(newFloderPath))
- {
- throw new UserFriendlyException(L["PathAlreadyExists"]);
- }
- Directory.CreateDirectory(newFloderPath);
-
- return Task.CompletedTask;
- }
-
- [Authorize(AbpFileManagementPermissions.FileSystem.FileManager.Delete)]
- public virtual Task DeleteFileAsync(FileDeleteDto input)
- {
- var fileSystemPath = GetFileSystemPath(input.Path);
- fileSystemPath = Path.Combine(fileSystemPath, input.Name);
- if (File.Exists(fileSystemPath))
- {
- File.Delete(fileSystemPath);
- }
- return Task.CompletedTask;
- }
-
- [Authorize(AbpFileManagementPermissions.FileSystem.Delete)]
- public virtual Task DeleteFolderAsync([Required, StringLength(255)] string path)
- {
- string fileSystemPath = GetFileSystemPath(path);
- if (!Directory.Exists(fileSystemPath))
- {
- throw new UserFriendlyException(L["FilePathNotFound"]);
- }
- var fileSystemChildrenPath = Directory.GetDirectories(fileSystemPath);
- if (fileSystemChildrenPath.Length > 0)
- {
- throw new UserFriendlyException(L["PathCannotBeDeletedWithNotEmpty"]);
- }
- var fileSystemPathFiles = Directory.GetFiles(fileSystemPath);
- if (fileSystemPathFiles.Length > 0)
- {
- throw new UserFriendlyException(L["PathCannotBeDeletedWithNotEmpty"]);
- }
- Directory.Delete(fileSystemPath);
- return Task.CompletedTask;
- }
-
- [Authorize(AbpFileManagementPermissions.FileSystem.FileManager.Download)]
- public virtual async Task DownloadFileAsync(FileSystemGetDto input)
- {
- var fileSystemPath = GetFileSystemPath(input.Path);
- fileSystemPath = Path.Combine(fileSystemPath, input.Name);
- var blobName = GetFileSystemRelativePath(fileSystemPath);
- // 去除第一个路径标识符
- blobName = blobName.RemovePreFix("/", "\\");
- return await BlobContainer.GetAsync(blobName);
- }
-
- public virtual Task GetAsync(FileSystemGetDto input)
- {
- var fileSystemPath = GetFileSystemPath(input.Path);
- fileSystemPath = Path.Combine(fileSystemPath, input.Name);
- if (File.Exists(fileSystemPath))
- {
- var fileInfo = new FileInfo(fileSystemPath);
- var fileSystem = new FileSystemDto
- {
- Type = FileSystemType.File,
- Name = fileInfo.Name,
- Size = fileInfo.Length,
- Extension = fileInfo.Extension,
- CreationTime = fileInfo.CreationTime,
- LastModificationTime = fileInfo.LastWriteTime
- };
- if (fileInfo.Directory != null && !fileInfo.Directory.FullName.IsNullOrWhiteSpace())
- {
- fileSystem.Parent = GetFileSystemRelativePath(fileInfo.Directory.FullName);
- }
- return Task.FromResult(fileSystem);
- }
- if (Directory.Exists(fileSystemPath))
- {
- var directoryInfo = new DirectoryInfo(fileSystemPath);
- var fileSystem = new FileSystemDto
- {
- Type = FileSystemType.Folder,
- Name = directoryInfo.Name,
- CreationTime = directoryInfo.CreationTime,
- LastModificationTime = directoryInfo.LastWriteTime
- };
- if (directoryInfo.Parent != null && !directoryInfo.Parent.FullName.IsNullOrWhiteSpace())
- {
- fileSystem.Parent = GetFileSystemRelativePath(directoryInfo.Parent.FullName);
- }
- return Task.FromResult(fileSystem);
- }
- throw new UserFriendlyException(L["FilePathNotFound"]);
- }
-
- public virtual Task> GetListAsync(GetFileSystemListDto input)
- {
- List fileSystems = new List();
-
- string fileSystemPath = GetFileSystemBashPath();
- if (!input.Parent.IsNullOrWhiteSpace())
- {
- fileSystemPath = GetFileSystemPath(input.Parent);
- }
- var directoryInfo = new DirectoryInfo(fileSystemPath);
- if (!directoryInfo.Exists)
- {
- return Task.FromResult(new PagedResultDto(0, fileSystems));
- }
- // 查询全部文件系统
- var fileSystemInfos = directoryInfo.GetFileSystemInfos();
- // 指定搜索条件查询目录
- FileSystemInfo[] fileSystemInfoSearchChildren;
- if (!input.Filter.IsNullOrWhiteSpace())
- {
- var searchPattern = $"*{input.Filter}*";
- fileSystemInfoSearchChildren = directoryInfo.GetFileSystemInfos(searchPattern);
- }
- else
- {
- fileSystemInfoSearchChildren = directoryInfo.GetFileSystemInfos();
- }
-
- fileSystemInfoSearchChildren = fileSystemInfoSearchChildren
- .Skip((input.SkipCount - 1) * input.MaxResultCount)
- .Take(input.MaxResultCount)
- .ToArray();
-
- foreach (var fileSystemInfo in fileSystemInfoSearchChildren)
- {
- var fileSystem = new FileSystemDto
- {
- Name = fileSystemInfo.Name,
- CreationTime = fileSystemInfo.CreationTime,
- LastModificationTime = fileSystemInfo.LastWriteTime,
- };
-
- if (fileSystemInfo is FileInfo fileInfo)
- {
- fileSystem.Type = FileSystemType.File;
- fileSystem.Size = fileInfo.Length;
- fileSystem.Extension = fileInfo.Extension;
- if (fileInfo.Directory != null && !fileInfo.Directory.FullName.IsNullOrWhiteSpace())
- {
- fileSystem.Parent = GetFileSystemRelativePath(fileInfo.Directory.FullName);
- }
- }
- else if (fileSystemInfo is DirectoryInfo directory)
- {
- fileSystem.Type = FileSystemType.Folder;
- if (directory.Parent != null && !directory.Parent.FullName.IsNullOrWhiteSpace())
- {
- fileSystem.Parent = GetFileSystemRelativePath(directory.Parent.FullName);
- }
- }
- fileSystems.Add(fileSystem);
- }
-
- fileSystems = fileSystems
- .OrderBy(f => f.Type)
- .ThenBy(f => f.Name)
- .ToList();
-
- return Task.FromResult(new PagedResultDto(
- fileSystemInfos.Length, fileSystems
- ));
- }
-
- [Authorize(AbpFileManagementPermissions.FileSystem.FileManager.Move)]
- public virtual Task MoveFileAsync(FileCopyOrMoveDto input)
- {
- string fileSystemPath = GetFileSystemPath(input.Path);
- fileSystemPath = Path.Combine(fileSystemPath, input.Name);
- if (!File.Exists(fileSystemPath))
- {
- throw new UserFriendlyException(L["FilePathNotFound"]);
- }
- var moveToFilePath = GetFileSystemPath(input.ToPath);
- moveToFilePath = Path.Combine(moveToFilePath, input.ToName ?? input.Name);
- if (File.Exists(moveToFilePath))
- {
- throw new UserFriendlyException(L["FilePathAlreadyExists"]);
- }
-
- File.Move(fileSystemPath, moveToFilePath);
-
- return Task.CompletedTask;
- }
-
- [Authorize(AbpFileManagementPermissions.FileSystem.Move)]
- public virtual Task MoveFolderAsync([Required, StringLength(255)] string path, FolderMoveDto input)
- {
- string fileSystemPath = GetFileSystemPath(path);
- if (!Directory.Exists(fileSystemPath))
- {
- throw new UserFriendlyException(L["FilePathNotFound"]);
- }
- var moveToFilePath = GetFileSystemPath(input.MoveToPath);
- if (Directory.Exists(moveToFilePath))
- {
- throw new UserFriendlyException(L["FilePathAlreadyExists"]);
- }
-
- Directory.Move(fileSystemPath, moveToFilePath);
-
- return Task.CompletedTask;
- }
-
- [Authorize(AbpFileManagementPermissions.FileSystem.Update)]
- public virtual Task UpdateAsync([Required, StringLength(255)] string name, FileSystemUpdateDto input)
- {
- string fileSystemPath = GetFileSystemPath(name);
- var renameFilePath = GetFileSystemPath(input.NewName);
- if (File.Exists(fileSystemPath))
- {
- if (File.Exists(renameFilePath))
- {
- throw new UserFriendlyException(L["FilePathAlreadyExists"]);
- }
- File.Move(fileSystemPath, renameFilePath);
-
- var fileInfo = new FileInfo(renameFilePath);
- var fileSystem = new FileSystemDto
- {
- Type = FileSystemType.File,
- Name = fileInfo.Name,
- Size = fileInfo.Length,
- Extension = fileInfo.Extension,
- CreationTime = fileInfo.CreationTime,
- LastModificationTime = fileInfo.LastWriteTime
- };
- if (fileInfo.Directory != null && !fileInfo.Directory.FullName.IsNullOrWhiteSpace())
- {
- fileSystem.Parent = GetFileSystemRelativePath(fileInfo.Directory.FullName);
- }
- return Task.FromResult(fileSystem);
- }
- if (Directory.Exists(fileSystemPath))
- {
- if (Directory.Exists(renameFilePath))
- {
- throw new UserFriendlyException(L["FilePathAlreadyExists"]);
- }
-
- Directory.Move(fileSystemPath, renameFilePath);
-
- var directoryInfo = new DirectoryInfo(renameFilePath);
- var fileSystem = new FileSystemDto
- {
- Type = FileSystemType.Folder,
- Name = directoryInfo.Name,
- CreationTime = directoryInfo.CreationTime,
- LastModificationTime = directoryInfo.LastWriteTime
- };
- if (directoryInfo.Parent != null && !directoryInfo.Parent.FullName.IsNullOrWhiteSpace())
- {
- fileSystem.Parent = GetFileSystemRelativePath(directoryInfo.Parent.FullName);
- }
- return Task.FromResult(fileSystem);
- }
- throw new UserFriendlyException(L["FilePathNotFound"]);
- }
- ///
- /// 获取文件系统相对路径
- ///
- ///
- ///
- protected virtual string GetFileSystemRelativePath(string path)
- {
- // 去除完整路径中的文件系统根目录
- var fileSystemConfiguration = GetFileSystemBlobProviderConfiguration();
- var blobPath = fileSystemConfiguration.BasePath;
- // 去除租户或宿主目录
- if (CurrentTenant.Id == null)
- {
- blobPath = Path.Combine(blobPath, "host");
- }
- else
- {
- blobPath = Path.Combine(blobPath, "tenants", CurrentTenant.Id.Value.ToString("D"));
- }
- // 去除完整路径中的容器根目录
- var containerName = BlobContainerNameAttribute.GetContainerName();
- if (path.Contains(containerName))
- {
- blobPath = Path.Combine(blobPath, containerName);
- }
- path = path.Replace(blobPath, "");
- path = path.Replace('/', Path.DirectorySeparatorChar);
- path = path.Replace('\\', Path.DirectorySeparatorChar);
- return path;
- }
- ///
- /// 获取合并的文件路径
- ///
- ///
- ///
- protected virtual string GetFileSystemPath(string path)
- {
- var fileSystemConfiguration = GetFileSystemBlobProviderConfiguration();
- var blobPath = GetFileSystemBashPath();
-
- if (!path.IsNullOrWhiteSpace() && fileSystemConfiguration.AppendContainerNameToBasePath)
- {
- path = path.Replace('/', Path.DirectorySeparatorChar);
- path = path.Replace('\\', Path.DirectorySeparatorChar);
- // 去除第一个路径标识符
- path = path.RemovePreFix("/", "\\");
- blobPath = Path.Combine(blobPath, path);
- }
-
- return blobPath;
- }
- ///
- /// 获取文件系统存储路径
- ///
- ///
- protected virtual string GetFileSystemBashPath()
- {
- var fileSystemConfiguration = GetFileSystemBlobProviderConfiguration();
- var blobPath = fileSystemConfiguration.BasePath;
- blobPath = Path.Combine(Directory.GetCurrentDirectory(), blobPath);
- if (CurrentTenant.Id == null)
- {
- blobPath = Path.Combine(blobPath, "host");
- }
- else
- {
- blobPath = Path.Combine(blobPath, "tenants", CurrentTenant.Id.Value.ToString("D"));
- }
- var containerName = BlobContainerNameAttribute.GetContainerName();
-
- blobPath = Path.Combine(blobPath, containerName);
-
- if (!Directory.Exists(blobPath))
- {
- Directory.CreateDirectory(blobPath);
- }
-
- return blobPath;
- }
-
- protected virtual FileSystemBlobProviderConfiguration GetFileSystemBlobProviderConfiguration()
- {
- var blobConfiguration = BlobContainerConfigurationProvider
- .Get();
- return blobConfiguration.GetFileSystemConfiguration();
- }
-
- protected void CopyDirectory(string sourcePath, string copyToPath)
- {
- var sourceDirectory = new DirectoryInfo(sourcePath);
- var fileSystemInfos = sourceDirectory.GetFileSystemInfos();
-
- foreach (var fileSystemInfo in fileSystemInfos)
- {
- var copyToFilePath = Path.Combine(copyToPath, fileSystemInfo.Name);
- if (fileSystemInfo is DirectoryInfo)
- {
- if (!Directory.Exists(copyToFilePath))
- {
- Directory.CreateDirectory(copyToFilePath);
- }
- CopyDirectory(fileSystemInfo.FullName, copyToFilePath);
- }
- else
- {
- File.Copy(fileSystemInfo.FullName, copyToFilePath, true);
- }
- }
-
- }
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/AbpFileManagementDomainSharedModule.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/AbpFileManagementDomainSharedModule.cs
deleted file mode 100644
index fe39e6a5e..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/AbpFileManagementDomainSharedModule.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using LINGYUN.Abp.FileManagement.Localization;
-using Volo.Abp.Localization;
-using Volo.Abp.Modularity;
-using Volo.Abp.Validation;
-using Volo.Abp.Validation.Localization;
-using Volo.Abp.VirtualFileSystem;
-
-namespace LINGYUN.Abp.FileManagement
-{
- [DependsOn(typeof(AbpValidationModule))]
- public class AbpFileManagementDomainSharedModule : AbpModule
- {
- public override void ConfigureServices(ServiceConfigurationContext context)
- {
- Configure(options =>
- {
- options.FileSets.AddEmbedded();
- });
-
- Configure(options =>
- {
- options.Resources
- .Add("en")
- .AddBaseTypes(
- typeof(AbpValidationResource)
- ).AddVirtualJson("/LINGYUN/Abp/FileManagement/Localization/Resources");
- });
- }
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/AbpFileManagementResource.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/AbpFileManagementResource.cs
deleted file mode 100644
index 4648b937d..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/AbpFileManagementResource.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using Volo.Abp.Localization;
-
-namespace LINGYUN.Abp.FileManagement.Localization
-{
- [LocalizationResourceName("AbpFileManagement")]
- public class AbpFileManagementResource
- {
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/en.json b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/en.json
deleted file mode 100644
index f6fc9c7a4..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/en.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "culture": "en",
- "texts": {
- "Permission:FileManagement": "File management",
- "Permission:FileSystem": "File system",
- "Permission:FileManager": "Files",
- "Permission:CreateFolder": "Create directory",
- "Permission:DeleteFolder": "Delete directory",
- "Permission:UpdateFolder": "Edit directory",
- "Permission:MoveFolder": "Change directory",
- "Permission:CopyFolder": "Copy directory",
- "Permission:AppendFile": "Add files",
- "Permission:UpdateFile": "Change file",
- "Permission:DeleteFile": "Delete file",
- "Permission:CopyFile": "Copy file",
- "Permission:MoveFile": "Move file",
- "Permission:DownloadFile": "Download file",
- "FileNotFound": "The specified file does not exist!",
- "PathNotFound": "The specified directory does not exist!",
- "FilePathNotFound": "The file or directory does not exist!",
- "PathAlreadyExists": "The specified directory already exists!",
- "PathCannotBeDeletedWithNotEmpty": "The specified directory is not empty and cannot be deleted!",
- "FilePathAlreadyExists": "The same file or directory already exists in the specified path!",
- "UploadFileSizeBeyondLimit": "Upload file size cannot exceed {0} MB!",
- "NotAllowedFileExtensionName": "Not allowed file extension: {0}!",
- "DisplayName:FileLimitLength": "File limit size",
- "Description:FileLimitLength": "Limit size of uploaded file in MB",
- "DisplayName:AllowFileExtensions": "File extension",
- "Description:AllowFileExtensions": "List of allowed extensions to upload files, with multiple extensions separated by, don't need a notation",
- "Features:FileManagement": "File management",
- "Features:DisplayName:FileSystem": "File system",
- "Features:DisplayName:DownloadFile": "Download file",
- "Features:Description:DownloadFile": "Whether to allow users to download files",
- "Features:DisplayName:UploadFile": "Upload file",
- "Features:Description:UploadFile": "Whether to allow users to upload files",
- "Features:DisplayName:MaxUploadFileCount": "Maximum number of upload files",
- "Features:Description:MaxUploadFileCount": "Limit the number of files a user uploads at a time"
- }
-}
\ No newline at end of file
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/zh-Hans.json b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/zh-Hans.json
deleted file mode 100644
index 8f3fb55e2..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Localization/Resources/zh-Hans.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "culture": "zh-Hans",
- "texts": {
- "Permission:FileManagement": "文件管理",
- "Permission:FileSystem": "文件系统",
- "Permission:FileManager": "文件",
- "Permission:CreateFolder": "创建目录",
- "Permission:DeleteFolder": "删除目录",
- "Permission:UpdateFolder": "修改目录",
- "Permission:MoveFolder": "变更目录",
- "Permission:CopyFolder": "复制目录",
- "Permission:AppendFile": "添加文件",
- "Permission:UpdateFile": "变更文件",
- "Permission:DeleteFile": "删除文件",
- "Permission:CopyFile": "复制文件",
- "Permission:MoveFile": "移动文件",
- "Permission:DownloadFile": "下载文件",
- "FileNotFound": "指定的文件不存在!",
- "PathNotFound": "指定的目录不存在!",
- "FilePathNotFound": "文件或目录不存在!",
- "PathAlreadyExists": "指定的目录已经存在!",
- "PathCannotBeDeletedWithNotEmpty": "指定的目录不为空,不可删除此目录!",
- "FilePathAlreadyExists": "指定的路径中已经有相同的文件或目录存在!",
- "UploadFileSizeBeyondLimit": "上传文件大小不能超过 {0} MB!",
- "NotAllowedFileExtensionName": "不被允许的文件扩展名: {0}!",
- "DisplayName:FileLimitLength": "文件限制大小",
- "Description:FileLimitLength": "上传文件的限制大小,单位(MB)",
- "DisplayName:AllowFileExtensions": "文件扩展名",
- "Description:AllowFileExtensions": "允许的上传文件扩展名列表,多个扩展名以,分隔,无需输入.符号",
- "Features:FileManagement": "文件管理",
- "Features:DisplayName:FileSystem": "文件系统",
- "Features:DisplayName:DownloadFile": "下载文件",
- "Features:Description:DownloadFile": "是否允许用户下载文件",
- "Features:DisplayName:UploadFile": "上传文件",
- "Features:Description:UploadFile": "是否允许用户上传文件",
- "Features:DisplayName:MaxUploadFileCount": "上传文件数量",
- "Features:Description:MaxUploadFileCount": "用户单次上传文件的限制数量"
- }
-}
\ No newline at end of file
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN.Abp.FileManagement.Domain.csproj b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN.Abp.FileManagement.Domain.csproj
deleted file mode 100644
index c7a67d189..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN.Abp.FileManagement.Domain.csproj
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
- netstandard2.0
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/AbpFileManagementDomainModule.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/AbpFileManagementDomainModule.cs
deleted file mode 100644
index f3781044f..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/AbpFileManagementDomainModule.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using Volo.Abp.Domain;
-using Volo.Abp.Modularity;
-using Volo.Abp.MultiTenancy;
-
-namespace LINGYUN.Abp.FileManagement
-{
- [DependsOn(
- typeof(AbpDddDomainModule),
- typeof(AbpMultiTenancyModule),
- typeof(AbpFileManagementDomainSharedModule)
- )]
- public class AbpFileManagementDomainModule : AbpModule
- {
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/FileSystemContainer.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/FileSystemContainer.cs
deleted file mode 100644
index 42c643e8f..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain/LINGYUN/Abp/FileManagement/FileSystemContainer.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using Volo.Abp.BlobStoring;
-
-namespace LINGYUN.Abp.FileManagement
-{
- [BlobContainerName("abp-file-management")]
- public class FileSystemContainer
- {
- }
-}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileSystemController.cs b/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileSystemController.cs
deleted file mode 100644
index 136530588..000000000
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileSystemController.cs
+++ /dev/null
@@ -1,265 +0,0 @@
-using LINGYUN.Abp.FileManagement.Localization;
-using LINGYUN.Abp.FileManagement.Permissions;
-using LINGYUN.Abp.FileManagement.Settings;
-using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Http;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.AspNetCore.StaticFiles;
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.IO;
-using System.Linq;
-using System.Threading.Tasks;
-using Volo.Abp;
-using Volo.Abp.Application.Dtos;
-using Volo.Abp.AspNetCore.Mvc;
-using Volo.Abp.IO;
-using Volo.Abp.Settings;
-using Volo.Abp.Features;
-using LINGYUN.Abp.FileManagement.Features;
-
-namespace LINGYUN.Abp.FileManagement
-{
- [Controller]
- [RemoteService(Name = "AbpFileManagement")]
- [Area("file-management")]
- [Route("api/file-management/file-system")]
- public class FileSystemController : AbpController
- {
- protected ISettingProvider SettingProvider { get; }
- protected IFileSystemAppService FileSystemAppService { get; }
-
- public FileSystemController(
- ISettingProvider settingProvider,
- IFileSystemAppService fileSystemAppService)
- {
- SettingProvider = settingProvider;
- FileSystemAppService = fileSystemAppService;
- LocalizationResource = typeof(AbpFileManagementResource);
- }
-
- [HttpPut]
- [Route("files/copy")]
- public virtual async Task CopyFileAsync(FileCopyOrMoveDto input)
- {
- await FileSystemAppService.CopyFileAsync(input);
- }
-
- [HttpPut]
- [Route("folders/copy")]
- public virtual async Task CopyFolderAsync([Required, StringLength(255)] string path, FolderCopyDto input)
- {
- await FileSystemAppService.CopyFolderAsync(path, input);
- }
-
- [HttpPost]
- [Route("files")]
- [RequiresFeature(AbpFileManagementFeatureNames.FileSystem.UploadFile)]
- [Authorize(AbpFileManagementPermissions.FileSystem.FileManager.Create)]
- public virtual async Task CreateFileAsync([FromForm] FileUploadDto input)
- {
- // 检查文件大小
- var fileSizeLimited = await SettingProvider
- .GetAsync(
- AbpFileManagementSettingNames.FileLimitLength,
- AbpFileManagementSettingNames.DefaultFileLimitLength);
- if (fileSizeLimited * 1024 * 1024 < input.TotalSize)
- {
- throw new UserFriendlyException(L["UploadFileSizeBeyondLimit", fileSizeLimited]);
- }
- // 采用分块模式上传文件
-
- // 保存分块到临时目录
- var fileName = input.FileName;
- // 文件扩展名
- var fileExtensionName = FileHelper.GetExtension(fileName);
- var fileAllowExtension = await SettingProvider
- .GetOrDefaultAsync(AbpFileManagementSettingNames.AllowFileExtensions, ServiceProvider);
- // 检查文件扩展名
- if (!fileAllowExtension.Split(',')
- .Any(fe => fe.Equals(fileExtensionName, StringComparison.CurrentCultureIgnoreCase)))
- {
- throw new UserFriendlyException(L["NotAllowedFileExtensionName", fileExtensionName]);
- }
- // 以上传的文件名创建一个临时目录
- var tempFilePath = Path.Combine(
- Path.GetTempPath(),
- "lingyun-abp-file-management",
- "upload",
- string.Concat(input.Path ?? "", input.FileName).ToMd5());
- DirectoryHelper.CreateIfNotExists(tempFilePath);
- // 以上传的分片索引创建临时文件
- var tempSavedFile = Path.Combine(tempFilePath, $"{input.ChunkNumber}.{fileExtensionName}");
- try
- {
- if (HttpContext.RequestAborted.IsCancellationRequested)
- {
- // 如果取消请求,删除临时目录
- Directory.Delete(tempFilePath, true);
- return;
- }
-
- if (input.File != null)
- {
- // 保存临时文件
- using (var fs = new FileStream(tempSavedFile, FileMode.Create, FileAccess.Write))
- {
- // 写入当前分片文件
- await input.File.CopyToAsync(fs);
- }
- }
-
- if (input.ChunkNumber == input.TotalChunks)
- {
- // 合并文件
- var mergeSavedFile = Path.Combine(tempFilePath, $"{fileName}");
- // 获取并排序所有分片文件
- var mergeFiles = Directory.GetFiles(tempFilePath).OrderBy(f => f.Length).ThenBy(f => f);
- // 创建临时合并文件
- input.Data = new byte[0];
- foreach (var mergeFile in mergeFiles)
- {
- // 读取当前文件字节
- var mergeFileBytes = await FileHelper.ReadAllBytesAsync(mergeFile);
- // 写入到合并文件流
- input.Data = input.Data.Concat(mergeFileBytes).ToArray();
- Array.Clear(mergeFileBytes,0, mergeFileBytes.Length);
- // 删除已参与合并的临时文件分片
- FileHelper.DeleteIfExists(mergeFile);
- }
- await FileSystemAppService.CreateFileAsync(input);
- // 文件保存之后删除临时文件目录
- Directory.Delete(tempFilePath, true);
- }
- }
- catch
- {
- // 发生异常删除临时文件目录
- Directory.Delete(tempFilePath, true);
- throw;
- }
- }
-
- [HttpPost]
- [Route("folders")]
- public virtual async Task CreateFolderAsync(FolderCreateDto input)
- {
- await FileSystemAppService.CreateFolderAsync(input);
- }
-
- [HttpDelete]
- [Route("files")]
- public virtual async Task DeleteFileAsync(FileDeleteDto input)
- {
- await FileSystemAppService.DeleteFileAsync(input);
- }
-
- [HttpDelete]
- [Route("folders")]
- public virtual async Task DeleteFolderAsync([Required, StringLength(255)] string path)
- {
- await FileSystemAppService.DeleteFolderAsync(path);
- }
-
- [HttpGet]
- [Route("files")]
- [RequiresFeature(AbpFileManagementFeatureNames.FileSystem.DownloadFile)]
- [Authorize(AbpFileManagementPermissions.FileSystem.FileManager.Download)]
- public virtual async Task DownloadFileAsync(FileSystemDownloadDto input)
- {
- var tempFileName = string.Concat(input.Path ?? "", input.Name);
- tempFileName = tempFileName.ToMd5() + Path.GetExtension(input.Name);
- // 以上传的文件名创建一个临时目录
- var tempFilePath = Path.Combine(
- Path.GetTempPath(),
- "lingyun-abp-file-management",
- "download");
- DirectoryHelper.CreateIfNotExists(tempFilePath);
- tempFilePath = Path.Combine(tempFilePath, tempFileName);
- long contentLength = 0L;
- // 单个分块大小 2MB
- int bufferSize = 2 * 1024 * 1024;
- using (new DisposeAction(() =>
- {
- // 最终下载完毕后,删除临时文件
- if (bufferSize + input.CurrentByte > contentLength)
- {
- FileHelper.DeleteIfExists(tempFilePath);
- }
- }))
- {
- if (!System.IO.File.Exists(tempFilePath))
- {
- var blobStream = await FileSystemAppService.DownloadFileAsync(input);
- using (var tempFileStream = new FileStream(tempFilePath, FileMode.Create, FileAccess.Write))
- {
- blobStream.Position = 0;
- await blobStream.CopyToAsync(tempFileStream);
- }
- }
- // 读取缓存文件
- using var fileStream = new FileStream(tempFilePath, FileMode.Open, FileAccess.Read);
- // 得到文件扩展名
- var fileExt = Path.GetExtension(input.Name);
- var provider = new FileExtensionContentTypeProvider();
- // Http响应标头的文件类型
- string memi = provider.Mappings[fileExt];
- // 文件大小
- contentLength = fileStream.Length;
- if (bufferSize > contentLength)
- {
- var currentTransferBytes = await fileStream.GetAllBytesAsync();
- // 写入响应流
- return File(currentTransferBytes, memi, input.Name);
- }
- else
- {
- // 当前分页传输字节
- byte[] currentTransferBytes = new byte[bufferSize];
- if (input.CurrentByte + bufferSize >= contentLength)
- {
- currentTransferBytes = new byte[contentLength - input.CurrentByte];
- }
- // 读取文件流中的当前分块区段
- fileStream.Seek(input.CurrentByte, SeekOrigin.Begin);
- await fileStream.ReadAsync(currentTransferBytes, 0, currentTransferBytes.Length);
- // 写入响应流
- return File(currentTransferBytes, memi, input.Name);
- }
- }
- }
-
- [HttpGet]
- [Route("profile")]
- public virtual async Task GetAsync(FileSystemGetDto input)
- {
- return await FileSystemAppService.GetAsync(input);
- }
-
- [HttpGet]
- public virtual async Task> GetListAsync(GetFileSystemListDto input)
- {
- return await FileSystemAppService.GetListAsync(input);
- }
-
- [HttpPut]
- [Route("files/move")]
- public virtual async Task MoveFileAsync(FileCopyOrMoveDto input)
- {
- await FileSystemAppService.MoveFileAsync(input);
- }
-
- [HttpPut]
- [Route("folders/move")]
- public virtual async Task MoveFolderAsync([Required, StringLength(255)] string path, FolderMoveDto input)
- {
- await FileSystemAppService.MoveFolderAsync(path, input);
- }
-
- [HttpPut]
- public virtual async Task UpdateAsync([Required, StringLength(255)] string name, FileSystemUpdateDto input)
- {
- return await FileSystemAppService.UpdateAsync(name, input);
- }
- }
-}
diff --git a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application/LINGYUN/Abp/Identity/AbpIdentityApplicationModule.cs b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application/LINGYUN/Abp/Identity/AbpIdentityApplicationModule.cs
index c7de0f249..184c4bee0 100644
--- a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application/LINGYUN/Abp/Identity/AbpIdentityApplicationModule.cs
+++ b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application/LINGYUN/Abp/Identity/AbpIdentityApplicationModule.cs
@@ -1,6 +1,9 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AutoMapper;
+using Volo.Abp.Identity;
using Volo.Abp.Modularity;
+using Volo.Abp.ObjectExtending;
+using Volo.Abp.Threading;
namespace LINGYUN.Abp.Identity
{
@@ -10,6 +13,7 @@ namespace LINGYUN.Abp.Identity
typeof(AbpIdentityDomainModule))]
public class AbpIdentityApplicationModule : AbpModule
{
+ private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner();
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddAutoMapperObjectMapper();
@@ -19,5 +23,23 @@ namespace LINGYUN.Abp.Identity
options.AddProfile(validate: true);
});
}
+
+ public override void PostConfigureServices(ServiceConfigurationContext context)
+ {
+ OneTimeRunner.Run(() =>
+ {
+ ObjectExtensionManager.Instance
+ .AddOrUpdateProperty(
+ new[]
+ {
+ typeof(IdentityUserDto),
+ typeof(IdentityUserCreateDto),
+ typeof(IdentityUserUpdateDto),
+ typeof(ProfileDto),
+ typeof(UpdateProfileDto)
+ },
+ ExtensionIdentityUserConsts.AvatarUrlField);
+ });
+ }
}
}
diff --git a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/ExtensionIdentityUserConsts.cs b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/ExtensionIdentityUserConsts.cs
new file mode 100644
index 000000000..e089a7942
--- /dev/null
+++ b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/ExtensionIdentityUserConsts.cs
@@ -0,0 +1,14 @@
+namespace LINGYUN.Abp.Identity
+{
+ public static class ExtensionIdentityUserConsts
+ {
+ ///
+ /// 头像字段
+ ///
+ public static string AvatarUrlField { get; set; } = "AvatarUrl";
+ ///
+ /// 头像字段最大长度
+ ///
+ public static int MaxAvatarUrlLength { get; set; } = 128;
+ }
+}
diff --git a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.EntityFrameworkCore/LINGYUN/Abp/Identity/EntityFrameworkCore/AbpIdentityEntityFrameworkCoreModule.cs b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.EntityFrameworkCore/LINGYUN/Abp/Identity/EntityFrameworkCore/AbpIdentityEntityFrameworkCoreModule.cs
index ee53d06ac..801bde390 100644
--- a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.EntityFrameworkCore/LINGYUN/Abp/Identity/EntityFrameworkCore/AbpIdentityEntityFrameworkCoreModule.cs
+++ b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.EntityFrameworkCore/LINGYUN/Abp/Identity/EntityFrameworkCore/AbpIdentityEntityFrameworkCoreModule.cs
@@ -2,6 +2,8 @@
using Volo.Abp.Identity;
using Volo.Abp.Identity.EntityFrameworkCore;
using Volo.Abp.Modularity;
+using Volo.Abp.ObjectExtending;
+using Volo.Abp.Threading;
namespace LINGYUN.Abp.Identity.EntityFrameworkCore
{
@@ -9,6 +11,8 @@ namespace LINGYUN.Abp.Identity.EntityFrameworkCore
[DependsOn(typeof(Volo.Abp.Identity.EntityFrameworkCore.AbpIdentityEntityFrameworkCoreModule))]
public class AbpIdentityEntityFrameworkCoreModule : AbpModule
{
+ private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner();
+
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddAbpDbContext(options =>
@@ -17,5 +21,19 @@ namespace LINGYUN.Abp.Identity.EntityFrameworkCore
options.AddRepository();
});
}
+
+ public override void PostConfigureServices(ServiceConfigurationContext context)
+ {
+ OneTimeRunner.Run(() =>
+ {
+ ObjectExtensionManager.Instance
+ .MapEfCoreProperty(
+ ExtensionIdentityUserConsts.AvatarUrlField,
+ (etb, prop) =>
+ {
+ prop.HasMaxLength(ExtensionIdentityUserConsts.MaxAvatarUrlLength);
+ });
+ });
+ }
}
}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN.Abp.OssManagement.Aliyun.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN.Abp.OssManagement.Aliyun.csproj
new file mode 100644
index 000000000..75006a86d
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN.Abp.OssManagement.Aliyun.csproj
@@ -0,0 +1,13 @@
+
+
+
+ netstandard2.0
+
+
+
+
+
+
+
+
+
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AbpOssManagementAliyunModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AbpOssManagementAliyunModule.cs
new file mode 100644
index 000000000..4e62da63a
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AbpOssManagementAliyunModule.cs
@@ -0,0 +1,17 @@
+using LINGYUN.Abp.BlobStoring.Aliyun;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Modularity;
+
+namespace LINGYUN.Abp.OssManagement.Aliyun
+{
+ [DependsOn(
+ typeof(AbpBlobStoringAliyunModule),
+ typeof(AbpOssManagementDomainModule))]
+ public class AbpOssManagementAliyunModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddTransient();
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainer.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainer.cs
new file mode 100644
index 000000000..f64ae51b8
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainer.cs
@@ -0,0 +1,369 @@
+using Aliyun.OSS;
+using LINGYUN.Abp.BlobStoring.Aliyun;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using Volo.Abp;
+using Volo.Abp.MultiTenancy;
+
+namespace LINGYUN.Abp.OssManagement.Aliyun
+{
+ ///
+ /// Oss容器的阿里云实现
+ ///
+ internal class AliyunOssContainer : IOssContainer
+ {
+ protected ICurrentTenant CurrentTenant { get; }
+ protected IOssClientFactory OssClientFactory { get; }
+ public AliyunOssContainer(
+ ICurrentTenant currentTenant,
+ IOssClientFactory ossClientFactory)
+ {
+ CurrentTenant = currentTenant;
+ OssClientFactory = ossClientFactory;
+ }
+ public virtual async Task BulkDeleteObjectsAsync(BulkDeleteObjectRequest request)
+ {
+ var ossClient = await CreateClientAsync();
+
+ var path = GetBasePath(request.Path);
+ var aliyunRequest = new DeleteObjectsRequest(request.Bucket, request.Objects.Select(x => x += path).ToList());
+
+ ossClient.DeleteObjects(aliyunRequest);
+ }
+
+ public virtual async Task CreateAsync(string name)
+ {
+ var ossClient = await CreateClientAsync();
+
+ if (BucketExists(ossClient, name))
+ {
+ throw new BusinessException(code: OssManagementErrorCodes.ContainerAlreadyExists);
+ }
+
+ var bucket = ossClient.CreateBucket(name);
+
+ return new OssContainer(
+ bucket.Name,
+ bucket.CreationDate,
+ 0L,
+ bucket.CreationDate,
+ new Dictionary
+ {
+ { "Id", bucket.Owner?.Id },
+ { "DisplayName", bucket.Owner?.DisplayName }
+ });
+ }
+
+ public virtual async Task CreateObjectAsync(CreateOssObjectRequest request)
+ {
+ var ossClient = await CreateClientAsync();
+
+ var objectPath = GetBasePath(request.Path);
+
+ var objectName = objectPath.IsNullOrWhiteSpace()
+ ? request.Object
+ : objectPath + request.Object;
+
+ if (ObjectExists(ossClient, request.Bucket, objectName))
+ {
+ throw new BusinessException(code: OssManagementErrorCodes.ObjectAlreadyExists);
+ }
+
+ // 当一个对象名称是以 / 结尾时,不论该对象是否存有数据,都以目录的形式存在
+ // 详情见:https://help.aliyun.com/document_detail/31910.html
+ if (objectName.EndsWith("/") &&
+ request.Content.IsNullOrEmpty())
+ {
+ var emptyStream = new MemoryStream();
+ var emptyData = System.Text.Encoding.UTF8.GetBytes("");
+ await emptyStream.WriteAsync(emptyData, 0, emptyData.Length);
+ request.SetContent(emptyStream);
+ }
+
+ // 没有bucket则创建
+ if (!BucketExists(ossClient, request.Bucket))
+ {
+ ossClient.CreateBucket(request.Bucket);
+ }
+
+ var aliyunObjectRequest = new PutObjectRequest(request.Bucket, objectName, request.Content)
+ {
+ Metadata = new ObjectMetadata()
+ };
+ if (request.ExpirationTime.HasValue)
+ {
+ aliyunObjectRequest.Metadata.ExpirationTime = DateTime.Now.Add(request.ExpirationTime.Value);
+ }
+
+ var aliyunObject = ossClient.PutObject(aliyunObjectRequest);
+
+ var ossObject = new OssObject(
+ !objectPath.IsNullOrWhiteSpace()
+ ? objectName.Replace(objectPath, "")
+ : objectName,
+ objectPath,
+ DateTime.Now,
+ aliyunObject.ContentLength,
+ DateTime.Now,
+ aliyunObject.ResponseMetadata,
+ objectName.EndsWith("/") // 名称结尾是 / 符号的则为目录:https://help.aliyun.com/document_detail/31910.html
+ )
+ {
+ FullName = objectName
+ };
+
+ if (!Equals(request.Content, Stream.Null))
+ {
+ request.Content.Seek(0, SeekOrigin.Begin);
+ ossObject.SetContent(request.Content);
+ }
+
+ return ossObject;
+ }
+
+ public virtual async Task DeleteAsync(string name)
+ {
+ var ossClient = await CreateClientAsync();
+
+ if (BucketExists(ossClient, name))
+ {
+ ossClient.DeleteBucket(name);
+ }
+ }
+
+ public virtual async Task DeleteObjectAsync(GetOssObjectRequest request)
+ {
+ var ossClient = await CreateClientAsync();
+
+ var objectPath = GetBasePath(request.Path);
+
+ var objectName = objectPath.IsNullOrWhiteSpace()
+ ? request.Object
+ : objectPath + request.Object;
+
+ if (BucketExists(ossClient, request.Bucket) &&
+ ObjectExists(ossClient, request.Bucket, objectName))
+ {
+ var objectListing = ossClient.ListObjects(request.Bucket, objectName);
+ if (objectListing.CommonPrefixes.Any() ||
+ objectListing.ObjectSummaries.Any())
+ {
+ throw new BusinessException(code: OssManagementErrorCodes.ObjectDeleteWithNotEmpty);
+ // throw new ObjectDeleteWithNotEmptyException("00201", $"Can't not delete oss object {request.Object}, because it is not empty!");
+ }
+ ossClient.DeleteObject(request.Bucket, objectName);
+ }
+ }
+
+ public virtual async Task ExistsAsync(string name)
+ {
+ var ossClient = await CreateClientAsync();
+
+ return BucketExists(ossClient, name);
+ }
+
+ public virtual async Task GetAsync(string name)
+ {
+ var ossClient = await CreateClientAsync();
+ if (!BucketExists(ossClient, name))
+ {
+ throw new BusinessException(code: OssManagementErrorCodes.ContainerNotFound);
+ // throw new ContainerNotFoundException($"Can't not found container {name} in aliyun blob storing");
+ }
+ var bucket = ossClient.GetBucketInfo(name);
+
+ return new OssContainer(
+ bucket.Bucket.Name,
+ bucket.Bucket.CreationDate,
+ 0L,
+ bucket.Bucket.CreationDate,
+ new Dictionary
+ {
+ { "Id", bucket.Bucket.Owner?.Id },
+ { "DisplayName", bucket.Bucket.Owner?.DisplayName }
+ });
+ }
+
+ public virtual async Task GetObjectAsync(GetOssObjectRequest request)
+ {
+ var ossClient = await CreateClientAsync();
+ if (!BucketExists(ossClient, request.Bucket))
+ {
+ throw new BusinessException(code: OssManagementErrorCodes.ContainerNotFound);
+ // throw new ContainerNotFoundException($"Can't not found container {request.Bucket} in aliyun blob storing");
+ }
+
+ var objectPath = GetBasePath(request.Path);
+ var objectName = objectPath.IsNullOrWhiteSpace()
+ ? request.Object
+ : objectPath + request.Object;
+
+ if (!ObjectExists(ossClient, request.Bucket, objectName))
+ {
+ throw new BusinessException(code: OssManagementErrorCodes.ObjectNotFound);
+ // throw new ContainerNotFoundException($"Can't not found object {objectName} in container {request.Bucket} with aliyun blob storing");
+ }
+
+ var aliyunOssObjectRequest = new GetObjectRequest(request.Bucket, objectName, request.Process);
+ var aliyunOssObject = ossClient.GetObject(aliyunOssObjectRequest);
+ var ossObject = new OssObject(
+ !objectPath.IsNullOrWhiteSpace()
+ ? aliyunOssObject.Key.Replace(objectPath, "")
+ : aliyunOssObject.Key,
+ request.Path,
+ aliyunOssObject.Metadata.LastModified,
+ aliyunOssObject.Metadata.ContentLength,
+ aliyunOssObject.Metadata.LastModified,
+ aliyunOssObject.Metadata.UserMetadata,
+ aliyunOssObject.Key.EndsWith("/"))
+ {
+ FullName = aliyunOssObject.Key
+ };
+
+ if (aliyunOssObject.IsSetResponseStream())
+ {
+ var memoryStream = new MemoryStream();
+ await aliyunOssObject.Content.CopyToAsync(memoryStream);
+ memoryStream.Seek(0, SeekOrigin.Begin);
+ ossObject.SetContent(memoryStream);
+ }
+
+ return ossObject;
+ }
+
+ public virtual async Task GetListAsync(GetOssContainersRequest request)
+ {
+ var ossClient = await CreateClientAsync();
+
+ var aliyunRequest = new ListBucketsRequest
+ {
+ Marker = request.Marker,
+ Prefix = request.Prefix,
+ MaxKeys = request.MaxKeys
+ };
+ var bucketsResponse = ossClient.ListBuckets(aliyunRequest);
+
+ return new GetOssContainersResponse(
+ bucketsResponse.Prefix,
+ bucketsResponse.Marker,
+ bucketsResponse.NextMaker,
+ bucketsResponse.MaxKeys ?? 0,
+ bucketsResponse.Buckets
+ .Select(x => new OssContainer(
+ x.Name,
+ x.CreationDate,
+ 0L,
+ x.CreationDate,
+ new Dictionary
+ {
+ { "Id", x.Owner?.Id },
+ { "DisplayName", x.Owner?.DisplayName }
+ }))
+ .ToList());
+ }
+
+ public virtual async Task GetObjectsAsync(GetOssObjectsRequest request)
+ {
+
+ var ossClient = await CreateClientAsync();
+
+ var objectPath = GetBasePath(request.Prefix);
+ var marker = !objectPath.IsNullOrWhiteSpace() && !request.Marker.IsNullOrWhiteSpace()
+ ? request.Marker.Replace(objectPath, "")
+ : request.Marker;
+ var aliyunRequest = new ListObjectsRequest(request.BucketName)
+ {
+ Marker = !marker.IsNullOrWhiteSpace() ? objectPath + marker : marker,
+ Prefix = objectPath,
+ MaxKeys = request.MaxKeys,
+ EncodingType = request.EncodingType,
+ Delimiter = request.Delimiter
+ };
+ var objectsResponse = ossClient.ListObjects(aliyunRequest);
+
+ var ossObjects = objectsResponse.ObjectSummaries
+ .Where(x => !x.Key.Equals(objectsResponse.Prefix))// 过滤当前的目录返回值
+ .Select(x => new OssObject(
+ !objectPath.IsNullOrWhiteSpace() && !x.Key.Equals(objectPath)
+ ? x.Key.Replace(objectPath, "")
+ : x.Key, // 去除目录名称
+ request.Prefix,
+ x.LastModified,
+ x.Size,
+ x.LastModified,
+ new Dictionary
+ {
+ { "Id", x.Owner?.Id },
+ { "DisplayName", x.Owner?.DisplayName }
+ },
+ x.Key.EndsWith("/"))
+ {
+ FullName = x.Key
+ })
+ .ToList();
+ // 当 Delimiter 为 / 时, objectsResponse.CommonPrefixes 可用于代表层级目录
+ if (objectsResponse.CommonPrefixes.Any())
+ {
+ ossObjects.InsertRange(0,
+ objectsResponse.CommonPrefixes
+ .Select(x => new OssObject(
+ x.Replace(objectPath, ""),
+ request.Prefix,
+ null,
+ 0L,
+ null,
+ null,
+ true)));
+ }
+ // 排序
+ // TODO: 是否需要客户端来排序
+ ossObjects.Sort(new OssObjectComparer());
+
+ return new GetOssObjectsResponse(
+ objectsResponse.BucketName,
+ request.Prefix,
+ marker,
+ !objectPath.IsNullOrWhiteSpace() && !objectsResponse.NextMarker.IsNullOrWhiteSpace()
+ ? objectsResponse.NextMarker.Replace(objectPath, "")
+ : objectsResponse.NextMarker,
+ objectsResponse.Delimiter,
+ objectsResponse.MaxKeys,
+ ossObjects);
+ }
+
+ protected virtual string GetBasePath(string path)
+ {
+ string objectPath = "";
+ if (CurrentTenant.Id == null)
+ {
+ objectPath += "host/";
+ }
+ else
+ {
+ objectPath += "tenants/" + CurrentTenant.Id.Value.ToString("D");
+ }
+
+ objectPath += path ?? "";
+
+ return objectPath.EnsureEndsWith('/');
+ }
+
+ protected virtual bool BucketExists(IOss client, string bucketName)
+ {
+ return client.DoesBucketExist(bucketName);
+ }
+
+ protected virtual bool ObjectExists(IOss client, string bucketName, string objectName)
+ {
+ return client.DoesObjectExist(bucketName, objectName);
+ }
+
+ protected virtual async Task CreateClientAsync()
+ {
+ return await OssClientFactory.CreateAsync();
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainerFactory.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainerFactory.cs
new file mode 100644
index 000000000..3f5314781
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainerFactory.cs
@@ -0,0 +1,26 @@
+using LINGYUN.Abp.BlobStoring.Aliyun;
+using Volo.Abp.MultiTenancy;
+
+namespace LINGYUN.Abp.OssManagement.Aliyun
+{
+ public class AliyunOssContainerFactory : IOssContainerFactory
+ {
+ protected ICurrentTenant CurrentTenant { get; }
+ protected IOssClientFactory OssClientFactory { get; }
+
+ public AliyunOssContainerFactory(
+ ICurrentTenant currentTenant,
+ IOssClientFactory ossClientFactory)
+ {
+ CurrentTenant = currentTenant;
+ OssClientFactory = ossClientFactory;
+ }
+
+ public IOssContainer Create()
+ {
+ return new AliyunOssContainer(
+ CurrentTenant,
+ OssClientFactory);
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/README.md b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/README.md
new file mode 100644
index 000000000..56a51290a
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/README.md
@@ -0,0 +1,15 @@
+# LINGYUN.Abp.OssManagement.Aliyun
+
+阿里云oss容器接口
+
+## 配置使用
+
+模块按需引用
+
+```csharp
+[DependsOn(typeof(AbpOssManagementAliyunModule))]
+public class YouProjectModule : AbpModule
+{
+ // other
+}
+```
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN.Abp.FileManagement.Application.Contracts.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN.Abp.OssManagement.Application.Contracts.csproj
similarity index 73%
rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN.Abp.FileManagement.Application.Contracts.csproj
rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN.Abp.OssManagement.Application.Contracts.csproj
index 029cba6fd..77c881d5b 100644
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN.Abp.FileManagement.Application.Contracts.csproj
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN.Abp.OssManagement.Application.Contracts.csproj
@@ -12,7 +12,7 @@
-
+
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/AbpOssManagementApplicationContractsModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/AbpOssManagementApplicationContractsModule.cs
new file mode 100644
index 000000000..cbbcc02a3
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/AbpOssManagementApplicationContractsModule.cs
@@ -0,0 +1,12 @@
+using Volo.Abp.Application;
+using Volo.Abp.Modularity;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ [DependsOn(
+ typeof(AbpOssManagementDomainSharedModule),
+ typeof(AbpDddApplicationModule))]
+ public class AbpOssManagementApplicationContractsModule : AbpModule
+ {
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/BulkDeleteOssObjectInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/BulkDeleteOssObjectInput.cs
new file mode 100644
index 000000000..01af4d86a
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/BulkDeleteOssObjectInput.cs
@@ -0,0 +1,15 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class BulkDeleteOssObjectInput
+ {
+ [Required]
+ public string Bucket { get; set; }
+
+ public string Path { get; set; }
+
+ [Required]
+ public string[] Objects { get; set; }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/CreateOssObjectInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/CreateOssObjectInput.cs
new file mode 100644
index 000000000..260bf71a8
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/CreateOssObjectInput.cs
@@ -0,0 +1,25 @@
+using System;
+using System.IO;
+using Volo.Abp.Auditing;
+using Volo.Abp.Validation;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class CreateOssObjectInput
+ {
+ public string Bucket { get; set; }
+ public string Path { get; set; }
+ public string Object { get; set; }
+
+ [DisableAuditing]
+ [DisableValidation]
+ public Stream Content { get; set; }
+ public TimeSpan? ExpirationTime { get; set; }
+
+ public void SetContent(Stream content)
+ {
+ Content = content;
+ Content?.Seek(0, SeekOrigin.Begin);
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureDefinitionProvider.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureDefinitionProvider.cs
new file mode 100644
index 000000000..15248d66b
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureDefinitionProvider.cs
@@ -0,0 +1,73 @@
+using LINGYUN.Abp.OssManagement.Localization;
+using Volo.Abp.Features;
+using Volo.Abp.Localization;
+using Volo.Abp.Validation.StringValues;
+
+namespace LINGYUN.Abp.OssManagement.Features
+{
+ public class AbpOssManagementFeatureDefinitionProvider : FeatureDefinitionProvider
+ {
+ public override void Define(IFeatureDefinitionContext context)
+ {
+ var featureGroup = context.AddGroup(
+ name: AbpOssManagementFeatureNames.GroupName,
+ displayName: L("Features:OssManagement"));
+
+ var ossFeature = featureGroup.AddFeature(
+ name: AbpOssManagementFeatureNames.OssObject.Default,
+ displayName: L("Features:DisplayName:OssObject"),
+ description: L("Features:Description:OssObject"));
+
+ ossFeature.CreateChild(
+ name: AbpOssManagementFeatureNames.OssObject.DownloadFile,
+ defaultValue: false.ToString(),
+ displayName: L("Features:DisplayName:DownloadFile"),
+ description: L("Features:Description:DownloadFile"),
+ valueType: new ToggleStringValueType(new BooleanValueValidator()));
+ ossFeature.CreateChild(
+ name: AbpOssManagementFeatureNames.OssObject.DownloadLimit,
+ defaultValue: "1000",
+ displayName: L("Features:DisplayName:DownloadLimit"),
+ description: L("Features:Description:DownloadLimit"),
+ valueType: new FreeTextStringValueType(new NumericValueValidator(0, 100_0000))); // 上限100万次调用
+ ossFeature.CreateChild(
+ name: AbpOssManagementFeatureNames.OssObject.DownloadInterval,
+ defaultValue: "1",
+ displayName: L("Features:DisplayName:DownloadInterval"),
+ description: L("Features:Description:DownloadInterval"),
+ valueType: new FreeTextStringValueType(new NumericValueValidator(1, 12))); // 上限12月
+
+ ossFeature.CreateChild(
+ name: AbpOssManagementFeatureNames.OssObject.UploadFile,
+ defaultValue: true.ToString(),
+ displayName: L("Features:DisplayName:UploadFile"),
+ description: L("Features:Description:UploadFile"),
+ valueType: new ToggleStringValueType(new BooleanValueValidator()));
+ ossFeature.CreateChild(
+ name: AbpOssManagementFeatureNames.OssObject.UploadLimit,
+ defaultValue: "1000",
+ displayName: L("Features:DisplayName:UploadLimit"),
+ description: L("Features:Description:UploadLimit"),
+ valueType: new FreeTextStringValueType(new NumericValueValidator(0, 100_0000))); // 上限100万次调用
+ ossFeature.CreateChild(
+ name: AbpOssManagementFeatureNames.OssObject.UploadInterval,
+ defaultValue: "1",
+ displayName: L("Features:DisplayName:UploadInterval"),
+ description: L("Features:Description:UploadInterval"),
+ valueType: new FreeTextStringValueType(new NumericValueValidator(1, 12))); // 上限12月
+
+ // TODO: 此功能需要控制器协同,暂时不实现
+ //fileSystemFeature.CreateChild(
+ // name: AbpOssManagementFeatureNames.OssObject.MaxUploadFileCount,
+ // defaultValue: 1.ToString(),
+ // displayName: L("Features:DisplayName:MaxUploadFileCount"),
+ // description: L("Features:Description:MaxUploadFileCount"),
+ // valueType: new FreeTextStringValueType(new NumericValueValidator(1, 10)));
+ }
+
+ protected ILocalizableString L(string name)
+ {
+ return LocalizableString.Create(name);
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureNames.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureNames.cs
new file mode 100644
index 000000000..9b8e93441
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureNames.cs
@@ -0,0 +1,41 @@
+namespace LINGYUN.Abp.OssManagement.Features
+{
+ public class AbpOssManagementFeatureNames
+ {
+ public const string GroupName = "AbpOssManagement";
+
+
+ public class OssObject
+ {
+ public const string Default = GroupName + ".OssObject";
+ ///
+ /// 下载文件功能
+ ///
+ public const string DownloadFile = Default + ".DownloadFile";
+ ///
+ /// 下载文件功能限制次数
+ ///
+ public const string DownloadLimit = Default + ".DownloadLimit";
+ ///
+ /// 下载文件功能限制次数周期
+ ///
+ public const string DownloadInterval = Default + ".DownloadInterval";
+ ///
+ /// 上传文件功能
+ ///
+ public const string UploadFile = Default + ".UploadFile";
+ ///
+ /// 上传文件功能限制次数
+ ///
+ public const string UploadLimit = Default + ".UploadLimit";
+ ///
+ /// 上传文件功能限制次数周期
+ ///
+ public const string UploadInterval = Default + ".UploadInterval";
+ ///
+ /// 最大上传文件
+ ///
+ public const string MaxUploadFileCount = Default + ".MaxUploadFileCount";
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssContainersInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssContainersInput.cs
new file mode 100644
index 000000000..11cf0eb3f
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssContainersInput.cs
@@ -0,0 +1,10 @@
+using Volo.Abp.Application.Dtos;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class GetOssContainersInput : PagedAndSortedResultRequestDto
+ {
+ public string Prefix { get; set; }
+ public string Marker { get; set; }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssObjectInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssObjectInput.cs
new file mode 100644
index 000000000..7422bfba0
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssObjectInput.cs
@@ -0,0 +1,15 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class GetOssObjectInput
+ {
+ [Required]
+ public string Bucket { get; set; }
+
+ public string Path { get; set; }
+
+ [Required]
+ public string Object { get; set; }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssObjectsInput.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssObjectsInput.cs
new file mode 100644
index 000000000..234ba3a9c
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetOssObjectsInput.cs
@@ -0,0 +1,13 @@
+using Volo.Abp.Application.Dtos;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class GetOssObjectsInput : PagedAndSortedResultRequestDto
+ {
+ public string Bucket { get; set; }
+ public string Prefix { get; set; }
+ public string Delimiter { get; set; }
+ public string Marker { get; set; }
+ public string EncodingType { get; set; }
+ }
+}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemGetDto.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetStaticFileInput.cs
similarity index 50%
rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemGetDto.cs
rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetStaticFileInput.cs
index 8c9619ba6..833c1db11 100644
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Application.Contracts/LINGYUN/Abp/FileManagement/FileSystemGetDto.cs
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/GetStaticFileInput.cs
@@ -1,14 +1,16 @@
using System.ComponentModel.DataAnnotations;
-namespace LINGYUN.Abp.FileManagement
+namespace LINGYUN.Abp.OssManagement
{
- public class FileSystemGetDto
+ public class GetStaticFileInput
{
- [StringLength(255)]
- public string Path { get; set; }
-
[Required]
- [StringLength(255)]
public string Name { get; set; }
+
+ public string Path { get; set; }
+
+ public string Bucket { get; set; }
+
+ public string Process { get; set; }
}
}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IOssContainerAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IOssContainerAppService.cs
new file mode 100644
index 000000000..130f85ae4
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IOssContainerAppService.cs
@@ -0,0 +1,18 @@
+using System.Threading.Tasks;
+using Volo.Abp.Application.Services;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public interface IOssContainerAppService: IApplicationService
+ {
+ Task CreateAsync(string name);
+
+ Task GetAsync(string name);
+
+ Task DeleteAsync(string name);
+
+ Task GetListAsync(GetOssContainersInput input);
+
+ Task GetObjectListAsync(GetOssObjectsInput input);
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IOssObjectAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IOssObjectAppService.cs
new file mode 100644
index 000000000..bd4377e4f
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IOssObjectAppService.cs
@@ -0,0 +1,16 @@
+using System.Threading.Tasks;
+using Volo.Abp.Application.Services;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public interface IOssObjectAppService : IApplicationService
+ {
+ Task CreateAsync(CreateOssObjectInput input);
+
+ Task GetAsync(GetOssObjectInput input);
+
+ Task DeleteAsync(GetOssObjectInput input);
+
+ Task BulkDeleteAsync(BulkDeleteOssObjectInput input);
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IStaticFilesAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IStaticFilesAppService.cs
new file mode 100644
index 000000000..50426c914
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IStaticFilesAppService.cs
@@ -0,0 +1,11 @@
+using System.IO;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Services;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public interface IStaticFilesAppService: IApplicationService
+ {
+ Task GetAsync(GetStaticFileInput input);
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssContainerDto.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssContainerDto.cs
new file mode 100644
index 000000000..c3606d569
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssContainerDto.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class OssContainerDto
+ {
+ public string Name { get; set; }
+ public long Size { get; set; }
+ public DateTime CreationDate { get; set; }
+ public DateTime? LastModifiedDate { get; set; }
+ public IDictionary Metadata { get; set; }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssContainersResultDto.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssContainersResultDto.cs
new file mode 100644
index 000000000..a64bf9cda
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssContainersResultDto.cs
@@ -0,0 +1,13 @@
+using System.Collections.Generic;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class OssContainersResultDto
+ {
+ public string Prefix { get; set; }
+ public string Marker { get; set; }
+ public string NextMarker { get; set; }
+ public int MaxKeys { get; set; }
+ public List Containers { get; set; } = new List();
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssManagementRemoteServiceConsts.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssManagementRemoteServiceConsts.cs
new file mode 100644
index 000000000..fc8856b40
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssManagementRemoteServiceConsts.cs
@@ -0,0 +1,7 @@
+namespace LINGYUN.Abp.OssManagement
+{
+ public static class OssManagementRemoteServiceConsts
+ {
+ public const string RemoteServiceName = "AbpOssManagement";
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssObjectDto.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssObjectDto.cs
new file mode 100644
index 000000000..80e41f896
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssObjectDto.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class OssObjectDto
+ {
+ public bool IsFolder { get; set; }
+ public string Path { get; set; }
+ public string Name { get; set; }
+ public long Size { get; set; }
+ public DateTime? CreationDate { get; set; }
+ public DateTime? LastModifiedDate { get; set; }
+ public IDictionary Metadata { get; set; }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssObjectsResultDto.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssObjectsResultDto.cs
new file mode 100644
index 000000000..dd8f1f722
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssObjectsResultDto.cs
@@ -0,0 +1,15 @@
+using System.Collections.Generic;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class OssObjectsResultDto
+ {
+ public string Bucket { get; set; }
+ public string Prefix { get; set; }
+ public string Delimiter { get; set; }
+ public string Marker { get; set; }
+ public string NextMarker { get; set; }
+ public int MaxKeys { get; set; }
+ public List Objects { get; set; } = new List();
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissionDefinitionProvider.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissionDefinitionProvider.cs
new file mode 100644
index 000000000..2cc6e5ffc
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissionDefinitionProvider.cs
@@ -0,0 +1,28 @@
+using LINGYUN.Abp.OssManagement.Localization;
+using Volo.Abp.Authorization.Permissions;
+using Volo.Abp.Localization;
+
+namespace LINGYUN.Abp.OssManagement.Permissions
+{
+ public class AbpOssManagementPermissionDefinitionProvider : PermissionDefinitionProvider
+ {
+ public override void Define(IPermissionDefinitionContext context)
+ {
+ var ossManagement = context.AddGroup(AbpOssManagementPermissions.GroupName, L("Permission:OssManagement"));
+
+ var container = ossManagement.AddPermission(AbpOssManagementPermissions.Container.Default, L("Permission:Container"));
+ container.AddChild(AbpOssManagementPermissions.Container.Create, L("Permission:Create"));
+ container.AddChild(AbpOssManagementPermissions.Container.Delete, L("Permission:Delete"));
+
+ var ossobject = ossManagement.AddPermission(AbpOssManagementPermissions.OssObject.Default, L("Permission:OssObject"));
+ ossobject.AddChild(AbpOssManagementPermissions.OssObject.Create, L("Permission:Create"));
+ ossobject.AddChild(AbpOssManagementPermissions.OssObject.Delete, L("Permission:Delete"));
+ ossobject.AddChild(AbpOssManagementPermissions.OssObject.Download, L("Permission:Download"));
+ }
+
+ private static LocalizableString L(string name)
+ {
+ return LocalizableString.Create(name);
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissions.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissions.cs
new file mode 100644
index 000000000..a0174d7c0
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Permissions/AbpOssManagementPermissions.cs
@@ -0,0 +1,27 @@
+namespace LINGYUN.Abp.OssManagement.Permissions
+{
+ public class AbpOssManagementPermissions
+ {
+ public const string GroupName = "AbpOssManagement";
+
+ public class Container
+ {
+ public const string Default = GroupName + ".Container";
+
+ public const string Create = Default + ".Create";
+
+ public const string Delete = Default + ".Delete";
+ }
+
+ public class OssObject
+ {
+ public const string Default = GroupName + ".OssObject";
+
+ public const string Create = Default + ".Create";
+
+ public const string Delete = Default + ".Delete";
+
+ public const string Download = Default + ".Download";
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN.Abp.OssManagement.Application.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN.Abp.OssManagement.Application.csproj
new file mode 100644
index 000000000..0f84edb86
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN.Abp.OssManagement.Application.csproj
@@ -0,0 +1,19 @@
+
+
+
+
+
+ netstandard2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/AbpOssManagementApplicationModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/AbpOssManagementApplicationModule.cs
new file mode 100644
index 000000000..41df61378
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/AbpOssManagementApplicationModule.cs
@@ -0,0 +1,23 @@
+using Volo.Abp.AutoMapper;
+using Volo.Abp.Modularity;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ [DependsOn(
+ typeof(AbpAutoMapperModule),
+ typeof(AbpOssManagementDomainModule),
+ typeof(AbpOssManagementApplicationContractsModule))]
+ public class AbpOssManagementApplicationModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddAutoMapperObjectMapper();
+
+ Configure(options =>
+ {
+ options.AddProfile(validate: true);
+ });
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssContainerAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssContainerAppService.cs
new file mode 100644
index 000000000..a51a72472
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssContainerAppService.cs
@@ -0,0 +1,70 @@
+using LINGYUN.Abp.OssManagement.Permissions;
+using Microsoft.AspNetCore.Authorization;
+using System.Threading.Tasks;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ [Authorize(AbpOssManagementPermissions.Container.Default)]
+ public class OssContainerAppService : OssManagementApplicationServiceBase, IOssContainerAppService
+ {
+ protected IOssContainerFactory OssContainerFactory { get; }
+
+ public OssContainerAppService(
+ IOssContainerFactory ossContainerFactory)
+ {
+ OssContainerFactory = ossContainerFactory;
+ }
+
+ [Authorize(AbpOssManagementPermissions.Container.Create)]
+ public virtual async Task CreateAsync(string name)
+ {
+ var oss = CreateOssContainer();
+ var container = await oss.CreateAsync(name);
+
+ return ObjectMapper.Map(container);
+ }
+
+ [Authorize(AbpOssManagementPermissions.Container.Delete)]
+ public virtual async Task DeleteAsync(string name)
+ {
+ var oss = CreateOssContainer();
+
+ await oss.DeleteAsync(name);
+ }
+
+ public virtual async Task GetAsync(string name)
+ {
+ var oss = CreateOssContainer();
+ var container = await oss.GetAsync(name);
+
+ return ObjectMapper.Map(container);
+ }
+
+ public virtual async Task GetListAsync(GetOssContainersInput input)
+ {
+ var oss = CreateOssContainer();
+
+ var containerResponse = await oss.GetListAsync(
+ input.Prefix, input.Marker, input.MaxResultCount);
+
+ return ObjectMapper.Map(containerResponse);
+ }
+
+ public virtual async Task GetObjectListAsync(GetOssObjectsInput input)
+ {
+ var oss = CreateOssContainer();
+
+ var ossObjectResponse = await oss.GetObjectsAsync(
+ input.Bucket, input.Prefix, input.Marker,
+ input.Delimiter, input.EncodingType,
+ input.MaxResultCount);
+
+ return ObjectMapper.Map(ossObjectResponse);
+ }
+
+ protected virtual IOssContainer CreateOssContainer()
+ {
+ return OssContainerFactory.Create();
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssManagementApplicationAutoMapperProfile.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssManagementApplicationAutoMapperProfile.cs
new file mode 100644
index 000000000..47441dd87
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssManagementApplicationAutoMapperProfile.cs
@@ -0,0 +1,17 @@
+using AutoMapper;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class OssManagementApplicationAutoMapperProfile : Profile
+ {
+ public OssManagementApplicationAutoMapperProfile()
+ {
+ CreateMap();
+ CreateMap()
+ .ForMember(dto => dto.Path, map => map.MapFrom(src => src.Prefix));
+
+ CreateMap();
+ CreateMap();
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssManagementApplicationServiceBase.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssManagementApplicationServiceBase.cs
new file mode 100644
index 000000000..32150b969
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssManagementApplicationServiceBase.cs
@@ -0,0 +1,14 @@
+using LINGYUN.Abp.OssManagement.Localization;
+using Volo.Abp.Application.Services;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class OssManagementApplicationServiceBase : ApplicationService
+ {
+ protected OssManagementApplicationServiceBase()
+ {
+ LocalizationResource = typeof(AbpOssManagementResource);
+ ObjectMapperContext = typeof(AbpOssManagementApplicationModule);
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssObjectAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssObjectAppService.cs
new file mode 100644
index 000000000..4ef0219f3
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/OssObjectAppService.cs
@@ -0,0 +1,113 @@
+using LINGYUN.Abp.Features.LimitValidation;
+using LINGYUN.Abp.OssManagement.Features;
+using LINGYUN.Abp.OssManagement.Permissions;
+using LINGYUN.Abp.OssManagement.Settings;
+using Microsoft.AspNetCore.Authorization;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using Volo.Abp.Features;
+using Volo.Abp.IO;
+using Volo.Abp.Settings;
+using Volo.Abp.Validation;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ [Authorize(AbpOssManagementPermissions.OssObject.Default)]
+ public class OssObjectAppService : OssManagementApplicationServiceBase, IOssObjectAppService
+ {
+ protected IOssContainerFactory OssContainerFactory { get; }
+
+ public OssObjectAppService(
+ IOssContainerFactory ossContainerFactory)
+ {
+ OssContainerFactory = ossContainerFactory;
+ }
+
+ [Authorize(AbpOssManagementPermissions.OssObject.Create)]
+ [RequiresFeature(AbpOssManagementFeatureNames.OssObject.UploadFile)]
+ [RequiresLimitFeature(
+ AbpOssManagementFeatureNames.OssObject.UploadLimit,
+ AbpOssManagementFeatureNames.OssObject.UploadInterval,
+ LimitPolicy.Month)]
+ public virtual async Task CreateAsync(CreateOssObjectInput input)
+ {
+ if (!input.Content.IsNullOrEmpty())
+ {
+ // 检查文件大小
+ var fileSizeLimited = await SettingProvider
+ .GetAsync(
+ AbpOssManagementSettingNames.FileLimitLength,
+ AbpOssManagementSettingNames.DefaultFileLimitLength);
+ if (fileSizeLimited * 1024 * 1024 < input.Content.Length)
+ {
+ ThrowValidationException(L["UploadFileSizeBeyondLimit", fileSizeLimited], nameof(input.Content));
+ }
+
+ // 文件扩展名
+ var fileExtensionName = FileHelper.GetExtension(input.Object);
+ var fileAllowExtension = await SettingProvider.GetOrNullAsync(AbpOssManagementSettingNames.AllowFileExtensions);
+ // 检查文件扩展名
+ if (!fileAllowExtension.Split(',')
+ .Any(fe => fe.Equals(fileExtensionName, StringComparison.CurrentCultureIgnoreCase)))
+ {
+ ThrowValidationException(L["NotAllowedFileExtensionName", fileExtensionName], "FileName");
+ }
+ }
+
+ var oss = CreateOssContainer();
+
+ var createOssObjectRequest = new CreateOssObjectRequest(
+ input.Bucket,
+ input.Object,
+ input.Content,
+ input.Path,
+ input.ExpirationTime);
+ var ossObject = await oss.CreateObjectAsync(createOssObjectRequest);
+
+ return ObjectMapper.Map(ossObject);
+ }
+
+ [Authorize(AbpOssManagementPermissions.OssObject.Delete)]
+ public virtual async Task BulkDeleteAsync(BulkDeleteOssObjectInput input)
+ {
+ var oss = CreateOssContainer();
+
+ await oss.BulkDeleteObjectsAsync(input.Bucket, input.Objects, input.Path);
+ }
+
+ [Authorize(AbpOssManagementPermissions.OssObject.Delete)]
+ public virtual async Task DeleteAsync(GetOssObjectInput input)
+ {
+ var oss = CreateOssContainer();
+
+ await oss.DeleteObjectAsync(input.Bucket, input.Object, input.Path);
+ }
+
+ public virtual async Task GetAsync(GetOssObjectInput input)
+ {
+ var oss = CreateOssContainer();
+
+ var ossObject = await oss.GetObjectAsync(input.Bucket, input.Object, input.Path);
+
+ return ObjectMapper.Map(ossObject);
+ }
+
+ protected virtual IOssContainer CreateOssContainer()
+ {
+ return OssContainerFactory.Create();
+ }
+
+ private static void ThrowValidationException(string message, string memberName)
+ {
+ throw new AbpValidationException(message,
+ new List
+ {
+ new ValidationResult(message, new[] {memberName})
+ });
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/StaticFilesAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/StaticFilesAppService.cs
new file mode 100644
index 000000000..88062883d
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/StaticFilesAppService.cs
@@ -0,0 +1,39 @@
+using LINGYUN.Abp.Features.LimitValidation;
+using LINGYUN.Abp.OssManagement.Features;
+using System.IO;
+using System.Threading.Tasks;
+using System.Web;
+using Volo.Abp.Features;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class StaticFilesAppService : OssManagementApplicationServiceBase, IStaticFilesAppService
+ {
+ protected IOssContainerFactory OssContainerFactory { get; }
+
+ public StaticFilesAppService(
+ IOssContainerFactory ossContainerFactory)
+ {
+ OssContainerFactory = ossContainerFactory;
+ }
+
+ [RequiresFeature(AbpOssManagementFeatureNames.OssObject.DownloadFile)]
+ [RequiresLimitFeature(
+ AbpOssManagementFeatureNames.OssObject.DownloadLimit,
+ AbpOssManagementFeatureNames.OssObject.DownloadInterval,
+ LimitPolicy.Month)]
+ public virtual async Task GetAsync(GetStaticFileInput input)
+ {
+ var ossObjectRequest = new GetOssObjectRequest(
+ HttpUtility.UrlDecode(input.Bucket), // 需要处理特殊字符
+ HttpUtility.UrlDecode(input.Name),
+ HttpUtility.UrlDecode(input.Path),
+ HttpUtility.UrlDecode(input.Process));
+
+ var ossContainer = OssContainerFactory.Create();
+ var ossObject = await ossContainer.GetObjectAsync(ossObjectRequest);
+
+ return ossObject.Content;
+ }
+ }
+}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN.Abp.FileManagement.Domain.Shared.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN.Abp.OssManagement.Domain.Shared.csproj
similarity index 50%
rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN.Abp.FileManagement.Domain.Shared.csproj
rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN.Abp.OssManagement.Domain.Shared.csproj
index 03eadc873..877fd2915 100644
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN.Abp.FileManagement.Domain.Shared.csproj
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN.Abp.OssManagement.Domain.Shared.csproj
@@ -8,13 +8,13 @@
-
-
+
+
-
-
+
+
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/AbpOssManagementDomainSharedModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/AbpOssManagementDomainSharedModule.cs
new file mode 100644
index 000000000..1479ef76c
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/AbpOssManagementDomainSharedModule.cs
@@ -0,0 +1,36 @@
+using LINGYUN.Abp.OssManagement.Localization;
+using Volo.Abp.Localization;
+using Volo.Abp.Localization.ExceptionHandling;
+using Volo.Abp.Modularity;
+using Volo.Abp.Validation;
+using Volo.Abp.Validation.Localization;
+using Volo.Abp.VirtualFileSystem;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ [DependsOn(typeof(AbpValidationModule))]
+ public class AbpOssManagementDomainSharedModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+
+ Configure(options =>
+ {
+ options.Resources
+ .Add("en")
+ .AddBaseTypes(
+ typeof(AbpValidationResource)
+ ).AddVirtualJson("/LINGYUN/Abp/OssManagement/Localization/Resources");
+ });
+
+ Configure(options =>
+ {
+ options.MapCodeNamespace(OssManagementErrorCodes.Namespace, typeof(AbpOssManagementResource));
+ });
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/AbpOssManagementResource.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/AbpOssManagementResource.cs
new file mode 100644
index 000000000..fc4ddbeb7
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/AbpOssManagementResource.cs
@@ -0,0 +1,9 @@
+using Volo.Abp.Localization;
+
+namespace LINGYUN.Abp.OssManagement.Localization
+{
+ [LocalizationResourceName("AbpOssManagement")]
+ public class AbpOssManagementResource
+ {
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/Resources/en.json b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/Resources/en.json
new file mode 100644
index 000000000..e47101e09
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/Resources/en.json
@@ -0,0 +1,51 @@
+{
+ "culture": "en",
+ "texts": {
+ "Abp.FileManagement:010001": "Cannot delete a container that has more than one object!",
+ "Abp.FileManagement:010402": "The container name already exists!",
+ "Abp.FileManagement:010404": "The queried container could not be found!",
+ "Abp.FileManagement:020001": "An object that has more than one child cannot be deleted!",
+ "Abp.FileManagement:020402": "The object name already exists!",
+ "Abp.FileManagement:020404": "The queried object could not be found!",
+ "Abp.FileManagement:000405": "The path object name has exceeded the allowable maximum length and cannot continue to create a new object!",
+ "Permission:OssManagement": "Object Storage",
+ "Permission:Container": "Containers",
+ "Permission:OssObject": "Objects",
+ "Permission:Create": "Create",
+ "Permission:Delete": "Delete",
+ "Permission:Upload": "Upload",
+ "Permission:Download": "Download",
+ "FileNotFound": "The specified file does not exist!",
+ "PathNotFound": "The specified directory does not exist!",
+ "FilePathNotFound": "The file or directory does not exist!",
+ "PathAlreadyExists": "The specified directory already exists!",
+ "PathCannotBeDeletedWithNotEmpty": "The specified directory is not empty and cannot be deleted!",
+ "FilePathAlreadyExists": "The same file or directory already exists in the specified path!",
+ "UploadFileSizeBeyondLimit": "Upload file size cannot exceed {0} MB!",
+ "NotAllowedFileExtensionName": "Not allowed file extension: {0}!",
+ "DisplayName:OssManagement": "Object Storage",
+ "Description:OssManagement": "Object Storage",
+ "DisplayName:OssObject": "Objects",
+ "Description:OssObject": "Objects",
+ "DisplayName:FileLimitLength": "File limit size",
+ "Description:FileLimitLength": "Limit size of uploaded file in MB",
+ "DisplayName:AllowFileExtensions": "File extension",
+ "Description:AllowFileExtensions": "List of allowed extensions to upload files, with multiple extensions separated by, don't need a notation",
+ "Features:FileManagement": "File management",
+ "Features:DisplayName:FileSystem": "File system",
+ "Features:DisplayName:DownloadFile": "Download file",
+ "Features:Description:DownloadFile": "Whether to allow users to download files",
+ "Features:DisplayName:DownloadLimit": "Limit Of Downloads",
+ "Features:Description:DownloadLimit": "Limits the total number of times a file is downloaded within a specified period",
+ "Features:DisplayName:DownloadInterval": "Limit Downloads Interval",
+ "Features:Description:DownloadInterval": "The update period that limits the number of files downloaded. The time scale is: month. Default: 1",
+ "Features:DisplayName:UploadFile": "Upload file",
+ "Features:Description:UploadFile": "Whether to allow users to upload files",
+ "Features:DisplayName:UploadLimit": "Limit Of Uploads",
+ "Features:Description:UploadLimit": "Limits the total number of file uploads within a specified period",
+ "Features:DisplayName:UploadInterval": "Limit Uploads Interval",
+ "Features:Description:UploadInterval": "The update period that limits the number of files uploaded. The time scale is: month. Default: 1",
+ "Features:DisplayName:MaxUploadFileCount": "Maximum number of upload files",
+ "Features:Description:MaxUploadFileCount": "Limit the number of files a user uploads at a time"
+ }
+}
\ No newline at end of file
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/Resources/zh-Hans.json b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/Resources/zh-Hans.json
new file mode 100644
index 000000000..889d7b3cf
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Localization/Resources/zh-Hans.json
@@ -0,0 +1,51 @@
+{
+ "culture": "zh-Hans",
+ "texts": {
+ "Abp.FileManagement:010001": "不能删除存在多个对象的容器!",
+ "Abp.FileManagement:010402": "容器名称已经存在!",
+ "Abp.FileManagement:010404": "未能找到查询的容器!",
+ "Abp.FileManagement:020001": "不能删除存在多个子级的对象!",
+ "Abp.FileManagement:020402": "对象名称已经存在!",
+ "Abp.FileManagement:020404": "未能找到查询的对象!",
+ "Abp.FileManagement:000405": "此路径对象名称已超出允许的最大长度,无法继续创建新对象!",
+ "Permission:OssManagement": "对象存储",
+ "Permission:Container": "容器管理",
+ "Permission:OssObject": "对象管理",
+ "Permission:Create": "新增",
+ "Permission:Delete": "删除",
+ "Permission:Upload": "上传",
+ "Permission:Download": "下载",
+ "FileNotFound": "指定的文件不存在!",
+ "PathNotFound": "指定的目录不存在!",
+ "FilePathNotFound": "文件或目录不存在!",
+ "PathAlreadyExists": "指定的目录已经存在!",
+ "PathCannotBeDeletedWithNotEmpty": "指定的目录不为空,不可删除此目录!",
+ "FilePathAlreadyExists": "指定的路径中已经有相同的文件或目录存在!",
+ "UploadFileSizeBeyondLimit": "上传文件大小不能超过 {0} MB!",
+ "NotAllowedFileExtensionName": "不被允许的文件扩展名: {0}!",
+ "DisplayName:OssManagement": "对象存储",
+ "Description:OssManagement": "对象存储",
+ "DisplayName:OssObject": "Oss对象",
+ "Description:OssObject": "Oss对象",
+ "DisplayName:FileLimitLength": "文件限制大小",
+ "Description:FileLimitLength": "上传文件的限制大小,单位(MB)",
+ "DisplayName:AllowFileExtensions": "文件扩展名",
+ "Description:AllowFileExtensions": "允许的上传文件扩展名列表,多个扩展名以,分隔,无需输入.符号",
+ "Features:OssManagement": "对象存储",
+ "Features:DisplayName:OssObject": "Oss管理",
+ "Features:DisplayName:DownloadFile": "下载文件",
+ "Features:Description:DownloadFile": "是否允许用户下载文件",
+ "Features:DisplayName:DownloadLimit": "限制下载文件次数",
+ "Features:Description:DownloadLimit": "在指定的周期内限制下载文件的总次数",
+ "Features:DisplayName:DownloadInterval": "限制下载文件周期",
+ "Features:Description:DownloadInterval": "限制下载文件次数的更新周期,时间刻度为:月,默认:1",
+ "Features:DisplayName:UploadFile": "上传文件",
+ "Features:Description:UploadFile": "是否允许用户上传文件",
+ "Features:DisplayName:UploadLimit": "限制上传文件次数",
+ "Features:Description:UploadLimit": "在指定的周期内限制上传文件的总次数",
+ "Features:DisplayName:UploadInterval": "限制上传文件周期",
+ "Features:Description:UploadInterval": "限制上传文件次数的更新周期,时间刻度为:月,默认:1",
+ "Features:DisplayName:MaxUploadFileCount": "上传文件数量",
+ "Features:Description:MaxUploadFileCount": "用户单次上传文件的限制数量"
+ }
+}
\ No newline at end of file
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/OssManagementErrorCodes.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/OssManagementErrorCodes.cs
new file mode 100644
index 000000000..6a4b57251
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/OssManagementErrorCodes.cs
@@ -0,0 +1,17 @@
+namespace LINGYUN.Abp.OssManagement
+{
+ public static class OssManagementErrorCodes
+ {
+ public const string Namespace = "Abp.OssManagement";
+
+ public const string ContainerDeleteWithNotEmpty = Namespace + ":010001";
+ public const string ContainerAlreadyExists = Namespace + ":010402";
+ public const string ContainerNotFound = Namespace + ":010404";
+
+ public const string ObjectDeleteWithNotEmpty = Namespace + ":020001";
+ public const string ObjectAlreadyExists = Namespace + ":020402";
+ public const string ObjectNotFound = Namespace + ":020404";
+
+ public const string OssNameHasTooLong = Namespace + ":000405";
+ }
+}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Settings/AbpFileManagementSettingDefinitionProvider.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingDefinitionProvider.cs
similarity index 66%
rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Settings/AbpFileManagementSettingDefinitionProvider.cs
rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingDefinitionProvider.cs
index b93566816..6f01001a1 100644
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Settings/AbpFileManagementSettingDefinitionProvider.cs
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingDefinitionProvider.cs
@@ -1,10 +1,10 @@
-using LINGYUN.Abp.FileManagement.Localization;
+using LINGYUN.Abp.OssManagement.Localization;
using Volo.Abp.Localization;
using Volo.Abp.Settings;
-namespace LINGYUN.Abp.FileManagement.Settings
+namespace LINGYUN.Abp.OssManagement.Settings
{
- public class AbpFileManagementSettingDefinitionProvider : SettingDefinitionProvider
+ public class AbpOssManagementSettingDefinitionProvider : SettingDefinitionProvider
{
public override void Define(ISettingDefinitionContext context)
{
@@ -16,8 +16,8 @@ namespace LINGYUN.Abp.FileManagement.Settings
return new SettingDefinition[]
{
new SettingDefinition(
- name: AbpFileManagementSettingNames.FileLimitLength,
- defaultValue: AbpFileManagementSettingNames.DefaultFileLimitLength.ToString(),
+ name: AbpOssManagementSettingNames.FileLimitLength,
+ defaultValue: AbpOssManagementSettingNames.DefaultFileLimitLength.ToString(),
displayName: L("DisplayName:FileLimitLength"),
description: L("Description:FileLimitLength"),
isVisibleToClients: true)
@@ -25,8 +25,8 @@ namespace LINGYUN.Abp.FileManagement.Settings
GlobalSettingValueProvider.ProviderName,
TenantSettingValueProvider.ProviderName),
new SettingDefinition(
- name: AbpFileManagementSettingNames.AllowFileExtensions,
- defaultValue: AbpFileManagementSettingNames.DefaultAllowFileExtensions,
+ name: AbpOssManagementSettingNames.AllowFileExtensions,
+ defaultValue: AbpOssManagementSettingNames.DefaultAllowFileExtensions,
displayName: L("DisplayName:AllowFileExtensions"),
description: L("Description:AllowFileExtensions"),
isVisibleToClients: true)
@@ -38,7 +38,7 @@ namespace LINGYUN.Abp.FileManagement.Settings
protected LocalizableString L(string name)
{
- return LocalizableString.Create(name);
+ return LocalizableString.Create(name);
}
}
}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Settings/AbpFileManagementSettingNames.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingNames.cs
similarity index 64%
rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Settings/AbpFileManagementSettingNames.cs
rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingNames.cs
index 18d24cf18..89fa80d47 100644
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.Domain.Shared/LINGYUN/Abp/FileManagement/Settings/AbpFileManagementSettingNames.cs
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Settings/AbpOssManagementSettingNames.cs
@@ -1,8 +1,12 @@
-namespace LINGYUN.Abp.FileManagement.Settings
+namespace LINGYUN.Abp.OssManagement.Settings
{
- public class AbpFileManagementSettingNames
+ public class AbpOssManagementSettingNames
{
- public const string GroupName = "Abp.FileManagement";
+ public const string GroupName = "Abp.OssManagement";
+ ///
+ /// 下载分包大小
+ ///
+ public const string DownloadPackageSize = GroupName + ".DownloadPackageSize";
///
/// 文件限制长度
///
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/System/IO/StreamExtensions.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/System/IO/StreamExtensions.cs
new file mode 100644
index 000000000..1e18d5ffd
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/System/IO/StreamExtensions.cs
@@ -0,0 +1,12 @@
+namespace System.IO
+{
+ public static class StreamExtensions
+ {
+ public static bool IsNullOrEmpty(
+ this Stream stream)
+ {
+ return stream == null ||
+ Equals(stream, Stream.Null);
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN.Abp.OssManagement.Domain.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN.Abp.OssManagement.Domain.csproj
new file mode 100644
index 000000000..0d309f74a
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN.Abp.OssManagement.Domain.csproj
@@ -0,0 +1,20 @@
+
+
+
+
+
+ netstandard2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/AbpOssManagementContainer.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/AbpOssManagementContainer.cs
new file mode 100644
index 000000000..44688e979
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/AbpOssManagementContainer.cs
@@ -0,0 +1,9 @@
+using Volo.Abp.BlobStoring;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ [BlobContainerName("abp-oss-management")]
+ public class AbpOssManagementContainer
+ {
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/AbpOssManagementDomainModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/AbpOssManagementDomainModule.cs
new file mode 100644
index 000000000..660c38007
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/AbpOssManagementDomainModule.cs
@@ -0,0 +1,17 @@
+using LINGYUN.Abp.Features.LimitValidation;
+using Volo.Abp.Domain;
+using Volo.Abp.Modularity;
+using Volo.Abp.MultiTenancy;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ [DependsOn(
+ typeof(AbpDddDomainModule),
+ typeof(AbpMultiTenancyModule),
+ typeof(AbpFeaturesLimitValidationModule),
+ typeof(AbpOssManagementDomainSharedModule)
+ )]
+ public class AbpOssManagementDomainModule : AbpModule
+ {
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/BulkDeleteObjectRequest.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/BulkDeleteObjectRequest.cs
new file mode 100644
index 000000000..021a56674
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/BulkDeleteObjectRequest.cs
@@ -0,0 +1,26 @@
+using JetBrains.Annotations;
+using System.Collections.Generic;
+using Volo.Abp;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class BulkDeleteObjectRequest
+ {
+ public string Bucket { get; }
+ public string Path { get; }
+ public ICollection Objects { get; }
+
+ public BulkDeleteObjectRequest(
+ [NotNull] string bucket,
+ ICollection objects,
+ string path = "")
+ {
+ Check.NotNullOrWhiteSpace(bucket, nameof(bucket));
+ Check.NotNullOrEmpty(objects, nameof(objects));
+
+ Bucket = bucket;
+ Objects = objects;
+ Path = path;
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/CreateOssObjectRequest.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/CreateOssObjectRequest.cs
new file mode 100644
index 000000000..47507073e
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/CreateOssObjectRequest.cs
@@ -0,0 +1,35 @@
+using JetBrains.Annotations;
+using System;
+using System.IO;
+using Volo.Abp;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class CreateOssObjectRequest
+ {
+ public string Bucket { get; }
+ public string Path { get; }
+ public string Object { get; }
+ public Stream Content { get; private set; }
+ public TimeSpan? ExpirationTime { get; }
+ public CreateOssObjectRequest(
+ [NotNull] string bucket,
+ [NotNull] string @object,
+ [CanBeNull] Stream content,
+ [CanBeNull] string path = null,
+ [CanBeNull] TimeSpan? expirationTime = null)
+ {
+ Bucket = Check.NotNullOrWhiteSpace(bucket, nameof(bucket));
+ Object = Check.NotNullOrWhiteSpace(@object, nameof(@object));
+
+ Path = path;
+ Content = content;
+ ExpirationTime = expirationTime;
+ }
+
+ public void SetContent(Stream content)
+ {
+ Content = content;
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssContainersRequest.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssContainersRequest.cs
new file mode 100644
index 000000000..c89fa3764
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssContainersRequest.cs
@@ -0,0 +1,18 @@
+namespace LINGYUN.Abp.OssManagement
+{
+ public class GetOssContainersRequest
+ {
+ public string Prefix { get; }
+ public string Marker { get; }
+ public int? MaxKeys { get; }
+ public GetOssContainersRequest(
+ string prefix = null,
+ string marker = null,
+ int? maxKeys = 10)
+ {
+ Prefix = prefix;
+ Marker = marker;
+ MaxKeys = maxKeys;
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssContainersResponse.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssContainersResponse.cs
new file mode 100644
index 000000000..47a7ee28a
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssContainersResponse.cs
@@ -0,0 +1,28 @@
+using System.Collections.Generic;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class GetOssContainersResponse
+ {
+ public string Prefix { get; }
+ public string Marker { get; }
+ public string NextMarker { get; }
+ public int MaxKeys { get; }
+ public List Containers { get; }
+
+ public GetOssContainersResponse(
+ string prefix,
+ string marker,
+ string nextMarker,
+ int maxKeys,
+ List containers)
+ {
+ Prefix = prefix;
+ Marker = marker;
+ NextMarker = nextMarker;
+ MaxKeys = maxKeys;
+
+ Containers = containers;
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectRequest.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectRequest.cs
new file mode 100644
index 000000000..6541d3bfd
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectRequest.cs
@@ -0,0 +1,31 @@
+using JetBrains.Annotations;
+using Volo.Abp;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class GetOssObjectRequest
+ {
+ public string Bucket { get; }
+ public string Path { get; }
+ public string Object { get; }
+ ///
+ /// 需要处理文件的参数
+ ///
+ public string Process { get; }
+
+ public GetOssObjectRequest(
+ [NotNull] string bucket,
+ [NotNull] string @object,
+ [CanBeNull] string path = "",
+ [CanBeNull] string process = "")
+ {
+ Check.NotNullOrWhiteSpace(bucket, nameof(bucket));
+ Check.NotNullOrWhiteSpace(@object, nameof(@object));
+
+ Bucket = bucket;
+ Object = @object;
+ Path = path;
+ Process = process;
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectsRequest.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectsRequest.cs
new file mode 100644
index 000000000..725b67c92
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectsRequest.cs
@@ -0,0 +1,32 @@
+using JetBrains.Annotations;
+using Volo.Abp;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class GetOssObjectsRequest
+ {
+ public string BucketName { get; }
+ public string Prefix { get; }
+ public string Delimiter { get; }
+ public string Marker { get; }
+ public string EncodingType { get; }
+ public int? MaxKeys { get; }
+ public GetOssObjectsRequest(
+ [NotNull] string bucketName,
+ string prefix = null,
+ string marker = null,
+ string delimiter = null,
+ string encodingType = null,
+ int maxKeys = 10)
+ {
+ Check.NotNullOrWhiteSpace(bucketName, nameof(bucketName));
+
+ BucketName = bucketName;
+ Prefix = prefix;
+ Marker = marker;
+ Delimiter = delimiter;
+ EncodingType = encodingType;
+ MaxKeys = maxKeys;
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectsResponse.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectsResponse.cs
new file mode 100644
index 000000000..577413ca2
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/GetOssObjectsResponse.cs
@@ -0,0 +1,33 @@
+using System.Collections.Generic;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class GetOssObjectsResponse
+ {
+ public string Bucket { get; }
+ public string Prefix { get; }
+ public string Delimiter { get; }
+ public string Marker { get; }
+ public string NextMarker { get; }
+ public int MaxKeys { get; }
+ public List Objects { get; }
+ public GetOssObjectsResponse(
+ string bucket,
+ string prefix,
+ string marker,
+ string nextMarker,
+ string delimiter,
+ int maxKeys,
+ List ossObjects)
+ {
+ Bucket = bucket;
+ Prefix = prefix;
+ Marker = marker;
+ NextMarker = nextMarker;
+ Delimiter = delimiter;
+ MaxKeys = maxKeys;
+
+ Objects = ossObjects;
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainer.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainer.cs
new file mode 100644
index 000000000..d752ab284
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainer.cs
@@ -0,0 +1,72 @@
+using System.Threading.Tasks;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ ///
+ /// Oss容器
+ ///
+ public interface IOssContainer
+ {
+ ///
+ /// 创建容器
+ ///
+ ///
+ ///
+ Task CreateAsync(string name);
+ ///
+ /// 创建Oss对象
+ ///
+ ///
+ ///
+ Task CreateObjectAsync(CreateOssObjectRequest request);
+ ///
+ /// 获取容器信息
+ ///
+ ///
+ ///
+ Task GetAsync(string name);
+ ///
+ /// 获取Oss对象信息
+ ///
+ ///
+ ///
+ Task GetObjectAsync(GetOssObjectRequest request);
+ ///
+ /// 删除容器
+ ///
+ ///
+ ///
+ Task DeleteAsync(string name);
+ ///
+ /// 删除Oss对象
+ ///
+ ///
+ ///
+ Task DeleteObjectAsync(GetOssObjectRequest request);
+ ///
+ /// 批量删除Oss对象
+ ///
+ ///
+ ///
+ Task BulkDeleteObjectsAsync(BulkDeleteObjectRequest request);
+ ///
+ /// 容器是否存在
+ ///
+ ///
+ ///
+ Task ExistsAsync(string name);
+ ///
+ /// 获取容器列表
+ ///
+ ///
+ ///
+ Task GetListAsync(GetOssContainersRequest request);
+ ///
+ /// 获取对象列表
+ ///
+ ///
+ ///
+ Task GetObjectsAsync(GetOssObjectsRequest request);
+ // Task> GetObjectsAsync(string name, string prefix = null, string marker = null, string delimiter = null, int maxResultCount = 10);
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainerExtensions.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainerExtensions.cs
new file mode 100644
index 000000000..9bee73fba
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainerExtensions.cs
@@ -0,0 +1,79 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public static class IOssContainerExtensions
+ {
+ ///
+ /// 如果不存在容器则创建
+ ///
+ ///
+ ///
+ /// 返回容器信息
+ public static async Task CreateIfNotExistsAsync(
+ this IOssContainer ossContainer,
+ string name)
+ {
+ if (! await ossContainer.ExistsAsync(name))
+ {
+ await ossContainer.CreateAsync(name);
+ }
+
+ return await ossContainer.GetAsync(name);
+ }
+
+ public static async Task DeleteObjectAsync(
+ this IOssContainer ossContainer,
+ string bucket,
+ string @object,
+ string path = "")
+ {
+ await ossContainer.DeleteObjectAsync(
+ new GetOssObjectRequest(bucket, @object, path));
+ }
+
+ public static async Task BulkDeleteObjectsAsync(
+ this IOssContainer ossContainer,
+ string bucketName,
+ ICollection objectNames,
+ string path = "")
+ {
+ await ossContainer.BulkDeleteObjectsAsync(
+ new BulkDeleteObjectRequest(bucketName, objectNames, path));
+ }
+
+ public static async Task GetListAsync(
+ this IOssContainer ossContainer,
+ string prefix = null,
+ string marker = null,
+ int maxResultCount = 10)
+ {
+ return await ossContainer.GetListAsync(
+ new GetOssContainersRequest(prefix, marker, maxResultCount));
+ }
+
+ public static async Task GetObjectAsync(
+ this IOssContainer ossContainer,
+ string bucket,
+ string @object,
+ string path = "")
+ {
+ return await ossContainer.GetObjectAsync(
+ new GetOssObjectRequest(bucket, @object, path));
+ }
+
+ public static async Task GetObjectsAsync(
+ this IOssContainer ossContainer,
+ string name,
+ string prefix = null,
+ string marker = null,
+ string delimiter = null,
+ string encodingType = null,
+ int maxResultCount = 10)
+ {
+ return await ossContainer.GetObjectsAsync(
+ new GetOssObjectsRequest(name, prefix, marker, delimiter, encodingType, maxResultCount));
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainerFactory.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainerFactory.cs
new file mode 100644
index 000000000..90ade75c4
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/IOssContainerFactory.cs
@@ -0,0 +1,18 @@
+namespace LINGYUN.Abp.OssManagement
+{
+ ///
+ /// Oss容器构建工厂
+ ///
+ public interface IOssContainerFactory
+ {
+ IOssContainer Create();
+ }
+
+ ///
+ /// Oss容器构建工厂
+ ///
+ public interface IOssContainerFactory
+ {
+ IOssContainer Create(TConfiguration configuration);
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssContainer.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssContainer.cs
new file mode 100644
index 000000000..9ae82078f
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssContainer.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ ///
+ /// 描述了一个容器的状态信息
+ ///
+ public class OssContainer
+ {
+ public string Name { get; }
+ public long Size { get; }
+ public DateTime CreationDate { get; }
+ public DateTime? LastModifiedDate { get; }
+ public IDictionary Metadata { get; }
+
+ public OssContainer(
+ string name,
+ DateTime creationDate,
+ long size = 0,
+ DateTime? lastModifiedDate = null,
+ IDictionary metadata = null)
+ {
+ Name = name;
+ CreationDate = creationDate;
+ LastModifiedDate = lastModifiedDate;
+ Size = size;
+ Metadata = metadata ?? new Dictionary();
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssObject.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssObject.cs
new file mode 100644
index 000000000..26a7f1fb0
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssObject.cs
@@ -0,0 +1,50 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ ///
+ /// 描述了一个对象的状态信息
+ ///
+ public class OssObject
+ {
+ private Stream _content;
+
+ public bool IsFolder { get; }
+ public string Name { get; }
+ public string FullName { get; set; }
+ public string Prefix { get; }
+ public long Size { get; }
+ public Stream Content => _content;
+ public DateTime? CreationDate { get; }
+ public DateTime? LastModifiedDate { get; }
+ public IDictionary Metadata { get; }
+ public OssObject(
+ string name,
+ string prefix,
+ DateTime? creationDate = null,
+ long size = 0,
+ DateTime? lastModifiedDate = null,
+ IDictionary metadata = null,
+ bool isFolder = false)
+ {
+ Name = name;
+ Prefix = prefix;
+ CreationDate = creationDate;
+ LastModifiedDate = lastModifiedDate;
+ Size = size;
+ IsFolder = isFolder;
+ Metadata = metadata ?? new Dictionary();
+ }
+
+ public void SetContent(Stream stream)
+ {
+ _content = stream;
+ if (!_content.IsNullOrEmpty())
+ {
+ _content.Seek(0, SeekOrigin.Begin);
+ }
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssObjectComparer.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssObjectComparer.cs
new file mode 100644
index 000000000..c75491aeb
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain/LINGYUN/Abp/OssManagement/OssObjectComparer.cs
@@ -0,0 +1,27 @@
+using System.Collections.Generic;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class OssObjectComparer : IComparer
+ {
+ public virtual int Compare(OssObject x, OssObject y)
+ {
+ if (x.IsFolder && y.IsFolder)
+ {
+ return x.Name.CompareTo(y.Name);
+ }
+
+ if (x.IsFolder && !y.IsFolder)
+ {
+ return -1;
+ }
+
+ if (!x.IsFolder && y.IsFolder)
+ {
+ return 1;
+ }
+
+ return x.Name.CompareTo(y.Name);
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj
new file mode 100644
index 000000000..a6b41cb6c
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj
@@ -0,0 +1,16 @@
+
+
+
+ netstandard2.1
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/AbpOssManagementFileSystemImageSharpModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/AbpOssManagementFileSystemImageSharpModule.cs
new file mode 100644
index 000000000..a8c25d81c
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/AbpOssManagementFileSystemImageSharpModule.cs
@@ -0,0 +1,16 @@
+using Volo.Abp.Modularity;
+
+namespace LINGYUN.Abp.OssManagement.FileSystem.ImageSharp
+{
+ [DependsOn(typeof(AbpOssManagementFileSystemModule))]
+ public class AbpOssManagementFileSystemImageSharpModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.AddProcesser(new ImageSharpProcesserContributor());
+ });
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs
new file mode 100644
index 000000000..ab5573f29
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs
@@ -0,0 +1,118 @@
+using SixLabors.Fonts;
+using SixLabors.ImageSharp;
+using SixLabors.ImageSharp.Advanced;
+using SixLabors.ImageSharp.Drawing.Processing;
+using SixLabors.ImageSharp.Formats;
+using SixLabors.ImageSharp.Processing;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace LINGYUN.Abp.OssManagement.FileSystem.ImageSharp
+{
+ public class ImageSharpProcesserContributor : IFileSystemOssObjectProcesserContributor
+ {
+ protected static readonly string[] ImageTypes = new string[]
+ {
+ "6677",// bmp
+ "7173",// gif
+ "13780",// png
+ "255216"// jpg
+ };
+
+ public virtual async Task ProcessAsync(FileSystemOssObjectContext context)
+ {
+ var bytes = await context.OssObject.Content.GetAllBytesAsync();
+
+ if (IsImage(bytes))
+ {
+ var args = context.Process.Split(',');
+ if (DrawGraphics(bytes, args, out Stream content))
+ {
+ context.SetContent(content);
+ }
+ }
+ }
+
+ protected virtual bool DrawGraphics(byte[] fileBytes, string[] args, out Stream content)
+ {
+ using var image = Image.Load(fileBytes, out IImageFormat format);
+
+ // 大小
+ var width = GetInt32Prarm(args, "w_");
+ var height = GetInt32Prarm(args, "h_");
+ if (!width.IsNullOrWhiteSpace() &&
+ !height.IsNullOrWhiteSpace())
+ {
+ image.Mutate(x => x.Resize(int.Parse(width), int.Parse(height)));
+ }
+
+ // 水印
+ //var txt = GetString(args, "t_");
+ //if (!txt.IsNullOrWhiteSpace())
+ //{
+ // FontCollection fonts = new FontCollection();
+ // FontFamily fontfamily = fonts.Install("本地字体.TTF");
+ // var font = new Font(fontfamily, 20, FontStyle.Bold);
+ // var size = TextMeasurer.Measure(txt, new RendererOptions(font));
+
+ // image.Mutate(x => x.DrawText(txt, font, Color.WhiteSmoke,
+ // new PointF(image.Width - size.Width - 3, image.Height - size.Height - 3)));
+ //}
+
+ // TODO: 其他处理参数及现有的优化
+
+ var imageStream = new MemoryStream();
+ var encoder = image.GetConfiguration().ImageFormatsManager.FindEncoder(format);
+ image.Save(imageStream, encoder);
+ imageStream.Seek(0, SeekOrigin.Begin);
+
+ content = imageStream;
+ return true;
+ }
+
+ private static bool IsImage(byte[] fileBytes)
+ {
+ if (fileBytes.IsNullOrEmpty())
+ {
+ return false;
+ }
+
+ string fileclass = "";
+ for (int i = 0; i < 2; i++)
+ {
+ fileclass += fileBytes[i].ToString();
+ }
+
+ return ImageTypes.Any(type => type.Equals(fileclass));
+ }
+
+ private static string GetString(string[] args, string key)
+ {
+ if (!args.Any())
+ {
+ return null;
+ }
+
+ return args
+ .Where(arg => arg.StartsWith(key))
+ .Select(arg => arg.Substring(key.Length))
+ .FirstOrDefault();
+ }
+
+ private static string GetInt32Prarm(string[] args, string key)
+ {
+ if (!args.Any())
+ {
+ return null;
+ }
+
+ return args
+ .Where(arg => arg.StartsWith(key))
+ .Select(arg => arg.Substring(key.Length))
+ .FirstOrDefault(arg => int.TryParse(arg, out _));
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/README.md b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/README.md
new file mode 100644
index 000000000..c9af0aece
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/README.md
@@ -0,0 +1,15 @@
+# LINGYUN.Abp.OssManagement.FileSystem.ImageSharp
+
+本地文件系统oss对象ImageSharp图形处理接口
+
+## 配置使用
+
+模块按需引用
+
+```csharp
+[DependsOn(typeof(AbpOssManagementFileSystemImageSharpModule))]
+public class YouProjectModule : AbpModule
+{
+ // other
+}
+```
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN.Abp.OssManagement.FileSystem.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN.Abp.OssManagement.FileSystem.csproj
new file mode 100644
index 000000000..8012ed114
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN.Abp.OssManagement.FileSystem.csproj
@@ -0,0 +1,17 @@
+
+
+
+ netstandard2.1
+ 8.0
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/AbpOssManagementFileSystemModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/AbpOssManagementFileSystemModule.cs
new file mode 100644
index 000000000..5434bb019
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/AbpOssManagementFileSystemModule.cs
@@ -0,0 +1,17 @@
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.BlobStoring.FileSystem;
+using Volo.Abp.Modularity;
+
+namespace LINGYUN.Abp.OssManagement.FileSystem
+{
+ [DependsOn(
+ typeof(AbpBlobStoringFileSystemModule),
+ typeof(AbpOssManagementDomainModule))]
+ public class AbpOssManagementFileSystemModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddTransient();
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainer.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainer.cs
new file mode 100644
index 000000000..d82aee4e1
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainer.cs
@@ -0,0 +1,539 @@
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Options;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using Volo.Abp;
+using Volo.Abp.BlobStoring;
+using Volo.Abp.BlobStoring.FileSystem;
+using Volo.Abp.IO;
+using Volo.Abp.MultiTenancy;
+
+namespace LINGYUN.Abp.OssManagement.FileSystem
+{
+ ///
+ /// Oss容器的本地文件系统实现
+ ///
+ internal class FileSystemOssContainer : IOssContainer
+ {
+ protected ICurrentTenant CurrentTenant { get; }
+ protected IHostEnvironment Environment { get; }
+ protected IBlobFilePathCalculator FilePathCalculator { get; }
+ protected IBlobContainerConfigurationProvider ConfigurationProvider { get; }
+ protected IServiceProvider ServiceProvider { get; }
+ protected FileSystemOssOptions Options { get; }
+
+ public FileSystemOssContainer(
+ ICurrentTenant currentTenant,
+ IHostEnvironment environment,
+ IServiceProvider serviceProvider,
+ IBlobFilePathCalculator blobFilePathCalculator,
+ IBlobContainerConfigurationProvider configurationProvider,
+ IOptions options)
+ {
+ CurrentTenant = currentTenant;
+ Environment = environment;
+ ServiceProvider = serviceProvider;
+ FilePathCalculator = blobFilePathCalculator;
+ ConfigurationProvider = configurationProvider;
+ Options = options.Value;
+ }
+
+ public virtual Task BulkDeleteObjectsAsync(BulkDeleteObjectRequest request)
+ {
+ var objectPath = !request.Path.IsNullOrWhiteSpace()
+ ? request.Path.EnsureEndsWith('/')
+ : "";
+ var filesPath = request.Objects.Select(x => CalculateFilePath(request.Bucket, objectPath + x));
+
+ foreach (var file in filesPath)
+ {
+ if (Directory.Exists(file))
+ {
+ if (Directory.GetFileSystemEntries(file).Length > 0)
+ {
+ throw new BusinessException(code: OssManagementErrorCodes.ContainerDeleteWithNotEmpty);
+ // throw new ContainerDeleteWithNotEmptyException("00101", $"Can't not delete container {name}, because it is not empty!");
+ }
+ Directory.Delete(file);
+ }
+ else if (File.Exists(file))
+ {
+ File.Delete(file);
+ }
+ }
+
+ return Task.CompletedTask;
+ }
+
+ public virtual Task CreateAsync(string name)
+ {
+ var filePath = CalculateFilePath(name);
+ ThrowOfPathHasTooLong(filePath);
+ if (!Directory.Exists(filePath))
+ {
+ Directory.CreateDirectory(filePath);
+ }
+
+ var directoryInfo = new DirectoryInfo(filePath);
+ var container = new OssContainer(
+ directoryInfo.Name,
+ directoryInfo.CreationTime,
+ 0L,
+ directoryInfo.LastWriteTime,
+ new Dictionary
+ {
+ { "LastAccessTime", directoryInfo.LastAccessTime.ToString("yyyy-MM-dd HH:mm:ss") }
+ });
+
+ return Task.FromResult(container);
+ }
+
+ public virtual async Task CreateObjectAsync(CreateOssObjectRequest request)
+ {
+ var objectPath = !request.Path.IsNullOrWhiteSpace()
+ ? request.Path.EnsureEndsWith('/')
+ : "";
+ var objectName = objectPath.IsNullOrWhiteSpace()
+ ? request.Object
+ : objectPath + request.Object;
+
+ var filePath = CalculateFilePath(request.Bucket, objectName);
+ if (!request.Content.IsNullOrEmpty())
+ {
+ ThrowOfPathHasTooLong(filePath);
+
+ if (File.Exists(filePath))
+ {
+ throw new BusinessException(code: OssManagementErrorCodes.ObjectAlreadyExists);
+ // throw new OssObjectAlreadyExistsException($"Can't not put object {objectName} in container {request.Bucket}, Because a file with the same name already exists in the directory!");
+ }
+
+ DirectoryHelper.CreateIfNotExists(Path.GetDirectoryName(filePath));
+
+ using (var fileStream = File.Open(filePath, FileMode.CreateNew, FileAccess.Write))
+ {
+ await request.Content.CopyToAsync(fileStream);
+
+ await fileStream.FlushAsync();
+ }
+ var fileInfo = new FileInfo(filePath);
+ var ossObject = new OssObject(
+ fileInfo.Name,
+ objectPath,
+ fileInfo.CreationTime,
+ fileInfo.Length,
+ fileInfo.LastWriteTime,
+ new Dictionary
+ {
+ { "IsReadOnly", fileInfo.IsReadOnly.ToString() },
+ { "LastAccessTime", fileInfo.LastAccessTime.ToString("yyyy-MM-dd HH:mm:ss") }
+ })
+ {
+ FullName = fileInfo.FullName.Replace(Environment.ContentRootPath, "")
+ };
+ ossObject.SetContent(request.Content);
+
+ return ossObject;
+ }
+ else
+ {
+ ThrowOfPathHasTooLong(filePath);
+ if (Directory.Exists(filePath))
+ {
+ throw new BusinessException(code: OssManagementErrorCodes.ObjectAlreadyExists);
+ // throw new OssObjectAlreadyExistsException($"Can't not put object {objectName} in container {request.Bucket}, Because a file with the same name already exists in the directory!");
+ }
+ Directory.CreateDirectory(filePath);
+ var directoryInfo = new DirectoryInfo(filePath);
+
+ var ossObject = new OssObject(
+ directoryInfo.Name.EnsureEndsWith('/'),
+ objectPath,
+ directoryInfo.CreationTime,
+ 0L,
+ directoryInfo.LastWriteTime,
+ new Dictionary
+ {
+ { "LastAccessTime", directoryInfo.LastAccessTime.ToString("yyyy-MM-dd HH:mm:ss") }
+ },
+ true)
+ {
+ FullName = directoryInfo.FullName.Replace(Environment.ContentRootPath, "")
+ };
+ ossObject.SetContent(request.Content);
+
+ return ossObject;
+ }
+ }
+
+ public virtual Task DeleteAsync(string name)
+ {
+ var filePath = CalculateFilePath(name);
+ if (!Directory.Exists(filePath))
+ {
+ throw new BusinessException(code: OssManagementErrorCodes.ContainerNotFound);
+ }
+ // 非空目录无法删除
+ if (Directory.GetFileSystemEntries(filePath).Length > 0)
+ {
+ throw new BusinessException(code: OssManagementErrorCodes.ContainerDeleteWithNotEmpty);
+ // throw new ContainerDeleteWithNotEmptyException("00101", $"Can't not delete container {name}, because it is not empty!");
+ }
+ Directory.Delete(filePath);
+
+ return Task.CompletedTask;
+ }
+
+ public virtual Task DeleteObjectAsync(GetOssObjectRequest request)
+ {
+ var objectName = request.Path.IsNullOrWhiteSpace()
+ ? request.Object
+ : request.Path.EnsureEndsWith('/') + request.Object;
+ var filePath = CalculateFilePath(request.Bucket, objectName);
+ if (File.Exists(filePath))
+ {
+ File.Delete(filePath);
+ }
+ else if (Directory.Exists(filePath))
+ {
+ if (Directory.GetFileSystemEntries(filePath).Length > 0)
+ {
+ throw new BusinessException(code: OssManagementErrorCodes.ObjectDeleteWithNotEmpty);
+ }
+ Directory.Delete(filePath);
+ }
+
+ return Task.CompletedTask;
+ }
+
+ public virtual Task ExistsAsync(string name)
+ {
+ var filePath = CalculateFilePath(name);
+
+ return Task.FromResult(Directory.Exists(filePath));
+ }
+
+ public virtual Task GetAsync(string name)
+ {
+ var filePath = CalculateFilePath(name);
+ if (!Directory.Exists(filePath))
+ {
+ throw new BusinessException(code: OssManagementErrorCodes.ContainerNotFound);
+ // throw new ContainerNotFoundException($"Can't not found container {name} in file system");
+ }
+
+ var directoryInfo = new DirectoryInfo(filePath);
+ var container = new OssContainer(
+ directoryInfo.Name,
+ directoryInfo.CreationTime,
+ 0L,
+ directoryInfo.LastWriteTime,
+ new Dictionary
+ {
+ { "LastAccessTime", directoryInfo.LastAccessTime.ToString("yyyy-MM-dd HH:mm:ss") }
+ });
+
+ return Task.FromResult(container);
+ }
+
+ public virtual async Task GetObjectAsync(GetOssObjectRequest request)
+ {
+ var objectPath = !request.Path.IsNullOrWhiteSpace()
+ ? request.Path.EnsureEndsWith('/')
+ : "";
+ var objectName = objectPath.IsNullOrWhiteSpace()
+ ? request.Object
+ : objectPath + request.Object;
+
+ var filePath = CalculateFilePath(request.Bucket, objectName);
+ if (!File.Exists(filePath))
+ {
+ if (!Directory.Exists(filePath))
+ {
+ throw new BusinessException(code: OssManagementErrorCodes.ObjectNotFound);
+ // throw new ContainerNotFoundException($"Can't not found object {objectName} in container {request.Bucket} with file system");
+ }
+ var directoryInfo = new DirectoryInfo(filePath);
+ var ossObject = new OssObject(
+ directoryInfo.Name.EnsureEndsWith('/'),
+ objectPath,
+ directoryInfo.CreationTime,
+ 0L,
+ directoryInfo.LastWriteTime,
+ new Dictionary
+ {
+ { "LastAccessTime", directoryInfo.LastAccessTime.ToString("yyyy-MM-dd HH:mm:ss") }
+ },
+ true)
+ {
+ FullName = directoryInfo.FullName.Replace(Environment.ContentRootPath, "")
+ };
+ return ossObject;
+ }
+ else
+ {
+ var fileInfo = new FileInfo(filePath);
+ var ossObject = new OssObject(
+ fileInfo.Name,
+ objectPath,
+ fileInfo.CreationTime,
+ fileInfo.Length,
+ fileInfo.LastWriteTime,
+ new Dictionary
+ {
+ { "IsReadOnly", fileInfo.IsReadOnly.ToString() },
+ { "LastAccessTime", fileInfo.LastAccessTime.ToString("yyyy-MM-dd HH:mm:ss") }
+ })
+ {
+ FullName = fileInfo.FullName.Replace(Environment.ContentRootPath, "")
+ };
+ using (var fileStream = File.OpenRead(filePath))
+ {
+ var memoryStream = new MemoryStream();
+ await fileStream.CopyToAsync(memoryStream);
+ ossObject.SetContent(memoryStream);
+
+ if (!request.Process.IsNullOrWhiteSpace())
+ {
+ using var serviceScope = ServiceProvider.CreateScope();
+ var context = new FileSystemOssObjectContext(request.Process, ossObject, serviceScope.ServiceProvider);
+ foreach (var processer in Options.Processers)
+ {
+ await processer.ProcessAsync(context);
+
+ if (context.Handled)
+ {
+ ossObject.SetContent(context.Content);
+ break;
+ }
+ }
+ }
+ }
+
+ return ossObject;
+ }
+ }
+
+ public virtual Task GetListAsync(GetOssContainersRequest request)
+ {
+ // 不传递Bucket 检索根目录的Bucket
+ var filePath = CalculateFilePath(null);
+
+ // 获取根目录
+ var directories = Directory.GetDirectories(filePath, request.Prefix ?? "*.*");
+
+ // 排序目录
+ Array.Sort(directories, delegate (string x, string y)
+ {
+ return x.CompareTo(y);
+ });
+
+ var spiltDirectories = directories;
+ // 计算标记的位置进行截断
+ if (!request.Marker.IsNullOrWhiteSpace())
+ {
+ var markIndex = directories.FindIndex(x => x.EndsWith(request.Marker));
+ if (markIndex < 0)
+ {
+ directories = new string[0];
+ }
+ else
+ {
+ var markDirectories = new string[directories.Length - markIndex];
+ Array.Copy(directories, markIndex, markDirectories, 0, markDirectories.Length);
+ directories = markDirectories;
+ }
+ }
+ // 需要截断最大的容器集合
+ if (request.MaxKeys.HasValue)
+ {
+ spiltDirectories = directories.Take(request.MaxKeys ?? directories.Length).ToArray();
+ }
+ var nextDirectory = spiltDirectories.Length < directories.Length ? directories[spiltDirectories.Length] : "";
+ if (!nextDirectory.IsNullOrWhiteSpace())
+ {
+ // 下一个标记的目录名称
+
+ nextDirectory = new DirectoryInfo(nextDirectory).Name;
+ }
+ // 容器对应的目录信息集合
+ var directoryInfos = spiltDirectories.Select(x => new DirectoryInfo(x));
+ // 返回Oss容器描述集合
+ var response = new GetOssContainersResponse(
+ request.Prefix,
+ request.Marker,
+ nextDirectory,
+ directories.Length,
+ directoryInfos.Select(x => new OssContainer(
+ x.Name,
+ x.CreationTime,
+ 0L,
+ x.LastWriteTime,
+ new Dictionary
+ {
+ { "LastAccessTime", x.LastAccessTime.ToString("yyyy-MM-dd HH:mm:ss") }
+ }))
+ .ToList());
+
+ return Task.FromResult(response);
+ }
+
+ public virtual Task GetObjectsAsync(GetOssObjectsRequest request)
+ {
+ // 先定位检索的目录
+ var filePath = CalculateFilePath(request.BucketName, request.Prefix);
+ if (!Directory.Exists(filePath))
+ {
+ throw new BusinessException(code: OssManagementErrorCodes.ContainerNotFound);
+ // throw new ContainerNotFoundException($"Can't not found container {request.BucketName} in file system");
+ }
+ // 目录也属于Oss对象,需要抽象的文件系统集合来存储
+ var fileSystemNames = Directory.GetFileSystemEntries(filePath);
+ int maxFilesCount = fileSystemNames.Length;
+
+ // 排序所有文件与目录
+ Array.Sort(fileSystemNames, delegate (string x, string y)
+ {
+ // 检索的是文件系统名称
+ // 需要判断是否为文件夹进行升序排序
+ // 参考 OssObjectComparer
+
+ var xFolder = Directory.Exists(x);
+ var yFolder = Directory.Exists(y);
+
+ if (xFolder && yFolder)
+ {
+ return x.CompareTo(y);
+ }
+
+ if (xFolder && !yFolder)
+ {
+ return -1;
+ }
+
+ if (!xFolder && yFolder)
+ {
+ return 1;
+ }
+
+ return x.CompareTo(y);
+ });
+
+ // 需要计算从哪个位置截断
+ int markIndex = 0;
+ if (!request.Marker.IsNullOrWhiteSpace())
+ {
+ markIndex = fileSystemNames.FindIndex(x => x.EndsWith(request.Marker));
+ if (markIndex < 0)
+ {
+ markIndex = 0;
+ }
+ }
+
+ // 需要截断Oss对象列表
+ var copyFileSystemNames = fileSystemNames;
+ if (markIndex > 0)
+ {
+ copyFileSystemNames = fileSystemNames[(markIndex+1)..];
+ }
+ // 截取指定数量的Oss对象
+ int maxResultCount = request.MaxKeys ?? 10;
+ // Oss对象信息集合
+ var fileSystems = copyFileSystemNames
+ .Take(maxResultCount)
+ .Select(file =>
+ {
+ if (File.Exists(file))
+ {
+ return new FileInfo(file);
+ }
+ return new DirectoryInfo(file);
+ })
+ .ToArray();
+
+ // 计算下一页起始标记文件/目录名称
+ var nextMarkerIndex = fileSystemNames.FindIndex(x => x.EndsWith(fileSystems[fileSystems.Length - 1].Name));
+ string nextMarker = "";
+ if (nextMarkerIndex >=0 && nextMarkerIndex + 1 < fileSystemNames.Length)
+ {
+ nextMarker = fileSystemNames[nextMarkerIndex + 1];
+ nextMarker = File.Exists(nextMarker)
+ ? new FileInfo(nextMarker).Name
+ : new DirectoryInfo(nextMarker).Name.EnsureEndsWith('/');
+ }
+ // 返回Oss对象描述集合
+ var response = new GetOssObjectsResponse(
+ request.BucketName,
+ request.Prefix,
+ request.Marker,
+ nextMarker,
+ "/", // 文件系统目录分隔符
+ fileSystemNames.Length,
+ fileSystems.Select(x => new OssObject(
+ (x is DirectoryInfo) ? x.Name.EnsureEndsWith('/') : x.Name,
+ request.Prefix,
+ x.CreationTime,
+ (x as FileInfo)?.Length ?? 0L,
+ x.LastWriteTime,
+ new Dictionary
+ {
+ { "LastAccessTime", x.LastAccessTime.ToString("yyyy-MM-dd HH:mm:ss") }
+ },
+ x is DirectoryInfo)
+ {
+ FullName = x.FullName.Replace(Environment.ContentRootPath, "")
+ })
+ .ToList());
+
+ return Task.FromResult(response);
+ }
+
+ protected virtual FileSystemBlobProviderConfiguration GetFileSystemConfiguration()
+ {
+ var configuration = ConfigurationProvider.Get();
+ var fileSystemConfiguration = configuration.GetFileSystemConfiguration();
+ return fileSystemConfiguration;
+ }
+
+ protected virtual string CalculateFilePath(string bucketName, string blobName = "")
+ {
+ var fileSystemConfiguration = GetFileSystemConfiguration();
+ var blobPath = fileSystemConfiguration.BasePath;
+
+ if (CurrentTenant.Id == null)
+ {
+ blobPath = Path.Combine(blobPath, "host");
+ }
+ else
+ {
+ blobPath = Path.Combine(blobPath, "tenants", CurrentTenant.Id.Value.ToString("D"));
+ }
+
+ if (fileSystemConfiguration.AppendContainerNameToBasePath &&
+ !bucketName.IsNullOrWhiteSpace())
+ {
+ blobPath = Path.Combine(blobPath, bucketName);
+ }
+ if (!blobName.IsNullOrWhiteSpace())
+ {
+ blobPath = Path.Combine(blobPath, blobName);
+ }
+
+ return blobPath;
+ }
+
+ private void ThrowOfPathHasTooLong(string path)
+ {
+ // Windows 133 260
+ // Linux 255 4096
+ //if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && path.Length >= 255) // 预留5位
+ //{
+ // throw new BusinessException(code: OssManagementErrorCodes.OssNameHasTooLong);
+ //}
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainerFactory.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainerFactory.cs
new file mode 100644
index 000000000..2088a3476
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainerFactory.cs
@@ -0,0 +1,46 @@
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Options;
+using System;
+using Volo.Abp.BlobStoring;
+using Volo.Abp.BlobStoring.FileSystem;
+using Volo.Abp.MultiTenancy;
+
+namespace LINGYUN.Abp.OssManagement.FileSystem
+{
+ public class FileSystemOssContainerFactory : IOssContainerFactory
+ {
+ protected ICurrentTenant CurrentTenant { get; }
+ protected IHostEnvironment Environment { get; }
+ protected IServiceProvider ServiceProvider { get; }
+ protected IBlobFilePathCalculator FilePathCalculator { get; }
+ protected IBlobContainerConfigurationProvider ConfigurationProvider { get; }
+ protected IOptions Options { get; }
+
+ public FileSystemOssContainerFactory(
+ ICurrentTenant currentTenant,
+ IHostEnvironment environment,
+ IServiceProvider serviceProvider,
+ IBlobFilePathCalculator blobFilePathCalculator,
+ IBlobContainerConfigurationProvider configurationProvider,
+ IOptions options)
+ {
+ Environment = environment;
+ CurrentTenant = currentTenant;
+ ServiceProvider = serviceProvider;
+ FilePathCalculator = blobFilePathCalculator;
+ ConfigurationProvider = configurationProvider;
+ Options = options;
+ }
+
+ public IOssContainer Create()
+ {
+ return new FileSystemOssContainer(
+ CurrentTenant,
+ Environment,
+ ServiceProvider,
+ FilePathCalculator,
+ ConfigurationProvider,
+ Options);
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssObjectContext.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssObjectContext.cs
new file mode 100644
index 000000000..8a41266f8
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssObjectContext.cs
@@ -0,0 +1,32 @@
+using System;
+using System.IO;
+using Volo.Abp.DependencyInjection;
+
+namespace LINGYUN.Abp.OssManagement.FileSystem
+{
+ public class FileSystemOssObjectContext : IServiceProviderAccessor
+ {
+ public string Process { get; }
+ public OssObject OssObject { get; }
+ public bool Handled { get; private set; }
+ public Stream Content { get; private set; }
+ public IServiceProvider ServiceProvider { get; }
+
+ public FileSystemOssObjectContext(
+ string process,
+ OssObject ossObject,
+ IServiceProvider serviceProvider)
+ {
+ Process = process;
+ OssObject = ossObject;
+ ServiceProvider = serviceProvider;
+ }
+
+ public void SetContent(Stream content)
+ {
+ Content = content;
+ Content.Seek(0, SeekOrigin.Begin);
+ Handled = true;
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssOptions.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssOptions.cs
new file mode 100644
index 000000000..5d5fd4f6c
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssOptions.cs
@@ -0,0 +1,19 @@
+using JetBrains.Annotations;
+using System.Collections.Generic;
+
+namespace LINGYUN.Abp.OssManagement.FileSystem
+{
+ public class FileSystemOssOptions
+ {
+ [NotNull]
+ public List Processers { get; }
+
+ public FileSystemOssOptions()
+ {
+ Processers = new List
+ {
+ new NoneFileSystemOssObjectProcesser()
+ };
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssOptionsExtensions.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssOptionsExtensions.cs
new file mode 100644
index 000000000..806052fbe
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssOptionsExtensions.cs
@@ -0,0 +1,15 @@
+using System.Collections.Generic;
+
+namespace LINGYUN.Abp.OssManagement.FileSystem
+{
+ public static class FileSystemOssOptionsExtensions
+ {
+ public static void AddProcesser(
+ this FileSystemOssOptions options,
+ TProcesserContributor contributor)
+ where TProcesserContributor : IFileSystemOssObjectProcesserContributor
+ {
+ options.Processers.InsertBefore((x) => x is NoneFileSystemOssObjectProcesser, contributor);
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/IFileSystemOssObjectProcesserContributor.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/IFileSystemOssObjectProcesserContributor.cs
new file mode 100644
index 000000000..9ac5df132
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/IFileSystemOssObjectProcesserContributor.cs
@@ -0,0 +1,9 @@
+using System.Threading.Tasks;
+
+namespace LINGYUN.Abp.OssManagement.FileSystem
+{
+ public interface IFileSystemOssObjectProcesserContributor
+ {
+ Task ProcessAsync(FileSystemOssObjectContext context);
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/NoneFileSystemOssObjectProcesser.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/NoneFileSystemOssObjectProcesser.cs
new file mode 100644
index 000000000..2b337cf40
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/NoneFileSystemOssObjectProcesser.cs
@@ -0,0 +1,14 @@
+using System.Threading.Tasks;
+
+namespace LINGYUN.Abp.OssManagement.FileSystem
+{
+ public class NoneFileSystemOssObjectProcesser : IFileSystemOssObjectProcesserContributor
+ {
+ public Task ProcessAsync(FileSystemOssObjectContext context)
+ {
+ context.SetContent(context.OssObject.Content);
+
+ return Task.CompletedTask;
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/README.md b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/README.md
new file mode 100644
index 000000000..ae3c3c1bb
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/README.md
@@ -0,0 +1,15 @@
+# LINGYUN.Abp.OssManagement.FileSystem
+
+本地文件系统oss容器接口
+
+## 配置使用
+
+模块按需引用
+
+```csharp
+[DependsOn(typeof(AbpOssManagementFileSystemModule))]
+public class YouProjectModule : AbpModule
+{
+ // other
+}
+```
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN.Abp.FileManagement.HttpApi.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN.Abp.OssManagement.HttpApi.csproj
similarity index 69%
rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN.Abp.FileManagement.HttpApi.csproj
rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN.Abp.OssManagement.HttpApi.csproj
index 66266371b..86f3df1fa 100644
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN.Abp.FileManagement.HttpApi.csproj
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN.Abp.OssManagement.HttpApi.csproj
@@ -1,4 +1,4 @@
-
+
@@ -13,7 +13,7 @@
-
+
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/AbpFileManagementHttpApiModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/AbpOssManagementHttpApiModule.cs
similarity index 68%
rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/AbpFileManagementHttpApiModule.cs
rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/AbpOssManagementHttpApiModule.cs
index f8d61cf03..05b3ae7e7 100644
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/AbpFileManagementHttpApiModule.cs
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/AbpOssManagementHttpApiModule.cs
@@ -2,19 +2,19 @@
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Modularity;
-namespace LINGYUN.Abp.FileManagement
+namespace LINGYUN.Abp.OssManagement
{
[DependsOn(
- typeof(AbpFileManagementApplicationContractsModule),
+ typeof(AbpOssManagementApplicationContractsModule),
typeof(AbpAspNetCoreMvcModule)
)]
- public class AbpFileManagementHttpApiModule : AbpModule
+ public class AbpOssManagementHttpApiModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
PreConfigure(mvcBuilder =>
{
- mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpFileManagementHttpApiModule).Assembly);
+ mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpOssManagementHttpApiModule).Assembly);
});
}
}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/FileValidater.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/FileValidater.cs
new file mode 100644
index 000000000..4e3cccc16
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/FileValidater.cs
@@ -0,0 +1,96 @@
+using LINGYUN.Abp.OssManagement.Localization;
+using LINGYUN.Abp.OssManagement.Settings;
+using Microsoft.Extensions.Caching.Memory;
+using Microsoft.Extensions.Localization;
+using System;
+using System.Linq;
+using System.Threading.Tasks;
+using Volo.Abp;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.IO;
+using Volo.Abp.Settings;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public class FileValidater : IFileValidater, ISingletonDependency
+ {
+ private readonly IMemoryCache _cache;
+ private readonly ISettingProvider _settingProvider;
+ private readonly IServiceProvider _serviceProvider;
+ private readonly IStringLocalizer _stringLocalizer;
+
+ public FileValidater(
+ IMemoryCache cache,
+ ISettingProvider settingProvider,
+ IServiceProvider serviceProvider,
+ IStringLocalizer stringLocalizer)
+ {
+ _cache = cache;
+ _settingProvider = settingProvider;
+ _serviceProvider = serviceProvider;
+ _stringLocalizer = stringLocalizer;
+ }
+
+ public virtual async Task ValidationAsync(UploadOssObjectInput input)
+ {
+ var validation = await GetByCacheItemAsync();
+ if (validation.SizeLimit * 1024 * 1024 < input.TotalSize)
+ {
+ throw new UserFriendlyException(_stringLocalizer["UploadFileSizeBeyondLimit", validation.SizeLimit]);
+ }
+ var fileExtensionName = FileHelper.GetExtension(input.FileName);
+ if (!validation.AllowedExtensions
+ .Any(fe => fe.Equals(fileExtensionName, StringComparison.CurrentCultureIgnoreCase)))
+ {
+ throw new UserFriendlyException(_stringLocalizer["NotAllowedFileExtensionName", fileExtensionName]);
+ }
+ }
+
+ protected virtual async Task GetByCacheItemAsync()
+ {
+ var fileValidation = _cache.Get(FileValidation.CacheKey);
+ if (fileValidation == null)
+ {
+ fileValidation = await GetBySettingAsync();
+ _cache.Set(FileValidation.CacheKey,
+ fileValidation,
+ new MemoryCacheEntryOptions
+ {
+ AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(2)
+ });
+ }
+ return fileValidation;
+ }
+
+ protected virtual async Task GetBySettingAsync()
+ {
+ var fileSizeLimited = await _settingProvider
+ .GetAsync(
+ AbpOssManagementSettingNames.FileLimitLength,
+ AbpOssManagementSettingNames.DefaultFileLimitLength);
+ var fileAllowExtension = await _settingProvider
+ .GetOrDefaultAsync(AbpOssManagementSettingNames.AllowFileExtensions, _serviceProvider);
+
+ return new FileValidation(fileSizeLimited, fileAllowExtension.Split(','));
+ }
+ }
+
+ public class FileValidation
+ {
+ public const string CacheKey = "Abp.OssManagement.FileValidation";
+ public int SizeLimit { get; set; }
+ public string[] AllowedExtensions { get; set; }
+ public FileValidation()
+ {
+
+ }
+
+ public FileValidation(
+ int sizeLimit,
+ string[] allowedExtensions)
+ {
+ SizeLimit = sizeLimit;
+ AllowedExtensions = allowedExtensions;
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/IFileValidater.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/IFileValidater.cs
new file mode 100644
index 000000000..2f9446e26
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/IFileValidater.cs
@@ -0,0 +1,9 @@
+using System.Threading.Tasks;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ public interface IFileValidater
+ {
+ Task ValidationAsync(UploadOssObjectInput input);
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/OssContainerController.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/OssContainerController.cs
new file mode 100644
index 000000000..8bfe4092c
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/OssContainerController.cs
@@ -0,0 +1,55 @@
+using Microsoft.AspNetCore.Mvc;
+using System.Threading.Tasks;
+using Volo.Abp;
+using Volo.Abp.AspNetCore.Mvc;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ [RemoteService(Name = OssManagementRemoteServiceConsts.RemoteServiceName)]
+ [Area("oss-management")]
+ [Route("api/oss-management/containes")]
+ public class OssContainerController : AbpController, IOssContainerAppService
+ {
+ protected IOssContainerAppService OssContainerAppService { get; }
+
+ public OssContainerController(
+ IOssContainerAppService ossContainerAppService)
+ {
+ OssContainerAppService = ossContainerAppService;
+ }
+
+ [HttpPost]
+ [Route("{name}")]
+ public virtual async Task CreateAsync(string name)
+ {
+ return await OssContainerAppService.CreateAsync(name);
+ }
+
+ [HttpDelete]
+ [Route("{name}")]
+ public virtual async Task DeleteAsync(string name)
+ {
+ await OssContainerAppService.DeleteAsync(name);
+ }
+
+ [HttpGet]
+ [Route("{name}")]
+ public virtual async Task GetAsync(string name)
+ {
+ return await OssContainerAppService.GetAsync(name);
+ }
+
+ [HttpGet]
+ public virtual async Task GetListAsync(GetOssContainersInput input)
+ {
+ return await OssContainerAppService.GetListAsync(input);
+ }
+
+ [HttpGet]
+ [Route("objects")]
+ public virtual async Task GetObjectListAsync(GetOssObjectsInput input)
+ {
+ return await OssContainerAppService.GetObjectListAsync(input);
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/OssObjectController.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/OssObjectController.cs
new file mode 100644
index 000000000..067757b5a
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/OssObjectController.cs
@@ -0,0 +1,144 @@
+using LINGYUN.Abp.OssManagement.Permissions;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using Volo.Abp;
+using Volo.Abp.AspNetCore.Mvc;
+using Volo.Abp.Auditing;
+using Volo.Abp.IO;
+using Volo.Abp.Validation;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ [RemoteService(Name = OssManagementRemoteServiceConsts.RemoteServiceName)]
+ [Area("oss-management")]
+ [Route("api/oss-management/objects")]
+ public class OssObjectController : AbpController, IOssObjectAppService
+ {
+ protected IFileValidater FileValidater { get; }
+ protected IOssObjectAppService OssObjectAppService { get; }
+
+ public OssObjectController(
+ IFileValidater fileValidater,
+ IOssObjectAppService ossObjectAppService)
+ {
+ FileValidater = fileValidater;
+ OssObjectAppService = ossObjectAppService;
+ }
+
+ [HttpPost]
+ public virtual async Task CreateAsync(CreateOssObjectInput input)
+ {
+ return await OssObjectAppService.CreateAsync(input);
+ }
+
+ [HttpPost]
+ [Route("upload")]
+ [DisableAuditing]
+ [Authorize(AbpOssManagementPermissions.OssObject.Create)]
+ public virtual async Task UploadAsync([FromForm] UploadOssObjectInput input)
+ {
+ await FileValidater.ValidationAsync(input);
+ // 以上传的文件名创建一个临时目录
+ var tempFilePath = Path.Combine(
+ Path.GetTempPath(),
+ "lingyun-abp-application",
+ "upload-tmp",
+ string.Concat(input.Path ?? "", input.FileName).ToMd5());
+ DirectoryHelper.CreateIfNotExists(tempFilePath);
+ // 以上传的分片索引创建临时文件
+ var tempSavedFile = Path.Combine(tempFilePath, $"{input.ChunkNumber}.uploadtmp");
+ try
+ {
+ if (HttpContext.RequestAborted.IsCancellationRequested)
+ {
+ // 如果取消请求,删除临时目录
+ Directory.Delete(tempFilePath, true);
+ return;
+ }
+
+ if (input.File != null)
+ {
+ // 保存临时文件
+ using (var fs = new FileStream(tempSavedFile, FileMode.Create, FileAccess.Write))
+ {
+ // 写入当前分片文件
+ await input.File.CopyToAsync(fs);
+ }
+ }
+
+ if (input.ChunkNumber == input.TotalChunks)
+ {
+ var createOssObjectInput = new CreateOssObjectInput
+ {
+ Bucket = input.Bucket,
+ Path = input.Path,
+ Object = input.FileName
+ };
+ // 合并文件
+ var mergeSavedFile = Path.Combine(tempFilePath, $"{input.FileName}");
+ // 获取并排序所有分片文件
+ var mergeFiles = Directory.GetFiles(tempFilePath).OrderBy(f => f.Length).ThenBy(f => f);
+ // 创建临时合并文件
+ using (var memoryStream = new MemoryStream())
+ {
+ foreach (var mergeFile in mergeFiles)
+ {
+ // 读取当前文件字节
+ var mergeFileBytes = await FileHelper.ReadAllBytesAsync(mergeFile);
+ // 写入到合并文件流
+ await memoryStream.WriteAsync(mergeFileBytes, HttpContext.RequestAborted);
+ Array.Clear(mergeFileBytes, 0, mergeFileBytes.Length);
+ // 删除已参与合并的临时文件分片
+ FileHelper.DeleteIfExists(mergeFile);
+ }
+ createOssObjectInput.SetContent(memoryStream);
+
+ await OssObjectAppService.CreateAsync(createOssObjectInput);
+ // 文件保存之后删除临时文件目录
+ Directory.Delete(tempFilePath, true);
+ }
+ }
+ }
+ catch
+ {
+ // 发生异常删除临时文件目录
+ Directory.Delete(tempFilePath, true);
+ throw;
+ }
+ }
+
+ [HttpDelete]
+ [Route("bulk-delete")]
+ public virtual async Task BulkDeleteAsync([FromBody] BulkDeleteOssObjectInput input)
+ {
+ await OssObjectAppService.BulkDeleteAsync(input);
+ }
+
+ [HttpDelete]
+ public virtual async Task DeleteAsync(GetOssObjectInput input)
+ {
+ await OssObjectAppService.DeleteAsync(input);
+ }
+
+ [HttpGet]
+ public virtual async Task GetAsync(GetOssObjectInput input)
+ {
+ return await OssObjectAppService.GetAsync(input);
+ }
+
+ private static void ThrowValidationException(string message, string memberName)
+ {
+ throw new AbpValidationException(message,
+ new List
+ {
+ new ValidationResult(message, new[] {memberName})
+ });
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/StaticFilesController.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/StaticFilesController.cs
new file mode 100644
index 000000000..39a06e93b
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/StaticFilesController.cs
@@ -0,0 +1,91 @@
+using LINGYUN.Abp.OssManagement.Permissions;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.IO;
+using System.Threading.Tasks;
+using System.Web;
+using Volo.Abp;
+using Volo.Abp.AspNetCore.Mvc;
+using Volo.Abp.Http;
+using Volo.Abp.Validation;
+
+namespace LINGYUN.Abp.OssManagement
+{
+ [RemoteService(Name = OssManagementRemoteServiceConsts.RemoteServiceName)]
+ [Area("oss-management")]
+ [Route("api/files/static")]
+ public class StaticFilesController : AbpController
+ {
+ private readonly IOssObjectAppService _ossObjectAppService;
+ private readonly IStaticFilesAppService _staticFilesAppServic;
+
+ public StaticFilesController(
+ IOssObjectAppService ossObjectAppService,
+ IStaticFilesAppService staticFilesAppServic)
+ {
+ _ossObjectAppService = ossObjectAppService;
+ _staticFilesAppServic = staticFilesAppServic;
+ }
+
+ [HttpPost]
+ [Route("{bucket}")]
+ [Route("{bucket}/{path}")]
+ [Authorize(AbpOssManagementPermissions.OssObject.Create)]
+ public virtual async Task UploadAsync(string bucket, string path, [FromForm] IFormFile file)
+ {
+ if (file == null || file.Length <= 0)
+ {
+ ThrowValidationException(L["FileNotBeNullOrEmpty"], "File");
+ }
+
+ var createOssObjectInput = new CreateOssObjectInput
+ {
+ Bucket = HttpUtility.UrlDecode(bucket),
+ Path = HttpUtility.UrlDecode(path),
+ Object = file.FileName,
+ Content = file.OpenReadStream()
+ };
+
+ return await _ossObjectAppService.CreateAsync(createOssObjectInput);
+ }
+
+ [HttpGet]
+ [Route("{bucket}/{name}")]
+ [Route("{bucket}/{name}/{process}")]
+ [Route("{bucket}/p/{path}/{name}")]
+ [Route("{bucket}/p/{path}/{name}/{process}")]
+ public virtual async Task GetAsync(string bucket, string path, string name, string process)
+ {
+ var input = new GetStaticFileInput
+ {
+ Bucket = bucket,
+ Name = name,
+ Path = path,
+ Process = process
+ };
+ var fileStream = await _staticFilesAppServic.GetAsync(input);
+
+ if (fileStream.IsNullOrEmpty())
+ {
+ return NotFound();
+ }
+
+ return File(
+ fileStream,
+ MimeTypes.GetByExtension(Path.GetExtension(input.Name))
+ );
+ }
+
+ private static void ThrowValidationException(string message, string memberName)
+ {
+ throw new AbpValidationException(message,
+ new List
+ {
+ new ValidationResult(message, new[] {memberName})
+ });
+ }
+ }
+}
diff --git a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileUploadDto.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/UploadOssObjectInput.cs
similarity index 70%
rename from aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileUploadDto.cs
rename to aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/UploadOssObjectInput.cs
index 490f4847e..711eca7be 100644
--- a/aspnet-core/modules/file-management/LINGYUN.Abp.FileManagement.HttpApi/LINGYUN/Abp/FileManagement/FileUploadDto.cs
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/UploadOssObjectInput.cs
@@ -1,10 +1,19 @@
using Microsoft.AspNetCore.Http;
using System.ComponentModel.DataAnnotations;
-namespace LINGYUN.Abp.FileManagement
+namespace LINGYUN.Abp.OssManagement
{
- public class FileUploadDto : FileCreateDto
+ public class UploadOssObjectInput
{
+ public string Bucket { get; set; }
+ public string Path { get; set; }
+
+ #region 配合Uplaoder 分块传输
+ ///
+ /// 文件名
+ ///
+ [Required]
+ public string FileName { get; set; }
///
/// 常规块大小
///
@@ -30,6 +39,9 @@ namespace LINGYUN.Abp.FileManagement
///
[Required]
public int TotalSize { get; set; }
+
+ #endregion
+
public IFormFile File { get; set; }
}
}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/AbpOssManagementSettingManagementModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/AbpOssManagementSettingManagementModule.cs
new file mode 100644
index 000000000..8d30e73f2
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/AbpOssManagementSettingManagementModule.cs
@@ -0,0 +1,20 @@
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.AspNetCore.Mvc;
+using Volo.Abp.Modularity;
+
+namespace LINGYUN.Abp.OssManagement.SettingManagement
+{
+ [DependsOn(
+ typeof(AbpOssManagementApplicationContractsModule),
+ typeof(AbpAspNetCoreMvcModule))]
+ public class AbpOssManagementSettingManagementModule : AbpModule
+ {
+ public override void PreConfigureServices(ServiceConfigurationContext context)
+ {
+ PreConfigure(mvcBuilder =>
+ {
+ mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpOssManagementSettingManagementModule).Assembly);
+ });
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN.Abp.OssManagement.SettingManagement.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN.Abp.OssManagement.SettingManagement.csproj
new file mode 100644
index 000000000..121e9f824
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN.Abp.OssManagement.SettingManagement.csproj
@@ -0,0 +1,18 @@
+
+
+
+ net5.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/IOssManagementSettingAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/IOssManagementSettingAppService.cs
new file mode 100644
index 000000000..d58768920
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/IOssManagementSettingAppService.cs
@@ -0,0 +1,13 @@
+using LINGYUN.Abp.SettingManagement;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Dtos;
+
+namespace LINGYUN.Abp.OssManagement.SettingManagement
+{
+ public interface IOssManagementSettingAppService
+ {
+ Task> GetAllForGlobalAsync();
+
+ Task> GetAllForCurrentTenantAsync();
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/OssManagementSettingAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/OssManagementSettingAppService.cs
new file mode 100644
index 000000000..d9f594a06
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/OssManagementSettingAppService.cs
@@ -0,0 +1,73 @@
+using LINGYUN.Abp.OssManagement.Localization;
+using LINGYUN.Abp.OssManagement.Permissions;
+using LINGYUN.Abp.OssManagement.Settings;
+using LINGYUN.Abp.SettingManagement;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Application.Services;
+using Volo.Abp.Authorization.Permissions;
+using Volo.Abp.MultiTenancy;
+using Volo.Abp.SettingManagement;
+using Volo.Abp.Settings;
+using ValueType = LINGYUN.Abp.SettingManagement.ValueType;
+
+namespace LINGYUN.Abp.OssManagement.SettingManagement
+{
+ public class OssManagementSettingAppService : ApplicationService, IOssManagementSettingAppService
+ {
+ protected ISettingManager SettingManager { get; }
+ protected IPermissionChecker PermissionChecker { get; }
+ protected ISettingDefinitionManager SettingDefinitionManager { get; }
+
+ public OssManagementSettingAppService(
+ ISettingManager settingManager,
+ IPermissionChecker permissionChecker,
+ ISettingDefinitionManager settingDefinitionManager)
+ {
+ SettingManager = settingManager;
+ PermissionChecker = permissionChecker;
+ SettingDefinitionManager = settingDefinitionManager;
+ LocalizationResource = typeof(AbpOssManagementResource);
+ }
+
+ public virtual async Task> GetAllForCurrentTenantAsync()
+ {
+ return await GetAllForProviderAsync(TenantSettingValueProvider.ProviderName, CurrentTenant.GetId().ToString());
+ }
+
+ public virtual async Task> GetAllForGlobalAsync()
+ {
+ return await GetAllForProviderAsync(GlobalSettingValueProvider.ProviderName, null);
+ }
+
+ protected virtual async Task> GetAllForProviderAsync(string providerName, string providerKey)
+ {
+ var settingGroups = new List();
+
+ // 无权限返回空结果,直接报错的话,网关聚合会抛出异常
+ if (await PermissionChecker.IsGrantedAsync(AbpOssManagementPermissions.OssObject.Default))
+ {
+
+ var ossSettingGroup = new SettingGroupDto(L["DisplayName:OssManagement"], L["Description:OssManagement"]);
+
+ var ossObjectSetting = ossSettingGroup.AddSetting(L["DisplayName:OssObject"], L["Description:OssObject"]);
+
+ ossObjectSetting.AddDetail(
+ SettingDefinitionManager.Get(AbpOssManagementSettingNames.FileLimitLength),
+ StringLocalizerFactory,
+ await SettingManager.GetOrNullAsync(AbpOssManagementSettingNames.FileLimitLength, providerName, providerKey),
+ ValueType.Number);
+ ossObjectSetting.AddDetail(
+ SettingDefinitionManager.Get(AbpOssManagementSettingNames.AllowFileExtensions),
+ StringLocalizerFactory,
+ await SettingManager.GetOrNullAsync(AbpOssManagementSettingNames.AllowFileExtensions, providerName, providerKey),
+ ValueType.String);
+
+ settingGroups.Add(ossSettingGroup);
+ }
+
+ return new ListResultDto(settingGroups);
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/OssManagementSettingController.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/OssManagementSettingController.cs
new file mode 100644
index 000000000..3668216db
--- /dev/null
+++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.SettingManagement/LINGYUN/Abp/OssManagement/SettingManagement/OssManagementSettingController.cs
@@ -0,0 +1,37 @@
+using LINGYUN.Abp.SettingManagement;
+using Microsoft.AspNetCore.Mvc;
+using System.Threading.Tasks;
+using Volo.Abp;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.AspNetCore.Mvc;
+
+namespace LINGYUN.Abp.OssManagement.SettingManagement
+{
+ [RemoteService(Name = OssManagementRemoteServiceConsts.RemoteServiceName)]
+ [Area("settingManagement")]
+ [Route("api/setting-management/oss-management")]
+ public class OssManagementSettingController : AbpController, IOssManagementSettingAppService
+ {
+ protected IOssManagementSettingAppService WeChatSettingAppService { get; }
+
+ public OssManagementSettingController(
+ IOssManagementSettingAppService weChatSettingAppService)
+ {
+ WeChatSettingAppService = weChatSettingAppService;
+ }
+
+ [HttpGet]
+ [Route("by-current-tenant")]
+ public virtual async Task> GetAllForCurrentTenantAsync()
+ {
+ return await WeChatSettingAppService.GetAllForCurrentTenantAsync();
+ }
+
+ [HttpGet]
+ [Route("by-global")]
+ public virtual async Task> GetAllForGlobalAsync()
+ {
+ return await WeChatSettingAppService.GetAllForGlobalAsync();
+ }
+ }
+}
diff --git a/aspnet-core/modules/oss-management/README.md b/aspnet-core/modules/oss-management/README.md
new file mode 100644
index 000000000..9bd5a6546
--- /dev/null
+++ b/aspnet-core/modules/oss-management/README.md
@@ -0,0 +1,50 @@
+# Oss-Management
+
+File-Management更名为Oss-Management
+
+## 模块说明
+
+### 基础模块
+
+* [LINGYUN.Abp.OssManagement.Domain.Shared](./LINGYUN.Abp.OssManagement.Domain.Shared) 领域层公共模块,定义了错误代码、本地化、模块设置
+* [LINGYUN.Abp.OssManagement.Domain](./LINGYUN.Abp.OssManagement.Domain) 领域层模块,定义了抽象的Oss容器与对象管理接口
+* [LINGYUN.Abp.OssManagement.Application.Contracts](./LINGYUN.Abp.OssManagement.Application.Contracts) 应用服务层公共模块,定义了管理Oss的外部接口、权限、功能限制策略
+* [LINGYUN.Abp.OssManagement.Application](./LINGYUN.Abp.OssManagement.Application) 应用服务层实现,实现了Oss管理接口
+* [LINGYUN.Abp.OssManagement.HttpApi](./LINGYUN.Abp.OssManagement.HttpApi) RestApi实现,实现了独立的对外RestApi接口
+* [LINGYUN.Abp.OssManagement.SettingManagement](./LINGYUN.Abp.OssManagement.SettingManagement) 设置管理模块,对外暴露自身的设置管理,用于网关聚合
+
+### 高阶模块
+
+* [LINGYUN.Abp.OssManagement.Aliyun](./LINGYUN.Abp.OssManagement.Aliyun) Oss管理的阿里云实现,实现了部分阿里云Oss服务的容器与对象管理
+* [LINGYUN.Abp.OssManagement.FileSystem](./LINGYUN.Abp.OssManagement.FileSystem) Oss管理的本地文件系统实现,实现了部分本地文件系统的容器(目录)与对象(文件/目录)管理
+* [LINGYUN.Abp.OssManagement.FileSystem.ImageSharp](./LINGYUN.Abp.OssManagement.FileSystem.ImageSharp) Oss本地对象的ImageSharp扩展,当前端传递需求处理对象时,此模块用于实现基于图形文件流的处理
+
+### 权限定义
+
+* AbpOssManagement.Container 授权对象是否允许访问容器(bucket)
+* AbpOssManagement.Container.Create 授权对象是否允许创建容器(bucket)
+* AbpOssManagement.Container.Delete 授权对象是否允许删除容器(bucket)
+* AbpOssManagement.OssObject 授权对象是否允许访问Oss对象
+* AbpOssManagement.OssObject.Create 授权对象是否允许创建Oss对象
+* AbpOssManagement.OssObject.Delete 授权对象是否允许删除Oss对象
+* AbpOssManagement.OssObject.Download 授权对象是否允许下载Oss对象
+
+### 功能定义
+
+* AbpOssManagement.OssObject.DownloadFile 用户可以下载文件
+* AbpOssManagement.OssObject.DownloadLimit 用户在周期内允许下载文件的最大次数,范围0-1000000
+* AbpOssManagement.OssObject.DownloadInterval 用户限制下载文件次数的周期,时钟刻度:月,默认: 1,范围1-12
+* AbpOssManagement.OssObject.UploadFile 用户可以上传文件
+* AbpOssManagement.OssObject.UploadLimit 用户在周期内允许上传文件的最大次数,范围0-1000000
+* AbpOssManagement.OssObject.UploadInterval 用户限制上传文件次数的周期,时钟刻度:月,默认: 1,范围1-12
+* AbpOssManagement.OssObject.MaxUploadFileCount 单次上传文件的数量,未实现
+
+### 配置定义
+
+* Abp.OssManagement.DownloadPackageSize 下载分包大小,分块下载时单次传输的数据大小,未实现
+* Abp.OssManagement.FileLimitLength 上传文件限制大小,默认:100
+* Abp.OssManagement.AllowFileExtensions 允许的上传文件扩展名,多个扩展名以逗号分隔,默认:dll,zip,rar,txt,log,xml,config,json,jpeg,jpg,png,bmp,ico,xlsx,xltx,xls,xlt,docs,dots,doc,dot,pptx,potx,ppt,pot,chm
+
+## 更新日志
+
+*【2021-03-10】 变更FileManagement命名空间为OssManagement
diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/PlatformDataSeedContributor.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/PlatformDataSeedContributor.cs
index 16a965012..4eac99d56 100644
--- a/aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/PlatformDataSeedContributor.cs
+++ b/aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/PlatformDataSeedContributor.cs
@@ -59,6 +59,8 @@ namespace LINGYUN.Platform
await SeedContainerMenuAsync(layout, data);
// 网关管理菜单数据
await SeedApiGatewayMenuAsync(layout, data);
+ // Oss对象管理菜单数据
+ await SeedOssManagementMenuAsync(layout, data);
}
}
@@ -729,6 +731,50 @@ namespace LINGYUN.Platform
new string[] { "admin" });
}
+ private async Task SeedOssManagementMenuAsync(Layout layout, Data data)
+ {
+ var ossManagementMenu = await SeedMenuAsync(
+ layout,
+ data,
+ "oss-management",
+ "/oss-management",
+ CodeNumberGenerator.CreateCode(8),
+ layout.Path,
+ "Manage Object Storage",
+ "/oss-manager",
+ "Manage Object Storage",
+ null,
+ layout.TenantId,
+ new Dictionary()
+ {
+ { "title", "oss-management" },
+ { "icon", "file-system" },
+ { "alwaysShow", true },
+ { "roles", new string[] { "AbpOssManagement.Container", "AbpOssManagement.OssObject" } },
+ },
+ new string[] { "admin" });
+
+ await SeedMenuAsync(
+ layout,
+ data,
+ "oss-manager",
+ "oss-manager",
+ CodeNumberGenerator.AppendCode(ossManagementMenu.Code, CodeNumberGenerator.CreateCode(1)),
+ "views/oss-management/index.vue",
+ "Manage Oss Object",
+ "",
+ "Manage Oss Object",
+ ossManagementMenu.Id,
+ ossManagementMenu.TenantId,
+ new Dictionary()
+ {
+ { "title", "oss-objects" },
+ { "icon", "file-system" },
+ { "roles", new string[] { "AbpOssManagement.OssObject" } }
+ },
+ new string[] { "admin" });
+ }
+
private async Task