diff --git a/README.md b/README.md index 75c9ebbc9..e0fe2dd91 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ [English](./README.en.md) | 简体中文 +[更新说明](./RELEASE.MD) 更新说明 + ## 总览 这是一个基于 [vue-typescript-admin-template](http://armour.github.io/vue-typescript-admin-template) 的Abp框架后台管理界面 diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 000000000..f35d3def8 --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,18 @@ +## 总览 + +# [2021-03-29] +1、增加动态本地化组件支持,用于在运行时替换本地化文本,需要实现 ILocalizationStore; + +2、增加本地化文档管理项目,实现了 ILocalizationStore持久化本地资源到数据库; + 使用须知: 需要先定位到 [LocalizationManagement](./aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host) 目录下 + 执行Ef迁移命令: **dotnet ef database update** + +3、增加一个dotnet-compose配置文件[docker-compose.configuration.yml](./docker-compose.configuration.yml); + +4、vueJs 增加本地化管理组件视图: views/localization-management; + +5、vueJs 用户登录后的异步等待调用修改为通过store来调用abp模块初始化事件; + +6、vueJs 修复了HttpProxy模块传递的params与data使用情况混淆的问题; + +7、同步本地化管理组件的网关路由初始化配置。 \ No newline at end of file diff --git a/aspnet-core/LINGYUN.MicroService.All.sln b/aspnet-core/LINGYUN.MicroService.All.sln index 21536b9a5..49afbfbc8 100644 --- a/aspnet-core/LINGYUN.MicroService.All.sln +++ b/aspnet-core/LINGYUN.MicroService.All.sln @@ -300,7 +300,30 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Localization.Xm EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Localization.Json", "modules\localization\LINGYUN.Abp.Localization.Json\LINGYUN.Abp.Localization.Json.csproj", "{EA563F48-A6EF-4886-B607-2A83F7795F1B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Localization.Json.Tests", "tests\LINGYUN.Abp.Localization.Json.Tests\LINGYUN.Abp.Localization.Json.Tests.csproj", "{EBCF7D88-49E2-413D-A7A6-1A76BC2E8161}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Localization.Json.Tests", "tests\LINGYUN.Abp.Localization.Json.Tests\LINGYUN.Abp.Localization.Json.Tests.csproj", "{EBCF7D88-49E2-413D-A7A6-1A76BC2E8161}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Localization.Dynamic", "modules\common\LINGYUN.Abp.Localization.Dynamic\LINGYUN.Abp.Localization.Dynamic.csproj", "{4A9043FD-24A3-4A4A-956B-9CB71876F415}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "localization-management", "localization-management", "{D3BAA44E-8395-4E8A-AA96-6B463356C537}" + ProjectSection(SolutionItems) = preProject + modules\lt\README.md = modules\lt\README.md + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.Domain.Shared", "modules\lt\LINGYUN.Abp.LocalizationManagement.Domain.Shared\LINGYUN.Abp.LocalizationManagement.Domain.Shared.csproj", "{5BE18D72-0D02-4854-966E-745CE5DAF77F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.Domain", "modules\lt\LINGYUN.Abp.LocalizationManagement.Domain\LINGYUN.Abp.LocalizationManagement.Domain.csproj", "{73EAD4FE-B44F-44A7-904E-FFA5096D91BD}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.Application.Contracts", "modules\lt\LINGYUN.Abp.LocalizationManagement.Application.Contracts\LINGYUN.Abp.LocalizationManagement.Application.Contracts.csproj", "{06D34108-01BA-4C77-A704-4DD9E6F7E32C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.Application", "modules\lt\LINGYUN.Abp.LocalizationManagement.Application\LINGYUN.Abp.LocalizationManagement.Application.csproj", "{A98C939C-9F48-414A-A2D3-853BE4447397}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore", "modules\lt\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj", "{A94BE05F-7DAB-461C-93E7-914CBDF4FA93}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.HttpApi", "modules\lt\LINGYUN.Abp.LocalizationManagement.HttpApi\LINGYUN.Abp.LocalizationManagement.HttpApi.csproj", "{FBE91498-D83B-4873-A67E-0FB9D1C366F0}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "localization", "localization", "{A2EA6B3F-AD1A-4FDA-B12E-F71B20A43A6B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.LocalizationManagement.HttpApi.Host", "services\localization\LINGYUN.Abp.LocalizationManagement.HttpApi.Host\LINGYUN.Abp.LocalizationManagement.HttpApi.Host.csproj", "{6FFC14FE-F659-4B23-9746-4B767CE520D2}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -796,6 +819,38 @@ Global {EBCF7D88-49E2-413D-A7A6-1A76BC2E8161}.Debug|Any CPU.Build.0 = Debug|Any CPU {EBCF7D88-49E2-413D-A7A6-1A76BC2E8161}.Release|Any CPU.ActiveCfg = Release|Any CPU {EBCF7D88-49E2-413D-A7A6-1A76BC2E8161}.Release|Any CPU.Build.0 = Release|Any CPU + {4A9043FD-24A3-4A4A-956B-9CB71876F415}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4A9043FD-24A3-4A4A-956B-9CB71876F415}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4A9043FD-24A3-4A4A-956B-9CB71876F415}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4A9043FD-24A3-4A4A-956B-9CB71876F415}.Release|Any CPU.Build.0 = Release|Any CPU + {5BE18D72-0D02-4854-966E-745CE5DAF77F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5BE18D72-0D02-4854-966E-745CE5DAF77F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5BE18D72-0D02-4854-966E-745CE5DAF77F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5BE18D72-0D02-4854-966E-745CE5DAF77F}.Release|Any CPU.Build.0 = Release|Any CPU + {73EAD4FE-B44F-44A7-904E-FFA5096D91BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {73EAD4FE-B44F-44A7-904E-FFA5096D91BD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {73EAD4FE-B44F-44A7-904E-FFA5096D91BD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {73EAD4FE-B44F-44A7-904E-FFA5096D91BD}.Release|Any CPU.Build.0 = Release|Any CPU + {06D34108-01BA-4C77-A704-4DD9E6F7E32C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {06D34108-01BA-4C77-A704-4DD9E6F7E32C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {06D34108-01BA-4C77-A704-4DD9E6F7E32C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {06D34108-01BA-4C77-A704-4DD9E6F7E32C}.Release|Any CPU.Build.0 = Release|Any CPU + {A98C939C-9F48-414A-A2D3-853BE4447397}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A98C939C-9F48-414A-A2D3-853BE4447397}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A98C939C-9F48-414A-A2D3-853BE4447397}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A98C939C-9F48-414A-A2D3-853BE4447397}.Release|Any CPU.Build.0 = Release|Any CPU + {A94BE05F-7DAB-461C-93E7-914CBDF4FA93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A94BE05F-7DAB-461C-93E7-914CBDF4FA93}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A94BE05F-7DAB-461C-93E7-914CBDF4FA93}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A94BE05F-7DAB-461C-93E7-914CBDF4FA93}.Release|Any CPU.Build.0 = Release|Any CPU + {FBE91498-D83B-4873-A67E-0FB9D1C366F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FBE91498-D83B-4873-A67E-0FB9D1C366F0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FBE91498-D83B-4873-A67E-0FB9D1C366F0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FBE91498-D83B-4873-A67E-0FB9D1C366F0}.Release|Any CPU.Build.0 = Release|Any CPU + {6FFC14FE-F659-4B23-9746-4B767CE520D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6FFC14FE-F659-4B23-9746-4B767CE520D2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6FFC14FE-F659-4B23-9746-4B767CE520D2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6FFC14FE-F659-4B23-9746-4B767CE520D2}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -946,6 +1001,16 @@ Global {A061D2B4-B650-4F7F-A6CB-5C8FFFD512ED} = {370D7CD5-1E17-4F3D-BBFA-03429F6D4F2F} {EA563F48-A6EF-4886-B607-2A83F7795F1B} = {90E88EAC-4291-4406-8D88-EFDF61B11292} {EBCF7D88-49E2-413D-A7A6-1A76BC2E8161} = {370D7CD5-1E17-4F3D-BBFA-03429F6D4F2F} + {4A9043FD-24A3-4A4A-956B-9CB71876F415} = {8AC72641-30D3-4ACF-89FA-808FADC55C2E} + {D3BAA44E-8395-4E8A-AA96-6B463356C537} = {C5CAD011-DF84-4914-939C-0C029DCEF26F} + {5BE18D72-0D02-4854-966E-745CE5DAF77F} = {D3BAA44E-8395-4E8A-AA96-6B463356C537} + {73EAD4FE-B44F-44A7-904E-FFA5096D91BD} = {D3BAA44E-8395-4E8A-AA96-6B463356C537} + {06D34108-01BA-4C77-A704-4DD9E6F7E32C} = {D3BAA44E-8395-4E8A-AA96-6B463356C537} + {A98C939C-9F48-414A-A2D3-853BE4447397} = {D3BAA44E-8395-4E8A-AA96-6B463356C537} + {A94BE05F-7DAB-461C-93E7-914CBDF4FA93} = {D3BAA44E-8395-4E8A-AA96-6B463356C537} + {FBE91498-D83B-4873-A67E-0FB9D1C366F0} = {D3BAA44E-8395-4E8A-AA96-6B463356C537} + {A2EA6B3F-AD1A-4FDA-B12E-F71B20A43A6B} = {672E1170-7B18-474B-85C7-1961BF2A48AE} + {6FFC14FE-F659-4B23-9746-4B767CE520D2} = {A2EA6B3F-AD1A-4FDA-B12E-F71B20A43A6B} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C95FDF91-16F2-4A8B-A4BE-0E62D1B66718} diff --git a/aspnet-core/configuration/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/appsettings.Development.json b/aspnet-core/configuration/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/appsettings.Development.json index 3440b6601..db45a7628 100644 --- a/aspnet-core/configuration/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/appsettings.Development.json +++ b/aspnet-core/configuration/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/appsettings.Development.json @@ -15,7 +15,8 @@ "AbpIdentityServer": "Server=127.0.0.1;Database=IdentityServer;User Id=root;Password=123456", "AbpTenantManagement": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456", "AbpSettingManagement": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456" + "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456", + "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456" }, "Location": { "Baidu": { @@ -31,40 +32,6 @@ "VisableErrorToClient": true } }, - "Aliyun": { - "Auth": { - "AccessKeyId": "你自己的阿里云Sms服务Key", - "AccessKeySecret": "你自己的阿里云Sms服务KeySecret" - }, - "Sms": { - "RegionId": "cn-hangzhou", - "Domain": "dysmsapi.aliyuncs.com", - "Version": "2017-05-25", - "DefaultSignName": "你自己的阿里云Sms服务签名", - "DefaultTemplateCode": "你自己的阿里云Sms服务模板", - "DeveloperPhoneNumber": "你自己的手机号码,用于开发模式统一接收短信的手机号", - "VisableErrorToClient": true - } - }, - "Identity": { - "Password": { - "RequiredLength": 6, - "RequiredUniqueChars": 0, - "RequireNonAlphanumeric": false, - "RequireLowercase": false, - "RequireUppercase": false, - "RequireDigit": false - }, - "Lockout": { - "AllowedForNewUsers": false, - "LockoutDuration": 5, - "MaxFailedAccessAttempts": 5 - }, - "SignIn": { - "RequireConfirmedEmail": false, - "RequireConfirmedPhoneNumber": false - } - }, "CAP": { "EventBus": { "DefaultGroup": "BackendAdmin", diff --git a/aspnet-core/configuration/identity-server/LINGYUN.Abp.IdentityServer4.HttpApi.Host/appsettings.Development.json b/aspnet-core/configuration/identity-server/LINGYUN.Abp.IdentityServer4.HttpApi.Host/appsettings.Development.json index 09e593f60..e75d71789 100644 --- a/aspnet-core/configuration/identity-server/LINGYUN.Abp.IdentityServer4.HttpApi.Host/appsettings.Development.json +++ b/aspnet-core/configuration/identity-server/LINGYUN.Abp.IdentityServer4.HttpApi.Host/appsettings.Development.json @@ -15,41 +15,8 @@ "AbpTenantManagement": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456", "AbpSettingManagement": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456", "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456" - }, - "Identity": { - "Password": { - "RequiredLength": 6, - "RequiredUniqueChars": 0, - "RequireNonAlphanumeric": false, - "RequireLowercase": false, - "RequireUppercase": false, - "RequireDigit": false - }, - "Lockout": { - "AllowedForNewUsers": false, - "LockoutDuration": 5, - "MaxFailedAccessAttempts": 5 - }, - "SignIn": { - "RequireConfirmedEmail": false, - "RequireConfirmedPhoneNumber": false - } - }, - "Aliyun": { - "Auth": { - "AccessKeyId": "你自己的阿里云Sms服务Key", - "AccessKeySecret": "你自己的阿里云Sms服务KeySecret" - }, - "Sms": { - "RegionId": "cn-hangzhou", - "Domain": "dysmsapi.aliyuncs.com", - "Version": "2017-05-25", - "DefaultSignName": "你自己的阿里云Sms服务签名", - "DefaultTemplateCode": "你自己的阿里云Sms服务模板", - "DeveloperPhoneNumber": "你自己的手机号码,用于开发模式统一接收短信的手机号", - "VisableErrorToClient": true - } + "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456", + "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456" }, "CAP": { "EventBus": { diff --git a/aspnet-core/configuration/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/appsettings.Development.json b/aspnet-core/configuration/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/appsettings.Development.json new file mode 100644 index 000000000..e4ae6080c --- /dev/null +++ b/aspnet-core/configuration/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/appsettings.Development.json @@ -0,0 +1,91 @@ +{ + "ConnectionStrings": { + "Default": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456", + "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456", + "AbpTenantManagement": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456", + "AbpSettingManagement": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456", + "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456" + }, + "CAP": { + "EventBus": { + "DefaultGroup": "Platform", + "Version": "v1", + "FailedRetryInterval": 300, + "FailedRetryCount": 10 + }, + "RabbitMQ": { + "HostName": "Your RabbitMQ server connection address", + "Port": 5672, + "UserName": "Your RabbitMQ server connection user", + "Password": "Your RabbitMQ server connection user password", + "ExchangeName": "The name of your RabbitMQ server switch", + "VirtualHost": "Name of your RabbitMQ server VirtualHost" + } + }, + "Redis": { + "Configuration": "127.0.0.1,defaultDatabase=11", + "InstanceName": "LINGYUN.Abp.Application" + }, + "AuthServer": { + "Authority": "http://localhost:44385/", + "ApiName": "lingyun-abp-application" + } + "Serilog": { + "MinimumLevel": { + "Default": "Debug", + "Override": { + "Microsoft.EntityFrameworkCore": "Debug", + "System": "Warning", + "Microsoft": "Warning" + } + }, + "Enrich": [ "FromLogContext", "WithProcessId", "WithThreadId" ], + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "Logs/Debug-.log", + "restrictedToMinimumLevel": "Debug", + "rollingInterval": "Day", + "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}" + } + }, + { + "Name": "File", + "Args": { + "path": "Logs/Info-.log", + "restrictedToMinimumLevel": "Information", + "rollingInterval": "Day", + "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}" + } + }, + { + "Name": "File", + "Args": { + "path": "Logs/Warn-.log", + "restrictedToMinimumLevel": "Warning", + "rollingInterval": "Day", + "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}" + } + }, + { + "Name": "File", + "Args": { + "path": "Logs/Error-.log", + "restrictedToMinimumLevel": "Error", + "rollingInterval": "Day", + "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}" + } + }, + { + "Name": "File", + "Args": { + "path": "Logs/Fatal-.log", + "restrictedToMinimumLevel": "Fatal", + "rollingInterval": "Day", + "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}" + } + } + ] + } +} diff --git a/aspnet-core/configuration/platform/LINGYUN.Platform.HttpApi.Host/appsettings.Development.json b/aspnet-core/configuration/platform/LINGYUN.Platform.HttpApi.Host/appsettings.Development.json index 13bd15924..f4c101465 100644 --- a/aspnet-core/configuration/platform/LINGYUN.Platform.HttpApi.Host/appsettings.Development.json +++ b/aspnet-core/configuration/platform/LINGYUN.Platform.HttpApi.Host/appsettings.Development.json @@ -13,7 +13,8 @@ "AppPlatform": "Server=127.0.0.1;Database=Platform;User Id=colin;Password=123456", "AbpTenantManagement": "Server=127.0.0.1;Database=Platform;User Id=colin;Password=123456", "AbpSettingManagement": "Server=127.0.0.1;Database=Platform;User Id=colin;Password=123456", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform;User Id=colin;Password=123456" + "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform;User Id=colin;Password=123456", + "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform;User Id=root;Password=123456" }, "Features": { "Validation": { diff --git a/aspnet-core/database/ApiGateway-Init-SqlServer.sql b/aspnet-core/database/ApiGateway-Init-SqlServer.sql index d08787fb9..fe834dc4b 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: 14/03/2021 08:56:39 + Date: 29/03/2021 21:22:42 */ @@ -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'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'') +INSERT INTO [apigateway].[appapigatewayaggregate] VALUES (N'5', N'{}', N'90044e20fde546bab1bdd45999f8208a', 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,localization-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'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'') +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''), (N'191', N'1371705034307375104', N'', N''), (N'192', N'1376442078396276736', N'', N''), (N'193', N'1376442309850554368', N'', N''), (N'194', N'1376442440536678400', N'', N''), (N'195', N'1376442557943635968', N'', N''), (N'196', N'1376442689674141696', N'', N''), (N'197', N'1376442971032248320', N'', N''), (N'198', N'1376443123021242368', N'', N''), (N'199', N'1376443238851141632', N'', N''), (N'200', N'1376443392249421824', N'', N''), (N'201', N'1376443586777047040', N'', N''), (N'202', N'1376467826087682048', N'', N''), (N'203', N'1376467990894469120', N'', N''), (N'204', N'1376468110214029312', 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'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') +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'), (N'194', NULL, N'1371705034307375104', N'', N'', N'0'), (N'195', NULL, N'1376442078396276736', N'', N'', N'0'), (N'196', NULL, N'1376442309850554368', N'', N'', N'0'), (N'197', NULL, N'1376442440536678400', N'', N'', N'0'), (N'198', NULL, N'1376442557943635968', N'', N'', N'0'), (N'199', NULL, N'1376442689674141696', N'', N'', N'0'), (N'200', NULL, N'1376442971032248320', N'', N'', N'0'), (N'201', NULL, N'1376443123021242368', N'', N'', N'0'), (N'202', NULL, N'1376443238851141632', N'', N'', N'0'), (N'203', NULL, N'1376443392249421824', N'', N'', N'0'), (N'204', NULL, N'1376443586777047040', N'', N'', N'0'), (N'205', NULL, N'1376467826087682048', N'', N'', N'0'), (N'206', NULL, N'1376467990894469120', N'', N'', N'0'), (N'207', NULL, N'1376468110214029312', 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'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'') +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''), (N'191', N'1371705034307375104', N'0', N''), (N'192', N'1376442078396276736', NULL, NULL), (N'193', N'1376442309850554368', N'0', N''), (N'194', N'1376442440536678400', N'0', N''), (N'195', N'1376442557943635968', N'0', N''), (N'196', N'1376442689674141696', N'0', N''), (N'197', N'1376442971032248320', N'0', N''), (N'198', N'1376443123021242368', N'0', N''), (N'199', N'1376443238851141632', N'0', N''), (N'200', N'1376443392249421824', N'0', N''), (N'201', N'1376443586777047040', N'0', N''), (N'202', N'1376467826087682048', N'0', N''), (N'203', N'1376467990894469120', N'0', N''), (N'204', N'1376468110214029312', 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'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') +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'), (N'194', NULL, N'1371705034307375104', N'0', N'0', N'0', N'0', N'0'), (N'195', NULL, N'1376442078396276736', N'0', N'0', N'0', N'0', N'0'), (N'196', NULL, N'1376442309850554368', N'0', N'0', N'0', N'0', N'0'), (N'197', NULL, N'1376442440536678400', N'0', N'0', N'0', N'0', N'0'), (N'198', NULL, N'1376442557943635968', N'0', N'0', N'0', N'0', N'0'), (N'199', NULL, N'1376442689674141696', N'0', N'0', N'0', N'0', N'0'), (N'200', NULL, N'1376442971032248320', N'0', N'0', N'0', N'0', N'0'), (N'201', NULL, N'1376443123021242368', N'0', N'0', N'0', N'0', N'0'), (N'202', NULL, N'1376443238851141632', N'0', N'0', N'0', N'0', N'0'), (N'203', NULL, N'1376443392249421824', N'0', N'0', N'0', N'0', N'0'), (N'204', NULL, N'1376443586777047040', N'0', N'0', N'0', N'0', N'0'), (N'205', NULL, N'1376467826087682048', N'0', N'0', N'0', N'0', N'0'), (N'206', NULL, N'1376467990894469120', N'0', N'0', N'0', N'0', N'0'), (N'207', NULL, N'1376468110214029312', 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'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') +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'), (N'194', NULL, N'1371705034307375104', N'50', N'60000', N'30000'), (N'195', NULL, N'1376442078396276736', N'50', N'60000', N'30000'), (N'196', NULL, N'1376442309850554368', N'50', N'60000', N'30000'), (N'197', NULL, N'1376442440536678400', N'50', N'60000', N'30000'), (N'198', NULL, N'1376442557943635968', N'50', N'60000', N'30000'), (N'199', NULL, N'1376442689674141696', N'50', N'60000', N'30000'), (N'200', NULL, N'1376442971032248320', N'50', N'60000', N'30000'), (N'201', NULL, N'1376443123021242368', N'50', N'60000', N'30000'), (N'202', NULL, N'1376443238851141632', N'50', N'60000', N'30000'), (N'203', NULL, N'1376443392249421824', N'50', N'60000', N'30000'), (N'204', NULL, N'1376443586777047040', N'50', N'60000', N'30000'), (N'205', NULL, N'1376467826087682048', N'50', N'60000', N'30000'), (N'206', NULL, N'1376467990894469120', N'50', N'60000', N'30000'), (N'207', NULL, N'1376468110214029312', 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'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) +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), (N'191', N'1371705034307375104', NULL, N'', N'0', NULL, NULL, NULL), (N'192', N'1376442078396276736', NULL, N'', N'0', NULL, NULL, NULL), (N'193', N'1376442309850554368', NULL, N'', N'0', NULL, NULL, NULL), (N'194', N'1376442440536678400', NULL, N'', N'0', NULL, NULL, NULL), (N'195', N'1376442557943635968', NULL, N'', N'0', NULL, NULL, NULL), (N'196', N'1376442689674141696', NULL, N'', N'0', NULL, NULL, NULL), (N'197', N'1376442971032248320', NULL, N'', N'0', NULL, NULL, NULL), (N'198', N'1376443123021242368', NULL, N'', N'0', NULL, NULL, NULL), (N'199', N'1376443238851141632', NULL, N'', N'0', NULL, NULL, NULL), (N'200', N'1376443392249421824', NULL, N'', N'0', NULL, NULL, NULL), (N'201', N'1376443586777047040', NULL, N'', N'0', NULL, NULL, NULL), (N'202', N'1376467826087682048', NULL, N'', N'0', NULL, NULL, NULL), (N'203', N'1376467990894469120', NULL, N'', N'0', NULL, NULL, NULL), (N'204', N'1376468110214029312', 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'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/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') +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/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'), (N'198', N'{}', N'3ff4788f62744b27bc30f7247fb76b08', N'1371705034307375104', N'【Oss对象存储】- 静态文件', N'/api/files/static/{everything}', N'', N'', N'/api/files/static/{everything}', 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'199', N'{}', N'2203b1db040942a3bbe1ed86b57a8501', N'1376442078396276736', N'【本地化管理】- 接口代理', N'/api/abp/api-definition', N'', N'', N'/api/abp/localization/api-definition', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30030,', N'', N'', N'localization-api-definition', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'200', N'{}', N'67206f8a85d94666a0c707697e706742', N'1376442309850554368', N'【本地化管理】- 资源管理', N'/api/localization/resources', N'', N'', N'/api/localization/resources', N'POST,GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30030,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'201', N'{}', N'055929710e414c5e97fc9168a1c25182', N'1376442440536678400', N'【本地化管理】- 管理单个资源', N'/api/localization/resources/{id}', N'', N'', N'/api/localization/resources/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30030,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'202', N'{}', N'c314a94d515045a4a27763aa5d3631de', N'1376442557943635968', N'【本地化管理】- 获取所有资源', N'/api/localization/resources/all', N'', N'', N'/api/localization/resources/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30030,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'203', N'{}', N'67fb0a90132c4a02b7ff44f82bf9fd13', N'1376442689674141696', N'【本地化管理】- 语言管理', N'/api/localization/languages', N'', N'', N'/api/localization/languages', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30030,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'204', N'{}', N'c6fab01d2b37434886f07bb601c36599', N'1376442971032248320', N'【本地化管理】- 管理单个语言', N'/api/localization/languages/{id}', N'', N'', N'/api/localization/languages/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30030,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'205', N'{}', N'074c20491b294a068fbb1df7874d0d4d', N'1376443123021242368', N'【本地化管理】- 获取所有语言', N'/api/localization/languages/all', N'', N'', N'/api/localization/languages/all', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30030,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'206', N'{}', N'75e48367d8f14ef99541abdb86d30b96', N'1376443238851141632', N'【本地化管理】- 文档管理', N'/api/localization/texts', N'', N'', N'/api/localization/texts', N'GET,POST,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30030,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'207', N'{}', N'5f8d7d88a97f4ff7b3bdb6fb105d527e', N'1376443392249421824', N'【本地化管理】- 管理单个文档', N'/api/localization/texts/{id}', N'', N'', N'/api/localization/texts/{id}', N'GET,PUT,DELETE,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30030,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'208', N'{}', N'35f470892bf04571ab49efadb2cb1eb5', N'1376443586777047040', N'【本地化管理】- 通过文化名称查询文档', N'/api/localization/texts/by-culture-key', N'', N'', N'/api/localization/texts/by-culture-key', N'GET,', N'', N'', N'', N'', N'', N'', N'', N'1', N'', N'', N'HTTP', N'127.0.0.1:30030,', N'', N'', N'', N'0', N'30000', N'1', N'', N'TEST-APP'), (N'209', N'{}', N'72073c75c2fa4e1db162c7a74004558f', N'1376467826087682048', N'【身份认证服务】- 发送登录验证码', N'/api/account/phone/send-signin-code', N'', N'', N'/api/account/phone/send-signin-code', 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'210', N'{}', N'e8e2f943dd56456f8f5dd957dd30e8b9', N'1376467990894469120', N'【身份认证服务】- 发送重置密码短信', N'/api/account/phone/send-password-reset-code', N'', N'', N'/api/account/phone/send-password-reset-code', 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'211', N'{}', N'89fd6b8a830d457f9d1d43263c7074b4', N'1376468110214029312', N'【身份认证服务】- 发送注册短信', N'/api/account/phone/send-register-code', N'', N'', N'/api/account/phone/send-register-code', 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') 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'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'') +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''), (N'191', N'1371705034307375104', N'', N''), (N'192', N'1376442078396276736', N'', N''), (N'193', N'1376442309850554368', N'', N''), (N'194', N'1376442440536678400', N'', N''), (N'195', N'1376442557943635968', N'', N''), (N'196', N'1376442689674141696', N'', N''), (N'197', N'1376442971032248320', N'', N''), (N'198', N'1376443123021242368', N'', N''), (N'199', N'1376443238851141632', N'', N''), (N'200', N'1376443392249421824', N'', N''), (N'201', N'1376443586777047040', N'', N''), (N'202', N'1376467826087682048', N'', N''), (N'203', N'1376467990894469120', N'', N''), (N'204', N'1376468110214029312', N'', N'') GO COMMIT @@ -583,6 +583,19 @@ CREATE TABLE [apigateway].[cap.published] ( GO +-- ---------------------------- +-- Records of cap.published +-- ---------------------------- +BEGIN TRANSACTION +GO + +INSERT INTO [apigateway].[cap.published] VALUES (N'1376442080048832512', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-abp-user-id":"bf289dbb-838e-a89b-c622-39f51dcc4f43","cap-abp-client-id":"vue-admin-element","cap-abp-tenant-id":"","cap-msg-id":"1376442080048832512","cap-corr-id":"1376442080048832512","cap-corr-seq":"0","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2021/3/29 下午3:52:19 +08:00"},"Value":{"DateTime":"2021-03-29T15:52:19.593051+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2021-03-29 15:52:20', N'2021-03-30 15:52:20', N'Succeeded'), (N'1376442309972189184', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-abp-user-id":"bf289dbb-838e-a89b-c622-39f51dcc4f43","cap-abp-client-id":"vue-admin-element","cap-abp-tenant-id":"","cap-msg-id":"1376442309972189184","cap-corr-id":"1376442309972189184","cap-corr-seq":"0","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2021/3/29 下午3:53:14 +08:00"},"Value":{"DateTime":"2021-03-29T15:53:14.4154232+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2021-03-29 15:53:14', N'2021-03-30 15:53:14', N'Succeeded'), (N'1376442440738004992', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-abp-user-id":"bf289dbb-838e-a89b-c622-39f51dcc4f43","cap-abp-client-id":"vue-admin-element","cap-abp-tenant-id":"","cap-msg-id":"1376442440738004992","cap-corr-id":"1376442440738004992","cap-corr-seq":"0","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2021/3/29 下午3:53:45 +08:00"},"Value":{"DateTime":"2021-03-29T15:53:45.5924626+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2021-03-29 15:53:46', N'2021-03-30 15:53:46', N'Succeeded'), (N'1376442558023327744', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-abp-user-id":"bf289dbb-838e-a89b-c622-39f51dcc4f43","cap-abp-client-id":"vue-admin-element","cap-abp-tenant-id":"","cap-msg-id":"1376442558023327744","cap-corr-id":"1376442558023327744","cap-corr-seq":"0","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2021/3/29 下午3:54:13 +08:00"},"Value":{"DateTime":"2021-03-29T15:54:13.5549538+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2021-03-29 15:54:14', N'2021-03-30 15:54:14', N'Succeeded'), (N'1376442689783193600', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-abp-user-id":"bf289dbb-838e-a89b-c622-39f51dcc4f43","cap-abp-client-id":"vue-admin-element","cap-abp-tenant-id":"","cap-msg-id":"1376442689783193600","cap-corr-id":"1376442689783193600","cap-corr-seq":"0","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2021/3/29 下午3:54:44 +08:00"},"Value":{"DateTime":"2021-03-29T15:54:44.9636224+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2021-03-29 15:54:45', N'2021-03-30 15:54:45', N'Succeeded'), (N'1376442971116134400', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-abp-user-id":"bf289dbb-838e-a89b-c622-39f51dcc4f43","cap-abp-client-id":"vue-admin-element","cap-abp-tenant-id":"","cap-msg-id":"1376442971116134400","cap-corr-id":"1376442971116134400","cap-corr-seq":"0","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2021/3/29 下午3:55:52 +08:00"},"Value":{"DateTime":"2021-03-29T15:55:52.0442879+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2021-03-29 15:55:52', N'2021-03-30 15:55:52', N'Succeeded'), (N'1376443123109322752', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-abp-user-id":"bf289dbb-838e-a89b-c622-39f51dcc4f43","cap-abp-client-id":"vue-admin-element","cap-abp-tenant-id":"","cap-msg-id":"1376443123109322752","cap-corr-id":"1376443123109322752","cap-corr-seq":"0","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2021/3/29 下午3:56:28 +08:00"},"Value":{"DateTime":"2021-03-29T15:56:28.2817305+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2021-03-29 15:56:28', N'2021-03-30 15:56:28', N'Succeeded'), (N'1376443238922444800', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-abp-user-id":"bf289dbb-838e-a89b-c622-39f51dcc4f43","cap-abp-client-id":"vue-admin-element","cap-abp-tenant-id":"","cap-msg-id":"1376443238922444800","cap-corr-id":"1376443238922444800","cap-corr-seq":"0","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2021/3/29 下午3:56:55 +08:00"},"Value":{"DateTime":"2021-03-29T15:56:55.8946549+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2021-03-29 15:56:56', N'2021-03-30 15:56:56', N'Succeeded'), (N'1376443392333307904', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-abp-user-id":"bf289dbb-838e-a89b-c622-39f51dcc4f43","cap-abp-client-id":"vue-admin-element","cap-abp-tenant-id":"","cap-msg-id":"1376443392333307904","cap-corr-id":"1376443392333307904","cap-corr-seq":"0","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2021/3/29 下午3:57:32 +08:00"},"Value":{"DateTime":"2021-03-29T15:57:32.4706372+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2021-03-29 15:57:32', N'2021-03-30 15:57:32', N'Succeeded'), (N'1376443586886098944', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-abp-user-id":"bf289dbb-838e-a89b-c622-39f51dcc4f43","cap-abp-client-id":"vue-admin-element","cap-abp-tenant-id":"","cap-msg-id":"1376443586886098944","cap-corr-id":"1376443586886098944","cap-corr-seq":"0","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2021/3/29 下午3:58:18 +08:00"},"Value":{"DateTime":"2021-03-29T15:58:18.8481239+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2021-03-29 15:58:19', N'2021-03-30 15:58:19', N'Succeeded'), (N'1376467826179956736', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-abp-user-id":"bf289dbb-838e-a89b-c622-39f51dcc4f43","cap-abp-client-id":"vue-admin-element","cap-abp-tenant-id":"","cap-msg-id":"1376467826179956736","cap-corr-id":"1376467826179956736","cap-corr-seq":"0","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2021/3/29 下午5:34:37 +08:00"},"Value":{"DateTime":"2021-03-29T17:34:37.9529723+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2021-03-29 17:34:38', N'2021-03-30 17:34:38', N'Succeeded'), (N'1376467990969966592', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-abp-user-id":"bf289dbb-838e-a89b-c622-39f51dcc4f43","cap-abp-client-id":"vue-admin-element","cap-abp-tenant-id":"","cap-msg-id":"1376467990969966592","cap-corr-id":"1376467990969966592","cap-corr-seq":"0","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2021/3/29 下午5:35:17 +08:00"},"Value":{"DateTime":"2021-03-29T17:35:17.2420976+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2021-03-29 17:35:17', N'2021-03-30 17:35:17', N'Succeeded'), (N'1376468110281138176', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-abp-user-id":"bf289dbb-838e-a89b-c622-39f51dcc4f43","cap-abp-client-id":"vue-admin-element","cap-abp-tenant-id":"","cap-msg-id":"1376468110281138176","cap-corr-id":"1376468110281138176","cap-corr-seq":"0","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2021/3/29 下午5:35:45 +08:00"},"Value":{"DateTime":"2021-03-29T17:35:45.6880229+08:00","AppId":"TEST-APP","Method":"Create","Object":"ReRoute"}}', N'0', N'2021-03-29 17:35:46', N'2021-03-30 17:35:46', N'Succeeded'), (N'1376516577204494336', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-abp-user-id":"bf289dbb-838e-a89b-c622-39f51dcc4f43","cap-abp-client-id":"vue-admin-element","cap-abp-tenant-id":"","cap-msg-id":"1376516577204494336","cap-corr-id":"1376516577204494336","cap-corr-seq":"0","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2021/3/29 下午8:48:21 +08:00"},"Value":{"DateTime":"2021-03-29T20:48:21.103384+08:00","AppId":"TEST-APP","Method":"Modify","Object":"ReRoute"}}', N'0', N'2021-03-29 20:48:21', N'2021-03-30 20:48:21', N'Succeeded'), (N'1376516622045798400', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-abp-user-id":"bf289dbb-838e-a89b-c622-39f51dcc4f43","cap-abp-client-id":"vue-admin-element","cap-abp-tenant-id":"","cap-msg-id":"1376516622045798400","cap-corr-id":"1376516622045798400","cap-corr-seq":"0","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2021/3/29 下午8:48:31 +08:00"},"Value":{"DateTime":"2021-03-29T20:48:31.7941785+08:00","AppId":"TEST-APP","Method":"Update","Object":"AggregateRoute"}}', N'0', N'2021-03-29 20:48:32', N'2021-03-30 20:48:32', N'Succeeded'), (N'1376516635597594624', N'v1', N'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', N'{"Headers":{"cap-abp-user-id":"bf289dbb-838e-a89b-c622-39f51dcc4f43","cap-abp-client-id":"vue-admin-element","cap-abp-tenant-id":"","cap-msg-id":"1376516635597594624","cap-corr-id":"1376516635597594624","cap-corr-seq":"0","cap-msg-name":"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData","cap-msg-type":"Object","cap-senttime":"2021/3/29 下午8:48:35 +08:00"},"Value":{"DateTime":"2021-03-29T20:48:35.0253124+08:00","AppId":"TEST-APP","Method":"Update","Object":"AggregateRoute"}}', N'0', N'2021-03-29 20:48:35', N'2021-03-30 20:48:35', 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 4ff7e1e11..51a46c58a 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: 14/03/2021 08:56:20 + Date: 29/03/2021 21:22:25 */ SET NAMES utf8mb4; @@ -54,12 +54,12 @@ CREATE TABLE `appapigatewayaggregate` ( `Priority` int(0) NULL DEFAULT NULL, `UpstreamHttpMethod` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, PRIMARY KEY (`Id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of 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 (5, '{}', '90044e20fde546bab1bdd45999f8208a', 'TEST-APP', 'abp接口代理服务', 1263083077348196352, 'platform-api-definition,backend-admin-api-definition,messages-api-definition,apigateway-api-definition,identity-server-api-definition,localization-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, '{}', 'c65227b8a0e143b2a0b6186ffde3dfc1', 'TEST-APP', '全局设置', 1329708867127799808, 'setting-global,wechat-setting-global,aliyun-setting-global,oss-management-global,', '/api/setting-management/settings/by-global', '', 1, 'AbpApiDefinitionAggregator', NULL, ''); @@ -79,7 +79,7 @@ CREATE TABLE `appapigatewayaggregateconfig` ( PRIMARY KEY (`Id`) USING BTREE, INDEX `IX_AppApiGatewayAggregateConfig_AggregateReRouteId`(`AggregateReRouteId`) USING BTREE, CONSTRAINT `FK_AppApiGatewayAggregateConfig_AppApiGatewayAggregate_Aggregat~` FOREIGN KEY (`AggregateReRouteId`) REFERENCES `appapigatewayaggregate` (`Id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for appapigatewayauthoptions @@ -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 = 190 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 205 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewayauthoptions @@ -246,6 +246,20 @@ INSERT INTO `appapigatewayauthoptions` VALUES (187, 1368856927887581184, '', '') INSERT INTO `appapigatewayauthoptions` VALUES (188, 1368857128383700992, '', ''); INSERT INTO `appapigatewayauthoptions` VALUES (189, 1369560306297233408, '', ''); INSERT INTO `appapigatewayauthoptions` VALUES (190, 1369560450472239104, '', ''); +INSERT INTO `appapigatewayauthoptions` VALUES (191, 1371705034307375104, '', ''); +INSERT INTO `appapigatewayauthoptions` VALUES (192, 1376442078396276736, '', ''); +INSERT INTO `appapigatewayauthoptions` VALUES (193, 1376442309850554368, '', ''); +INSERT INTO `appapigatewayauthoptions` VALUES (194, 1376442440536678400, '', ''); +INSERT INTO `appapigatewayauthoptions` VALUES (195, 1376442557943635968, '', ''); +INSERT INTO `appapigatewayauthoptions` VALUES (196, 1376442689674141696, '', ''); +INSERT INTO `appapigatewayauthoptions` VALUES (197, 1376442971032248320, '', ''); +INSERT INTO `appapigatewayauthoptions` VALUES (198, 1376443123021242368, '', ''); +INSERT INTO `appapigatewayauthoptions` VALUES (199, 1376443238851141632, '', ''); +INSERT INTO `appapigatewayauthoptions` VALUES (200, 1376443392249421824, '', ''); +INSERT INTO `appapigatewayauthoptions` VALUES (201, 1376443586777047040, '', ''); +INSERT INTO `appapigatewayauthoptions` VALUES (202, 1376467826087682048, '', ''); +INSERT INTO `appapigatewayauthoptions` VALUES (203, 1376467990894469120, '', ''); +INSERT INTO `appapigatewayauthoptions` VALUES (204, 1376468110214029312, '', ''); -- ---------------------------- -- Table structure for appapigatewaybalanceroptions @@ -263,7 +277,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 = 193 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 208 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewaybalanceroptions @@ -417,6 +431,20 @@ INSERT INTO `appapigatewaybalanceroptions` VALUES (190, NULL, 136885692788758118 INSERT INTO `appapigatewaybalanceroptions` VALUES (191, NULL, 1368857128383700992, '', '', 0); INSERT INTO `appapigatewaybalanceroptions` VALUES (192, NULL, 1369560306297233408, '', '', 0); INSERT INTO `appapigatewaybalanceroptions` VALUES (193, NULL, 1369560450472239104, '', '', 0); +INSERT INTO `appapigatewaybalanceroptions` VALUES (194, NULL, 1371705034307375104, '', '', 0); +INSERT INTO `appapigatewaybalanceroptions` VALUES (195, NULL, 1376442078396276736, '', '', 0); +INSERT INTO `appapigatewaybalanceroptions` VALUES (196, NULL, 1376442309850554368, '', '', 0); +INSERT INTO `appapigatewaybalanceroptions` VALUES (197, NULL, 1376442440536678400, '', '', 0); +INSERT INTO `appapigatewaybalanceroptions` VALUES (198, NULL, 1376442557943635968, '', '', 0); +INSERT INTO `appapigatewaybalanceroptions` VALUES (199, NULL, 1376442689674141696, '', '', 0); +INSERT INTO `appapigatewaybalanceroptions` VALUES (200, NULL, 1376442971032248320, '', '', 0); +INSERT INTO `appapigatewaybalanceroptions` VALUES (201, NULL, 1376443123021242368, '', '', 0); +INSERT INTO `appapigatewaybalanceroptions` VALUES (202, NULL, 1376443238851141632, '', '', 0); +INSERT INTO `appapigatewaybalanceroptions` VALUES (203, NULL, 1376443392249421824, '', '', 0); +INSERT INTO `appapigatewaybalanceroptions` VALUES (204, NULL, 1376443586777047040, '', '', 0); +INSERT INTO `appapigatewaybalanceroptions` VALUES (205, NULL, 1376467826087682048, '', '', 0); +INSERT INTO `appapigatewaybalanceroptions` VALUES (206, NULL, 1376467990894469120, '', '', 0); +INSERT INTO `appapigatewaybalanceroptions` VALUES (207, NULL, 1376468110214029312, '', '', 0); -- ---------------------------- -- Table structure for appapigatewaycacheoptions @@ -430,7 +458,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 = 190 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 205 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewaycacheoptions @@ -583,6 +611,20 @@ INSERT INTO `appapigatewaycacheoptions` VALUES (187, 1368856927887581184, NULL, INSERT INTO `appapigatewaycacheoptions` VALUES (188, 1368857128383700992, 0, ''); INSERT INTO `appapigatewaycacheoptions` VALUES (189, 1369560306297233408, 0, ''); INSERT INTO `appapigatewaycacheoptions` VALUES (190, 1369560450472239104, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (191, 1371705034307375104, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (192, 1376442078396276736, NULL, NULL); +INSERT INTO `appapigatewaycacheoptions` VALUES (193, 1376442309850554368, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (194, 1376442440536678400, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (195, 1376442557943635968, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (196, 1376442689674141696, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (197, 1376442971032248320, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (198, 1376443123021242368, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (199, 1376443238851141632, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (200, 1376443392249421824, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (201, 1376443586777047040, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (202, 1376467826087682048, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (203, 1376467990894469120, 0, ''); +INSERT INTO `appapigatewaycacheoptions` VALUES (204, 1376468110214029312, 0, ''); -- ---------------------------- -- Table structure for appapigatewaydiscovery @@ -602,7 +644,7 @@ CREATE TABLE `appapigatewaydiscovery` ( PRIMARY KEY (`Id`) USING BTREE, UNIQUE INDEX `IX_AppApiGatewayDiscovery_ItemId`(`ItemId`) USING BTREE, CONSTRAINT `FK_AppApiGatewayDiscovery_AppApiGatewayGlobalConfiguration_Item~` FOREIGN KEY (`ItemId`) REFERENCES `appapigatewayglobalconfiguration` (`ItemId`) ON DELETE CASCADE ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewaydiscovery @@ -623,7 +665,7 @@ CREATE TABLE `appapigatewaydynamicreroute` ( `AppId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, PRIMARY KEY (`Id`) USING BTREE, UNIQUE INDEX `AK_AppApiGatewayDynamicReRoute_DynamicReRouteId`(`DynamicReRouteId`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for appapigatewayglobalconfiguration @@ -643,7 +685,7 @@ CREATE TABLE `appapigatewayglobalconfiguration` ( `AppId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, PRIMARY KEY (`Id`) USING BTREE, UNIQUE INDEX `AK_AppApiGatewayGlobalConfiguration_ItemId`(`ItemId`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewayglobalconfiguration @@ -692,7 +734,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 = 193 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 208 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewayhttpoptions @@ -846,6 +888,20 @@ INSERT INTO `appapigatewayhttpoptions` VALUES (190, NULL, 1368856927887581184, 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); +INSERT INTO `appapigatewayhttpoptions` VALUES (194, NULL, 1371705034307375104, 0, 0, 0, 0, 0); +INSERT INTO `appapigatewayhttpoptions` VALUES (195, NULL, 1376442078396276736, 0, 0, 0, 0, 0); +INSERT INTO `appapigatewayhttpoptions` VALUES (196, NULL, 1376442309850554368, 0, 0, 0, 0, 0); +INSERT INTO `appapigatewayhttpoptions` VALUES (197, NULL, 1376442440536678400, 0, 0, 0, 0, 0); +INSERT INTO `appapigatewayhttpoptions` VALUES (198, NULL, 1376442557943635968, 0, 0, 0, 0, 0); +INSERT INTO `appapigatewayhttpoptions` VALUES (199, NULL, 1376442689674141696, 0, 0, 0, 0, 0); +INSERT INTO `appapigatewayhttpoptions` VALUES (200, NULL, 1376442971032248320, 0, 0, 0, 0, 0); +INSERT INTO `appapigatewayhttpoptions` VALUES (201, NULL, 1376443123021242368, 0, 0, 0, 0, 0); +INSERT INTO `appapigatewayhttpoptions` VALUES (202, NULL, 1376443238851141632, 0, 0, 0, 0, 0); +INSERT INTO `appapigatewayhttpoptions` VALUES (203, NULL, 1376443392249421824, 0, 0, 0, 0, 0); +INSERT INTO `appapigatewayhttpoptions` VALUES (204, NULL, 1376443586777047040, 0, 0, 0, 0, 0); +INSERT INTO `appapigatewayhttpoptions` VALUES (205, NULL, 1376467826087682048, 0, 0, 0, 0, 0); +INSERT INTO `appapigatewayhttpoptions` VALUES (206, NULL, 1376467990894469120, 0, 0, 0, 0, 0); +INSERT INTO `appapigatewayhttpoptions` VALUES (207, NULL, 1376468110214029312, 0, 0, 0, 0, 0); -- ---------------------------- -- Table structure for appapigatewayqosoptions @@ -863,7 +919,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 = 193 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 208 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewayqosoptions @@ -1017,6 +1073,20 @@ INSERT INTO `appapigatewayqosoptions` VALUES (190, NULL, 1368856927887581184, 50 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); +INSERT INTO `appapigatewayqosoptions` VALUES (194, NULL, 1371705034307375104, 50, 60000, 30000); +INSERT INTO `appapigatewayqosoptions` VALUES (195, NULL, 1376442078396276736, 50, 60000, 30000); +INSERT INTO `appapigatewayqosoptions` VALUES (196, NULL, 1376442309850554368, 50, 60000, 30000); +INSERT INTO `appapigatewayqosoptions` VALUES (197, NULL, 1376442440536678400, 50, 60000, 30000); +INSERT INTO `appapigatewayqosoptions` VALUES (198, NULL, 1376442557943635968, 50, 60000, 30000); +INSERT INTO `appapigatewayqosoptions` VALUES (199, NULL, 1376442689674141696, 50, 60000, 30000); +INSERT INTO `appapigatewayqosoptions` VALUES (200, NULL, 1376442971032248320, 50, 60000, 30000); +INSERT INTO `appapigatewayqosoptions` VALUES (201, NULL, 1376443123021242368, 50, 60000, 30000); +INSERT INTO `appapigatewayqosoptions` VALUES (202, NULL, 1376443238851141632, 50, 60000, 30000); +INSERT INTO `appapigatewayqosoptions` VALUES (203, NULL, 1376443392249421824, 50, 60000, 30000); +INSERT INTO `appapigatewayqosoptions` VALUES (204, NULL, 1376443586777047040, 50, 60000, 30000); +INSERT INTO `appapigatewayqosoptions` VALUES (205, NULL, 1376467826087682048, 50, 60000, 30000); +INSERT INTO `appapigatewayqosoptions` VALUES (206, NULL, 1376467990894469120, 50, 60000, 30000); +INSERT INTO `appapigatewayqosoptions` VALUES (207, NULL, 1376468110214029312, 50, 60000, 30000); -- ---------------------------- -- Table structure for appapigatewayratelimitoptions @@ -1033,7 +1103,7 @@ CREATE TABLE `appapigatewayratelimitoptions` ( PRIMARY KEY (`Id`) USING BTREE, UNIQUE INDEX `IX_AppApiGatewayRateLimitOptions_ItemId`(`ItemId`) USING BTREE, CONSTRAINT `FK_AppApiGatewayRateLimitOptions_AppApiGatewayGlobalConfigurati~` FOREIGN KEY (`ItemId`) REFERENCES `appapigatewayglobalconfiguration` (`ItemId`) ON DELETE CASCADE ON UPDATE RESTRICT -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewayratelimitoptions @@ -1058,7 +1128,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 = 190 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 205 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewayratelimitrule @@ -1211,6 +1281,20 @@ INSERT INTO `appapigatewayratelimitrule` VALUES (187, 1368856927887581184, 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); +INSERT INTO `appapigatewayratelimitrule` VALUES (191, 1371705034307375104, NULL, '', 0, NULL, NULL, NULL); +INSERT INTO `appapigatewayratelimitrule` VALUES (192, 1376442078396276736, NULL, '', 0, NULL, NULL, NULL); +INSERT INTO `appapigatewayratelimitrule` VALUES (193, 1376442309850554368, NULL, '', 0, NULL, NULL, NULL); +INSERT INTO `appapigatewayratelimitrule` VALUES (194, 1376442440536678400, NULL, '', 0, NULL, NULL, NULL); +INSERT INTO `appapigatewayratelimitrule` VALUES (195, 1376442557943635968, NULL, '', 0, NULL, NULL, NULL); +INSERT INTO `appapigatewayratelimitrule` VALUES (196, 1376442689674141696, NULL, '', 0, NULL, NULL, NULL); +INSERT INTO `appapigatewayratelimitrule` VALUES (197, 1376442971032248320, NULL, '', 0, NULL, NULL, NULL); +INSERT INTO `appapigatewayratelimitrule` VALUES (198, 1376443123021242368, NULL, '', 0, NULL, NULL, NULL); +INSERT INTO `appapigatewayratelimitrule` VALUES (199, 1376443238851141632, NULL, '', 0, NULL, NULL, NULL); +INSERT INTO `appapigatewayratelimitrule` VALUES (200, 1376443392249421824, NULL, '', 0, NULL, NULL, NULL); +INSERT INTO `appapigatewayratelimitrule` VALUES (201, 1376443586777047040, NULL, '', 0, NULL, NULL, NULL); +INSERT INTO `appapigatewayratelimitrule` VALUES (202, 1376467826087682048, NULL, '', 0, NULL, NULL, NULL); +INSERT INTO `appapigatewayratelimitrule` VALUES (203, 1376467990894469120, NULL, '', 0, NULL, NULL, NULL); +INSERT INTO `appapigatewayratelimitrule` VALUES (204, 1376468110214029312, NULL, '', 0, NULL, NULL, NULL); -- ---------------------------- -- Table structure for appapigatewayreroute @@ -1250,7 +1334,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 = 197 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 212 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewayreroute @@ -1403,6 +1487,20 @@ INSERT INTO `appapigatewayreroute` VALUES (194, '{}', '6c1a0f98129d418cba55a52db INSERT INTO `appapigatewayreroute` VALUES (195, '{}', 'de285bf4b6114032a45d5611ea8e3101', 1368857128383700992, '【Oss对象存储】- 静态文件管理', '/api/files/static/{everything}', '', '', '/api/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'); +INSERT INTO `appapigatewayreroute` VALUES (198, '{}', '3ff4788f62744b27bc30f7247fb76b08', 1371705034307375104, '【Oss对象存储】- 静态文件', '/api/files/static/{everything}', '', '', '/api/files/static/{everything}', 'GET,POST,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30025,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (199, '{}', '2203b1db040942a3bbe1ed86b57a8501', 1376442078396276736, '【本地化管理】- 接口代理', '/api/abp/api-definition', '', '', '/api/abp/localization/api-definition', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30030,', '', '', 'localization-api-definition', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (200, '{}', '67206f8a85d94666a0c707697e706742', 1376442309850554368, '【本地化管理】- 资源管理', '/api/localization/resources', '', '', '/api/localization/resources', 'POST,GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30030,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (201, '{}', '055929710e414c5e97fc9168a1c25182', 1376442440536678400, '【本地化管理】- 管理单个资源', '/api/localization/resources/{id}', '', '', '/api/localization/resources/{id}', 'GET,PUT,DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30030,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (202, '{}', 'c314a94d515045a4a27763aa5d3631de', 1376442557943635968, '【本地化管理】- 获取所有资源', '/api/localization/resources/all', '', '', '/api/localization/resources/all', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30030,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (203, '{}', '67fb0a90132c4a02b7ff44f82bf9fd13', 1376442689674141696, '【本地化管理】- 语言管理', '/api/localization/languages', '', '', '/api/localization/languages', 'GET,POST,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30030,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (204, '{}', 'c6fab01d2b37434886f07bb601c36599', 1376442971032248320, '【本地化管理】- 管理单个语言', '/api/localization/languages/{id}', '', '', '/api/localization/languages/{id}', 'GET,PUT,DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30030,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (205, '{}', '074c20491b294a068fbb1df7874d0d4d', 1376443123021242368, '【本地化管理】- 获取所有语言', '/api/localization/languages/all', '', '', '/api/localization/languages/all', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30030,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (206, '{}', '75e48367d8f14ef99541abdb86d30b96', 1376443238851141632, '【本地化管理】- 文档管理', '/api/localization/texts', '', '', '/api/localization/texts', 'GET,POST,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30030,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (207, '{}', '5f8d7d88a97f4ff7b3bdb6fb105d527e', 1376443392249421824, '【本地化管理】- 管理单个文档', '/api/localization/texts/{id}', '', '', '/api/localization/texts/{id}', 'GET,PUT,DELETE,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30030,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (208, '{}', '35f470892bf04571ab49efadb2cb1eb5', 1376443586777047040, '【本地化管理】- 通过文化名称查询文档', '/api/localization/texts/by-culture-key', '', '', '/api/localization/texts/by-culture-key', 'GET,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30030,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (209, '{}', '72073c75c2fa4e1db162c7a74004558f', 1376467826087682048, '【身份认证服务】- 发送登录验证码', '/api/account/phone/send-signin-code', '', '', '/api/account/phone/send-signin-code', 'POST,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (210, '{}', 'e8e2f943dd56456f8f5dd957dd30e8b9', 1376467990894469120, '【身份认证服务】- 发送重置密码短信', '/api/account/phone/send-password-reset-code', '', '', '/api/account/phone/send-password-reset-code', 'POST,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); +INSERT INTO `appapigatewayreroute` VALUES (211, '{}', '89fd6b8a830d457f9d1d43263c7074b4', 1376468110214029312, '【身份认证服务】- 发送注册短信', '/api/account/phone/send-register-code', '', '', '/api/account/phone/send-register-code', 'POST,', '', '', '', '', '', '', '', 1, '', '', 'HTTP', '127.0.0.1:30015,', '', '', '', 0, 30000, 1, '', 'TEST-APP'); -- ---------------------------- -- Table structure for appapigatewayroutegroup @@ -1446,7 +1544,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 = 190 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 205 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of appapigatewaysecurityoptions @@ -1599,6 +1697,20 @@ INSERT INTO `appapigatewaysecurityoptions` VALUES (187, 1368856927887581184, '', INSERT INTO `appapigatewaysecurityoptions` VALUES (188, 1368857128383700992, '', ''); INSERT INTO `appapigatewaysecurityoptions` VALUES (189, 1369560306297233408, '', ''); INSERT INTO `appapigatewaysecurityoptions` VALUES (190, 1369560450472239104, '', ''); +INSERT INTO `appapigatewaysecurityoptions` VALUES (191, 1371705034307375104, '', ''); +INSERT INTO `appapigatewaysecurityoptions` VALUES (192, 1376442078396276736, '', ''); +INSERT INTO `appapigatewaysecurityoptions` VALUES (193, 1376442309850554368, '', ''); +INSERT INTO `appapigatewaysecurityoptions` VALUES (194, 1376442440536678400, '', ''); +INSERT INTO `appapigatewaysecurityoptions` VALUES (195, 1376442557943635968, '', ''); +INSERT INTO `appapigatewaysecurityoptions` VALUES (196, 1376442689674141696, '', ''); +INSERT INTO `appapigatewaysecurityoptions` VALUES (197, 1376442971032248320, '', ''); +INSERT INTO `appapigatewaysecurityoptions` VALUES (198, 1376443123021242368, '', ''); +INSERT INTO `appapigatewaysecurityoptions` VALUES (199, 1376443238851141632, '', ''); +INSERT INTO `appapigatewaysecurityoptions` VALUES (200, 1376443392249421824, '', ''); +INSERT INTO `appapigatewaysecurityoptions` VALUES (201, 1376443586777047040, '', ''); +INSERT INTO `appapigatewaysecurityoptions` VALUES (202, 1376467826087682048, '', ''); +INSERT INTO `appapigatewaysecurityoptions` VALUES (203, 1376467990894469120, '', ''); +INSERT INTO `appapigatewaysecurityoptions` VALUES (204, 1376468110214029312, '', ''); -- ---------------------------- -- Table structure for cap.published @@ -1617,6 +1729,26 @@ 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 (1376442080048832512, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-abp-user-id\":\"bf289dbb-838e-a89b-c622-39f51dcc4f43\",\"cap-abp-client-id\":\"vue-admin-element\",\"cap-abp-tenant-id\":\"\",\"cap-msg-id\":\"1376442080048832512\",\"cap-corr-id\":\"1376442080048832512\",\"cap-corr-seq\":\"0\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2021/3/29 下午3:52:19 +08:00\"},\"Value\":{\"DateTime\":\"2021-03-29T15:52:19.593051+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2021-03-29 15:52:20', '2021-03-30 15:52:20', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1376442309972189184, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-abp-user-id\":\"bf289dbb-838e-a89b-c622-39f51dcc4f43\",\"cap-abp-client-id\":\"vue-admin-element\",\"cap-abp-tenant-id\":\"\",\"cap-msg-id\":\"1376442309972189184\",\"cap-corr-id\":\"1376442309972189184\",\"cap-corr-seq\":\"0\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2021/3/29 下午3:53:14 +08:00\"},\"Value\":{\"DateTime\":\"2021-03-29T15:53:14.4154232+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2021-03-29 15:53:14', '2021-03-30 15:53:14', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1376442440738004992, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-abp-user-id\":\"bf289dbb-838e-a89b-c622-39f51dcc4f43\",\"cap-abp-client-id\":\"vue-admin-element\",\"cap-abp-tenant-id\":\"\",\"cap-msg-id\":\"1376442440738004992\",\"cap-corr-id\":\"1376442440738004992\",\"cap-corr-seq\":\"0\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2021/3/29 下午3:53:45 +08:00\"},\"Value\":{\"DateTime\":\"2021-03-29T15:53:45.5924626+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2021-03-29 15:53:46', '2021-03-30 15:53:46', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1376442558023327744, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-abp-user-id\":\"bf289dbb-838e-a89b-c622-39f51dcc4f43\",\"cap-abp-client-id\":\"vue-admin-element\",\"cap-abp-tenant-id\":\"\",\"cap-msg-id\":\"1376442558023327744\",\"cap-corr-id\":\"1376442558023327744\",\"cap-corr-seq\":\"0\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2021/3/29 下午3:54:13 +08:00\"},\"Value\":{\"DateTime\":\"2021-03-29T15:54:13.5549538+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2021-03-29 15:54:14', '2021-03-30 15:54:14', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1376442689783193600, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-abp-user-id\":\"bf289dbb-838e-a89b-c622-39f51dcc4f43\",\"cap-abp-client-id\":\"vue-admin-element\",\"cap-abp-tenant-id\":\"\",\"cap-msg-id\":\"1376442689783193600\",\"cap-corr-id\":\"1376442689783193600\",\"cap-corr-seq\":\"0\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2021/3/29 下午3:54:44 +08:00\"},\"Value\":{\"DateTime\":\"2021-03-29T15:54:44.9636224+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2021-03-29 15:54:45', '2021-03-30 15:54:45', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1376442971116134400, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-abp-user-id\":\"bf289dbb-838e-a89b-c622-39f51dcc4f43\",\"cap-abp-client-id\":\"vue-admin-element\",\"cap-abp-tenant-id\":\"\",\"cap-msg-id\":\"1376442971116134400\",\"cap-corr-id\":\"1376442971116134400\",\"cap-corr-seq\":\"0\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2021/3/29 下午3:55:52 +08:00\"},\"Value\":{\"DateTime\":\"2021-03-29T15:55:52.0442879+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2021-03-29 15:55:52', '2021-03-30 15:55:52', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1376443123109322752, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-abp-user-id\":\"bf289dbb-838e-a89b-c622-39f51dcc4f43\",\"cap-abp-client-id\":\"vue-admin-element\",\"cap-abp-tenant-id\":\"\",\"cap-msg-id\":\"1376443123109322752\",\"cap-corr-id\":\"1376443123109322752\",\"cap-corr-seq\":\"0\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2021/3/29 下午3:56:28 +08:00\"},\"Value\":{\"DateTime\":\"2021-03-29T15:56:28.2817305+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2021-03-29 15:56:28', '2021-03-30 15:56:28', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1376443238922444800, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-abp-user-id\":\"bf289dbb-838e-a89b-c622-39f51dcc4f43\",\"cap-abp-client-id\":\"vue-admin-element\",\"cap-abp-tenant-id\":\"\",\"cap-msg-id\":\"1376443238922444800\",\"cap-corr-id\":\"1376443238922444800\",\"cap-corr-seq\":\"0\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2021/3/29 下午3:56:55 +08:00\"},\"Value\":{\"DateTime\":\"2021-03-29T15:56:55.8946549+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2021-03-29 15:56:56', '2021-03-30 15:56:56', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1376443392333307904, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-abp-user-id\":\"bf289dbb-838e-a89b-c622-39f51dcc4f43\",\"cap-abp-client-id\":\"vue-admin-element\",\"cap-abp-tenant-id\":\"\",\"cap-msg-id\":\"1376443392333307904\",\"cap-corr-id\":\"1376443392333307904\",\"cap-corr-seq\":\"0\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2021/3/29 下午3:57:32 +08:00\"},\"Value\":{\"DateTime\":\"2021-03-29T15:57:32.4706372+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2021-03-29 15:57:32', '2021-03-30 15:57:32', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1376443586886098944, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-abp-user-id\":\"bf289dbb-838e-a89b-c622-39f51dcc4f43\",\"cap-abp-client-id\":\"vue-admin-element\",\"cap-abp-tenant-id\":\"\",\"cap-msg-id\":\"1376443586886098944\",\"cap-corr-id\":\"1376443586886098944\",\"cap-corr-seq\":\"0\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2021/3/29 下午3:58:18 +08:00\"},\"Value\":{\"DateTime\":\"2021-03-29T15:58:18.8481239+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2021-03-29 15:58:19', '2021-03-30 15:58:19', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1376467826179956736, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-abp-user-id\":\"bf289dbb-838e-a89b-c622-39f51dcc4f43\",\"cap-abp-client-id\":\"vue-admin-element\",\"cap-abp-tenant-id\":\"\",\"cap-msg-id\":\"1376467826179956736\",\"cap-corr-id\":\"1376467826179956736\",\"cap-corr-seq\":\"0\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2021/3/29 下午5:34:37 +08:00\"},\"Value\":{\"DateTime\":\"2021-03-29T17:34:37.9529723+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2021-03-29 17:34:38', '2021-03-30 17:34:38', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1376467990969966592, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-abp-user-id\":\"bf289dbb-838e-a89b-c622-39f51dcc4f43\",\"cap-abp-client-id\":\"vue-admin-element\",\"cap-abp-tenant-id\":\"\",\"cap-msg-id\":\"1376467990969966592\",\"cap-corr-id\":\"1376467990969966592\",\"cap-corr-seq\":\"0\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2021/3/29 下午5:35:17 +08:00\"},\"Value\":{\"DateTime\":\"2021-03-29T17:35:17.2420976+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2021-03-29 17:35:17', '2021-03-30 17:35:17', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1376468110281138176, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-abp-user-id\":\"bf289dbb-838e-a89b-c622-39f51dcc4f43\",\"cap-abp-client-id\":\"vue-admin-element\",\"cap-abp-tenant-id\":\"\",\"cap-msg-id\":\"1376468110281138176\",\"cap-corr-id\":\"1376468110281138176\",\"cap-corr-seq\":\"0\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2021/3/29 下午5:35:45 +08:00\"},\"Value\":{\"DateTime\":\"2021-03-29T17:35:45.6880229+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Create\",\"Object\":\"ReRoute\"}}', 0, '2021-03-29 17:35:46', '2021-03-30 17:35:46', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1376516577204494336, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-abp-user-id\":\"bf289dbb-838e-a89b-c622-39f51dcc4f43\",\"cap-abp-client-id\":\"vue-admin-element\",\"cap-abp-tenant-id\":\"\",\"cap-msg-id\":\"1376516577204494336\",\"cap-corr-id\":\"1376516577204494336\",\"cap-corr-seq\":\"0\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2021/3/29 下午8:48:21 +08:00\"},\"Value\":{\"DateTime\":\"2021-03-29T20:48:21.103384+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Modify\",\"Object\":\"ReRoute\"}}', 0, '2021-03-29 20:48:21', '2021-03-30 20:48:21', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1376516622045798400, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-abp-user-id\":\"bf289dbb-838e-a89b-c622-39f51dcc4f43\",\"cap-abp-client-id\":\"vue-admin-element\",\"cap-abp-tenant-id\":\"\",\"cap-msg-id\":\"1376516622045798400\",\"cap-corr-id\":\"1376516622045798400\",\"cap-corr-seq\":\"0\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2021/3/29 下午8:48:31 +08:00\"},\"Value\":{\"DateTime\":\"2021-03-29T20:48:31.7941785+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Update\",\"Object\":\"AggregateRoute\"}}', 0, '2021-03-29 20:48:32', '2021-03-30 20:48:32', 'Succeeded'); +INSERT INTO `cap.published` VALUES (1376516635597594624, 'v1', 'LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData', '{\"Headers\":{\"cap-abp-user-id\":\"bf289dbb-838e-a89b-c622-39f51dcc4f43\",\"cap-abp-client-id\":\"vue-admin-element\",\"cap-abp-tenant-id\":\"\",\"cap-msg-id\":\"1376516635597594624\",\"cap-corr-id\":\"1376516635597594624\",\"cap-corr-seq\":\"0\",\"cap-msg-name\":\"LINGYUN.ApiGateway.EventBus.ApigatewayConfigChangeEventData\",\"cap-msg-type\":\"Object\",\"cap-senttime\":\"2021/3/29 下午8:48:35 +08:00\"},\"Value\":{\"DateTime\":\"2021-03-29T20:48:35.0253124+08:00\",\"AppId\":\"TEST-APP\",\"Method\":\"Update\",\"Object\":\"AggregateRoute\"}}', 0, '2021-03-29 20:48:35', '2021-03-30 20:48:35', 'Succeeded'); + -- ---------------------------- -- Table structure for cap.received -- ---------------------------- diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN.Abp.Localization.Dynamic.csproj b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN.Abp.Localization.Dynamic.csproj new file mode 100644 index 000000000..7b5ca1b8c --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN.Abp.Localization.Dynamic.csproj @@ -0,0 +1,15 @@ + + + + + + netstandard2.0 + + + + + + + + + diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/AbpLocalizationDynamicModule.cs b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/AbpLocalizationDynamicModule.cs new file mode 100644 index 000000000..c9a212d21 --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/AbpLocalizationDynamicModule.cs @@ -0,0 +1,13 @@ +using Volo.Abp.EventBus; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; + +namespace LINGYUN.Abp.Localization.Dynamic +{ + [DependsOn( + typeof(AbpEventBusModule), + typeof(AbpLocalizationModule))] + public class AbpLocalizationDynamicModule : AbpModule + { + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DefaultLocalizationStore.cs b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DefaultLocalizationStore.cs new file mode 100644 index 000000000..718764c60 --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DefaultLocalizationStore.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.Localization.Dynamic +{ + public class DefaultLocalizationStore : ILocalizationStore, ITransientDependency + { + public DefaultLocalizationStore() + { + } + + public Task> GetLanguageListAsync(CancellationToken cancellationToken = default) + { + return Task.FromResult(new List()); + } + + public Task> GetLocalizationDictionaryAsync(string resourceName, CancellationToken cancellationToken = default) + { + return Task.FromResult(new Dictionary()); + } + + public Task ResourceExistsAsync(string resourceName, CancellationToken cancellationToken = default) + { + return Task.FromResult(false); + } + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DynamicLanguageProvider.cs b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DynamicLanguageProvider.cs new file mode 100644 index 000000000..ae79c7133 --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DynamicLanguageProvider.cs @@ -0,0 +1,42 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.Localization.Dynamic +{ + [Dependency(ServiceLifetime.Transient, ReplaceServices = true)] + [ExposeServices( + typeof(ILanguageProvider), + typeof(DynamicLanguageProvider))] + public class DynamicLanguageProvider : ILanguageProvider + { + protected ILocalizationStore Store { get; } + protected AbpLocalizationOptions Options { get; } + + public DynamicLanguageProvider( + ILocalizationStore store, + IOptions options) + { + Store = store; + Options = options.Value; + } + + public virtual async Task> GetLanguagesAsync() + { + var languages = await Store.GetLanguageListAsync(); + + if (!languages.Any()) + { + return Options.Languages; + } + + return languages + .Distinct(new LanguageInfoComparer()) + .ToList(); + } + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationResourceContributor.cs b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationResourceContributor.cs new file mode 100644 index 000000000..2ba17d4cd --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationResourceContributor.cs @@ -0,0 +1,120 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Logging; +using Nito.AsyncEx; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Localization; +using Volo.Abp.Threading; + +namespace LINGYUN.Abp.Localization.Dynamic +{ + public class DynamicLocalizationResourceContributor : ILocalizationResourceContributor + { + private ILogger _logger; + private ILocalizationSubscriber _subscriber; + + private ILocalizationStore _store; + protected ILocalizationStore Store => _store; + + private Dictionary _dictionaries; + + private readonly string _resourceName; + private readonly AsyncLock _asyncLock = new AsyncLock(); + + public DynamicLocalizationResourceContributor(string resourceName) + { + _resourceName = resourceName; + } + + public virtual void Initialize(LocalizationResourceInitializationContext context) + { + _logger = context.ServiceProvider.GetService>(); + + _store = context.ServiceProvider.GetRequiredService(); + _subscriber = context.ServiceProvider.GetRequiredService(); + _subscriber.Subscribe(OnChanged); + } + + public virtual void Fill(string cultureName, Dictionary dictionary) + { + GetDictionaries().GetOrDefault(cultureName)?.Fill(dictionary); + } + + public virtual LocalizedString GetOrNull(string cultureName, string name) + { + return GetDictionaries().GetOrDefault(cultureName)?.GetOrNull(name); + } + + protected virtual Dictionary GetDictionaries() + { + var dictionaries = _dictionaries; + if (dictionaries != null) + { + return dictionaries; + } + + try + { + using (_asyncLock.Lock()) + { + dictionaries = _dictionaries = AsyncHelper.RunSync(async () => + await Store.GetLocalizationDictionaryAsync(_resourceName)); + } + } + catch(Exception ex) + { + // 错误不应该影响到应用程序,而是记录到日志 + _logger?.LogWarning("Failed to get localized text, error: ", ex.Message); + } + + return dictionaries; + } + + private Task OnChanged(LocalizedStringCacheResetEventData data) + { + if (string.Equals(_resourceName, data.ResourceName)) + { + if (!_dictionaries.ContainsKey(data.CultureName)) + { + // TODO: 需要处理 data.Key data.Value 空引用 + var dictionary = new Dictionary(); + dictionary.Add(data.Key, new LocalizedString(data.Key, data.Value.NormalizeLineEndings())); + var newLocalizationDictionary = new StaticLocalizationDictionary(data.CultureName, dictionary); + + _dictionaries.Add(data.CultureName, newLocalizationDictionary); + } + else + { + // 取出当前的缓存写入到新字典进行处理 + var nowLocalizationDictionary = _dictionaries[data.CultureName]; + var dictionary = new Dictionary(); + nowLocalizationDictionary.Fill(dictionary); + + var existsKey = dictionary.ContainsKey(data.Key); + if (!existsKey) + { + // 如果不存在,则新增 + dictionary.Add(data.Key, new LocalizedString(data.Key, data.Value.NormalizeLineEndings())); + } + else if (existsKey && data.IsDeleted) + { + // 如果删掉了本地化的节点,删掉当前的缓存 + dictionary.Remove(data.Key); + } + + var newLocalizationDictionary = new StaticLocalizationDictionary(data.CultureName, dictionary); + + if (newLocalizationDictionary != null) + { + // 重新赋值变更过的缓存 + _dictionaries[data.CultureName] = newLocalizationDictionary; + } + } + } + + return Task.CompletedTask; + } + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/ILocalizationDispatcher.cs b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/ILocalizationDispatcher.cs new file mode 100644 index 000000000..13f3d5924 --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/ILocalizationDispatcher.cs @@ -0,0 +1,14 @@ +using System.Threading.Tasks; + +namespace LINGYUN.Abp.Localization.Dynamic +{ + internal interface ILocalizationDispatcher + { + /// + /// 发布变更事件 + /// + /// + /// + Task DispatchAsync(LocalizedStringCacheResetEventData data); + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/ILocalizationStore.cs b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/ILocalizationStore.cs new file mode 100644 index 000000000..09c6c5b21 --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/ILocalizationStore.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.Localization.Dynamic +{ + public interface ILocalizationStore + { + /// + /// 获取语言列表 + /// + /// + /// + Task> GetLanguageListAsync( + CancellationToken cancellationToken = default); + /// + /// 资源是否存在 + /// + /// 资源名称 + /// + /// + Task ResourceExistsAsync( + string resourceName, + CancellationToken cancellationToken = default); + /// + /// 获取当前资源下的本地化字典 + /// + /// 资源名称 + /// + /// + Task> GetLocalizationDictionaryAsync( + string resourceName, + CancellationToken cancellationToken = default); + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/ILocalizationSubscriber.cs b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/ILocalizationSubscriber.cs new file mode 100644 index 000000000..eefae487a --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/ILocalizationSubscriber.cs @@ -0,0 +1,17 @@ +using System; +using System.Threading.Tasks; + +namespace LINGYUN.Abp.Localization.Dynamic +{ + /// + /// 本地化资源订阅 + /// + internal interface ILocalizationSubscriber + { + /// + /// 订阅变更事件 + /// + /// + void Subscribe(Func func); + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/LanguageInfoComparer.cs b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/LanguageInfoComparer.cs new file mode 100644 index 000000000..492eaa2b7 --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/LanguageInfoComparer.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.Localization.Dynamic +{ + public class LanguageInfoComparer : IEqualityComparer + { + public bool Equals(LanguageInfo x, LanguageInfo y) + { + if (x == null || y == null) + { + return false; + } + + return x.CultureName.Equals(y.CultureName); + } + + public int GetHashCode(LanguageInfo obj) + { + return obj?.CultureName.GetHashCode() ?? GetHashCode(); + } + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/LocalizationCacheItem.cs b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/LocalizationCacheItem.cs new file mode 100644 index 000000000..c61b64bfb --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/LocalizationCacheItem.cs @@ -0,0 +1,51 @@ +using System.Collections.Generic; + +namespace LINGYUN.Abp.Localization.Dynamic +{ + public class LocalizationCacheItem + { + public string Resource { get; set; } + public string Culture { get; set; } + public List Texts { get; set; } + public LocalizationCacheItem() + { + Texts = new List(); + } + + public LocalizationCacheItem( + string resource, + string culture, + List texts) + { + Resource = resource; + Culture = culture; + Texts = texts; + } + + public static string NormalizeKey( + string resource, + string culture) + { + return $"p:Localization,r:{resource},c:{culture}"; + } + } + + public class LocalizationText + { + public string Key { get; set; } + public string Value { get; set; } + public LocalizationText() + { + + } + + public LocalizationText( + string key, + string value) + { + Key = key; + Value = value; + } + + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/LocalizationResetSynchronizer.cs b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/LocalizationResetSynchronizer.cs new file mode 100644 index 000000000..9fd5acef2 --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/LocalizationResetSynchronizer.cs @@ -0,0 +1,23 @@ +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.EventBus.Distributed; + +namespace LINGYUN.Abp.Localization.Dynamic +{ + internal class LocalizationResetSynchronizer : + IDistributedEventHandler, + ITransientDependency + { + private readonly ILocalizationDispatcher _dispatcher; + + public LocalizationResetSynchronizer( + ILocalizationDispatcher dispatcher) + { + _dispatcher = dispatcher; + } + public async Task HandleEventAsync(LocalizedStringCacheResetEventData eventData) + { + await _dispatcher.DispatchAsync(eventData); + } + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/LocalizationSubscriber.cs b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/LocalizationSubscriber.cs new file mode 100644 index 000000000..4b3bcc894 --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/LocalizationSubscriber.cs @@ -0,0 +1,33 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; + +namespace LINGYUN.Abp.Localization.Dynamic +{ + [ExposeServices( + typeof(ILocalizationSubscriber), + typeof(ILocalizationDispatcher), + typeof(LocalizationSubscriber))] + internal class LocalizationSubscriber : ILocalizationSubscriber, ILocalizationDispatcher, ISingletonDependency + { + private Func _handler; + + public LocalizationSubscriber() + { + _handler = (d) => + { + return Task.CompletedTask; + }; + } + + public void Subscribe(Func func) + { + _handler += func; + } + + public virtual async Task DispatchAsync(LocalizedStringCacheResetEventData data) + { + await _handler(data); + } + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/LocalizedStringCacheResetEventData.cs b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/LocalizedStringCacheResetEventData.cs new file mode 100644 index 000000000..ad0e870b9 --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/LocalizedStringCacheResetEventData.cs @@ -0,0 +1,29 @@ +namespace LINGYUN.Abp.Localization.Dynamic +{ + public class LocalizedStringCacheResetEventData + { + public bool IsDeleted { get; set; } + public string ResourceName { get; set; } + public string CultureName { get; set; } + public string Key { get; set; } + public string Value { get; set; } + public LocalizedStringCacheResetEventData() + { + + } + + public LocalizedStringCacheResetEventData( + string resourceName, + string cultureName, + string key, + string value) + { + ResourceName = resourceName; + CultureName = cultureName; + Key = key; + Value = value; + + IsDeleted = false; + } + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/README.md b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/README.md new file mode 100644 index 000000000..9434a1b37 --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/README.md @@ -0,0 +1,37 @@ +# LINGYUN.Abp.Localization.Dynamic + +动态本地化提供者组件,添加动态提供者可实现运行时替换本地化文本 + +需要实现 ILocalizationStore 接口 + +LocalizationManagement项目提供支持 + + +由于框架设计为延迟初始化,当某个本地化资源被使用的时候才会进行初始化 +当资源被第一次使用到的时候,才会注册动态变更事件 +详情见: [DynamicLocalizationResourceContributor](./LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationResourceContributor.cs#L29-L34) + +## 配置使用 + +```csharp +[DependsOn(typeof(AbpLocalizationDynamicModule))] +public class YouProjectModule : AbpModule +{ + // other + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Resources + .Get() + .AddDynamic(); // 添加动态本地化文档支持 + + // 添加所有资源的动态文档支持,将监听所有的资源包文档变更事件 + // options.Resources.AddDynamic(); + + // 添加所有资源的动态文档支持,忽略 IdentityResource 资源 + // options.Resources.AddDynamic(typeof(IdentityResource)); + }); + } +} +``` diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/Volo/Abp/Localization/LocalizationResourceDictionaryExtensions.cs b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/Volo/Abp/Localization/LocalizationResourceDictionaryExtensions.cs new file mode 100644 index 000000000..b24c17728 --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/Volo/Abp/Localization/LocalizationResourceDictionaryExtensions.cs @@ -0,0 +1,42 @@ +using LINGYUN.Abp.Localization.Dynamic; +using System; +using System.Linq; + +namespace Volo.Abp.Localization +{ + public static class LocalizationResourceDictionaryExtensions + { + public static LocalizationResourceDictionary AddDynamic( + this LocalizationResourceDictionary resources, + params Type[] ignoreResourceTypes) + { + foreach (var resource in resources) + { + if (ShouldIgnoreType(resource.Key, ignoreResourceTypes)) + { + continue; + } + if (ShouldIgnoreType(resource.Value)) + { + continue; + } + resource.Value.AddDynamic(); + } + return resources; + } + + private static bool ShouldIgnoreType(Type resourceType, params Type[] ignoreResourceTypes) + { + if (ignoreResourceTypes == null) + { + return false; + } + return ignoreResourceTypes.Any(x => x == resourceType); + } + + private static bool ShouldIgnoreType(LocalizationResource resource) + { + return resource.Contributors.Exists(x => x is DynamicLocalizationResourceContributor); + } + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/Volo/Abp/Localization/LocalizationResourceExtensions.cs b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/Volo/Abp/Localization/LocalizationResourceExtensions.cs new file mode 100644 index 000000000..56ae360f0 --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/Volo/Abp/Localization/LocalizationResourceExtensions.cs @@ -0,0 +1,20 @@ +using JetBrains.Annotations; +using LINGYUN.Abp.Localization.Dynamic; + +namespace Volo.Abp.Localization +{ + public static class DynamicLocalizationResourceExtensions + { + public static LocalizationResource AddDynamic( + [NotNull] this LocalizationResource localizationResource) + { + Check.NotNull(localizationResource, nameof(localizationResource)); + + localizationResource.Contributors.Add( + new DynamicLocalizationResourceContributor( + localizationResource.ResourceName)); + + return localizationResource; + } + } +} diff --git a/aspnet-core/modules/localization/LINGYUN.Abp.Localization.Json/README.md b/aspnet-core/modules/localization/LINGYUN.Abp.Localization.Json/README.md index 038608d48..3c72ba466 100644 --- a/aspnet-core/modules/localization/LINGYUN.Abp.Localization.Json/README.md +++ b/aspnet-core/modules/localization/LINGYUN.Abp.Localization.Json/README.md @@ -2,7 +2,7 @@ ## 模块说明 -本地化组件的Json本地文件系统集成,Abp内置组件仅集成了基于IVirtualFileProvider的实现 +本地化组件的Json本地文件系统集成 此组件基于PhysicalFileProvider @@ -36,6 +36,20 @@ // 详情见: https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.fileproviders.physicalfileprovider?view=dotnet-plat-ext-5.0 .AddPhysicalJson(Path.Combine(Directory.GetCurrentDirectory(), "Resources")); }); + + // 等同于如下方法 + Configure(options => + { + // 将本地文件系统映射为虚拟文件系统 + options.FileSets.AddPhysical(Path.Combine(Directory.GetCurrentDirectory(), "Resources")); + }); + + Configure(options => + { + options.Resources + .Add("en") + .AddVirtualJson("/Resources"); // json本地化虚拟文件路径 + }); } } diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN.Abp.LocalizationManagement.Application.Contracts.csproj b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN.Abp.LocalizationManagement.Application.Contracts.csproj new file mode 100644 index 000000000..8bbfd4964 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN.Abp.LocalizationManagement.Application.Contracts.csproj @@ -0,0 +1,19 @@ + + + + + + netstandard2.0 + + + + + + + + + + + + + diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementApplicationContractsModule.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementApplicationContractsModule.cs new file mode 100644 index 000000000..a204e038f --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementApplicationContractsModule.cs @@ -0,0 +1,13 @@ +using Volo.Abp.Authorization; +using Volo.Abp.Modularity; + +namespace LINGYUN.Abp.LocalizationManagement +{ + [DependsOn( + typeof(AbpAuthorizationModule), + typeof(AbpLocalizationManagementDomainSharedModule))] + public class AbpLocalizationManagementApplicationContractsModule : AbpModule + { + + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateOrUpdateLanguageInput.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateOrUpdateLanguageInput.cs new file mode 100644 index 000000000..131ad2098 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateOrUpdateLanguageInput.cs @@ -0,0 +1,25 @@ +using System.ComponentModel.DataAnnotations; +using Volo.Abp.Validation; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class CreateOrUpdateLanguageInput + { + public virtual bool Enable { get; set; } + + [Required] + [DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxCultureNameLength))] + public string CultureName { get; set; } + + [Required] + [DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxUiCultureNameLength))] + public string UiCultureName { get; set; } + + [Required] + [DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxDisplayNameLength))] + public string DisplayName { get; set; } + + [DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxFlagIconLength))] + public string FlagIcon { get; set; } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateOrUpdateResourceInput.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateOrUpdateResourceInput.cs new file mode 100644 index 000000000..cc2a07ef8 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateOrUpdateResourceInput.cs @@ -0,0 +1,20 @@ +using System.ComponentModel.DataAnnotations; +using Volo.Abp.Validation; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class CreateOrUpdateResourceInput + { + public bool Enable { get; set; } + + [Required] + [DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxNameLength))] + public string Name { get; set; } + + [DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxDisplayNameLength))] + public string DisplayName { get; set; } + + [DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxDescriptionLength))] + public string Description { get; set; } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateOrUpdateTextInput.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateOrUpdateTextInput.cs new file mode 100644 index 000000000..f35d659b3 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateOrUpdateTextInput.cs @@ -0,0 +1,10 @@ +using Volo.Abp.Validation; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class CreateOrUpdateTextInput + { + [DynamicStringLength(typeof(TextConsts), nameof(TextConsts.MaxValueLength))] + public string Value { get; set; } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateTextInput.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateTextInput.cs new file mode 100644 index 000000000..cfa8dcd50 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateTextInput.cs @@ -0,0 +1,20 @@ +using System.ComponentModel.DataAnnotations; +using Volo.Abp.Validation; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class CreateTextInput : CreateOrUpdateTextInput + { + [Required] + [DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxNameLength))] + public string ResourceName { get; set; } + + [Required] + [DynamicStringLength(typeof(TextConsts), nameof(TextConsts.MaxKeyLength))] + public string Key { get; set; } + + [Required] + [DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxCultureNameLength))] + public string CultureName { get; set; } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetLanguagesInput.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetLanguagesInput.cs new file mode 100644 index 000000000..a74174c47 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetLanguagesInput.cs @@ -0,0 +1,9 @@ +using Volo.Abp.Application.Dtos; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class GetLanguagesInput : PagedAndSortedResultRequestDto + { + public string Filter { get; set; } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetResourcesInput.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetResourcesInput.cs new file mode 100644 index 000000000..d6ec662ac --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetResourcesInput.cs @@ -0,0 +1,9 @@ +using Volo.Abp.Application.Dtos; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class GetResourcesInput : PagedAndSortedResultRequestDto + { + public string Filter { get; set; } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetTextByKeyInput.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetTextByKeyInput.cs new file mode 100644 index 000000000..f1ff271de --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetTextByKeyInput.cs @@ -0,0 +1,20 @@ +using System.ComponentModel.DataAnnotations; +using Volo.Abp.Validation; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class GetTextByKeyInput + { + [Required] + [DynamicStringLength(typeof(TextConsts), nameof(TextConsts.MaxKeyLength))] + public string Key { get; set; } + + [Required] + [DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxCultureNameLength))] + public string CultureName { get; set; } + + [Required] + [DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxNameLength))] + public string ResourceName { get; set; } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetTextsInput.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetTextsInput.cs new file mode 100644 index 000000000..f6516c1c0 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetTextsInput.cs @@ -0,0 +1,24 @@ +using System.ComponentModel.DataAnnotations; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Validation; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class GetTextsInput : PagedAndSortedResultRequestDto + { + [Required] + [DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxCultureNameLength))] + public string CultureName { get; set; } + + [Required] + [DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxCultureNameLength))] + public string TargetCultureName { get; set; } + + [DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxNameLength))] + public string ResourceName { get; set; } + + public bool? OnlyNull { get; set; } + + public string Filter { get; set; } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ILanguageAppService.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ILanguageAppService.cs new file mode 100644 index 000000000..6b037d4cf --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ILanguageAppService.cs @@ -0,0 +1,19 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public interface ILanguageAppService : + ICrudAppService< + LanguageDto, + Guid, + GetLanguagesInput, + CreateOrUpdateLanguageInput, + CreateOrUpdateLanguageInput + > + { + Task> GetAllAsync(); + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/IResourceAppService.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/IResourceAppService.cs new file mode 100644 index 000000000..b8756ccbc --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/IResourceAppService.cs @@ -0,0 +1,18 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public interface IResourceAppService : + ICrudAppService< + ResourceDto, + Guid, + GetResourcesInput, + CreateOrUpdateResourceInput, + CreateOrUpdateResourceInput> + { + Task> GetAllAsync(); + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ITextAppService.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ITextAppService.cs new file mode 100644 index 000000000..5a002da47 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ITextAppService.cs @@ -0,0 +1,17 @@ +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public interface ITextAppService : + ICrudAppService< + TextDto, + TextDifferenceDto, + int, + GetTextsInput, + CreateTextInput, + UpdateTextInput> + { + Task GetByCultureKeyAsync(GetTextByKeyInput input); + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/LanguageDto.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/LanguageDto.cs new file mode 100644 index 000000000..1afaf3679 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/LanguageDto.cs @@ -0,0 +1,14 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class LanguageDto : AuditedEntityDto + { + public bool Enable { get; set; } + public string CultureName { get; set; } + public string UiCultureName { get; set; } + public string DisplayName { get; set; } + public string FlagIcon { get; set; } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/LocalizationRemoteServiceConsts.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/LocalizationRemoteServiceConsts.cs new file mode 100644 index 000000000..833d64dce --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/LocalizationRemoteServiceConsts.cs @@ -0,0 +1,7 @@ +namespace LINGYUN.Abp.LocalizationManagement +{ + public static class LocalizationRemoteServiceConsts + { + public const string RemoteServiceName = "LocalizationManagement"; + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/Permissions/LocalizationManagementPermissionDefinitionProvider.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/Permissions/LocalizationManagementPermissionDefinitionProvider.cs new file mode 100644 index 000000000..c470c04d3 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/Permissions/LocalizationManagementPermissionDefinitionProvider.cs @@ -0,0 +1,73 @@ +using LINGYUN.Abp.LocalizationManagement.Localization; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.LocalizationManagement.Permissions +{ + public class LocalizationManagementPermissionDefinitionProvider : PermissionDefinitionProvider + { + public override void Define(IPermissionDefinitionContext context) + { + var permissionGroup = context.AddGroup( + LocalizationManagementPermissions.GroupName, + L("Permissions:LocalizationManagement"), + Volo.Abp.MultiTenancy.MultiTenancySides.Host); + + var resourcePermission = permissionGroup.AddPermission( + LocalizationManagementPermissions.Resource.Default, + L("Permissions:Resource"), + Volo.Abp.MultiTenancy.MultiTenancySides.Host); + resourcePermission.AddChild( + LocalizationManagementPermissions.Resource.Create, + L("Permissions:Create"), + Volo.Abp.MultiTenancy.MultiTenancySides.Host); + resourcePermission.AddChild( + LocalizationManagementPermissions.Resource.Update, + L("Permissions:Update"), + Volo.Abp.MultiTenancy.MultiTenancySides.Host); + resourcePermission.AddChild( + LocalizationManagementPermissions.Resource.Delete, + L("Permissions:Delete"), + Volo.Abp.MultiTenancy.MultiTenancySides.Host); + + var languagePermission = permissionGroup.AddPermission( + LocalizationManagementPermissions.Language.Default, + L("Permissions:Language"), + Volo.Abp.MultiTenancy.MultiTenancySides.Host); + languagePermission.AddChild( + LocalizationManagementPermissions.Language.Create, + L("Permissions:Create"), + Volo.Abp.MultiTenancy.MultiTenancySides.Host); + languagePermission.AddChild( + LocalizationManagementPermissions.Language.Update, + L("Permissions:Update"), + Volo.Abp.MultiTenancy.MultiTenancySides.Host); + languagePermission.AddChild( + LocalizationManagementPermissions.Language.Delete, + L("Permissions:Delete"), + Volo.Abp.MultiTenancy.MultiTenancySides.Host); + + var textPermission = permissionGroup.AddPermission( + LocalizationManagementPermissions.Text.Default, + L("Permissions:Text"), + Volo.Abp.MultiTenancy.MultiTenancySides.Host); + textPermission.AddChild( + LocalizationManagementPermissions.Text.Create, + L("Permissions:Create"), + Volo.Abp.MultiTenancy.MultiTenancySides.Host); + textPermission.AddChild( + LocalizationManagementPermissions.Text.Update, + L("Permissions:Update"), + Volo.Abp.MultiTenancy.MultiTenancySides.Host); + textPermission.AddChild( + LocalizationManagementPermissions.Text.Delete, + L("Permissions:Delete"), + Volo.Abp.MultiTenancy.MultiTenancySides.Host); + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/Permissions/LocalizationManagementPermissions.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/Permissions/LocalizationManagementPermissions.cs new file mode 100644 index 000000000..b8bb25f9a --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/Permissions/LocalizationManagementPermissions.cs @@ -0,0 +1,40 @@ +namespace LINGYUN.Abp.LocalizationManagement.Permissions +{ + public static class LocalizationManagementPermissions + { + public const string GroupName = "LocalizationManagement"; + + public class Resource + { + public const string Default = GroupName + ".Resource"; + + public const string Create = Default + ".Create"; + + public const string Update = Default + ".Update"; + + public const string Delete = Default + ".Delete"; + } + + public class Language + { + public const string Default = GroupName + ".Language"; + + public const string Create = Default + ".Create"; + + public const string Update = Default + ".Update"; + + public const string Delete = Default + ".Delete"; + } + + public class Text + { + public const string Default = GroupName + ".Text"; + + public const string Create = Default + ".Create"; + + public const string Update = Default + ".Update"; + + public const string Delete = Default + ".Delete"; + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ResourceDto.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ResourceDto.cs new file mode 100644 index 000000000..b6f986621 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ResourceDto.cs @@ -0,0 +1,13 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class ResourceDto : AuditedEntityDto + { + public bool Enable { get; set; } + public string Name { get; set; } + public string DisplayName { get; set; } + public string Description { get; set; } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/TextDifferenceDto.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/TextDifferenceDto.cs new file mode 100644 index 000000000..28a4a5a9b --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/TextDifferenceDto.cs @@ -0,0 +1,14 @@ +using Volo.Abp.Application.Dtos; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class TextDifferenceDto : EntityDto + { + public string CultureName { get; set; } + public string Key { get; set; } + public string Value { get; set; } + public string ResourceName { get; set; } + public string TargetCultureName { get; set; } + public string TargetValue { get; set; } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/TextDto.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/TextDto.cs new file mode 100644 index 000000000..44bd7863b --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/TextDto.cs @@ -0,0 +1,12 @@ +using Volo.Abp.Application.Dtos; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class TextDto : EntityDto + { + public string Key { get; set; } + public string Value { get; set; } + public string CultureName { get; set; } + public string ResourceName { get; set; } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/UpdateTextInput.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/UpdateTextInput.cs new file mode 100644 index 000000000..f448b0079 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/UpdateTextInput.cs @@ -0,0 +1,6 @@ +namespace LINGYUN.Abp.LocalizationManagement +{ + public class UpdateTextInput : CreateOrUpdateTextInput + { + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN.Abp.LocalizationManagement.Application.csproj b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN.Abp.LocalizationManagement.Application.csproj new file mode 100644 index 000000000..1841c4729 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN.Abp.LocalizationManagement.Application.csproj @@ -0,0 +1,19 @@ + + + + + + netstandard2.0 + + + + + + + + + + + + + diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementApplicationModule.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementApplicationModule.cs new file mode 100644 index 000000000..0c8319318 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementApplicationModule.cs @@ -0,0 +1,24 @@ +using Volo.Abp.Application; +using Volo.Abp.Modularity; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.AutoMapper; + +namespace LINGYUN.Abp.LocalizationManagement +{ + [DependsOn( + typeof(AbpDddApplicationModule), + typeof(AbpLocalizationManagementDomainModule), + typeof(AbpLocalizationManagementApplicationContractsModule))] + public class AbpLocalizationManagementApplicationModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAutoMapperObjectMapper(); + + Configure(options => + { + options.AddProfile(validate: true); + }); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/LanguageAppService.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/LanguageAppService.cs new file mode 100644 index 000000000..c97ae46d7 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/LanguageAppService.cs @@ -0,0 +1,73 @@ +using LINGYUN.Abp.LocalizationManagement.Permissions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class LanguageAppService : + CrudAppService< + Language, + LanguageDto, + Guid, + GetLanguagesInput, + CreateOrUpdateLanguageInput, + CreateOrUpdateLanguageInput>, + ILanguageAppService + { + public LanguageAppService(ILanguageRepository repository) : base(repository) + { + GetPolicyName = LocalizationManagementPermissions.Language.Default; + GetListPolicyName = LocalizationManagementPermissions.Language.Default; + CreatePolicyName = LocalizationManagementPermissions.Language.Create; + UpdatePolicyName = LocalizationManagementPermissions.Language.Update; + DeletePolicyName = LocalizationManagementPermissions.Language.Delete; + } + + public virtual async Task> GetAllAsync() + { + await CheckGetListPolicyAsync(); + + var languages = await Repository.GetListAsync(); + + return new ListResultDto( + ObjectMapper.Map, List>(languages)); + } + + protected override Language MapToEntity(CreateOrUpdateLanguageInput createInput) + { + return new Language( + createInput.CultureName, + createInput.UiCultureName, + createInput.DisplayName, + createInput.FlagIcon) + { + Enable = createInput.Enable + }; + } + + protected override void MapToEntity(CreateOrUpdateLanguageInput updateInput, Language entity) + { + if (!string.Equals(entity.FlagIcon, updateInput.FlagIcon, StringComparison.InvariantCultureIgnoreCase)) + { + entity.FlagIcon = updateInput.FlagIcon; + } + entity.ChangeCulture(updateInput.CultureName, updateInput.UiCultureName, updateInput.DisplayName); + entity.Enable = updateInput.Enable; + } + + protected override async Task> CreateFilteredQueryAsync(GetLanguagesInput input) + { + var query = await base.CreateFilteredQueryAsync(input); + + query = query.WhereIf(!input.Filter.IsNullOrWhiteSpace(), + x => x.CultureName.Contains(input.Filter) || x.UiCultureName.Contains(input.Filter) || + x.DisplayName.Contains(input.Filter)); + + return query; + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/LocalizationManagementApplicationMapperProfile.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/LocalizationManagementApplicationMapperProfile.cs new file mode 100644 index 000000000..5b8a4b1f9 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/LocalizationManagementApplicationMapperProfile.cs @@ -0,0 +1,15 @@ +using AutoMapper; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class LocalizationManagementApplicationMapperProfile : Profile + { + public LocalizationManagementApplicationMapperProfile() + { + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/ResourceAppService.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/ResourceAppService.cs new file mode 100644 index 000000000..6affc5c1e --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/ResourceAppService.cs @@ -0,0 +1,78 @@ +using LINGYUN.Abp.LocalizationManagement.Permissions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class ResourceAppService : + CrudAppService< + Resource, + ResourceDto, + Guid, + GetResourcesInput, + CreateOrUpdateResourceInput, + CreateOrUpdateResourceInput>, + IResourceAppService + { + public ResourceAppService(IResourceRepository repository) : base(repository) + { + GetPolicyName = LocalizationManagementPermissions.Resource.Default; + GetListPolicyName = LocalizationManagementPermissions.Resource.Default; + CreatePolicyName = LocalizationManagementPermissions.Resource.Create; + UpdatePolicyName = LocalizationManagementPermissions.Resource.Update; + DeletePolicyName = LocalizationManagementPermissions.Resource.Delete; + } + + public virtual async Task> GetAllAsync() + { + await CheckGetListPolicyAsync(); + + var resources = await Repository.GetListAsync(); + + return new ListResultDto( + ObjectMapper.Map, List>(resources)); + } + + protected override Resource MapToEntity(CreateOrUpdateResourceInput createInput) + { + return new Resource( + createInput.Name, + createInput.DisplayName, + createInput.Description) + { + Enable = createInput.Enable + }; + } + + protected override void MapToEntity(CreateOrUpdateResourceInput updateInput, Resource entity) + { + if (!string.Equals(entity.Name, updateInput.Name, StringComparison.InvariantCultureIgnoreCase)) + { + entity.Name = updateInput.Name; + } + if (!string.Equals(entity.DisplayName, updateInput.DisplayName, StringComparison.InvariantCultureIgnoreCase)) + { + entity.DisplayName = updateInput.DisplayName; + } + if (!string.Equals(entity.Description, updateInput.Description, StringComparison.InvariantCultureIgnoreCase)) + { + entity.Description = updateInput.Description; + } + entity.Enable = updateInput.Enable; + } + + protected override async Task> CreateFilteredQueryAsync(GetResourcesInput input) + { + var query = await base.CreateFilteredQueryAsync(input); + + query = query.WhereIf(!input.Filter.IsNullOrWhiteSpace(), + x => x.Name.Contains(input.Filter) || x.DisplayName.Contains(input.Filter)); + + return query; + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/TextAppService.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/TextAppService.cs new file mode 100644 index 000000000..0759be05a --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/TextAppService.cs @@ -0,0 +1,73 @@ +using LINGYUN.Abp.LocalizationManagement.Permissions; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class TextAppService : + CrudAppService< + Text, + TextDto, + TextDifferenceDto, + int, + GetTextsInput, + CreateTextInput, + UpdateTextInput>, + ITextAppService + { + private readonly ITextRepository _textRepository; + public TextAppService(ITextRepository repository) : base(repository) + { + _textRepository = repository; + + GetPolicyName = LocalizationManagementPermissions.Text.Default; + GetListPolicyName = LocalizationManagementPermissions.Text.Default; + CreatePolicyName = LocalizationManagementPermissions.Text.Create; + UpdatePolicyName = LocalizationManagementPermissions.Text.Update; + DeletePolicyName = LocalizationManagementPermissions.Text.Delete; + } + + public virtual async Task GetByCultureKeyAsync(GetTextByKeyInput input) + { + await CheckGetPolicyAsync(); + + var text = await _textRepository.GetByCultureKeyAsync( + input.ResourceName, input.CultureName, input.Key); + + return await MapToGetOutputDtoAsync(text); + } + + public override async Task> GetListAsync(GetTextsInput input) + { + await CheckGetListPolicyAsync(); + + var count = await _textRepository.GetDifferenceCountAsync( + input.CultureName, input.TargetCultureName, + input.ResourceName, input.OnlyNull, input.Filter); + + var texts = await _textRepository.GetDifferencePagedListAsync( + input.CultureName, input.TargetCultureName, + input.ResourceName, input.OnlyNull, input.Filter, + input.Sorting, input.SkipCount, input.MaxResultCount); + + return new PagedResultDto(count, + ObjectMapper.Map, List>(texts)); + } + + protected override Text MapToEntity(CreateTextInput createInput) + { + return new Text( + createInput.ResourceName, + createInput.CultureName, + createInput.Key, + createInput.Value); + } + + protected override void MapToEntity(UpdateTextInput updateInput, Text entity) + { + entity.SetValue(updateInput.Value); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN.Abp.LocalizationManagement.Domain.Shared.csproj b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN.Abp.LocalizationManagement.Domain.Shared.csproj new file mode 100644 index 000000000..0801e17bd --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN.Abp.LocalizationManagement.Domain.Shared.csproj @@ -0,0 +1,25 @@ + + + + + + netstandard2.0 + + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementDomainSharedModule.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementDomainSharedModule.cs new file mode 100644 index 000000000..4944d7447 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementDomainSharedModule.cs @@ -0,0 +1,29 @@ +using LINGYUN.Abp.LocalizationManagement.Localization; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.Validation; +using Volo.Abp.VirtualFileSystem; + +namespace LINGYUN.Abp.LocalizationManagement +{ + [DependsOn( + typeof(AbpValidationModule), + typeof(AbpLocalizationModule))] + public class AbpLocalizationManagementDomainSharedModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + Configure(options => + { + options.Resources + .Add("en") + .AddVirtualJson("/LINGYUN/Abp/LocalizationManagement/Localization/Resources"); + }); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/LanguageConsts.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/LanguageConsts.cs new file mode 100644 index 000000000..6375272f9 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/LanguageConsts.cs @@ -0,0 +1,10 @@ +namespace LINGYUN.Abp.LocalizationManagement +{ + public static class LanguageConsts + { + public static int MaxCultureNameLength { get; set; } = 20; + public static int MaxUiCultureNameLength { get; set; } = 20; + public static int MaxDisplayNameLength { get; set; } = 64; + public static int MaxFlagIconLength { get; set; } = 30; + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/Localization/LocalizationManagementResource.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/Localization/LocalizationManagementResource.cs new file mode 100644 index 000000000..01d6ca45e --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/Localization/LocalizationManagementResource.cs @@ -0,0 +1,9 @@ +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.LocalizationManagement.Localization +{ + [LocalizationResourceName("LocalizationManagement")] + public class LocalizationManagementResource + { + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/Localization/Resources/en.json b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/Localization/Resources/en.json new file mode 100644 index 000000000..df3179afe --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/Localization/Resources/en.json @@ -0,0 +1,41 @@ +{ + "culture": "en", + "texts": { + "Delete": "Delete", + "DisplayName:Any": "Any", + "DisplayName:CreationTime": "Creation Time", + "DisplayName:CultureName": "Culture", + "DisplayName:Description": "Description", + "DisplayName:DisplayName": "Display Name", + "DisplayName:Enable": "Enable", + "DisplayName:FlagIcon": "Flag Icon", + "DisplayName:Key": "Key", + "DisplayName:LastModificationTime": "Modification Time", + "DisplayName:Name": "Name", + "DisplayName:OnlyNull": "Only Null", + "DisplayName:ResourceName": "Resource", + "DisplayName:SaveAndNext": "Save & Next", + "DisplayName:TargetCultureName": "Target Culture", + "DisplayName:TargetValue": "Target Value", + "DisplayName:UiCultureName": "Ui Culture", + "DisplayName:Value": "Value", + "Permissions:LocalizationManagement": "Localization", + "Permissions:Language": "Language", + "Permissions:Resource": "Resource", + "Permissions:Text": "Text", + "Permissions:Create": "Create", + "Permissions:Update": "Update", + "Permissions:Delete": "Delete", + "Edit": "Edit", + "EditByName": "Edit - {0}", + "Filter": "Filter", + "Language:AddNew": "Add New Language", + "Resource:AddNew": "Add New Resource", + "SaveAndNext": "Save & Next", + "SearchFilter": "Search", + "Text:AddNew": "Add New Text", + "WillDeleteLanguage": "Language to be deleted {0}", + "WillDeleteResource": "Resource to be deleted {0}", + "WillDeleteText": "Document to be deleted {0}" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/Localization/Resources/zh-Hans.json b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/Localization/Resources/zh-Hans.json new file mode 100644 index 000000000..3978893d6 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/Localization/Resources/zh-Hans.json @@ -0,0 +1,41 @@ +{ + "culture": "zh-Hans", + "texts": { + "Delete": "删除", + "DisplayName:Any": "所有", + "DisplayName:CreationTime": "创建时间", + "DisplayName:CultureName": "文化名称", + "DisplayName:Description": "描述", + "DisplayName:DisplayName": "显示名称", + "DisplayName:Enable": "启用", + "DisplayName:FlagIcon": "旗帜图标", + "DisplayName:Key": "键", + "DisplayName:LastModificationTime": "变更时间", + "DisplayName:Name": "名称", + "DisplayName:OnlyNull": "仅空值", + "DisplayName:ResourceName": "资源名称", + "DisplayName:SaveAndNext": "保存并下一步", + "DisplayName:TargetCultureName": "目标文化", + "DisplayName:TargetValue": "目标值", + "DisplayName:UiCultureName": "界面文化", + "DisplayName:Value": "值", + "Permissions:LocalizationManagement": "本地化管理", + "Permissions:Language": "语言管理", + "Permissions:Resource": "资源管理", + "Permissions:Text": "文档管理", + "Permissions:Create": "新增", + "Permissions:Update": "编辑", + "Permissions:Delete": "删除", + "Edit": "编辑", + "EditByName": "编辑 - {0}", + "Filter": "过滤字符", + "Language:AddNew": "添加新语言", + "Resource:AddNew": "添加新资源", + "SaveAndNext": "保存并下一步", + "SearchFilter": "请输入过滤字符", + "Text:AddNew": "添加新文档", + "WillDeleteLanguage": "将要删除语言 {0}", + "WillDeleteResource": "将要删除资源 {0}", + "WillDeleteText": "将要删除文档 {0}" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/ResourceConsts.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/ResourceConsts.cs new file mode 100644 index 000000000..2a2d9e2d5 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/ResourceConsts.cs @@ -0,0 +1,9 @@ +namespace LINGYUN.Abp.LocalizationManagement +{ + public static class ResourceConsts + { + public static int MaxNameLength { get; set; } = 50; + public static int MaxDisplayNameLength { get; set; } = 64; + public static int MaxDescriptionLength { get; set; } = 64; + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/TextConsts.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/TextConsts.cs new file mode 100644 index 000000000..37c674488 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/TextConsts.cs @@ -0,0 +1,8 @@ +namespace LINGYUN.Abp.LocalizationManagement +{ + public static class TextConsts + { + public static int MaxKeyLength { get; set; } = 512; + public static int MaxValueLength { get; set; } = 2 * 1024; + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/TextDifference.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/TextDifference.cs new file mode 100644 index 000000000..dc1af3704 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/TextDifference.cs @@ -0,0 +1,33 @@ +namespace LINGYUN.Abp.LocalizationManagement +{ + public class TextDifference + { + public int Id { get; set; } + public string CultureName { get; set; } + public string Key { get; set; } + public string Value { get; set; } + public string ResourceName { get; set; } + public string TargetCultureName { get; set; } + public string TargetValue { get; set; } + + public TextDifference() { } + public TextDifference( + int id, + string cultureName, + string key, + string value, + string targetCultureName, + string targetValue = null, + string resourceName = null) + { + Id = id; + Key = key; + Value = value; + CultureName = cultureName; + TargetCultureName = targetCultureName; + + TargetValue = targetValue; + ResourceName = resourceName; + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/TextEto.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/TextEto.cs new file mode 100644 index 000000000..4d8ffd257 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/TextEto.cs @@ -0,0 +1,10 @@ +namespace LINGYUN.Abp.LocalizationManagement +{ + public class TextEto + { + public string CultureName { get; set; } + public string Key { get; set; } + public string Value { get; set; } + public string ResourceName { get; set; } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN.Abp.LocalizationManagement.Domain.csproj b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN.Abp.LocalizationManagement.Domain.csproj new file mode 100644 index 000000000..e47074595 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN.Abp.LocalizationManagement.Domain.csproj @@ -0,0 +1,20 @@ + + + + + + netstandard2.0 + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementDomainModule.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementDomainModule.cs new file mode 100644 index 000000000..9e91df512 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementDomainModule.cs @@ -0,0 +1,44 @@ +using LINGYUN.Abp.Localization.Dynamic; +using LINGYUN.Abp.LocalizationManagement.Localization; +using Volo.Abp.AutoMapper; +using Volo.Abp.Domain; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.EventBus.Distributed; +using Volo.Abp.Domain.Entities.Events.Distributed; +using Microsoft.Extensions.DependencyInjection; + +namespace LINGYUN.Abp.LocalizationManagement +{ + [DependsOn( + typeof(AbpAutoMapperModule), + typeof(AbpDddDomainModule), + typeof(AbpLocalizationDynamicModule), + typeof(AbpLocalizationManagementDomainSharedModule))] + public class AbpLocalizationManagementDomainModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAutoMapperObjectMapper(); + + Configure(options => + { + options.Resources + .Get() + .AddDynamic(); + }); + + Configure(options => + { + options.AddProfile(validate: true); + }); + + // 分布式事件 + //Configure(options => + //{ + // options.AutoEventSelectors.Add(); + // options.EtoMappings.Add(); + //}); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ILanguageRepository.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ILanguageRepository.cs new file mode 100644 index 000000000..654a444e9 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ILanguageRepository.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public interface ILanguageRepository : IRepository + { + Task FindByCultureNameAsync( + string cultureName, + CancellationToken cancellationToken = default); + + Task> GetActivedListAsync(CancellationToken cancellationToken = default); + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/IResourceRepository.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/IResourceRepository.cs new file mode 100644 index 000000000..8b633c557 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/IResourceRepository.cs @@ -0,0 +1,18 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public interface IResourceRepository : IRepository + { + Task ExistsAsync( + string name, + CancellationToken cancellationToken = default); + + Task FindByNameAsync( + string name, + CancellationToken cancellationToken = default); + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ITextRepository.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ITextRepository.cs new file mode 100644 index 000000000..6d53b3900 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ITextRepository.cs @@ -0,0 +1,45 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public interface ITextRepository : IRepository + { + Task GetByCultureKeyAsync( + string resourceName, + string cultureName, + string key, + CancellationToken cancellationToken = default + ); + + Task> GetListAsync( + string resourceName, + CancellationToken cancellationToken = default); + + Task> GetListAsync( + string resourceName, + string cultureName, + CancellationToken cancellationToken = default); + + Task GetDifferenceCountAsync( + string cultureName, + string targetCultureName, + string resourceName = null, + bool? onlyNull = null, + string filter = null, + CancellationToken cancellationToken = default); + + Task> GetDifferencePagedListAsync( + string cultureName, + string targetCultureName, + string resourceName = null, + bool? onlyNull = null, + string filter = null, + string sorting = nameof(Text.Key), + int skipCount = 1, + int maxResultCount = 10, + CancellationToken cancellationToken = default); + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/Language.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/Language.cs new file mode 100644 index 000000000..22982e9f4 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/Language.cs @@ -0,0 +1,53 @@ +using JetBrains.Annotations; +using System; +using Volo.Abp; +using Volo.Abp.Domain.Entities.Auditing; +using Volo.Abp.Localization; +using Volo.Abp.MultiTenancy; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class Language : AuditedEntity, ILanguageInfo + { + public virtual bool Enable { get; set; } + public virtual string CultureName { get; protected set; } + public virtual string UiCultureName { get; protected set; } + public virtual string DisplayName { get; protected set; } + public virtual string FlagIcon { get; set; } + protected Language() { } + public Language( + [NotNull] string cultureName, + [NotNull] string uiCultureName, + [NotNull] string displayName, + string flagIcon = null) + { + CultureName = Check.NotNullOrWhiteSpace(cultureName, nameof(cultureName), LanguageConsts.MaxCultureNameLength); + UiCultureName = Check.NotNullOrWhiteSpace(uiCultureName, nameof(uiCultureName), LanguageConsts.MaxUiCultureNameLength); + DisplayName = Check.NotNullOrWhiteSpace(displayName, nameof(displayName), LanguageConsts.MaxDisplayNameLength); + + FlagIcon = !flagIcon.IsNullOrWhiteSpace() + ? Check.Length(flagIcon, nameof(flagIcon), LanguageConsts.MaxFlagIconLength) + : null; + + Enable = true; + } + + public virtual void ChangeCulture(string cultureName, string uiCultureName = null, string displayName = null) + { + ChangeCultureInternal(cultureName, uiCultureName, displayName); + } + + private void ChangeCultureInternal(string cultureName, string uiCultureName, string displayName) + { + CultureName = Check.NotNullOrWhiteSpace(cultureName, nameof(cultureName), LanguageConsts.MaxCultureNameLength); + + UiCultureName = !uiCultureName.IsNullOrWhiteSpace() + ? Check.Length(uiCultureName, nameof(uiCultureName), LanguageConsts.MaxUiCultureNameLength) + : cultureName; + + DisplayName = !displayName.IsNullOrWhiteSpace() + ? Check.Length(displayName, nameof(displayName), LanguageConsts.MaxDisplayNameLength) + : cultureName; + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationDbProperties.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationDbProperties.cs new file mode 100644 index 000000000..7d789eedc --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationDbProperties.cs @@ -0,0 +1,11 @@ +namespace LINGYUN.Abp.LocalizationManagement +{ + public static class LocalizationDbProperties + { + public static string DbTablePrefix { get; set; } = "AbpLocalization"; + + public static string DbSchema { get; set; } = null; + + public const string ConnectionStringName = "AbpLocalizationManagement"; + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationManagementDomainMapperProfile.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationManagementDomainMapperProfile.cs new file mode 100644 index 000000000..c0aeb77c5 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationManagementDomainMapperProfile.cs @@ -0,0 +1,12 @@ +using AutoMapper; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class LocalizationManagementDomainMapperProfile : Profile + { + public LocalizationManagementDomainMapperProfile() + { + CreateMap(); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationStore.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationStore.cs new file mode 100644 index 000000000..1402d77f6 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationStore.cs @@ -0,0 +1,86 @@ +using LINGYUN.Abp.Localization.Dynamic; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Localization; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.LocalizationManagement +{ + [Dependency(ServiceLifetime.Singleton, ReplaceServices = true)] + [ExposeServices( + typeof(ILocalizationStore), + typeof(LocalizationStore))] + public class LocalizationStore : ILocalizationStore + { + protected ILanguageRepository LanguageRepository { get; } + protected ITextRepository TextRepository { get; } + protected IResourceRepository ResourceRepository { get; } + + public LocalizationStore( + ILanguageRepository languageRepository, + ITextRepository textRepository, + IResourceRepository resourceRepository) + { + TextRepository = textRepository; + LanguageRepository = languageRepository; + ResourceRepository = resourceRepository; + } + + public virtual async Task> GetLanguageListAsync( + CancellationToken cancellationToken = default) + { + var languages = await LanguageRepository.GetActivedListAsync(cancellationToken); + + return languages + .Select(x => new LanguageInfo(x.CultureName, x.UiCultureName, x.DisplayName, x.FlagIcon)) + .ToList(); + } + + public virtual async Task> GetLocalizationDictionaryAsync( + string resourceName, + CancellationToken cancellationToken = default) + { + // TODO: 引用缓存? + var dictionaries = new Dictionary(); + var resource = await ResourceRepository.FindByNameAsync(resourceName, cancellationToken); + if (resource == null || !resource.Enable) + { + // 资源不存在或未启用返回空 + return dictionaries; + } + + var texts = await TextRepository.GetListAsync(resourceName, cancellationToken); + + foreach (var textGroup in texts.GroupBy(x => x.CultureName)) + { + var cultureTextDictionaires = new Dictionary(); + foreach (var text in textGroup) + { + // 本地化名称去重 + if (!cultureTextDictionaires.ContainsKey(text.Key)) + { + cultureTextDictionaires[text.Key] = new LocalizedString(text.Key, text.Value.NormalizeLineEndings()); + } + } + + // 本地化语言去重 + if (!dictionaries.ContainsKey(textGroup.Key)) + { + dictionaries[textGroup.Key] = new StaticLocalizationDictionary(textGroup.Key, cultureTextDictionaires); + } + } + + return dictionaries; + } + + public virtual async Task ResourceExistsAsync(string resourceName, CancellationToken cancellationToken = default) + { + return await ResourceRepository.ExistsAsync(resourceName, cancellationToken); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationSynchronizer.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationSynchronizer.cs new file mode 100644 index 000000000..7e1a21f85 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationSynchronizer.cs @@ -0,0 +1,53 @@ +using LINGYUN.Abp.Localization.Dynamic; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Entities.Events; +using Volo.Abp.EventBus; +using Volo.Abp.EventBus.Distributed; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class LocalizationSynchronizer : + ILocalEventHandler>, + ILocalEventHandler>, + ILocalEventHandler>, + ITransientDependency + { + private readonly IDistributedEventBus _eventBus; + + public LocalizationSynchronizer( + IDistributedEventBus eventBus) + { + _eventBus = eventBus; + } + + public virtual async Task HandleEventAsync(EntityCreatedEventData eventData) + { + await HandleEventAsync(BuildResetEventData(eventData.Entity)); + } + + public virtual async Task HandleEventAsync(EntityUpdatedEventData eventData) + { + await HandleEventAsync(BuildResetEventData(eventData.Entity)); + } + + public virtual async Task HandleEventAsync(EntityDeletedEventData eventData) + { + var data = BuildResetEventData(eventData.Entity); + data.IsDeleted = true; + + await HandleEventAsync(data); + } + + private LocalizedStringCacheResetEventData BuildResetEventData(Text text) + { + return new LocalizedStringCacheResetEventData( + text.ResourceName, text.CultureName, text.Key, text.Value); + } + + private async Task HandleEventAsync(LocalizedStringCacheResetEventData eventData) + { + await _eventBus.PublishAsync(eventData); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/Resource.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/Resource.cs new file mode 100644 index 000000000..c8fedf660 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/Resource.cs @@ -0,0 +1,28 @@ +using JetBrains.Annotations; +using System; +using Volo.Abp; +using Volo.Abp.Domain.Entities.Auditing; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class Resource : AuditedEntity + { + public virtual bool Enable { get; set; } + public virtual string Name { get; set; } + public virtual string DisplayName { get; set; } + public virtual string Description { get; set; } + protected Resource() { } + public Resource( + [NotNull] string name, + [CanBeNull] string displayName = null, + [CanBeNull] string description = null) + { + Name = Check.NotNullOrWhiteSpace(name, nameof(name), ResourceConsts.MaxNameLength); + + DisplayName = displayName ?? Name; + Description = description; + + Enable = true; + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/Text.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/Text.cs new file mode 100644 index 000000000..6bd88117b --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/Text.cs @@ -0,0 +1,37 @@ +using JetBrains.Annotations; +using System; +using Volo.Abp; +using Volo.Abp.Domain.Entities; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public class Text : Entity + { + public virtual string CultureName { get; protected set; } + public virtual string Key { get; protected set; } + public virtual string Value { get; protected set; } + public virtual string ResourceName { get; protected set; } + protected Text() { } + public Text( + [NotNull] string resourceName, + [NotNull] string cultureName, + [NotNull] string key, + [CanBeNull] string value) + { + ResourceName = Check.NotNull(resourceName, nameof(resourceName), ResourceConsts.MaxNameLength); + CultureName = Check.NotNullOrWhiteSpace(cultureName, nameof(cultureName), LanguageConsts.MaxCultureNameLength); + Key = Check.NotNullOrWhiteSpace(key, nameof(key), TextConsts.MaxKeyLength); + + Value = !value.IsNullOrWhiteSpace() + ? Check.NotNullOrWhiteSpace(value, nameof(value), TextConsts.MaxValueLength) + : ""; + } + + public void SetValue(string value) + { + Value = !value.IsNullOrWhiteSpace() + ? Check.NotNullOrWhiteSpace(value, nameof(value), TextConsts.MaxValueLength) + : Value; + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj new file mode 100644 index 000000000..3f7b476e7 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj @@ -0,0 +1,18 @@ + + + + + + netstandard2.1 + + + + + + + + + + + + diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/AbpLocalizationManagementEntityFrameworkCoreModule.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/AbpLocalizationManagementEntityFrameworkCoreModule.cs new file mode 100644 index 000000000..ec4a9e4c9 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/AbpLocalizationManagementEntityFrameworkCoreModule.cs @@ -0,0 +1,24 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.Modularity; + +namespace LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore +{ + [DependsOn( + typeof(AbpEntityFrameworkCoreModule), + typeof(AbpLocalizationManagementDomainModule))] + public class AbpLocalizationManagementEntityFrameworkCoreModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAbpDbContext(options => + { + options.AddRepository(); + options.AddRepository(); + options.AddRepository(); + + options.AddDefaultRepositories(includeAllEntities: true); + }); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/EfCoreLanguageRepository.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/EfCoreLanguageRepository.cs new file mode 100644 index 000000000..61ec2b47c --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/EfCoreLanguageRepository.cs @@ -0,0 +1,34 @@ +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +namespace LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore +{ + public class EfCoreLanguageRepository : EfCoreRepository, + ILanguageRepository + { + public EfCoreLanguageRepository( + IDbContextProvider dbContextProvider) : base(dbContextProvider) + { + } + + public virtual async Task FindByCultureNameAsync( + string cultureName, + CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()).Where(x => x.CultureName.Equals(cultureName)) + .FirstOrDefaultAsync(GetCancellationToken(cancellationToken)); + } + + public virtual async Task> GetActivedListAsync(CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()).Where(x => x.Enable) + .ToListAsync(GetCancellationToken(cancellationToken)); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/EfCoreResourceRepository.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/EfCoreResourceRepository.cs new file mode 100644 index 000000000..b389849b2 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/EfCoreResourceRepository.cs @@ -0,0 +1,34 @@ +using Microsoft.EntityFrameworkCore; +using System; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +namespace LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore +{ + public class EfCoreResourceRepository : EfCoreRepository, + IResourceRepository + { + public EfCoreResourceRepository( + IDbContextProvider dbContextProvider) : base(dbContextProvider) + { + } + + public virtual async Task ExistsAsync( + string name, + CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()).AnyAsync(x => x.Name.Equals(name)); + } + + public virtual async Task FindByNameAsync( + string name, + CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()).Where(x => x.Name.Equals(name)) + .FirstOrDefaultAsync(GetCancellationToken(cancellationToken)); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/EfCoreTextRepository.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/EfCoreTextRepository.cs new file mode 100644 index 000000000..b7c3fa412 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/EfCoreTextRepository.cs @@ -0,0 +1,135 @@ +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Dynamic.Core; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +namespace LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore +{ + public class EfCoreTextRepository : EfCoreRepository, + ITextRepository + { + public EfCoreTextRepository( + IDbContextProvider dbContextProvider) : base(dbContextProvider) + { + } + + public virtual async Task GetByCultureKeyAsync( + string resourceName, + string cultureName, + string key, + CancellationToken cancellationToken = default + ) + { + return await (await GetDbSetAsync()) + .Where(x => x.ResourceName.Equals(resourceName) && x.CultureName.Equals(cultureName) && x.Key.Equals(key)) + .FirstOrDefaultAsync(GetCancellationToken(cancellationToken)); + } + + public virtual async Task GetDifferenceCountAsync( + string cultureName, + string targetCultureName, + string resourceName = null, + bool? onlyNull = null, + string filter = null, + CancellationToken cancellationToken = default) + { + return await (await BuildTextDifferenceQueryAsync( + cultureName, + targetCultureName, + resourceName, + onlyNull, + filter)) + .CountAsync(GetCancellationToken(cancellationToken)); + } + + public virtual async Task> GetListAsync( + string resourceName, + CancellationToken cancellationToken = default) + { + var languages = (await GetDbContextAsync()).Set(); + var texts = await GetDbSetAsync(); + + return await (from txts in texts + join lg in languages + on txts.CultureName equals lg.CultureName + where txts.ResourceName.Equals(resourceName) && + lg.Enable + select txts) + .ToListAsync(GetCancellationToken(cancellationToken)); + } + + public virtual async Task> GetListAsync( + string resourceName, + string cultureName, + CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .Where(x => x.ResourceName.Equals(resourceName) && x.CultureName.Equals(cultureName)) + .ToListAsync(GetCancellationToken(cancellationToken)); + } + + public virtual async Task> GetDifferencePagedListAsync( + string cultureName, + string targetCultureName, + string resourceName = null, + bool? onlyNull = null, + string filter = null, + string sorting = nameof(TextDifference.Key), + int skipCount = 1, + int maxResultCount = 10, + CancellationToken cancellationToken = default) + { + return await (await BuildTextDifferenceQueryAsync( + cultureName, + targetCultureName, + resourceName, + onlyNull, + filter, + sorting)) + .PageBy(skipCount, maxResultCount) + .ToListAsync(GetCancellationToken(cancellationToken)); + } + + protected virtual async Task> BuildTextDifferenceQueryAsync( + string cultureName, + string targetCultureName, + string resourceName = null, + bool? onlyNull = null, + string filter = null, + string sorting = nameof(TextDifference.Key)) + { + var textQuery = (await GetDbSetAsync()) + .Where(x => x.CultureName.Equals(cultureName)) + .WhereIf(!resourceName.IsNullOrWhiteSpace(), x => x.ResourceName.Equals(resourceName)) + .WhereIf(!filter.IsNullOrWhiteSpace(), x => x.Key.Contains(filter)) + .OrderBy(sorting ?? nameof(TextDifference.Key)); + + var targetTextQuery = (await GetDbSetAsync()) + .Where(x => x.CultureName.Equals(targetCultureName)) + .WhereIf(!resourceName.IsNullOrWhiteSpace(), x => x.ResourceName.Equals(resourceName)); + + var query = from crtText in textQuery + join tgtText in targetTextQuery + on crtText.Key equals tgtText.Key + into tgt + from tt in tgt.DefaultIfEmpty() + where onlyNull.HasValue && onlyNull.Value + ? tt.Value == null + : 1 == 1 + select new TextDifference( + crtText.Id, + crtText.CultureName, + crtText.Key, + crtText.Value, + targetCultureName, + tt != null ? tt.Value : null, + crtText.ResourceName); + return query; + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/ILocalizationDbContext.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/ILocalizationDbContext.cs new file mode 100644 index 000000000..0c0c2b334 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/ILocalizationDbContext.cs @@ -0,0 +1,10 @@ +using Volo.Abp.Data; +using Volo.Abp.EntityFrameworkCore; + +namespace LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore +{ + [ConnectionStringName(LocalizationDbProperties.ConnectionStringName)] + public interface ILocalizationDbContext : IEfCoreDbContext + { + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/LocalizationDbContext.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/LocalizationDbContext.cs new file mode 100644 index 000000000..cb6b1e92e --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/LocalizationDbContext.cs @@ -0,0 +1,25 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp.Data; +using Volo.Abp.EntityFrameworkCore; + +namespace LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore +{ + [ConnectionStringName(LocalizationDbProperties.ConnectionStringName)] + public class LocalizationDbContext : AbpDbContext, ILocalizationDbContext + { + public virtual DbSet Resources { get; set; } + public virtual DbSet Languages { get; set; } + public virtual DbSet Texts { get; set; } + public LocalizationDbContext( + DbContextOptions options) : base(options) + { + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); + + modelBuilder.ConfigureLocalization(); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/LocalizationDbContextModelBuilderExtensions.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/LocalizationDbContextModelBuilderExtensions.cs new file mode 100644 index 000000000..81ca35f8a --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/LocalizationDbContextModelBuilderExtensions.cs @@ -0,0 +1,99 @@ +using Microsoft.EntityFrameworkCore; +using System; +using Volo.Abp; +using Volo.Abp.EntityFrameworkCore.Modeling; + +namespace LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore +{ + public static class LocalizationDbContextModelBuilderExtensions + { + public static void ConfigureLocalization( + this ModelBuilder builder, + Action optionsAction = null) + { + Check.NotNull(builder, nameof(builder)); + + var options = new LocalizationModelBuilderConfigurationOptions( + LocalizationDbProperties.DbTablePrefix, + LocalizationDbProperties.DbSchema + ); + + optionsAction?.Invoke(options); + + builder.Entity(x => + { + x.ToTable(options.TablePrefix + "Languages", options.Schema); + + x.Property(p => p.CultureName) + .IsRequired() + .HasMaxLength(LanguageConsts.MaxCultureNameLength) + .HasColumnName(nameof(Language.CultureName)); + x.Property(p => p.UiCultureName) + .IsRequired() + .HasMaxLength(LanguageConsts.MaxUiCultureNameLength) + .HasColumnName(nameof(Language.UiCultureName)); + x.Property(p => p.DisplayName) + .IsRequired() + .HasMaxLength(LanguageConsts.MaxDisplayNameLength) + .HasColumnName(nameof(Language.DisplayName)); + + x.Property(p => p.FlagIcon) + .IsRequired(false) + .HasMaxLength(LanguageConsts.MaxFlagIconLength) + .HasColumnName(nameof(Language.FlagIcon)); + + x.Property(p => p.Enable) + .HasDefaultValue(true); + + x.ConfigureByConvention(); + + x.HasIndex(p => p.CultureName); + }); + + builder.Entity(x => + { + x.ToTable(options.TablePrefix + "Resources", options.Schema); + + x.Property(p => p.Name) + .IsRequired() + .HasMaxLength(ResourceConsts.MaxNameLength) + .HasColumnName(nameof(Resource.Name)); + + x.Property(p => p.DisplayName) + .HasMaxLength(ResourceConsts.MaxDisplayNameLength) + .HasColumnName(nameof(Resource.DisplayName)); + x.Property(p => p.Description) + .HasMaxLength(ResourceConsts.MaxDescriptionLength) + .HasColumnName(nameof(Resource.Description)); + + x.Property(p => p.Enable) + .HasDefaultValue(true); + + x.ConfigureByConvention(); + + x.HasIndex(p => p.Name); + }); + + builder.Entity(x => + { + x.ToTable(options.TablePrefix + "Texts", options.Schema); + + x.Property(p => p.CultureName) + .IsRequired() + .HasMaxLength(LanguageConsts.MaxCultureNameLength) + .HasColumnName(nameof(Text.CultureName)); + x.Property(p => p.Key) + .IsRequired() + .HasMaxLength(TextConsts.MaxKeyLength) + .HasColumnName(nameof(Text.Key)); + x.Property(p => p.Value) + .HasMaxLength(TextConsts.MaxValueLength) + .HasColumnName(nameof(Text.Value)); + + x.ConfigureByConvention(); + + x.HasIndex(p => p.Key); + }); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/LocalizationModelBuilderConfigurationOptions.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/LocalizationModelBuilderConfigurationOptions.cs new file mode 100644 index 000000000..87eb764cf --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/LocalizationModelBuilderConfigurationOptions.cs @@ -0,0 +1,18 @@ +using JetBrains.Annotations; +using Volo.Abp.EntityFrameworkCore.Modeling; + +namespace LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore +{ + public class LocalizationModelBuilderConfigurationOptions : AbpModelBuilderConfigurationOptions + { + public LocalizationModelBuilderConfigurationOptions( + [NotNull] string tablePrefix = "", + [CanBeNull] string schema = null) + : base( + tablePrefix, + schema) + { + + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN.Abp.LocalizationManagement.HttpApi.csproj b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN.Abp.LocalizationManagement.HttpApi.csproj new file mode 100644 index 000000000..8059f7ea2 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN.Abp.LocalizationManagement.HttpApi.csproj @@ -0,0 +1,18 @@ + + + + + + net5.0 + + + + + + + + + + + + diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementHttpApiModule.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementHttpApiModule.cs new file mode 100644 index 000000000..d5e37ab0e --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementHttpApiModule.cs @@ -0,0 +1,42 @@ +using LINGYUN.Abp.LocalizationManagement.Localization; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.Localization; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.Validation.Localization; + +namespace LINGYUN.Abp.LocalizationManagement +{ + [DependsOn( + typeof(AbpAspNetCoreMvcModule), + typeof(AbpLocalizationManagementApplicationContractsModule))] + public class AbpLocalizationManagementHttpApiModule : AbpModule + { + public override void PreConfigureServices(ServiceConfigurationContext context) + { + // Dto验证本地化 + PreConfigure(options => + { + options.AddAssemblyResource( + typeof(LocalizationManagementResource), + typeof(AbpLocalizationManagementApplicationContractsModule).Assembly); + }); + + PreConfigure(mvcBuilder => + { + mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpLocalizationManagementApplicationContractsModule).Assembly); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes(typeof(AbpValidationResource)); + }); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/LanguageController.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/LanguageController.cs new file mode 100644 index 000000000..54f491257 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/LanguageController.cs @@ -0,0 +1,62 @@ +using Microsoft.AspNetCore.Mvc; +using System; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.LocalizationManagement +{ + [RemoteService(Name = LocalizationRemoteServiceConsts.RemoteServiceName)] + [Area("localization")] + [Route("api/localization/languages")] + public class LanguageController : AbpController, ILanguageAppService + { + private readonly ILanguageAppService _service; + + public LanguageController(ILanguageAppService service) + { + _service = service; + } + + [HttpPost] + public virtual async Task CreateAsync(CreateOrUpdateLanguageInput input) + { + return await _service.CreateAsync(input); + } + + [HttpDelete] + [Route("{id}")] + public virtual async Task DeleteAsync(Guid id) + { + await _service.DeleteAsync(id); + } + + [HttpGet] + [Route("all")] + public virtual async Task> GetAllAsync() + { + return await _service.GetAllAsync(); + } + + [HttpGet] + [Route("{id}")] + public virtual async Task GetAsync(Guid id) + { + return await _service.GetAsync(id); + } + + [HttpGet] + public virtual async Task> GetListAsync(GetLanguagesInput input) + { + return await _service.GetListAsync(input); + } + + [HttpPut] + [Route("{id}")] + public virtual async Task UpdateAsync(Guid id, CreateOrUpdateLanguageInput input) + { + return await _service.UpdateAsync(id, input); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/ResourceController.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/ResourceController.cs new file mode 100644 index 000000000..36e837472 --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/ResourceController.cs @@ -0,0 +1,62 @@ +using Microsoft.AspNetCore.Mvc; +using System; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.LocalizationManagement +{ + [RemoteService(Name = LocalizationRemoteServiceConsts.RemoteServiceName)] + [Area("localization")] + [Route("api/localization/resources")] + public class ResourceController : AbpController, IResourceAppService + { + private readonly IResourceAppService _service; + + public ResourceController(IResourceAppService service) + { + _service = service; + } + + [HttpPost] + public virtual async Task CreateAsync(CreateOrUpdateResourceInput input) + { + return await _service.CreateAsync(input); + } + + [HttpDelete] + [Route("{id}")] + public virtual async Task DeleteAsync(Guid id) + { + await _service.DeleteAsync(id); + } + + [HttpGet] + [Route("all")] + public virtual async Task> GetAllAsync() + { + return await _service.GetAllAsync(); + } + + [HttpGet] + [Route("{id}")] + public virtual async Task GetAsync(Guid id) + { + return await _service.GetAsync(id); + } + + [HttpGet] + public virtual async Task> GetListAsync(GetResourcesInput input) + { + return await _service.GetListAsync(input); + } + + [HttpPut] + [Route("{id}")] + public virtual async Task UpdateAsync(Guid id, CreateOrUpdateResourceInput input) + { + return await _service.UpdateAsync(id, input); + } + } +} diff --git a/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/TextController.cs b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/TextController.cs new file mode 100644 index 000000000..18b7d2b8f --- /dev/null +++ b/aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/TextController.cs @@ -0,0 +1,61 @@ +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.LocalizationManagement +{ + [RemoteService(Name = LocalizationRemoteServiceConsts.RemoteServiceName)] + [Area("localization")] + [Route("api/localization/texts")] + public class TextController : AbpController, ITextAppService + { + private readonly ITextAppService _service; + + public TextController(ITextAppService service) + { + _service = service; + } + + [HttpPost] + public virtual async Task CreateAsync(CreateTextInput input) + { + return await _service.CreateAsync(input); + } + + [HttpDelete] + [Route("{id}")] + public virtual async Task DeleteAsync(int id) + { + await _service.DeleteAsync(id); + } + + [HttpGet] + [Route("{id}")] + public virtual async Task GetAsync(int id) + { + return await _service.GetAsync(id); + } + + [HttpGet] + [Route("by-culture-key")] + public virtual async Task GetByCultureKeyAsync(GetTextByKeyInput input) + { + return await _service.GetByCultureKeyAsync(input); + } + + [HttpGet] + public virtual async Task> GetListAsync(GetTextsInput input) + { + return await _service.GetListAsync(input); + } + + [HttpPut] + [Route("{id}")] + public virtual async Task UpdateAsync(int id, UpdateTextInput input) + { + return await _service.UpdateAsync(id, input); + } + } +} diff --git a/aspnet-core/modules/lt/README.md b/aspnet-core/modules/lt/README.md new file mode 100644 index 000000000..0d2dbd9cd --- /dev/null +++ b/aspnet-core/modules/lt/README.md @@ -0,0 +1,39 @@ +# Localization Management + +本地化文档管理模块,因项目路径太长Windows系统不支持,项目目录取简称 lt + +## 模块说明 + +### 基础模块 + +* [LINGYUN.Abp.Localization.Dynamic](../common/LINGYUN.Abp.Localization.Dynamic/LINGYUN.Abp.Localization.Dynamic) 本地化扩展模块,增加 DynamicLocalizationResourceContributor 通过 ILocalizationStore 接口获取动态的本地化资源信息 +* [LINGYUN.Abp.LocalizationManagement.Domain.Shared](./LINGYUN.Abp.LocalizationManagement.Domain.Shared) 领域层公共模块,定义了错误代码、本地化、模块设置 +* [LINGYUN.Abp.LocalizationManagement.Domain](./LINGYUN.Abp.LocalizationManagement.Domain) 领域层模块,实现 ILocalizationStore 接口 +* [LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore](./LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore) 数据访问层模块,集成EfCore +* [LINGYUN.Abp.LocalizationManagement.Application.Contracts](./LINGYUN.Abp.LocalizationManagement.Application.Contracts) 应用服务层公共模块,定义了管理本地化对象的外部接口、权限、功能限制策略 +* [LINGYUN.Abp.LocalizationManagement.Application](./LINGYUN.Abp.LocalizationManagement.Application) 应用服务层实现,实现了本地化对象管理接口 +* [LINGYUN.Abp.LocalizationManagement.HttpApi](./LINGYUN.Abp.LocalizationManagement.HttpApi) RestApi实现,实现了独立的对外RestApi接口 + +### 高阶模块 + +### 权限定义 + +* LocalizationManagement.Resource 授权对象是否允许访问资源 +* LocalizationManagement.Resource.Create 授权对象是否允许创建资源 +* LocalizationManagement.Resource.Update 授权对象是否允许修改资源 +* LocalizationManagement.Resource.Delete 授权对象是否允许删除资源 +* LocalizationManagement.Language 授权对象是否允许访问语言 +* LocalizationManagement.Language.Create 授权对象是否允许创建语言 +* LocalizationManagement.Language.Update 授权对象是否允许修改语言 +* LocalizationManagement.Language.Delete 授权对象是否允许删除语言 +* LocalizationManagement.Text 授权对象是否允许访问文档 +* LocalizationManagement.Text.Create 授权对象是否允许创建文档 +* LocalizationManagement.Text.Update 授权对象是否允许删除Oss对象 +* LocalizationManagement.Text.Delete 授权对象是否允许下载Oss对象 + +### 功能定义 + +### 配置定义 + +## 更新日志 + 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 4eac99d56..0b4d9e11f 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 @@ -61,6 +61,8 @@ namespace LINGYUN.Platform await SeedApiGatewayMenuAsync(layout, data); // Oss对象管理菜单数据 await SeedOssManagementMenuAsync(layout, data); + // 本地化管理菜单数据 + await SeedLocalizationManagementMenuAsync(layout, data); } } @@ -775,6 +777,90 @@ namespace LINGYUN.Platform new string[] { "admin" }); } + private async Task SeedLocalizationManagementMenuAsync(Layout layout, Data data) + { + var localizationManagementMenu = await SeedMenuAsync( + layout, + data, + "localization-management", + "/localization-management", + CodeNumberGenerator.CreateCode(9), + layout.Path, + "Manage Localization", + "/localization", + "Manage Localization", + null, + layout.TenantId, + new Dictionary() + { + { "title", "localization" }, + { "icon", "localization" }, + { "alwaysShow", true }, + { "roles", new string[] { "LocalizationManagement.Resource", "LocalizationManagement.Language", "LocalizationManagement.Text" } }, + }, + new string[] { "admin" }); + + await SeedMenuAsync( + layout, + data, + "resource", + "resource", + CodeNumberGenerator.AppendCode(localizationManagementMenu.Code, CodeNumberGenerator.CreateCode(1)), + "views/localization-management/resources/index.vue", + "Manage Resource", + "", + "Manage Resource", + localizationManagementMenu.Id, + localizationManagementMenu.TenantId, + new Dictionary() + { + { "title", "resource" }, + { "icon", "resource" }, + { "roles", new string[] { "LocalizationManagement.Resource" } } + }, + new string[] { "admin" }); + + await SeedMenuAsync( + layout, + data, + "language", + "language", + CodeNumberGenerator.AppendCode(localizationManagementMenu.Code, CodeNumberGenerator.CreateCode(2)), + "views/localization-management/languages/index.vue", + "Manage Language", + "", + "Manage Language", + localizationManagementMenu.Id, + localizationManagementMenu.TenantId, + new Dictionary() + { + { "title", "language" }, + { "icon", "language" }, + { "roles", new string[] { "LocalizationManagement.Language" } } + }, + new string[] { "admin" }); + + await SeedMenuAsync( + layout, + data, + "text", + "text", + CodeNumberGenerator.AppendCode(localizationManagementMenu.Code, CodeNumberGenerator.CreateCode(3)), + "views/localization-management/texts/index.vue", + "Manage Text", + "", + "Manage Text", + localizationManagementMenu.Id, + localizationManagementMenu.TenantId, + new Dictionary() + { + { "title", "text" }, + { "icon", "text" }, + { "roles", new string[] { "LocalizationManagement.Text" } } + }, + new string[] { "admin" }); + + } private async Task SeedMenuAsync( Layout layout, Data data, diff --git a/aspnet-core/services/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/BackendAdminHostModule.cs b/aspnet-core/services/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/BackendAdminHostModule.cs index 19631da06..9eef6ebbe 100644 --- a/aspnet-core/services/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/BackendAdminHostModule.cs +++ b/aspnet-core/services/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/BackendAdminHostModule.cs @@ -5,6 +5,8 @@ using LINGYUN.Abp.EventBus.CAP; using LINGYUN.Abp.ExceptionHandling; using LINGYUN.Abp.ExceptionHandling.Emailing; using LINGYUN.Abp.FeatureManagement; +using LINGYUN.Abp.LocalizationManagement; +using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; using LINGYUN.Abp.MessageService; using LINGYUN.Abp.MultiTenancy.DbFinder; using LINGYUN.Abp.OssManagement; @@ -15,6 +17,7 @@ using LINGYUN.Abp.TenantManagement; using LINGYUN.Abp.WeChat.SettingManagement; using LINGYUN.ApiGateway; using LINGYUN.Platform; +using Localization.Resources.AbpUi; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.DataProtection; @@ -62,6 +65,7 @@ using Volo.Abp.Security.Encryption; using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.TenantManagement.EntityFrameworkCore; using Volo.Abp.Threading; +using Volo.Abp.Validation.Localization; using Volo.Abp.VirtualFileSystem; namespace LINGYUN.Abp.BackendAdmin @@ -72,6 +76,7 @@ namespace LINGYUN.Abp.BackendAdmin typeof(ApiGatewayApplicationContractsModule), typeof(AbpOssManagementApplicationContractsModule), typeof(AbpMessageServiceApplicationContractsModule), + typeof(AbpLocalizationManagementApplicationContractsModule), typeof(LINGYUN.Abp.Account.AbpAccountApplicationContractsModule),// 引用类似的包主要用于聚合权限管理和设置 typeof(LINGYUN.Abp.Identity.AbpIdentityApplicationContractsModule), typeof(LINGYUN.Abp.IdentityServer.AbpIdentityServerApplicationContractsModule), @@ -98,6 +103,7 @@ namespace LINGYUN.Abp.BackendAdmin typeof(AbpPermissionManagementDomainIdentityServerModule), typeof(AbpPermissionManagementEntityFrameworkCoreModule), typeof(AbpFeatureManagementEntityFrameworkCoreModule), + typeof(AbpLocalizationManagementEntityFrameworkCoreModule), typeof(AbpAspNetCoreAuthenticationJwtBearerModule), typeof(AbpEmailingExceptionHandlingModule), typeof(AbpCAPEventBusModule), @@ -309,6 +315,8 @@ namespace LINGYUN.Abp.BackendAdmin "vue-admin-element-ui", new NameValue("zh-Hans", "zh"), new NameValue("en", "en")); + + options.Resources.AddDynamic(); }); Configure(options => diff --git a/aspnet-core/services/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/LINGYUN.Abp.BackendAdmin.HttpApi.Host.csproj b/aspnet-core/services/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/LINGYUN.Abp.BackendAdmin.HttpApi.Host.csproj index b6890e788..f0a05655f 100644 --- a/aspnet-core/services/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/LINGYUN.Abp.BackendAdmin.HttpApi.Host.csproj +++ b/aspnet-core/services/admin/LINGYUN.Abp.BackendAdmin.HttpApi.Host/LINGYUN.Abp.BackendAdmin.HttpApi.Host.csproj @@ -66,7 +66,10 @@ + + + diff --git a/aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/event-bus-cap.db b/aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/event-bus-cap.db index d17e999bf..216ee1ce7 100644 Binary files a/aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/event-bus-cap.db and b/aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/event-bus-cap.db differ diff --git a/aspnet-core/services/identity-server/LINGYUN.Abp.IdentityServer4.HttpApi.Host/AbpIdentityServerAdminHttpApiHostModule.cs b/aspnet-core/services/identity-server/LINGYUN.Abp.IdentityServer4.HttpApi.Host/AbpIdentityServerAdminHttpApiHostModule.cs index 3add1a503..b9a088d4e 100644 --- a/aspnet-core/services/identity-server/LINGYUN.Abp.IdentityServer4.HttpApi.Host/AbpIdentityServerAdminHttpApiHostModule.cs +++ b/aspnet-core/services/identity-server/LINGYUN.Abp.IdentityServer4.HttpApi.Host/AbpIdentityServerAdminHttpApiHostModule.cs @@ -2,8 +2,10 @@ using DotNetCore.CAP; using LINGYUN.Abp.EventBus.CAP; using LINGYUN.Abp.ExceptionHandling; using LINGYUN.Abp.ExceptionHandling.Emailing; +using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; using LINGYUN.Abp.MultiTenancy.DbFinder; using LINGYUN.Abp.Sms.Aliyun; +using Localization.Resources.AbpUi; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.DataProtection; @@ -33,6 +35,7 @@ using Volo.Abp.Domain.Entities.Events.Distributed; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.MySQL; using Volo.Abp.Identity.Localization; +using Volo.Abp.IdentityServer.Localization; using Volo.Abp.Json; using Volo.Abp.Json.SystemTextJson; using Volo.Abp.Localization; @@ -44,6 +47,7 @@ using Volo.Abp.Security.Claims; using Volo.Abp.Security.Encryption; using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.TenantManagement.EntityFrameworkCore; +using Volo.Abp.Validation.Localization; using Volo.Abp.VirtualFileSystem; namespace LINGYUN.Abp.IdentityServer4 @@ -63,6 +67,7 @@ namespace LINGYUN.Abp.IdentityServer4 typeof(AbpTenantManagementEntityFrameworkCoreModule), typeof(AbpSettingManagementEntityFrameworkCoreModule), typeof(AbpPermissionManagementEntityFrameworkCoreModule), + typeof(AbpLocalizationManagementEntityFrameworkCoreModule), typeof(AbpAspNetCoreAuthenticationJwtBearerModule), typeof(AbpEmailingExceptionHandlingModule), typeof(AbpCAPEventBusModule), @@ -274,6 +279,8 @@ namespace LINGYUN.Abp.IdentityServer4 options.Resources .Get() .AddVirtualJson("/LINGYUN/Abp/IdentityServer4/Localization"); + + options.Resources.AddDynamic(typeof(IdentityResource)); }); Configure(options => diff --git a/aspnet-core/services/identity-server/LINGYUN.Abp.IdentityServer4.HttpApi.Host/LINGYUN.Abp.IdentityServer4.HttpApi.Host.csproj b/aspnet-core/services/identity-server/LINGYUN.Abp.IdentityServer4.HttpApi.Host/LINGYUN.Abp.IdentityServer4.HttpApi.Host.csproj index 115338ac2..f98db416d 100644 --- a/aspnet-core/services/identity-server/LINGYUN.Abp.IdentityServer4.HttpApi.Host/LINGYUN.Abp.IdentityServer4.HttpApi.Host.csproj +++ b/aspnet-core/services/identity-server/LINGYUN.Abp.IdentityServer4.HttpApi.Host/LINGYUN.Abp.IdentityServer4.HttpApi.Host.csproj @@ -63,6 +63,7 @@ + diff --git a/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/AbpLocalizationManagementHttpApiHostModule.cs b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/AbpLocalizationManagementHttpApiHostModule.cs new file mode 100644 index 000000000..4c49e5925 --- /dev/null +++ b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/AbpLocalizationManagementHttpApiHostModule.cs @@ -0,0 +1,268 @@ +using DotNetCore.CAP; +using LINGYUN.Abp.EventBus.CAP; +using LINGYUN.Abp.ExceptionHandling; +using LINGYUN.Abp.ExceptionHandling.Emailing; +using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; +using LINGYUN.Abp.MultiTenancy.DbFinder; +using Localization.Resources.AbpUi; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.Extensions.Caching.StackExchangeRedis; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.OpenApi.Models; +using StackExchange.Redis; +using System; +using System.Text; +using System.Text.Encodings.Web; +using System.Text.Unicode; +using Volo.Abp; +using Volo.Abp.AspNetCore.Authentication.JwtBearer; +using Volo.Abp.AspNetCore.MultiTenancy; +using Volo.Abp.Autofac; +using Volo.Abp.Caching; +using Volo.Abp.Caching.StackExchangeRedis; +using Volo.Abp.Data; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore.MySQL; +using Volo.Abp.Json; +using Volo.Abp.Json.SystemTextJson; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; +using Volo.Abp.PermissionManagement.EntityFrameworkCore; +using Volo.Abp.Security.Encryption; +using Volo.Abp.SettingManagement.EntityFrameworkCore; +using Volo.Abp.TenantManagement.EntityFrameworkCore; +using Volo.Abp.Threading; +using Volo.Abp.Validation.Localization; + +namespace LINGYUN.Abp.LocalizationManagement +{ + [DependsOn( + typeof(AbpLocalizationManagementApplicationModule), + typeof(AbpLocalizationManagementHttpApiModule), + typeof(AbpLocalizationManagementEntityFrameworkCoreModule), + typeof(AbpAspNetCoreMultiTenancyModule), + typeof(AbpEntityFrameworkCoreMySQLModule), + typeof(AbpTenantManagementEntityFrameworkCoreModule), + typeof(AbpSettingManagementEntityFrameworkCoreModule), + typeof(AbpPermissionManagementEntityFrameworkCoreModule), + typeof(AbpAspNetCoreAuthenticationJwtBearerModule), + typeof(AbpEmailingExceptionHandlingModule), + typeof(AbpCAPEventBusModule), + typeof(AbpDbFinderMultiTenancyModule), + typeof(AbpCachingStackExchangeRedisModule), + typeof(AbpAutofacModule) + )] + public class AbpLocalizationManagementHttpApiHostModule : AbpModule + { + public override void PreConfigureServices(ServiceConfigurationContext context) + { + var configuration = context.Services.GetConfiguration(); + + PreConfigure(options => + { + options + .UseMySql(configuration.GetConnectionString("Default")) + .UseRabbitMQ(rabbitMQOptions => + { + configuration.GetSection("CAP:RabbitMQ").Bind(rabbitMQOptions); + }) + .UseDashboard(); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + var hostingEnvironment = context.Services.GetHostingEnvironment(); + var configuration = context.Services.GetConfiguration(); + + // 配置Ef + Configure(options => + { + options.UseMySQL(); + }); + + // 解决某些不支持类型的序列化 + Configure(options => + { + options.UseHybridSerializer = true; + }); + // 中文序列化的编码问题 + Configure(options => + { + options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All); + }); + + // 加解密 + Configure(options => + { + var encryptionConfiguration = configuration.GetSection("Encryption"); + if (encryptionConfiguration.Exists()) + { + options.DefaultPassPhrase = encryptionConfiguration["PassPhrase"] ?? options.DefaultPassPhrase; + options.DefaultSalt = encryptionConfiguration.GetSection("Salt").Exists() + ? Encoding.ASCII.GetBytes(encryptionConfiguration["Salt"]) + : options.DefaultSalt; + options.InitVectorBytes = encryptionConfiguration.GetSection("InitVector").Exists() + ? Encoding.ASCII.GetBytes(encryptionConfiguration["InitVector"]) + : options.InitVectorBytes; + } + }); + + // 自定义需要处理的异常 + Configure(options => + { + // 加入需要处理的异常类型 + options.Handlers.Add(); + options.Handlers.Add(); + options.Handlers.Add(); + options.Handlers.Add(); + options.Handlers.Add(); + options.Handlers.Add(); + options.Handlers.Add(); + options.Handlers.Add(); + }); + // 自定义需要发送邮件通知的异常类型 + Configure(options => + { + // 是否发送堆栈信息 + options.SendStackTrace = true; + // 未指定异常接收者的默认接收邮件 + // 指定自己的邮件地址 + // options.DefaultReceiveEmail = "colin.in@foxmail.com"; + }); + + Configure(options => + { + // 最好统一命名,不然某个缓存变动其他应用服务有例外发生 + options.KeyPrefix = "LINGYUN.Abp.Application"; + // 滑动过期30天 + options.GlobalCacheEntryOptions.SlidingExpiration = TimeSpan.FromDays(30); + // 绝对过期60天 + options.GlobalCacheEntryOptions.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(60); + }); + + Configure(options => + { + var redisConfig = ConfigurationOptions.Parse(options.Configuration); + options.ConfigurationOptions = redisConfig; + options.InstanceName = configuration["Redis:InstanceName"]; + }); + + // 可以禁用多租户 + Configure(options => + { + options.IsEnabled = false; + }); + + // 添加动态本地化组件 + Configure(options => + { + options.Resources.AddDynamic(); + }); + + // Swagger + context.Services.AddSwaggerGen( + options => + { + options.SwaggerDoc("v1", new OpenApiInfo { Title = "Localization Management API", Version = "v1" }); + options.DocInclusionPredicate((docName, description) => true); + options.CustomSchemaIds(type => type.FullName); + options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme + { + Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", + Name = "Authorization", + In = ParameterLocation.Header, + Scheme = "bearer", + Type = SecuritySchemeType.Http, + BearerFormat = "JWT" + }); + options.AddSecurityRequirement(new OpenApiSecurityRequirement + { + { + new OpenApiSecurityScheme + { + Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } + }, + new string[] { } + } + }); + }); + + // 默认支持的本地化语言类型 + Configure(options => + { + options.Languages.Add(new LanguageInfo("en", "en", "English")); + options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); + }); + + context.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) + .AddJwtBearer(options => + { + options.Authority = configuration["AuthServer:Authority"]; + options.RequireHttpsMetadata = false; + options.Audience = configuration["AuthServer:ApiName"]; + }); + + if (!hostingEnvironment.IsDevelopment()) + { + var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]); + context.Services + .AddDataProtection() + .PersistKeysToStackExchangeRedis(redis, "Localization-Management-Protection-Keys"); + } + } + + //public override void OnPostApplicationInitialization(ApplicationInitializationContext context) + //{ + // // 注释代码取消启动时缓存本地化信息 + // var initialize = context.ServiceProvider.GetRequiredService(); + // AsyncHelper.RunSync(async () => await initialize.InitializeAsync()); + //} + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var app = context.GetApplicationBuilder(); + var env = context.GetEnvironment(); + + // http调用链 + app.UseCorrelationId(); + // 虚拟文件系统 + app.UseVirtualFiles(); + // 本地化 + app.UseAbpRequestLocalization(); + // 多租户 + // app.UseMultiTenancy(); + //路由 + app.UseRouting(); + // 认证 + app.UseAuthentication(); + // jwt + app.UseJwtTokenMiddleware(); + // 授权 + app.UseAuthorization(); + // Swagger + app.UseSwagger(); + // Swagger可视化界面 + app.UseSwaggerUI(options => + { + options.SwaggerEndpoint("/swagger/v1/swagger.json", "Support Localization Management API"); + }); + // 审计日志 + app.UseAuditing(); + // 路由 + app.UseConfiguredEndpoints(); + + if (env.IsDevelopment()) + { + AsyncHelper.RunSync(async () => + await app.ApplicationServices.GetRequiredService() + .SeedAsync()); + } + } + } +} diff --git a/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Dockerfile b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Dockerfile new file mode 100644 index 000000000..de2939363 --- /dev/null +++ b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Dockerfile @@ -0,0 +1,13 @@ +FROM mcr.microsoft.com/dotnet/aspnet:5.0 +LABEL maintainer="colin.in@foxmail.com" +WORKDIR /app + +COPY . /app + +ENV TZ=Asia/Shanghai +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone + +EXPOSE 80/tcp +VOLUME [ "./app/Logs" ] + +ENTRYPOINT ["dotnet", "LINGYUN.Abp.LocalizationManagement.HttpApi.Host.dll"] \ No newline at end of file diff --git a/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/EntityFrameworkCore/LocalizationManagementHttpApiHostMigrationsDbContext.cs b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/EntityFrameworkCore/LocalizationManagementHttpApiHostMigrationsDbContext.cs new file mode 100644 index 000000000..54702aa01 --- /dev/null +++ b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/EntityFrameworkCore/LocalizationManagementHttpApiHostMigrationsDbContext.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +namespace LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore +{ + public class LocalizationManagementHttpApiHostMigrationsDbContext : AbpDbContext + { + public LocalizationManagementHttpApiHostMigrationsDbContext( + DbContextOptions options) + : base(options) + { + + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); + + modelBuilder.ConfigureLocalization(); + } + } +} diff --git a/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/EntityFrameworkCore/LocalizationManagementHttpApiHostMigrationsDbContextFactory.cs b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/EntityFrameworkCore/LocalizationManagementHttpApiHostMigrationsDbContextFactory.cs new file mode 100644 index 000000000..5a30305e6 --- /dev/null +++ b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/EntityFrameworkCore/LocalizationManagementHttpApiHostMigrationsDbContextFactory.cs @@ -0,0 +1,30 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Design; +using Microsoft.Extensions.Configuration; +using System.IO; + +namespace LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore +{ + public class LocalizationManagementHttpApiHostMigrationsDbContextFactory : IDesignTimeDbContextFactory + { + public LocalizationManagementHttpApiHostMigrationsDbContext CreateDbContext(string[] args) + { + var configuration = BuildConfiguration(); + var connectionString = configuration.GetConnectionString("Default"); + + var builder = new DbContextOptionsBuilder() + .UseMySql(connectionString, ServerVersion.AutoDetect(connectionString)); + + return new LocalizationManagementHttpApiHostMigrationsDbContext(builder.Options); + } + + private static IConfigurationRoot BuildConfiguration() + { + var builder = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.Development.json", optional: false); + + return builder.Build(); + } + } +} diff --git a/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/LINGYUN.Abp.LocalizationManagement.HttpApi.Host.csproj b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/LINGYUN.Abp.LocalizationManagement.HttpApi.Host.csproj new file mode 100644 index 000000000..3ffd532e4 --- /dev/null +++ b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/LINGYUN.Abp.LocalizationManagement.HttpApi.Host.csproj @@ -0,0 +1,43 @@ + + + + net5.0 + LINGYUN.Abp.LocalizationManagement + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/LocalizationCacheInitialize.cs b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/LocalizationCacheInitialize.cs new file mode 100644 index 000000000..d3630568c --- /dev/null +++ b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/LocalizationCacheInitialize.cs @@ -0,0 +1,47 @@ +using LINGYUN.Abp.Localization.Dynamic; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Caching; +using Volo.Abp.DependencyInjection; + +namespace LINGYUN.Abp.LocalizationManagement +{ + public interface ILocalizationCacheInitialize : IAsyncInitialize + { + + } + public class LocalizationCacheInitialize : ILocalizationCacheInitialize, ITransientDependency + { + protected IDistributedCache Cache { get; } + protected ITextRepository TextRepository { get; } + + public LocalizationCacheInitialize( + IDistributedCache cache, + ITextRepository textRepository) + { + Cache = cache; + TextRepository = textRepository; + } + + public virtual async Task InitializeAsync() + { + var texts = await TextRepository.GetListAsync(); + + foreach (var textGroup in texts.GroupBy(x => x.ResourceName)) + { + foreach (var textCulture in textGroup.GroupBy(x => x.CultureName)) + { + var cacheKey = LocalizationCacheItem.NormalizeKey(textGroup.Key, textCulture.Key); + var cacheItem = new LocalizationCacheItem( + textGroup.Key, + textCulture.Key, + textCulture + .Select(x => new LocalizationText(x.Key, x.Value)) + .ToList()); + await Cache.SetAsync(cacheKey, cacheItem); + } + } + } + } +} diff --git a/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326090255_Add-Module-Localization-Management.Designer.cs b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326090255_Add-Module-Localization-Management.Designer.cs new file mode 100644 index 000000000..4d8b93379 --- /dev/null +++ b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326090255_Add-Module-Localization-Management.Designer.cs @@ -0,0 +1,178 @@ +// +using System; +using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +namespace LINGYUN.Abp.LocalizationManagement.Migrations +{ + [DbContext(typeof(LocalizationManagementHttpApiHostMigrationsDbContext))] + [Migration("20210326090255_Add-Module-Localization-Management")] + partial class AddModuleLocalizationManagement + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) + .HasAnnotation("Relational:MaxIdentifierLength", 64) + .HasAnnotation("ProductVersion", "5.0.2"); + + modelBuilder.Entity("LINGYUN.Abp.LocalizationManagement.Language", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("CultureName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20) CHARACTER SET utf8mb4") + .HasColumnName("CultureName"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4") + .HasColumnName("DisplayName"); + + b.Property("Enable") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true); + + b.Property("FlagIcon") + .HasMaxLength(30) + .HasColumnType("varchar(30) CHARACTER SET utf8mb4") + .HasColumnName("FlagIcon"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("UiCultureName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20) CHARACTER SET utf8mb4") + .HasColumnName("UiCultureName"); + + b.HasKey("Id"); + + b.HasIndex("CultureName"); + + b.ToTable("AbpLocalizationLanguages"); + }); + + modelBuilder.Entity("LINGYUN.Abp.LocalizationManagement.Resource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("Description") + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4") + .HasColumnName("Description"); + + b.Property("DisplayName") + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4") + .HasColumnName("DisplayName"); + + b.Property("Enable") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4") + .HasColumnName("Name"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("AbpLocalizationResources"); + }); + + modelBuilder.Entity("LINGYUN.Abp.LocalizationManagement.Text", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CultureName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20) CHARACTER SET utf8mb4") + .HasColumnName("CultureName"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512) CHARACTER SET utf8mb4") + .HasColumnName("Key"); + + b.Property("ResourceId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasMaxLength(2048) + .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnName("Value"); + + b.HasKey("Id"); + + b.HasIndex("Key"); + + b.ToTable("AbpLocalizationTexts"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326090255_Add-Module-Localization-Management.cs b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326090255_Add-Module-Localization-Management.cs new file mode 100644 index 000000000..9eb62fad2 --- /dev/null +++ b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326090255_Add-Module-Localization-Management.cs @@ -0,0 +1,97 @@ +using System; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace LINGYUN.Abp.LocalizationManagement.Migrations +{ + public partial class AddModuleLocalizationManagement : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "AbpLocalizationLanguages", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false), + TenantId = table.Column(type: "char(36)", nullable: true), + Enable = table.Column(type: "tinyint(1)", nullable: false, defaultValue: true), + CultureName = table.Column(type: "varchar(20) CHARACTER SET utf8mb4", maxLength: 20, nullable: false), + UiCultureName = table.Column(type: "varchar(20) CHARACTER SET utf8mb4", maxLength: 20, nullable: false), + DisplayName = table.Column(type: "varchar(64) CHARACTER SET utf8mb4", maxLength: 64, nullable: false), + FlagIcon = table.Column(type: "varchar(30) CHARACTER SET utf8mb4", maxLength: 30, nullable: true), + CreationTime = table.Column(type: "datetime(6)", nullable: false), + CreatorId = table.Column(type: "char(36)", nullable: true), + LastModificationTime = table.Column(type: "datetime(6)", nullable: true), + LastModifierId = table.Column(type: "char(36)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpLocalizationLanguages", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpLocalizationResources", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false), + TenantId = table.Column(type: "char(36)", nullable: true), + Enable = table.Column(type: "tinyint(1)", nullable: false, defaultValue: true), + Name = table.Column(type: "varchar(50) CHARACTER SET utf8mb4", maxLength: 50, nullable: false), + DisplayName = table.Column(type: "varchar(64) CHARACTER SET utf8mb4", maxLength: 64, nullable: true), + Description = table.Column(type: "varchar(64) CHARACTER SET utf8mb4", maxLength: 64, nullable: true), + CreationTime = table.Column(type: "datetime(6)", nullable: false), + CreatorId = table.Column(type: "char(36)", nullable: true), + LastModificationTime = table.Column(type: "datetime(6)", nullable: true), + LastModifierId = table.Column(type: "char(36)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpLocalizationResources", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpLocalizationTexts", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + TenantId = table.Column(type: "char(36)", nullable: true), + CultureName = table.Column(type: "varchar(20) CHARACTER SET utf8mb4", maxLength: 20, nullable: false), + Key = table.Column(type: "varchar(512) CHARACTER SET utf8mb4", maxLength: 512, nullable: false), + Value = table.Column(type: "longtext CHARACTER SET utf8mb4", maxLength: 2048, nullable: true), + ResourceId = table.Column(type: "char(36)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpLocalizationTexts", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "IX_AbpLocalizationLanguages_CultureName", + table: "AbpLocalizationLanguages", + column: "CultureName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpLocalizationResources_Name", + table: "AbpLocalizationResources", + column: "Name"); + + migrationBuilder.CreateIndex( + name: "IX_AbpLocalizationTexts_Key", + table: "AbpLocalizationTexts", + column: "Key"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AbpLocalizationLanguages"); + + migrationBuilder.DropTable( + name: "AbpLocalizationResources"); + + migrationBuilder.DropTable( + name: "AbpLocalizationTexts"); + } + } +} diff --git a/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326100405_Rmove-Field-TenantId.Designer.cs b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326100405_Rmove-Field-TenantId.Designer.cs new file mode 100644 index 000000000..aef0b1a44 --- /dev/null +++ b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326100405_Rmove-Field-TenantId.Designer.cs @@ -0,0 +1,166 @@ +// +using System; +using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +namespace LINGYUN.Abp.LocalizationManagement.Migrations +{ + [DbContext(typeof(LocalizationManagementHttpApiHostMigrationsDbContext))] + [Migration("20210326100405_Rmove-Field-TenantId")] + partial class RmoveFieldTenantId + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) + .HasAnnotation("Relational:MaxIdentifierLength", 64) + .HasAnnotation("ProductVersion", "5.0.2"); + + modelBuilder.Entity("LINGYUN.Abp.LocalizationManagement.Language", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("CultureName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20) CHARACTER SET utf8mb4") + .HasColumnName("CultureName"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4") + .HasColumnName("DisplayName"); + + b.Property("Enable") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true); + + b.Property("FlagIcon") + .HasMaxLength(30) + .HasColumnType("varchar(30) CHARACTER SET utf8mb4") + .HasColumnName("FlagIcon"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("UiCultureName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20) CHARACTER SET utf8mb4") + .HasColumnName("UiCultureName"); + + b.HasKey("Id"); + + b.HasIndex("CultureName"); + + b.ToTable("AbpLocalizationLanguages"); + }); + + modelBuilder.Entity("LINGYUN.Abp.LocalizationManagement.Resource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("Description") + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4") + .HasColumnName("Description"); + + b.Property("DisplayName") + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4") + .HasColumnName("DisplayName"); + + b.Property("Enable") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4") + .HasColumnName("Name"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("AbpLocalizationResources"); + }); + + modelBuilder.Entity("LINGYUN.Abp.LocalizationManagement.Text", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CultureName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20) CHARACTER SET utf8mb4") + .HasColumnName("CultureName"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512) CHARACTER SET utf8mb4") + .HasColumnName("Key"); + + b.Property("ResourceId") + .HasColumnType("char(36)"); + + b.Property("Value") + .HasMaxLength(2048) + .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnName("Value"); + + b.HasKey("Id"); + + b.HasIndex("Key"); + + b.ToTable("AbpLocalizationTexts"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326100405_Rmove-Field-TenantId.cs b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326100405_Rmove-Field-TenantId.cs new file mode 100644 index 000000000..fd55e4165 --- /dev/null +++ b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326100405_Rmove-Field-TenantId.cs @@ -0,0 +1,44 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace LINGYUN.Abp.LocalizationManagement.Migrations +{ + public partial class RmoveFieldTenantId : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "TenantId", + table: "AbpLocalizationTexts"); + + migrationBuilder.DropColumn( + name: "TenantId", + table: "AbpLocalizationResources"); + + migrationBuilder.DropColumn( + name: "TenantId", + table: "AbpLocalizationLanguages"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "TenantId", + table: "AbpLocalizationTexts", + type: "char(36)", + nullable: true); + + migrationBuilder.AddColumn( + name: "TenantId", + table: "AbpLocalizationResources", + type: "char(36)", + nullable: true); + + migrationBuilder.AddColumn( + name: "TenantId", + table: "AbpLocalizationLanguages", + type: "char(36)", + nullable: true); + } + } +} diff --git a/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326103126_Rename-Field-ResourceId-To-ResourceName.Designer.cs b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326103126_Rename-Field-ResourceId-To-ResourceName.Designer.cs new file mode 100644 index 000000000..486874976 --- /dev/null +++ b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326103126_Rename-Field-ResourceId-To-ResourceName.Designer.cs @@ -0,0 +1,166 @@ +// +using System; +using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +namespace LINGYUN.Abp.LocalizationManagement.Migrations +{ + [DbContext(typeof(LocalizationManagementHttpApiHostMigrationsDbContext))] + [Migration("20210326103126_Rename-Field-ResourceId-To-ResourceName")] + partial class RenameFieldResourceIdToResourceName + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) + .HasAnnotation("Relational:MaxIdentifierLength", 64) + .HasAnnotation("ProductVersion", "5.0.2"); + + modelBuilder.Entity("LINGYUN.Abp.LocalizationManagement.Language", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("CultureName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20) CHARACTER SET utf8mb4") + .HasColumnName("CultureName"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4") + .HasColumnName("DisplayName"); + + b.Property("Enable") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true); + + b.Property("FlagIcon") + .HasMaxLength(30) + .HasColumnType("varchar(30) CHARACTER SET utf8mb4") + .HasColumnName("FlagIcon"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("UiCultureName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20) CHARACTER SET utf8mb4") + .HasColumnName("UiCultureName"); + + b.HasKey("Id"); + + b.HasIndex("CultureName"); + + b.ToTable("AbpLocalizationLanguages"); + }); + + modelBuilder.Entity("LINGYUN.Abp.LocalizationManagement.Resource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("Description") + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4") + .HasColumnName("Description"); + + b.Property("DisplayName") + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4") + .HasColumnName("DisplayName"); + + b.Property("Enable") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4") + .HasColumnName("Name"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("AbpLocalizationResources"); + }); + + modelBuilder.Entity("LINGYUN.Abp.LocalizationManagement.Text", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CultureName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20) CHARACTER SET utf8mb4") + .HasColumnName("CultureName"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512) CHARACTER SET utf8mb4") + .HasColumnName("Key"); + + b.Property("ResourceName") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("Value") + .HasMaxLength(2048) + .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnName("Value"); + + b.HasKey("Id"); + + b.HasIndex("Key"); + + b.ToTable("AbpLocalizationTexts"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326103126_Rename-Field-ResourceId-To-ResourceName.cs b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326103126_Rename-Field-ResourceId-To-ResourceName.cs new file mode 100644 index 000000000..e2e38db3e --- /dev/null +++ b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/20210326103126_Rename-Field-ResourceId-To-ResourceName.cs @@ -0,0 +1,35 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace LINGYUN.Abp.LocalizationManagement.Migrations +{ + public partial class RenameFieldResourceIdToResourceName : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "ResourceId", + table: "AbpLocalizationTexts"); + + migrationBuilder.AddColumn( + name: "ResourceName", + table: "AbpLocalizationTexts", + type: "longtext CHARACTER SET utf8mb4", + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "ResourceName", + table: "AbpLocalizationTexts"); + + migrationBuilder.AddColumn( + name: "ResourceId", + table: "AbpLocalizationTexts", + type: "char(36)", + nullable: false, + defaultValue: new Guid("00000000-0000-0000-0000-000000000000")); + } + } +} diff --git a/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/LocalizationManagementHttpApiHostMigrationsDbContextModelSnapshot.cs b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/LocalizationManagementHttpApiHostMigrationsDbContextModelSnapshot.cs new file mode 100644 index 000000000..561529372 --- /dev/null +++ b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Migrations/LocalizationManagementHttpApiHostMigrationsDbContextModelSnapshot.cs @@ -0,0 +1,164 @@ +// +using System; +using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +namespace LINGYUN.Abp.LocalizationManagement.Migrations +{ + [DbContext(typeof(LocalizationManagementHttpApiHostMigrationsDbContext))] + partial class LocalizationManagementHttpApiHostMigrationsDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) + .HasAnnotation("Relational:MaxIdentifierLength", 64) + .HasAnnotation("ProductVersion", "5.0.2"); + + modelBuilder.Entity("LINGYUN.Abp.LocalizationManagement.Language", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("CultureName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20) CHARACTER SET utf8mb4") + .HasColumnName("CultureName"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4") + .HasColumnName("DisplayName"); + + b.Property("Enable") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true); + + b.Property("FlagIcon") + .HasMaxLength(30) + .HasColumnType("varchar(30) CHARACTER SET utf8mb4") + .HasColumnName("FlagIcon"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("UiCultureName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20) CHARACTER SET utf8mb4") + .HasColumnName("UiCultureName"); + + b.HasKey("Id"); + + b.HasIndex("CultureName"); + + b.ToTable("AbpLocalizationLanguages"); + }); + + modelBuilder.Entity("LINGYUN.Abp.LocalizationManagement.Resource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("Description") + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4") + .HasColumnName("Description"); + + b.Property("DisplayName") + .HasMaxLength(64) + .HasColumnType("varchar(64) CHARACTER SET utf8mb4") + .HasColumnName("DisplayName"); + + b.Property("Enable") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50) CHARACTER SET utf8mb4") + .HasColumnName("Name"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("AbpLocalizationResources"); + }); + + modelBuilder.Entity("LINGYUN.Abp.LocalizationManagement.Text", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CultureName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20) CHARACTER SET utf8mb4") + .HasColumnName("CultureName"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("varchar(512) CHARACTER SET utf8mb4") + .HasColumnName("Key"); + + b.Property("ResourceName") + .HasColumnType("longtext CHARACTER SET utf8mb4"); + + b.Property("Value") + .HasMaxLength(2048) + .HasColumnType("longtext CHARACTER SET utf8mb4") + .HasColumnName("Value"); + + b.HasKey("Id"); + + b.HasIndex("Key"); + + b.ToTable("AbpLocalizationTexts"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Program.cs b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Program.cs new file mode 100644 index 000000000..df992d5da --- /dev/null +++ b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Program.cs @@ -0,0 +1,50 @@ +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Hosting; +using Serilog; +using System; +using System.IO; + +namespace LINGYUN.Abp.LocalizationManagement.HttpApi.Host +{ + public class Program + { + public static int Main(string[] args) + { + var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"; + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile($"appsettings.json", optional: false, reloadOnChange: true) + .AddJsonFile($"appsettings.{env}.json", optional: false, reloadOnChange: true) + .AddEnvironmentVariables() + .Build(); + Log.Logger = new LoggerConfiguration() + .ReadFrom.Configuration(configuration) + .CreateLogger(); + try + { + Log.Information("Starting web host."); + CreateHostBuilder(args).Build().Run(); + return 0; + } + catch (Exception ex) + { + Log.Fatal(ex, "Host terminated unexpectedly!"); + return 1; + } + finally + { + Log.CloseAndFlush(); + } + } + + internal static IHostBuilder CreateHostBuilder(string[] args) => + Microsoft.Extensions.Hosting.Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }) + .UseSerilog() + .UseAutofac(); + } +} diff --git a/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Properties/launchSettings.json b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Properties/launchSettings.json new file mode 100644 index 000000000..26215d352 --- /dev/null +++ b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Properties/launchSettings.json @@ -0,0 +1,21 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:30030", + "sslPort": 0 + } + }, + "profiles": { + "LINGYUN.Abp.LocalizationManagement.HttpApi.Host": { + "commandName": "Project", + "dotnetRunMessages": "true", + "launchBrowser": false, + "applicationUrl": "http://0.0.0.0:30030", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Startup.cs b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Startup.cs new file mode 100644 index 000000000..2e6df555c --- /dev/null +++ b/aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host/Startup.cs @@ -0,0 +1,25 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace LINGYUN.Abp.LocalizationManagement.HttpApi.Host +{ + public class Startup + { + public void ConfigureServices(IServiceCollection services) + { + services.AddApplication(); + } + + public void Configure(IApplicationBuilder app) + { + app.InitializeApplication(); + } + } +} diff --git a/aspnet-core/services/platform/LINGYUN.Platform.HttpApi.Host/AppPlatformHttpApiHostModule.cs b/aspnet-core/services/platform/LINGYUN.Platform.HttpApi.Host/AppPlatformHttpApiHostModule.cs index f0a7bbf5d..9eae66709 100644 --- a/aspnet-core/services/platform/LINGYUN.Platform.HttpApi.Host/AppPlatformHttpApiHostModule.cs +++ b/aspnet-core/services/platform/LINGYUN.Platform.HttpApi.Host/AppPlatformHttpApiHostModule.cs @@ -3,6 +3,7 @@ using LINGYUN.Abp.EventBus.CAP; using LINGYUN.Abp.ExceptionHandling; using LINGYUN.Abp.ExceptionHandling.Emailing; using LINGYUN.Abp.Features.LimitValidation.Redis; +using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; using LINGYUN.Abp.MultiTenancy.DbFinder; using LINGYUN.Abp.Notifications; using LINGYUN.Abp.OssManagement; @@ -11,6 +12,8 @@ using LINGYUN.Abp.OssManagement.FileSystem.ImageSharp; using LINGYUN.Abp.OssManagement.SettingManagement; using LINGYUN.Platform.EntityFrameworkCore; using LINGYUN.Platform.HttpApi; +using LINGYUN.Platform.Localization; +using Localization.Resources.AbpUi; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.DataProtection; @@ -54,6 +57,7 @@ using Volo.Abp.Security.Encryption; using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.TenantManagement.EntityFrameworkCore; using Volo.Abp.Threading; +using Volo.Abp.Validation.Localization; using Volo.Abp.VirtualFileSystem; namespace LINGYUN.Platform @@ -76,6 +80,7 @@ namespace LINGYUN.Platform typeof(AbpTenantManagementEntityFrameworkCoreModule), typeof(AbpSettingManagementEntityFrameworkCoreModule), typeof(AbpPermissionManagementEntityFrameworkCoreModule), + typeof(AbpLocalizationManagementEntityFrameworkCoreModule), typeof(AbpAspNetCoreAuthenticationJwtBearerModule), typeof(AbpNotificationModule), typeof(AbpEmailingExceptionHandlingModule), @@ -266,6 +271,8 @@ namespace LINGYUN.Platform { options.Languages.Add(new LanguageInfo("en", "en", "English")); options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); + + options.Resources.AddDynamic(); }); Configure(options => diff --git a/aspnet-core/services/platform/LINGYUN.Platform.HttpApi.Host/LINGYUN.Platform.HttpApi.Host.csproj b/aspnet-core/services/platform/LINGYUN.Platform.HttpApi.Host/LINGYUN.Platform.HttpApi.Host.csproj index fe5db99af..41fba927e 100644 --- a/aspnet-core/services/platform/LINGYUN.Platform.HttpApi.Host/LINGYUN.Platform.HttpApi.Host.csproj +++ b/aspnet-core/services/platform/LINGYUN.Platform.HttpApi.Host/LINGYUN.Platform.HttpApi.Host.csproj @@ -56,6 +56,7 @@ + diff --git a/aspnet-core/services/start-localization.bat b/aspnet-core/services/start-localization.bat new file mode 100644 index 000000000..2b9a25681 --- /dev/null +++ b/aspnet-core/services/start-localization.bat @@ -0,0 +1,31 @@ +@echo off +cls +chcp 65001 + +echo. 启动本地化管理服务 + +cd .\localization\LINGYUN.Abp.LocalizationManagement.HttpApi.Host + +if '%1' equ '--publish' goto publish +if '%1' equ '--run' goto run +if '%1' equ '--restore' goto restore +if '%1' equ '--ef-u' goto efu +if '%1' equ '' goto run +exit + +:publish +dotnet publish -c Release -o ..\..\Publish\localization --no-cache --no-restore +copy Dockerfile ..\..\Publish\localization\Dockerfile +exit + +:run +dotnet run +exit + +:restore +dotnet restore +exit + +:efu +dotnet ef databse update +exit \ No newline at end of file diff --git a/build/build-aspnetcore-common.ps1 b/build/build-aspnetcore-common.ps1 index c689cfbbf..e88f0d814 100644 --- a/build/build-aspnetcore-common.ps1 +++ b/build/build-aspnetcore-common.ps1 @@ -12,6 +12,7 @@ $serviceArray += [PsObject]@{ Path = $rootFolder + "/../aspnet-core/services/api $serviceArray += [PsObject]@{ Path = $rootFolder + "/../aspnet-core/services/apigateway/LINGYUN.ApiGateway.HttpApi.Host"; Service = "apigateway-admin" } $serviceArray += [PsObject]@{ Path = $rootFolder + "/../aspnet-core/services/messages/LINGYUN.Abp.MessageService.HttpApi.Host"; Service = "messages" } $serviceArray += [PsObject]@{ Path = $rootFolder + "/../aspnet-core/services/platform/LINGYUN.Platform.HttpApi.Host"; Service = "platform" } +$serviceArray += [PsObject]@{ Path = $rootFolder + "/../aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host"; Service = "localization" } Write-host "" Write-host ":::::::::::::: !!! You are in development mode !!! ::::::::::::::" -ForegroundColor red -BackgroundColor yellow diff --git a/build/build-aspnetcore-release.sh b/build/build-aspnetcore-release.sh index 68c06a5e7..dc48df4eb 100644 --- a/build/build-aspnetcore-release.sh +++ b/build/build-aspnetcore-release.sh @@ -40,6 +40,13 @@ dotnet restore dotnet publish -c Release -o ../../Publish/messages --no-cache --no-restore cp -r -f Dockerfile ../../Publish/messages/Dockerfile +echo "开始构建本地化管理服务" +cd $workdir"/../aspnet-core/services/localization/LINGYUN.Abp.LocalizationManagement.HttpApi.Host" + +dotnet restore +dotnet publish -c Release -o ../../Publish/localization --no-cache --no-restore +cp -r -f Dockerfile ../../Publish/localization/Dockerfile + echo "开始构建网关管理服务" cd $workdir"/../aspnet-core/services/apigateway/LINGYUN.ApiGateway.HttpApi.Host" diff --git a/docker-compose.configuration.yml b/docker-compose.configuration.yml new file mode 100644 index 000000000..e45722030 --- /dev/null +++ b/docker-compose.configuration.yml @@ -0,0 +1,251 @@ +version: '3.4' + +services: + admin-service: + environment: + - App__TrackingEntitiesChanged=true + - ConnectionStrings__Default=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpIdentity=Server=127.0.0.1;Database=IdentityServer;User Id=root;Password=123456 + - ConnectionStrings__AbpIdentityServer=Server=127.0.0.1;Database=IdentityServer;User Id=root;Password=123456 + - ConnectionStrings__AbpAuditLogging=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpTenantManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpSettingManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpPermissionManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - Encryption__PassPhrase=s46c5q55nxpeS8Ra + - Encryption__InitVector=s83ng0abvd02js84 + - Encryption__Salt=sf&5)s3# + - CAP__EventBus__DefaultGroup=BackendAdmin + - CAP__EventBus__Version=v1 + - CAP__EventBus__FailedRetryInterval=300 + - CAP__EventBus__FailedRetryCount=10 + - CAP__RabbitMQ__HostName=127.0.0.1 + - CAP__RabbitMQ__Port=5672 + - CAP__RabbitMQ__UserName=admin + - CAP__RabbitMQ__Password=123456 + - CAP__RabbitMQ__ExchangeName=LINGYUN.Abp.Application + - CAP__RabbitMQ__VirtualHost=/ + - Redis__Configuration=127.0.0.1,defaultDatabase=10 + - Redis__InstanceName=LINGYUN.Abp.Application + - AuthServer__Authority=http://127.0.0.1:44385/ + - AuthServer__ApiName=lingyun-abp-application + + identity-server-admin: + environment: + - App__TrackingEntitiesChanged=true + - ConnectionStrings__Default=Server=127.0.0.1;Database=IdentityServer;User Id=root;Password=123456 + - ConnectionStrings__AbpIdentity=Server=127.0.0.1;Database=IdentityServer;User Id=root;Password=123456 + - ConnectionStrings__AbpIdentityServer=Server=127.0.0.1;Database=IdentityServer;User Id=root;Password=123456 + - ConnectionStrings__AbpAuditLogging=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpTenantManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpSettingManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpPermissionManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpFeatureManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - Encryption__PassPhrase=s46c5q55nxpeS8Ra + - Encryption__InitVector=s83ng0abvd02js84 + - Encryption__Salt=sf&5)s3# + - CAP__EventBus__DefaultGroup=IdentityServer4Admin + - CAP__EventBus__Version=v1 + - CAP__EventBus__FailedRetryInterval=300 + - CAP__EventBus__FailedRetryCount=10 + - CAP__RabbitMQ__HostName=127.0.0.1 + - CAP__RabbitMQ__Port=5672 + - CAP__RabbitMQ__UserName=admin + - CAP__RabbitMQ__Password=123456 + - CAP__RabbitMQ__ExchangeName=LINGYUN.Abp.Application + - CAP__RabbitMQ__VirtualHost=/ + - Redis__Configuration=127.0.0.1,defaultDatabase=10 + - Redis__InstanceName=LINGYUN.Abp.Application + - AuthServer__Authority=http://127.0.0.1:44385/ + - AuthServer__ApiName=lingyun-abp-application + + localization-service: + environment: + - App__TrackingEntitiesChanged=true + - ConnectionStrings__Default=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpLocalizationManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpAuditLogging=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpTenantManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpSettingManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpPermissionManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - Encryption__PassPhrase=s46c5q55nxpeS8Ra + - Encryption__InitVector=s83ng0abvd02js84 + - Encryption__Salt=sf&5)s3# + - CAP__EventBus__DefaultGroup=Localization-Management + - CAP__EventBus__Version=v1 + - CAP__EventBus__FailedRetryInterval=300 + - CAP__EventBus__FailedRetryCount=10 + - CAP__RabbitMQ__HostName=127.0.0.1 + - CAP__RabbitMQ__Port=5672 + - CAP__RabbitMQ__UserName=admin + - CAP__RabbitMQ__Password=123456 + - CAP__RabbitMQ__ExchangeName=LINGYUN.Abp.Application + - CAP__RabbitMQ__VirtualHost=/ + - Redis__Configuration=127.0.0.1,defaultDatabase=10 + - Redis__InstanceName=LINGYUN.Abp.Application + - AuthServer__Authority=http://127.0.0.1:44385/ + - AuthServer__ApiName=lingyun-abp-application + + platform-service: + environment: + - App__TrackingEntitiesChanged=true + - ConnectionStrings__Default=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AppPlatform=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpAuditLogging=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpTenantManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpSettingManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpPermissionManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - RemoteServices__AbpIdentity__BaseUrl=http://127.0.0.1:30015/ + - RemoteServices__AbpIdentity__IdentityClient=InternalServiceClient + - IdentityClients__InternalServiceClient__Authority=http://127.0.0.1:44385/ + - IdentityClients__InternalServiceClient__RequireHttps=false + - IdentityClients__InternalServiceClient__GrantType=client_credentials + - IdentityClients__InternalServiceClient__Scope=lingyun-abp-application + - IdentityClients__InternalServiceClient__ClientId=internal-service-client + - IdentityClients__InternalServiceClient__ClientSecret=1q2w3e* + - Encryption__PassPhrase=s46c5q55nxpeS8Ra + - Encryption__InitVector=s83ng0abvd02js84 + - Encryption__Salt=sf&5)s3# + - Features__Validation__Redis__Configuration=127.0.0.1,defaultDatabase=11 + - Features__Validation__Redis__InstanceName=LINGYUN.Abp.Application + - CAP__EventBus__DefaultGroup=Platform + - CAP__EventBus__Version=v1 + - CAP__EventBus__FailedRetryInterval=300 + - CAP__EventBus__FailedRetryCount=10 + - CAP__RabbitMQ__HostName=127.0.0.1 + - CAP__RabbitMQ__Port=5672 + - CAP__RabbitMQ__UserName=admin + - CAP__RabbitMQ__Password=123456 + - CAP__RabbitMQ__ExchangeName=LINGYUN.Abp.Application + - CAP__RabbitMQ__VirtualHost=/ + - Redis__Configuration=127.0.0.1,defaultDatabase=10 + - Redis__InstanceName=LINGYUN.Abp.Application + - AuthServer__Authority=http://127.0.0.1:44385/ + - AuthServer__ApiName=lingyun-abp-application + + messages-service: + environment: + - App__CorsOrigins=http://127.0.0.1:40000,http://127.0.0.1:30000 + - App__TrackingEntitiesChanged=true + - ConnectionStrings__Default=Server=127.0.0.1;Database=Messages;User Id=root;Password=123456 + - ConnectionStrings__MessageService=Server=127.0.0.1;Database=Messages;User Id=root;Password=123456 + - ConnectionStrings__AbpTenantManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpSettingManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpPermissionManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - Encryption__PassPhrase=s46c5q55nxpeS8Ra + - Encryption__InitVector=s83ng0abvd02js84 + - Encryption__Salt=sf&5)s3# + - CAP__EventBus__DefaultGroup=MessageService + - CAP__EventBus__Version=v1 + - CAP__EventBus__FailedRetryInterval=300 + - CAP__EventBus__FailedRetryCount=10 + - CAP__RabbitMQ__HostName=127.0.0.1 + - CAP__RabbitMQ__Port=5672 + - CAP__RabbitMQ__UserName=admin + - CAP__RabbitMQ__Password=123456 + - CAP__RabbitMQ__ExchangeName=LINGYUN.Abp.Application + - CAP__RabbitMQ__VirtualHost=/ + - Redis__Configuration=127.0.0.1,defaultDatabase=10 + - Redis__InstanceName=LINGYUN.Abp.Application + - AuthServer__Authority=http://127.0.0.1:44385/ + - AuthServer__ApiName=lingyun-abp-application + - Hangfire__MySql__Connection=Server=127.0.0.1;Database=Messages;User Id=root;Password=123456;Allow User Variables=true + - Hangfire__Dashboard__WhiteList=127.0.0.1 + - Notifications__WeChat__WeApp__DefaultWeAppState=formal + + identity-server-sts: + environment: + - App__SelfUrl=http://127.0.0.1:44385/ + - App__CorsOrigins=http://127.0.0.1:9527,http://127.0.0.1:9528,http://127.0.0.1:40000,http://127.0.0.1:30000 + - App__TrackingEntitiesChanged=true + - ConnectionStrings__Default=Server=127.0.0.1;Database=IdentityServer;User Id=root;Password=123456 + - ConnectionStrings__AbpIdentity=Server=127.0.0.1;Database=IdentityServer;User Id=root;Password=123456 + - ConnectionStrings__AbpIdentityServer=Server=127.0.0.1;Database=IdentityServer;User Id=root;Password=123456 + - ConnectionStrings__AbpAuditLogging=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpTenantManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpSettingManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpPermissionManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpFeatureManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - Certificates__CerPath=./idsrv4.pfx + - Certificates__Password=csfvw2-2r0ff41 + - Encryption__PassPhrase=s46c5q55nxpeS8Ra + - Encryption__InitVector=s83ng0abvd02js84 + - Encryption__Salt=sf&5)s3# + - CAP__EventBus__DefaultGroup=AuthServer + - CAP__EventBus__Version=v1 + - CAP__EventBus__FailedRetryInterval=300 + - CAP__EventBus__FailedRetryCount=10 + - CAP__RabbitMQ__HostName=127.0.0.1 + - CAP__RabbitMQ__Port=5672 + - CAP__RabbitMQ__UserName=admin + - CAP__RabbitMQ__Password=123456 + - CAP__RabbitMQ__ExchangeName=LINGYUN.Abp.Application + - CAP__RabbitMQ__VirtualHost=/ + - Redis__Configuration=127.0.0.1,defaultDatabase=10 + - Redis__InstanceName=LINGYUN.Abp.Application + - AuthServer__Authority=http://127.0.0.1:44385/ + - AuthServer__ApiName=lingyun-abp-application + - IdentityServer__Clients__AuthManagement__ClientId=auth-management + - IdentityServer__Clients__AuthManagement__RootUrl=http://127.0.0.1:9527/ + - IdentityServer__Clients__AuthVueAdmin__ClientId=vue-admin-element + - IdentityServer__Clients__AuthApiGateway__ClientId=ApigatewayHostClient + - IdentityServer__Clients__AuthApiGatewayAdmin__ClientId=apigateway-admin-client + + apigateway-admin-service: + environment: + - App__TrackingEntitiesChanged=true + - ConnectionStrings__Default=Server=127.0.0.1;Database=ApiGateway;User Id=root;Password=123456 + - ConnectionStrings__ApiGateway=Server=127.0.0.1;Database=ApiGateway;User Id=root;Password=123456 + - ConnectionStrings__AbpAuditLogging=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpSettingManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - ConnectionStrings__AbpPermissionManagement=Server=127.0.0.1;Database=Platform;User Id=root;Password=123456 + - Encryption__PassPhrase=s46c5q55nxpeS8Ra + - Encryption__InitVector=s83ng0abvd02js84 + - Encryption__Salt=sf&5)s3# + - CAP__EventBus__DefaultGroup=ApiGateway-Admin + - CAP__EventBus__Version=v1 + - CAP__EventBus__FailedRetryInterval=300 + - CAP__EventBus__FailedRetryCount=10 + - CAP__RabbitMQ__HostName=127.0.0.1 + - CAP__RabbitMQ__Port=5672 + - CAP__RabbitMQ__UserName=admin + - CAP__RabbitMQ__Password=123456 + - CAP__RabbitMQ__ExchangeName=LINGYUN.Abp.ApiGateway + - CAP__RabbitMQ__VirtualHost=/ + - Redis__Configuration=127.0.0.1,defaultDatabase=10 + - Redis__InstanceName=LINGYUN.Abp.Application + - AuthServer__Authority=http://127.0.0.1:44385/ + - AuthServer__ApiName=lingyun-abp-application + + apigateway-host-service: + environment: + - ApiGateway__AppId=TEST-APP + - App__TrackingEntitiesChanged=true + - RemoteServices__ApiGateway__BaseUrl=http://127.0.0.1:30001/ + - RemoteServices__ApiGateway__IdentityClient=ApigatewayHostClient + - IdentityClients__ApigatewayHostClient__Authority=http://127.0.0.1:44385 + - IdentityClients__ApigatewayHostClient__RequireHttps=false + - IdentityClients__ApigatewayHostClient__GrantType=client_credentials + - IdentityClients__ApigatewayHostClient__ClientId=ApigatewayHostClient + - IdentityClients__ApigatewayHostClient__Scope=lingyun-abp-application + - IdentityClients__ApigatewayHostClient__ClientSecret=1q2w3e* + - EnabledDynamicOcelot=true + - Encryption__PassPhrase=s46c5q55nxpeS8Ra + - Encryption__InitVector=s83ng0abvd02js84 + - Encryption__Salt=sf&5)s3# + - CAP__Abp__NotifyFailedCallback=true + - CAP__Abp__CleanUpExpiresMessageBatch=1000 + - CAP__Abp__CleanUpExpiresMessageInterval=3600000 + - CAP__EventBus__DefaultGroup=ApiGateway-Host + - CAP__EventBus__Version=v1 + - CAP__EventBus__FailedRetryInterval=300 + - CAP__EventBus__FailedRetryCount=10 + - CAP__RabbitMQ__HostName=127.0.0.1 + - CAP__RabbitMQ__Port=5672 + - CAP__RabbitMQ__UserName=admin + - CAP__RabbitMQ__Password=123456 + - CAP__RabbitMQ__ExchangeName=LINGYUN.Abp.ApiGateway + - CAP__RabbitMQ__VirtualHost=/ + - Redis__Configuration=127.0.0.1,defaultDatabase=10 + - Redis__InstanceName=LINGYUN.Abp.Application + - AuthServer__Authority=http://127.0.0.1:44385/ + - AuthServer__ApiName=lingyun-abp-application diff --git a/docker-compose.override.yml b/docker-compose.override.yml index ed3226240..d234b7484 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -15,6 +15,13 @@ services: ports: - "30015:80" + localization-service: + environment: + - ASPNETCORE_ENVIRONMENT=Production + - ASPNETCORE_URLS=http://0.0.0.0:80 + ports: + - "30030:80" + platform-service: environment: - ASPNETCORE_ENVIRONMENT=Production diff --git a/docker-compose.yml b/docker-compose.yml index 95ccac15d..5d31ac5c7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -26,6 +26,13 @@ services: - identity-server-sts restart: always + localization-service: + build: + context: ./aspnet-core/services/Publish/localization + volumes: + - /var/opt/abp/logs/localization:/app/Logs + restart: always + platform-service: build: context: ./aspnet-core/services/Publish/platform diff --git a/vueJs/src/components/LangSelect/index.vue b/vueJs/src/components/LangSelect/index.vue index f9e572c46..173049b1f 100644 --- a/vueJs/src/components/LangSelect/index.vue +++ b/vueJs/src/components/LangSelect/index.vue @@ -45,6 +45,7 @@ export default class extends Vue { message: 'Switch Language Success', type: 'success' }) + this.$emit('onLanguageSwitch') }) } } diff --git a/vueJs/src/mixins/HttpProxyMiXin.ts b/vueJs/src/mixins/HttpProxyMiXin.ts index 5482342e2..2af1d3652 100644 --- a/vueJs/src/mixins/HttpProxyMiXin.ts +++ b/vueJs/src/mixins/HttpProxyMiXin.ts @@ -1,5 +1,5 @@ import ApiService from '@/api/serviceBase' -import { PagedResultDto } from '@/api/types' +import { PagedResultDto, ListResultDto } from '@/api/types' import { Component, Vue } from 'vue-property-decorator' import { HttpProxyModule } from '@/store/modules/http-proxy' import { @@ -18,7 +18,11 @@ import { name: 'HttpProxyMiXin' }) export default class HttpProxyMiXin extends Vue { - private apiDescriptor = HttpProxyModule.applicationApiDescriptionModel + private apiDescriptor!: ApplicationApiDescriptionModel + + created() { + this.apiDescriptor = HttpProxyModule.applicationApiDescriptionModel + } protected pagedRequest(options: { service: string, @@ -30,18 +34,29 @@ export default class HttpProxyMiXin extends Vue { return this.request>(options) } + protected listRequest(options: { + service: string, + controller: string, + action: string, + data?: any, + params?: any + }) { + return this.request>(options) + } + protected request(options: { service: string, controller: string, action: string, - data?: any + data?: any, + params?: any }) { const module = this.getModule(options.service, this.apiDescriptor.modules) const controller = this.getController(options.controller, module.controllers) const action = this.getAction(options.action, controller.actions) const apiVersion = this.getApiVersionInfo(action) let url = process.env.REMOTE_SERVICE_BASE_URL || '' - url = this.ensureEndsWith(url, '/') + UrlBuilder.generateUrlWithParameters(action, options.data, apiVersion) + url = this.ensureEndsWith(url, '/') + UrlBuilder.generateUrlWithParameters(action, options.params, apiVersion) return ApiService.HttpRequest({ url: url, diff --git a/vueJs/src/permission.ts b/vueJs/src/permission.ts index 44077d6bb..4a9fa97e2 100644 --- a/vueJs/src/permission.ts +++ b/vueJs/src/permission.ts @@ -34,8 +34,6 @@ router.beforeEach(async(to: Route, _: Route, next: any) => { // Check whether the user has obtained his permission roles if (PermissionModule.authorizedPermissions.length === 0) { try { - UserModule.RefreshCurrentUser() - await PermissionModule.GenerateRoutes() console.log(PermissionModule.dynamicRoutes) // Dynamically add accessible routes diff --git a/vueJs/src/store/modules/abp.ts b/vueJs/src/store/modules/abp.ts index dda886e9e..3038735bc 100644 --- a/vueJs/src/store/modules/abp.ts +++ b/vueJs/src/store/modules/abp.ts @@ -1,9 +1,10 @@ import store from '@/store' import { setLanguage } from '@/lang/index' import { getOrDefault, setItem } from '@/utils/localStorage' -import AbpConfigurationService, { IAbpConfiguration, AbpConfiguration as AbpConfig } from '@/api/abpconfiguration' +import AbpConfigurationService, { IAbpConfiguration, AbpConfiguration as AbpConfig, CurrentUser } from '@/api/abpconfiguration' import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators' + export interface IAbpState { configuration: IAbpConfiguration } @@ -29,13 +30,21 @@ class AbpConfiguration extends VuexModule implements IAbpState { @Action({ rawError: true }) public Initialize() { return new Promise((resolve, reject) => { - AbpConfigurationService.getAbpConfiguration().then(config => { - this.SET_ABPCONFIGURATION(config) - this.SET_ABPLOCALIZER(config) - return resolve(config) - }).catch(error => { - return reject(error) - }) + AbpConfigurationService + .getAbpConfiguration() + .then(config => { + this.SET_ABPCONFIGURATION(config) + this.SET_ABPLOCALIZER(config) + if (config.currentUser?.id) { + this.context.dispatch('setCurrentUserInfo', config.currentUser) + } else { + this.context.dispatch('setCurrentUserInfo', new CurrentUser()) + } + return resolve(config) + }) + .catch(error => { + return reject(error) + }) }) } } diff --git a/vueJs/src/store/modules/user.ts b/vueJs/src/store/modules/user.ts index 81a136311..393c79600 100644 --- a/vueJs/src/store/modules/user.ts +++ b/vueJs/src/store/modules/user.ts @@ -5,7 +5,6 @@ import { getItem, setItem, removeItem } from '@/utils/localStorage' import { resetRouter } from '@/router' import { TagsViewModule } from './tags-view' import { PermissionModule } from '@/store/modules/permission' -import { AbpModule } from '@/store/modules/abp' import store from '@/store' export interface IUserState { @@ -59,41 +58,59 @@ class User extends VuexModule implements IUserState { } @Action({ rawError: true }) - public RefreshCurrentUser() { - this.SET_CURRENTUSERINFO(AbpModule.configuration.currentUser) + public setCurrentUserInfo(currentUser: CurrentUser) { + this.context.commit('SET_CURRENTUSERINFO', currentUser) } @Action({ rawError: true }) - public async Login(userInfo: { username: string, password: string}) { + public Login(userInfo: { username: string, password: string}) { const userLoginData = new UserLoginData() userLoginData.userName = userInfo.username userLoginData.password = userInfo.password - const loginResult = await UserApiService.userLogin(userLoginData) - const token = loginResult.token_type + ' ' + loginResult.access_token - this.SET_TOKEN(token) - this.SET_REFRESHTOKEN(loginResult.refresh_token) - await this.PostLogin() + return new Promise((resolve, reject) => { + UserApiService + .userLogin(userLoginData) + .then(result => { + const token = result.token_type + ' ' + result.access_token + this.SET_TOKEN(token) + this.SET_REFRESHTOKEN(result.refresh_token) + this.context.dispatch('Initialize') + return resolve(result) + }) + .catch(error => { + return reject(error) + }) + }) } @Action({ rawError: true }) - public async PhoneLogin(userInfo: { phoneNumber: string, verifyCode: string}) { + public PhoneLogin(userInfo: { phoneNumber: string, verifyCode: string}) { const userLoginData = new UserLoginPhoneData() userLoginData.phoneNumber = userInfo.phoneNumber userLoginData.verifyCode = userInfo.verifyCode - const loginResult = await UserApiService.userLoginWithPhone(userLoginData) - const token = loginResult.token_type + ' ' + loginResult.access_token - this.SET_TOKEN(token) - this.SET_REFRESHTOKEN(loginResult.refresh_token) - await this.PostLogin() + return new Promise((resolve, reject) => { + UserApiService + .userLoginWithPhone(userLoginData) + .then(result => { + const token = result.token_type + ' ' + result.access_token + this.SET_TOKEN(token) + this.SET_REFRESHTOKEN(result.refresh_token) + this.context.dispatch('Initialize') + return resolve(result) + }) + .catch(error => { + reject(error) + }) + }) } - @Action + @Action({ rawError: true }) public ResetToken() { removeItem(tokenKey) this.SET_TOKEN('') } - @Action + @Action({ rawError: true }) public async LogOut() { if (this.token === '') { throw Error('LogOut: token is undefined!') @@ -114,7 +131,7 @@ class User extends VuexModule implements IUserState { PermissionModule.ResetRoutes() } - @Action + @Action({ rawError: true }) public RefreshSession() { return new Promise((resolve, reject) => { const refreshToken = getItem(refreshTokenKey) @@ -133,12 +150,6 @@ class User extends VuexModule implements IUserState { } }) } - - @Action - private async PostLogin() { - const abpConfig = await AbpModule.Initialize() - this.SET_CURRENTUSERINFO(abpConfig.currentUser) - } } export const UserModule = getModule(User) diff --git a/vueJs/src/views/admin/identityServer/client/index.vue b/vueJs/src/views/admin/identityServer/client/index.vue index 05a08fab5..340557807 100644 --- a/vueJs/src/views/admin/identityServer/client/index.vue +++ b/vueJs/src/views/admin/identityServer/client/index.vue @@ -339,7 +339,7 @@ export default class extends mixins(DataListMiXin, HttpProxyMiXin) { service: 'IdentityServer', controller: 'Client', action: 'GetListAsync', - data: { + params: { input: filter } }) diff --git a/vueJs/src/views/admin/identityServer/persisted-grants/index.vue b/vueJs/src/views/admin/identityServer/persisted-grants/index.vue index b85414450..08f967906 100644 --- a/vueJs/src/views/admin/identityServer/persisted-grants/index.vue +++ b/vueJs/src/views/admin/identityServer/persisted-grants/index.vue @@ -175,7 +175,7 @@ export default class extends mixins(DataListMiXin, HttpProxyMiXin) { service: 'IdentityServer', controller: 'PersistedGrant', action: 'GetListAsync', - data: { + params: { input: filter } }) diff --git a/vueJs/src/views/localization-management/languages/components/LanguageDialog.vue b/vueJs/src/views/localization-management/languages/components/LanguageDialog.vue new file mode 100644 index 000000000..d9620a546 --- /dev/null +++ b/vueJs/src/views/localization-management/languages/components/LanguageDialog.vue @@ -0,0 +1,208 @@ + + + + + diff --git a/vueJs/src/views/localization-management/languages/index.vue b/vueJs/src/views/localization-management/languages/index.vue new file mode 100644 index 000000000..42160da49 --- /dev/null +++ b/vueJs/src/views/localization-management/languages/index.vue @@ -0,0 +1,261 @@ + + + + + diff --git a/vueJs/src/views/localization-management/languages/types.ts b/vueJs/src/views/localization-management/languages/types.ts new file mode 100644 index 000000000..7d802ffba --- /dev/null +++ b/vueJs/src/views/localization-management/languages/types.ts @@ -0,0 +1,25 @@ +import { AuditedEntityDto, PagedAndSortedResultRequestDto } from '@/api/types' + +export const service = 'LocalizationManagement' +export const controller = 'Language' + +export class Language extends AuditedEntityDto { + id!: string + enable: boolean = true + cultureName!: string + uiCultureName!: string + displayName!: string + flagIcon!: string +} + +export class GetLanguagesInput extends PagedAndSortedResultRequestDto { + filter?: string +} + +export class CreateOrUpdateLanguageInput { + enable = true + cultureName = '' + uiCultureName = '' + displayName = '' + flagIcon = '' +} diff --git a/vueJs/src/views/localization-management/resources/components/ResourceDialog.vue b/vueJs/src/views/localization-management/resources/components/ResourceDialog.vue new file mode 100644 index 000000000..c8c0804f0 --- /dev/null +++ b/vueJs/src/views/localization-management/resources/components/ResourceDialog.vue @@ -0,0 +1,194 @@ + + + + + diff --git a/vueJs/src/views/localization-management/resources/index.vue b/vueJs/src/views/localization-management/resources/index.vue new file mode 100644 index 000000000..24fbc38fd --- /dev/null +++ b/vueJs/src/views/localization-management/resources/index.vue @@ -0,0 +1,241 @@ + + + + + diff --git a/vueJs/src/views/localization-management/resources/types.ts b/vueJs/src/views/localization-management/resources/types.ts new file mode 100644 index 000000000..69f893872 --- /dev/null +++ b/vueJs/src/views/localization-management/resources/types.ts @@ -0,0 +1,23 @@ +import { AuditedEntityDto, PagedAndSortedResultRequestDto } from '@/api/types' + +export const service = 'LocalizationManagement' +export const controller = 'Resource' + +export class Resource extends AuditedEntityDto { + id!: string + enable: boolean = true + name!: string + displayName!: string + description!: string +} + +export class GetResourcesInput extends PagedAndSortedResultRequestDto { + filter?: string +} + +export class CreateOrUpdateResourceInput { + enable = true + name = '' + displayName = '' + description = '' +} diff --git a/vueJs/src/views/localization-management/texts/components/TextDialog.vue b/vueJs/src/views/localization-management/texts/components/TextDialog.vue new file mode 100644 index 000000000..6634725b9 --- /dev/null +++ b/vueJs/src/views/localization-management/texts/components/TextDialog.vue @@ -0,0 +1,273 @@ + + + + + diff --git a/vueJs/src/views/localization-management/texts/index.vue b/vueJs/src/views/localization-management/texts/index.vue new file mode 100644 index 000000000..e1465dd1d --- /dev/null +++ b/vueJs/src/views/localization-management/texts/index.vue @@ -0,0 +1,395 @@ + + + + + diff --git a/vueJs/src/views/localization-management/texts/types.ts b/vueJs/src/views/localization-management/texts/types.ts new file mode 100644 index 000000000..c0b08cbb5 --- /dev/null +++ b/vueJs/src/views/localization-management/texts/types.ts @@ -0,0 +1,33 @@ +import { PagedAndSortedResultRequestDto } from '@/api/types' + +export const service = 'LocalizationManagement' +export const controller = 'Text' + +export class Text { + id!: string + key!: string + value?: string = '' + cultureName!: string + resourceName!: string +} + +export class GetTextsInput extends PagedAndSortedResultRequestDto { + filter = '' + cultureName = '' + targetCultureName = '' + resourceName = '' + onlyNull = false +} + +export class CreateOrUpdateTextInput { + value?: string = '' +} + +export class CreateTextInput extends CreateOrUpdateTextInput { + key = '' + resourceName = '' + cultureName = '' +} + +export class UpdateTextInput extends CreateOrUpdateTextInput { +} diff --git a/vueJs/src/views/login/index.vue b/vueJs/src/views/login/index.vue index dd2a55c9e..294f016d0 100644 --- a/vueJs/src/views/login/index.vue +++ b/vueJs/src/views/login/index.vue @@ -266,31 +266,38 @@ export default class extends Mixins(LocalizationMiXin) { private handleUserLogin() { const frmLogin = this.$refs.formLogin as any - frmLogin.validate(async(valid: boolean) => { + frmLogin.validate((valid: boolean) => { if (valid) { this.logining = true - try { - if (this.loginType === 'password') { - const userLogin = { - username: this.loginForm.username, - password: this.loginForm.password - } - await UserModule.Login(userLogin) - this.$router.push({ - path: this.redirect || '/' + if (this.loginType === 'password') { + const userLogin = { + username: this.loginForm.username, + password: this.loginForm.password + } + UserModule.Login(userLogin) + .then(() => { + this.$router.push({ + path: this.redirect || '/' + }) }) - } else { - const phoneLogin = { - phoneNumber: this.loginForm.phoneNumber, - verifyCode: this.loginForm.verifyCode - } - await UserModule.PhoneLogin(phoneLogin) - this.$router.push({ - path: this.redirect || '/' + .finally(() => { + this.resetLoginButton() }) + } else { + const phoneLogin = { + phoneNumber: this.loginForm.phoneNumber, + verifyCode: this.loginForm.verifyCode } - } catch { - this.resetLoginButton() + UserModule.PhoneLogin(phoneLogin) + .then(() => { + console.log(this.$router) + this.$router.push({ + path: this.redirect || '/' + }) + }) + .finally(() => { + this.resetLoginButton() + }) } } })