committed by
GitHub
18 changed files with 798 additions and 832 deletions
@ -1,210 +1,217 @@ |
|||
|
|||
Microsoft Visual Studio Solution File, Format Version 12.00 |
|||
# Visual Studio Version 16 |
|||
VisualStudioVersion = 16.0.30011.22 |
|||
MinimumVisualStudioVersion = 10.0.40219.1 |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "modules", "modules", "{ED23B2F3-87C1-44B6-8906-9DE739422C2C}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "services", "services", "{1E8D56FE-2FA1-4041-AB69-00952BF42EC9}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackendAdmin.HttpApi.Host", "services\admin\LINGYUN.Abp.BackendAdmin.HttpApi.Host\LINGYUN.Abp.BackendAdmin.HttpApi.Host.csproj", "{A12DB303-F90B-4E56-B99F-A40816FCB04A}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tenant-management", "tenant-management", "{CB1A2EB0-34D4-41C4-BF01-C99EFBBF09EE}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TenantManagement.Application.Contracts", "modules\tenants\LINGYUN.Abp.TenantManagement.Application.Contracts\LINGYUN.Abp.TenantManagement.Application.Contracts.csproj", "{926E8543-6A0E-4B36-8F3C-9278281E3420}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TenantManagement.Application", "modules\tenants\LINGYUN.Abp.TenantManagement.Application\LINGYUN.Abp.TenantManagement.Application.csproj", "{0DDA914E-CE2A-446F-A43D-09C52704D39C}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TenantManagement.HttpApi", "modules\tenants\LINGYUN.Abp.TenantManagement.HttpApi\LINGYUN.Abp.TenantManagement.HttpApi.csproj", "{E7185ACE-4D40-4215-BBD7-73D2DB69F482}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TenantManagement.HttpApi.Client", "modules\tenants\LINGYUN.Abp.TenantManagement.HttpApi.Client\LINGYUN.Abp.TenantManagement.HttpApi.Client.csproj", "{011F5FF0-468F-4423-8DC3-C3ECC3F63829}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "setting-management", "setting-management", "{202AC90B-0E4A-44B4-9A9D-3C869D0D4B8E}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.SettingManagement.Application.Contracts", "modules\settings\LINGYUN.Abp.SettingManagement.Application.Contracts\LINGYUN.Abp.SettingManagement.Application.Contracts.csproj", "{35A4661D-12A0-47A9-ACC6-111D1474A88B}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.SettingManagement.Application", "modules\settings\LINGYUN.Abp.SettingManagement.Application\LINGYUN.Abp.SettingManagement.Application.csproj", "{9EAAB564-5971-4AE3-9228-3953C228A890}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.SettingManagement.HttpApi", "modules\settings\LINGYUN.Abp.SettingManagement.HttpApi\LINGYUN.Abp.SettingManagement.HttpApi.csproj", "{5BAC138C-2AD5-426E-9D85-BDC6A0B38787}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "auditing", "auditing", "{709E77F9-DABF-47D3-A86E-40CD5448B1E5}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Auditing.Application.Contracts", "modules\auditing\LINGYUN.Abp.Auditing.Application.Contracts\LINGYUN.Abp.Auditing.Application.Contracts.csproj", "{BE063443-09F6-4611-AE17-811AD00D51E9}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Auditing.Application", "modules\auditing\LINGYUN.Abp.Auditing.Application\LINGYUN.Abp.Auditing.Application.csproj", "{69CBAE90-D5BE-4362-98DE-1505A59DD0A6}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Auditing.HttpApi", "modules\auditing\LINGYUN.Abp.Auditing.HttpApi\LINGYUN.Abp.Auditing.HttpApi.csproj", "{DAD70E78-D4A1-4B19-AF11-9236825FF013}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "identity", "identity", "{2F56344F-6E06-4F9B-A0F2-8A6F0AEB096A}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.PermissionManagement.Domain.Identity", "modules\identity\LINGYUN.Abp.PermissionManagement.Domain.Identity\LINGYUN.Abp.PermissionManagement.Domain.Identity.csproj", "{376B2235-ADA7-4EC7-A27D-8F97EC6A57CD}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "permissions-management", "permissions-management", "{D25C4814-71AB-4A9D-8C76-298A7DE1A747}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.PermissionManagement.Domain", "modules\permissions-management\LINGYUN.Abp.PermissionManagement.Domain\LINGYUN.Abp.PermissionManagement.Domain.csproj", "{7521486D-2144-4AFA-86AD-8E8021479DE6}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "oss-management", "oss-management", "{8F972C8E-F047-4883-A4BF-3423A2BAED36}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "account", "account", "{9DAD2CA8-16B6-4006-BD8E-EE3E9BAA3770}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Account.Application.Contracts", "modules\account\LINGYUN.Abp.Account.Application.Contracts\LINGYUN.Abp.Account.Application.Contracts.csproj", "{AA2F7243-976C-47F3-9B4E-20CC22F8FCF4}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Domain.Shared", "modules\identity\LINGYUN.Abp.Identity.Domain.Shared\LINGYUN.Abp.Identity.Domain.Shared.csproj", "{E758D3A7-DB93-4EAC-A2ED-C2322D4F7D67}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Application.Contracts", "modules\identity\LINGYUN.Abp.Identity.Application.Contracts\LINGYUN.Abp.Identity.Application.Contracts.csproj", "{D4AB1BF0-95EC-4E34-9C39-E888ED30C535}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Account.HttpApi", "modules\account\LINGYUN.Abp.Account.HttpApi\LINGYUN.Abp.Account.HttpApi.csproj", "{A387EF32-1FAD-412F-893D-43485CE59DB4}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Application", "modules\identity\LINGYUN.Abp.Identity.Application\LINGYUN.Abp.Identity.Application.csproj", "{9BABF219-AAAA-4611-8B49-BFCCBD046934}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "wechat", "wechat", "{B36F627B-FD7D-4357-A623-F01AFF78B80D}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat", "modules\wechat\LINGYUN.Abp.WeChat\LINGYUN.Abp.WeChat.csproj", "{C1514C9C-7FB2-412E-A931-7F2F0C9A65DC}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.MiniProgram", "modules\wechat\LINGYUN.Abp.WeChat.MiniProgram\LINGYUN.Abp.WeChat.MiniProgram.csproj", "{D42CE0F0-331F-4E5C-92CD-6B4DD6854E69}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Official", "modules\wechat\LINGYUN.Abp.WeChat.Official\LINGYUN.Abp.WeChat.Official.csproj", "{EAD2F955-88CA-4570-AB81-31FB2FF02605}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.SettingManagement", "modules\wechat\LINGYUN.Abp.WeChat.SettingManagement\LINGYUN.Abp.WeChat.SettingManagement.csproj", "{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Application.Contracts", "modules\oss-management\LINGYUN.Abp.OssManagement.Application.Contracts\LINGYUN.Abp.OssManagement.Application.Contracts.csproj", "{5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}" |
|||
EndProject |
|||
Global |
|||
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
|||
Debug|Any CPU = Debug|Any CPU |
|||
Release|Any CPU = Release|Any CPU |
|||
EndGlobalSection |
|||
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
|||
{A12DB303-F90B-4E56-B99F-A40816FCB04A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{A12DB303-F90B-4E56-B99F-A40816FCB04A}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{A12DB303-F90B-4E56-B99F-A40816FCB04A}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{A12DB303-F90B-4E56-B99F-A40816FCB04A}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{926E8543-6A0E-4B36-8F3C-9278281E3420}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{926E8543-6A0E-4B36-8F3C-9278281E3420}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{926E8543-6A0E-4B36-8F3C-9278281E3420}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{926E8543-6A0E-4B36-8F3C-9278281E3420}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{0DDA914E-CE2A-446F-A43D-09C52704D39C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{0DDA914E-CE2A-446F-A43D-09C52704D39C}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{0DDA914E-CE2A-446F-A43D-09C52704D39C}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{0DDA914E-CE2A-446F-A43D-09C52704D39C}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{E7185ACE-4D40-4215-BBD7-73D2DB69F482}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{E7185ACE-4D40-4215-BBD7-73D2DB69F482}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{E7185ACE-4D40-4215-BBD7-73D2DB69F482}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{E7185ACE-4D40-4215-BBD7-73D2DB69F482}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{011F5FF0-468F-4423-8DC3-C3ECC3F63829}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{011F5FF0-468F-4423-8DC3-C3ECC3F63829}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{011F5FF0-468F-4423-8DC3-C3ECC3F63829}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{011F5FF0-468F-4423-8DC3-C3ECC3F63829}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{35A4661D-12A0-47A9-ACC6-111D1474A88B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{35A4661D-12A0-47A9-ACC6-111D1474A88B}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{35A4661D-12A0-47A9-ACC6-111D1474A88B}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{35A4661D-12A0-47A9-ACC6-111D1474A88B}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{9EAAB564-5971-4AE3-9228-3953C228A890}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{9EAAB564-5971-4AE3-9228-3953C228A890}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{9EAAB564-5971-4AE3-9228-3953C228A890}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{9EAAB564-5971-4AE3-9228-3953C228A890}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{5BAC138C-2AD5-426E-9D85-BDC6A0B38787}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{5BAC138C-2AD5-426E-9D85-BDC6A0B38787}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{5BAC138C-2AD5-426E-9D85-BDC6A0B38787}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{5BAC138C-2AD5-426E-9D85-BDC6A0B38787}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{BE063443-09F6-4611-AE17-811AD00D51E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{BE063443-09F6-4611-AE17-811AD00D51E9}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{BE063443-09F6-4611-AE17-811AD00D51E9}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{BE063443-09F6-4611-AE17-811AD00D51E9}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{69CBAE90-D5BE-4362-98DE-1505A59DD0A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{69CBAE90-D5BE-4362-98DE-1505A59DD0A6}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{69CBAE90-D5BE-4362-98DE-1505A59DD0A6}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{69CBAE90-D5BE-4362-98DE-1505A59DD0A6}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{DAD70E78-D4A1-4B19-AF11-9236825FF013}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{DAD70E78-D4A1-4B19-AF11-9236825FF013}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{DAD70E78-D4A1-4B19-AF11-9236825FF013}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{DAD70E78-D4A1-4B19-AF11-9236825FF013}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{376B2235-ADA7-4EC7-A27D-8F97EC6A57CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{376B2235-ADA7-4EC7-A27D-8F97EC6A57CD}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{376B2235-ADA7-4EC7-A27D-8F97EC6A57CD}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{376B2235-ADA7-4EC7-A27D-8F97EC6A57CD}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{7521486D-2144-4AFA-86AD-8E8021479DE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{7521486D-2144-4AFA-86AD-8E8021479DE6}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{7521486D-2144-4AFA-86AD-8E8021479DE6}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{7521486D-2144-4AFA-86AD-8E8021479DE6}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{AA2F7243-976C-47F3-9B4E-20CC22F8FCF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{AA2F7243-976C-47F3-9B4E-20CC22F8FCF4}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{AA2F7243-976C-47F3-9B4E-20CC22F8FCF4}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{AA2F7243-976C-47F3-9B4E-20CC22F8FCF4}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{E758D3A7-DB93-4EAC-A2ED-C2322D4F7D67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{E758D3A7-DB93-4EAC-A2ED-C2322D4F7D67}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{E758D3A7-DB93-4EAC-A2ED-C2322D4F7D67}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{E758D3A7-DB93-4EAC-A2ED-C2322D4F7D67}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{D4AB1BF0-95EC-4E34-9C39-E888ED30C535}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{D4AB1BF0-95EC-4E34-9C39-E888ED30C535}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{D4AB1BF0-95EC-4E34-9C39-E888ED30C535}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{D4AB1BF0-95EC-4E34-9C39-E888ED30C535}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{A387EF32-1FAD-412F-893D-43485CE59DB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{A387EF32-1FAD-412F-893D-43485CE59DB4}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{A387EF32-1FAD-412F-893D-43485CE59DB4}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{A387EF32-1FAD-412F-893D-43485CE59DB4}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{9BABF219-AAAA-4611-8B49-BFCCBD046934}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{9BABF219-AAAA-4611-8B49-BFCCBD046934}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{9BABF219-AAAA-4611-8B49-BFCCBD046934}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{9BABF219-AAAA-4611-8B49-BFCCBD046934}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{C1514C9C-7FB2-412E-A931-7F2F0C9A65DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{C1514C9C-7FB2-412E-A931-7F2F0C9A65DC}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{C1514C9C-7FB2-412E-A931-7F2F0C9A65DC}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{C1514C9C-7FB2-412E-A931-7F2F0C9A65DC}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{D42CE0F0-331F-4E5C-92CD-6B4DD6854E69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{D42CE0F0-331F-4E5C-92CD-6B4DD6854E69}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{D42CE0F0-331F-4E5C-92CD-6B4DD6854E69}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{D42CE0F0-331F-4E5C-92CD-6B4DD6854E69}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{EAD2F955-88CA-4570-AB81-31FB2FF02605}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{EAD2F955-88CA-4570-AB81-31FB2FF02605}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{EAD2F955-88CA-4570-AB81-31FB2FF02605}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{EAD2F955-88CA-4570-AB81-31FB2FF02605}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
EndGlobalSection |
|||
GlobalSection(SolutionProperties) = preSolution |
|||
HideSolutionNode = FALSE |
|||
EndGlobalSection |
|||
GlobalSection(NestedProjects) = preSolution |
|||
{A12DB303-F90B-4E56-B99F-A40816FCB04A} = {1E8D56FE-2FA1-4041-AB69-00952BF42EC9} |
|||
{CB1A2EB0-34D4-41C4-BF01-C99EFBBF09EE} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} |
|||
{926E8543-6A0E-4B36-8F3C-9278281E3420} = {CB1A2EB0-34D4-41C4-BF01-C99EFBBF09EE} |
|||
{0DDA914E-CE2A-446F-A43D-09C52704D39C} = {CB1A2EB0-34D4-41C4-BF01-C99EFBBF09EE} |
|||
{E7185ACE-4D40-4215-BBD7-73D2DB69F482} = {CB1A2EB0-34D4-41C4-BF01-C99EFBBF09EE} |
|||
{011F5FF0-468F-4423-8DC3-C3ECC3F63829} = {CB1A2EB0-34D4-41C4-BF01-C99EFBBF09EE} |
|||
{202AC90B-0E4A-44B4-9A9D-3C869D0D4B8E} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} |
|||
{35A4661D-12A0-47A9-ACC6-111D1474A88B} = {202AC90B-0E4A-44B4-9A9D-3C869D0D4B8E} |
|||
{9EAAB564-5971-4AE3-9228-3953C228A890} = {202AC90B-0E4A-44B4-9A9D-3C869D0D4B8E} |
|||
{5BAC138C-2AD5-426E-9D85-BDC6A0B38787} = {202AC90B-0E4A-44B4-9A9D-3C869D0D4B8E} |
|||
{709E77F9-DABF-47D3-A86E-40CD5448B1E5} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} |
|||
{BE063443-09F6-4611-AE17-811AD00D51E9} = {709E77F9-DABF-47D3-A86E-40CD5448B1E5} |
|||
{69CBAE90-D5BE-4362-98DE-1505A59DD0A6} = {709E77F9-DABF-47D3-A86E-40CD5448B1E5} |
|||
{DAD70E78-D4A1-4B19-AF11-9236825FF013} = {709E77F9-DABF-47D3-A86E-40CD5448B1E5} |
|||
{2F56344F-6E06-4F9B-A0F2-8A6F0AEB096A} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} |
|||
{376B2235-ADA7-4EC7-A27D-8F97EC6A57CD} = {2F56344F-6E06-4F9B-A0F2-8A6F0AEB096A} |
|||
{D25C4814-71AB-4A9D-8C76-298A7DE1A747} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} |
|||
{7521486D-2144-4AFA-86AD-8E8021479DE6} = {D25C4814-71AB-4A9D-8C76-298A7DE1A747} |
|||
{8F972C8E-F047-4883-A4BF-3423A2BAED36} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} |
|||
{9DAD2CA8-16B6-4006-BD8E-EE3E9BAA3770} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} |
|||
{AA2F7243-976C-47F3-9B4E-20CC22F8FCF4} = {9DAD2CA8-16B6-4006-BD8E-EE3E9BAA3770} |
|||
{E758D3A7-DB93-4EAC-A2ED-C2322D4F7D67} = {2F56344F-6E06-4F9B-A0F2-8A6F0AEB096A} |
|||
{D4AB1BF0-95EC-4E34-9C39-E888ED30C535} = {2F56344F-6E06-4F9B-A0F2-8A6F0AEB096A} |
|||
{A387EF32-1FAD-412F-893D-43485CE59DB4} = {9DAD2CA8-16B6-4006-BD8E-EE3E9BAA3770} |
|||
{9BABF219-AAAA-4611-8B49-BFCCBD046934} = {2F56344F-6E06-4F9B-A0F2-8A6F0AEB096A} |
|||
{B36F627B-FD7D-4357-A623-F01AFF78B80D} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} |
|||
{C1514C9C-7FB2-412E-A931-7F2F0C9A65DC} = {B36F627B-FD7D-4357-A623-F01AFF78B80D} |
|||
{D42CE0F0-331F-4E5C-92CD-6B4DD6854E69} = {B36F627B-FD7D-4357-A623-F01AFF78B80D} |
|||
{EAD2F955-88CA-4570-AB81-31FB2FF02605} = {B36F627B-FD7D-4357-A623-F01AFF78B80D} |
|||
{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB} = {B36F627B-FD7D-4357-A623-F01AFF78B80D} |
|||
{5C3D0A48-4EE3-4968-9826-5F52ADDC22C4} = {8F972C8E-F047-4883-A4BF-3423A2BAED36} |
|||
EndGlobalSection |
|||
GlobalSection(ExtensibilityGlobals) = postSolution |
|||
SolutionGuid = {1573B900-87BA-4AD3-B785-6DD78127ADEF} |
|||
EndGlobalSection |
|||
EndGlobal |
|||
|
|||
Microsoft Visual Studio Solution File, Format Version 12.00 |
|||
# Visual Studio Version 16 |
|||
VisualStudioVersion = 16.0.30011.22 |
|||
MinimumVisualStudioVersion = 10.0.40219.1 |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "modules", "modules", "{ED23B2F3-87C1-44B6-8906-9DE739422C2C}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "services", "services", "{1E8D56FE-2FA1-4041-AB69-00952BF42EC9}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackendAdmin.HttpApi.Host", "services\admin\LINGYUN.Abp.BackendAdmin.HttpApi.Host\LINGYUN.Abp.BackendAdmin.HttpApi.Host.csproj", "{A12DB303-F90B-4E56-B99F-A40816FCB04A}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tenant-management", "tenant-management", "{CB1A2EB0-34D4-41C4-BF01-C99EFBBF09EE}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TenantManagement.Application.Contracts", "modules\tenants\LINGYUN.Abp.TenantManagement.Application.Contracts\LINGYUN.Abp.TenantManagement.Application.Contracts.csproj", "{926E8543-6A0E-4B36-8F3C-9278281E3420}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TenantManagement.Application", "modules\tenants\LINGYUN.Abp.TenantManagement.Application\LINGYUN.Abp.TenantManagement.Application.csproj", "{0DDA914E-CE2A-446F-A43D-09C52704D39C}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TenantManagement.HttpApi", "modules\tenants\LINGYUN.Abp.TenantManagement.HttpApi\LINGYUN.Abp.TenantManagement.HttpApi.csproj", "{E7185ACE-4D40-4215-BBD7-73D2DB69F482}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TenantManagement.HttpApi.Client", "modules\tenants\LINGYUN.Abp.TenantManagement.HttpApi.Client\LINGYUN.Abp.TenantManagement.HttpApi.Client.csproj", "{011F5FF0-468F-4423-8DC3-C3ECC3F63829}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "setting-management", "setting-management", "{202AC90B-0E4A-44B4-9A9D-3C869D0D4B8E}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.SettingManagement.Application.Contracts", "modules\settings\LINGYUN.Abp.SettingManagement.Application.Contracts\LINGYUN.Abp.SettingManagement.Application.Contracts.csproj", "{35A4661D-12A0-47A9-ACC6-111D1474A88B}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.SettingManagement.Application", "modules\settings\LINGYUN.Abp.SettingManagement.Application\LINGYUN.Abp.SettingManagement.Application.csproj", "{9EAAB564-5971-4AE3-9228-3953C228A890}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.SettingManagement.HttpApi", "modules\settings\LINGYUN.Abp.SettingManagement.HttpApi\LINGYUN.Abp.SettingManagement.HttpApi.csproj", "{5BAC138C-2AD5-426E-9D85-BDC6A0B38787}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "auditing", "auditing", "{709E77F9-DABF-47D3-A86E-40CD5448B1E5}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Auditing.Application.Contracts", "modules\auditing\LINGYUN.Abp.Auditing.Application.Contracts\LINGYUN.Abp.Auditing.Application.Contracts.csproj", "{BE063443-09F6-4611-AE17-811AD00D51E9}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Auditing.Application", "modules\auditing\LINGYUN.Abp.Auditing.Application\LINGYUN.Abp.Auditing.Application.csproj", "{69CBAE90-D5BE-4362-98DE-1505A59DD0A6}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Auditing.HttpApi", "modules\auditing\LINGYUN.Abp.Auditing.HttpApi\LINGYUN.Abp.Auditing.HttpApi.csproj", "{DAD70E78-D4A1-4B19-AF11-9236825FF013}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "identity", "identity", "{2F56344F-6E06-4F9B-A0F2-8A6F0AEB096A}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.PermissionManagement.Domain.Identity", "modules\identity\LINGYUN.Abp.PermissionManagement.Domain.Identity\LINGYUN.Abp.PermissionManagement.Domain.Identity.csproj", "{376B2235-ADA7-4EC7-A27D-8F97EC6A57CD}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "permissions-management", "permissions-management", "{D25C4814-71AB-4A9D-8C76-298A7DE1A747}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.PermissionManagement.Domain", "modules\permissions-management\LINGYUN.Abp.PermissionManagement.Domain\LINGYUN.Abp.PermissionManagement.Domain.csproj", "{7521486D-2144-4AFA-86AD-8E8021479DE6}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "oss-management", "oss-management", "{8F972C8E-F047-4883-A4BF-3423A2BAED36}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "account", "account", "{9DAD2CA8-16B6-4006-BD8E-EE3E9BAA3770}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Account.Application.Contracts", "modules\account\LINGYUN.Abp.Account.Application.Contracts\LINGYUN.Abp.Account.Application.Contracts.csproj", "{AA2F7243-976C-47F3-9B4E-20CC22F8FCF4}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Domain.Shared", "modules\identity\LINGYUN.Abp.Identity.Domain.Shared\LINGYUN.Abp.Identity.Domain.Shared.csproj", "{E758D3A7-DB93-4EAC-A2ED-C2322D4F7D67}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Application.Contracts", "modules\identity\LINGYUN.Abp.Identity.Application.Contracts\LINGYUN.Abp.Identity.Application.Contracts.csproj", "{D4AB1BF0-95EC-4E34-9C39-E888ED30C535}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Account.HttpApi", "modules\account\LINGYUN.Abp.Account.HttpApi\LINGYUN.Abp.Account.HttpApi.csproj", "{A387EF32-1FAD-412F-893D-43485CE59DB4}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Application", "modules\identity\LINGYUN.Abp.Identity.Application\LINGYUN.Abp.Identity.Application.csproj", "{9BABF219-AAAA-4611-8B49-BFCCBD046934}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "wechat", "wechat", "{B36F627B-FD7D-4357-A623-F01AFF78B80D}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat", "modules\wechat\LINGYUN.Abp.WeChat\LINGYUN.Abp.WeChat.csproj", "{C1514C9C-7FB2-412E-A931-7F2F0C9A65DC}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.MiniProgram", "modules\wechat\LINGYUN.Abp.WeChat.MiniProgram\LINGYUN.Abp.WeChat.MiniProgram.csproj", "{D42CE0F0-331F-4E5C-92CD-6B4DD6854E69}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Official", "modules\wechat\LINGYUN.Abp.WeChat.Official\LINGYUN.Abp.WeChat.Official.csproj", "{EAD2F955-88CA-4570-AB81-31FB2FF02605}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.SettingManagement", "modules\wechat\LINGYUN.Abp.WeChat.SettingManagement\LINGYUN.Abp.WeChat.SettingManagement.csproj", "{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OssManagement.Application.Contracts", "modules\oss-management\LINGYUN.Abp.OssManagement.Application.Contracts\LINGYUN.Abp.OssManagement.Application.Contracts.csproj", "{5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.MultiTenancy", "modules\tenants\LINGYUN.Abp.MultiTenancy\LINGYUN.Abp.MultiTenancy.csproj", "{360B5928-DD64-42AA-8C99-07EFC5224C24}" |
|||
EndProject |
|||
Global |
|||
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
|||
Debug|Any CPU = Debug|Any CPU |
|||
Release|Any CPU = Release|Any CPU |
|||
EndGlobalSection |
|||
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
|||
{A12DB303-F90B-4E56-B99F-A40816FCB04A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{A12DB303-F90B-4E56-B99F-A40816FCB04A}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{A12DB303-F90B-4E56-B99F-A40816FCB04A}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{A12DB303-F90B-4E56-B99F-A40816FCB04A}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{926E8543-6A0E-4B36-8F3C-9278281E3420}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{926E8543-6A0E-4B36-8F3C-9278281E3420}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{926E8543-6A0E-4B36-8F3C-9278281E3420}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{926E8543-6A0E-4B36-8F3C-9278281E3420}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{0DDA914E-CE2A-446F-A43D-09C52704D39C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{0DDA914E-CE2A-446F-A43D-09C52704D39C}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{0DDA914E-CE2A-446F-A43D-09C52704D39C}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{0DDA914E-CE2A-446F-A43D-09C52704D39C}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{E7185ACE-4D40-4215-BBD7-73D2DB69F482}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{E7185ACE-4D40-4215-BBD7-73D2DB69F482}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{E7185ACE-4D40-4215-BBD7-73D2DB69F482}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{E7185ACE-4D40-4215-BBD7-73D2DB69F482}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{011F5FF0-468F-4423-8DC3-C3ECC3F63829}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{011F5FF0-468F-4423-8DC3-C3ECC3F63829}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{011F5FF0-468F-4423-8DC3-C3ECC3F63829}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{011F5FF0-468F-4423-8DC3-C3ECC3F63829}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{35A4661D-12A0-47A9-ACC6-111D1474A88B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{35A4661D-12A0-47A9-ACC6-111D1474A88B}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{35A4661D-12A0-47A9-ACC6-111D1474A88B}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{35A4661D-12A0-47A9-ACC6-111D1474A88B}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{9EAAB564-5971-4AE3-9228-3953C228A890}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{9EAAB564-5971-4AE3-9228-3953C228A890}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{9EAAB564-5971-4AE3-9228-3953C228A890}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{9EAAB564-5971-4AE3-9228-3953C228A890}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{5BAC138C-2AD5-426E-9D85-BDC6A0B38787}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{5BAC138C-2AD5-426E-9D85-BDC6A0B38787}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{5BAC138C-2AD5-426E-9D85-BDC6A0B38787}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{5BAC138C-2AD5-426E-9D85-BDC6A0B38787}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{BE063443-09F6-4611-AE17-811AD00D51E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{BE063443-09F6-4611-AE17-811AD00D51E9}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{BE063443-09F6-4611-AE17-811AD00D51E9}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{BE063443-09F6-4611-AE17-811AD00D51E9}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{69CBAE90-D5BE-4362-98DE-1505A59DD0A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{69CBAE90-D5BE-4362-98DE-1505A59DD0A6}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{69CBAE90-D5BE-4362-98DE-1505A59DD0A6}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{69CBAE90-D5BE-4362-98DE-1505A59DD0A6}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{DAD70E78-D4A1-4B19-AF11-9236825FF013}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{DAD70E78-D4A1-4B19-AF11-9236825FF013}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{DAD70E78-D4A1-4B19-AF11-9236825FF013}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{DAD70E78-D4A1-4B19-AF11-9236825FF013}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{376B2235-ADA7-4EC7-A27D-8F97EC6A57CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{376B2235-ADA7-4EC7-A27D-8F97EC6A57CD}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{376B2235-ADA7-4EC7-A27D-8F97EC6A57CD}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{376B2235-ADA7-4EC7-A27D-8F97EC6A57CD}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{7521486D-2144-4AFA-86AD-8E8021479DE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{7521486D-2144-4AFA-86AD-8E8021479DE6}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{7521486D-2144-4AFA-86AD-8E8021479DE6}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{7521486D-2144-4AFA-86AD-8E8021479DE6}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{AA2F7243-976C-47F3-9B4E-20CC22F8FCF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{AA2F7243-976C-47F3-9B4E-20CC22F8FCF4}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{AA2F7243-976C-47F3-9B4E-20CC22F8FCF4}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{AA2F7243-976C-47F3-9B4E-20CC22F8FCF4}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{E758D3A7-DB93-4EAC-A2ED-C2322D4F7D67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{E758D3A7-DB93-4EAC-A2ED-C2322D4F7D67}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{E758D3A7-DB93-4EAC-A2ED-C2322D4F7D67}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{E758D3A7-DB93-4EAC-A2ED-C2322D4F7D67}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{D4AB1BF0-95EC-4E34-9C39-E888ED30C535}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{D4AB1BF0-95EC-4E34-9C39-E888ED30C535}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{D4AB1BF0-95EC-4E34-9C39-E888ED30C535}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{D4AB1BF0-95EC-4E34-9C39-E888ED30C535}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{A387EF32-1FAD-412F-893D-43485CE59DB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{A387EF32-1FAD-412F-893D-43485CE59DB4}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{A387EF32-1FAD-412F-893D-43485CE59DB4}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{A387EF32-1FAD-412F-893D-43485CE59DB4}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{9BABF219-AAAA-4611-8B49-BFCCBD046934}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{9BABF219-AAAA-4611-8B49-BFCCBD046934}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{9BABF219-AAAA-4611-8B49-BFCCBD046934}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{9BABF219-AAAA-4611-8B49-BFCCBD046934}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{C1514C9C-7FB2-412E-A931-7F2F0C9A65DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{C1514C9C-7FB2-412E-A931-7F2F0C9A65DC}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{C1514C9C-7FB2-412E-A931-7F2F0C9A65DC}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{C1514C9C-7FB2-412E-A931-7F2F0C9A65DC}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{D42CE0F0-331F-4E5C-92CD-6B4DD6854E69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{D42CE0F0-331F-4E5C-92CD-6B4DD6854E69}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{D42CE0F0-331F-4E5C-92CD-6B4DD6854E69}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{D42CE0F0-331F-4E5C-92CD-6B4DD6854E69}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{EAD2F955-88CA-4570-AB81-31FB2FF02605}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{EAD2F955-88CA-4570-AB81-31FB2FF02605}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{EAD2F955-88CA-4570-AB81-31FB2FF02605}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{EAD2F955-88CA-4570-AB81-31FB2FF02605}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{5C3D0A48-4EE3-4968-9826-5F52ADDC22C4}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{360B5928-DD64-42AA-8C99-07EFC5224C24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{360B5928-DD64-42AA-8C99-07EFC5224C24}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{360B5928-DD64-42AA-8C99-07EFC5224C24}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{360B5928-DD64-42AA-8C99-07EFC5224C24}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
EndGlobalSection |
|||
GlobalSection(SolutionProperties) = preSolution |
|||
HideSolutionNode = FALSE |
|||
EndGlobalSection |
|||
GlobalSection(NestedProjects) = preSolution |
|||
{A12DB303-F90B-4E56-B99F-A40816FCB04A} = {1E8D56FE-2FA1-4041-AB69-00952BF42EC9} |
|||
{CB1A2EB0-34D4-41C4-BF01-C99EFBBF09EE} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} |
|||
{926E8543-6A0E-4B36-8F3C-9278281E3420} = {CB1A2EB0-34D4-41C4-BF01-C99EFBBF09EE} |
|||
{0DDA914E-CE2A-446F-A43D-09C52704D39C} = {CB1A2EB0-34D4-41C4-BF01-C99EFBBF09EE} |
|||
{E7185ACE-4D40-4215-BBD7-73D2DB69F482} = {CB1A2EB0-34D4-41C4-BF01-C99EFBBF09EE} |
|||
{011F5FF0-468F-4423-8DC3-C3ECC3F63829} = {CB1A2EB0-34D4-41C4-BF01-C99EFBBF09EE} |
|||
{202AC90B-0E4A-44B4-9A9D-3C869D0D4B8E} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} |
|||
{35A4661D-12A0-47A9-ACC6-111D1474A88B} = {202AC90B-0E4A-44B4-9A9D-3C869D0D4B8E} |
|||
{9EAAB564-5971-4AE3-9228-3953C228A890} = {202AC90B-0E4A-44B4-9A9D-3C869D0D4B8E} |
|||
{5BAC138C-2AD5-426E-9D85-BDC6A0B38787} = {202AC90B-0E4A-44B4-9A9D-3C869D0D4B8E} |
|||
{709E77F9-DABF-47D3-A86E-40CD5448B1E5} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} |
|||
{BE063443-09F6-4611-AE17-811AD00D51E9} = {709E77F9-DABF-47D3-A86E-40CD5448B1E5} |
|||
{69CBAE90-D5BE-4362-98DE-1505A59DD0A6} = {709E77F9-DABF-47D3-A86E-40CD5448B1E5} |
|||
{DAD70E78-D4A1-4B19-AF11-9236825FF013} = {709E77F9-DABF-47D3-A86E-40CD5448B1E5} |
|||
{2F56344F-6E06-4F9B-A0F2-8A6F0AEB096A} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} |
|||
{376B2235-ADA7-4EC7-A27D-8F97EC6A57CD} = {2F56344F-6E06-4F9B-A0F2-8A6F0AEB096A} |
|||
{D25C4814-71AB-4A9D-8C76-298A7DE1A747} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} |
|||
{7521486D-2144-4AFA-86AD-8E8021479DE6} = {D25C4814-71AB-4A9D-8C76-298A7DE1A747} |
|||
{8F972C8E-F047-4883-A4BF-3423A2BAED36} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} |
|||
{9DAD2CA8-16B6-4006-BD8E-EE3E9BAA3770} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} |
|||
{AA2F7243-976C-47F3-9B4E-20CC22F8FCF4} = {9DAD2CA8-16B6-4006-BD8E-EE3E9BAA3770} |
|||
{E758D3A7-DB93-4EAC-A2ED-C2322D4F7D67} = {2F56344F-6E06-4F9B-A0F2-8A6F0AEB096A} |
|||
{D4AB1BF0-95EC-4E34-9C39-E888ED30C535} = {2F56344F-6E06-4F9B-A0F2-8A6F0AEB096A} |
|||
{A387EF32-1FAD-412F-893D-43485CE59DB4} = {9DAD2CA8-16B6-4006-BD8E-EE3E9BAA3770} |
|||
{9BABF219-AAAA-4611-8B49-BFCCBD046934} = {2F56344F-6E06-4F9B-A0F2-8A6F0AEB096A} |
|||
{B36F627B-FD7D-4357-A623-F01AFF78B80D} = {ED23B2F3-87C1-44B6-8906-9DE739422C2C} |
|||
{C1514C9C-7FB2-412E-A931-7F2F0C9A65DC} = {B36F627B-FD7D-4357-A623-F01AFF78B80D} |
|||
{D42CE0F0-331F-4E5C-92CD-6B4DD6854E69} = {B36F627B-FD7D-4357-A623-F01AFF78B80D} |
|||
{EAD2F955-88CA-4570-AB81-31FB2FF02605} = {B36F627B-FD7D-4357-A623-F01AFF78B80D} |
|||
{3FD9C35C-3A8D-49F5-B7C5-4828AA3407AB} = {B36F627B-FD7D-4357-A623-F01AFF78B80D} |
|||
{5C3D0A48-4EE3-4968-9826-5F52ADDC22C4} = {8F972C8E-F047-4883-A4BF-3423A2BAED36} |
|||
{360B5928-DD64-42AA-8C99-07EFC5224C24} = {CB1A2EB0-34D4-41C4-BF01-C99EFBBF09EE} |
|||
EndGlobalSection |
|||
GlobalSection(ExtensibilityGlobals) = postSolution |
|||
SolutionGuid = {1573B900-87BA-4AD3-B785-6DD78127ADEF} |
|||
EndGlobalSection |
|||
EndGlobal |
|||
|
|||
@ -1,63 +1,68 @@ |
|||
using Microsoft.Extensions.Logging; |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Caching; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Domain.Entities.Events.Distributed; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
using Volo.Abp.MultiTenancy; |
|||
using Volo.Abp.TenantManagement; |
|||
using Volo.Abp.Uow; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy.DbFinder.EventBus.Distributed |
|||
{ |
|||
public class TenantCreateEventHandler : IDistributedEventHandler<EntityCreatedEto<TenantEto>>, ITransientDependency |
|||
{ |
|||
private readonly ILogger<TenantCreateEventHandler> _logger; |
|||
private readonly ICurrentTenant _currentTenant; |
|||
private readonly ITenantRepository _tenantRepository; |
|||
private readonly IDistributedCache<TenantConfigurationCacheItem> _cache; |
|||
|
|||
public TenantCreateEventHandler( |
|||
ICurrentTenant currentTenant, |
|||
ITenantRepository tenantRepository, |
|||
ILogger<TenantCreateEventHandler> logger, |
|||
IDistributedCache<TenantConfigurationCacheItem> cache) |
|||
{ |
|||
_cache = cache; |
|||
_logger = logger; |
|||
_currentTenant = currentTenant; |
|||
_tenantRepository = tenantRepository; |
|||
} |
|||
|
|||
[UnitOfWork] |
|||
public virtual async Task HandleEventAsync(EntityCreatedEto<TenantEto> eventData) |
|||
{ |
|||
try |
|||
{ |
|||
using (_currentTenant.Change(null)) |
|||
{ |
|||
var tenant = await _tenantRepository.FindAsync(eventData.Entity.Id, true); |
|||
if (tenant == null) |
|||
{ |
|||
return; |
|||
} |
|||
var connectionStrings = new ConnectionStrings(); |
|||
foreach (var tenantConnectionString in tenant.ConnectionStrings) |
|||
{ |
|||
connectionStrings[tenantConnectionString.Name] = tenantConnectionString.Value; |
|||
} |
|||
var cacheItem = new TenantConfigurationCacheItem(tenant.Id, tenant.Name, connectionStrings); |
|||
|
|||
var cacheKey = TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Id.ToString()); |
|||
await _cache.SetAsync(cacheKey, cacheItem); |
|||
} |
|||
} |
|||
catch (Exception ex) |
|||
{ |
|||
_logger.LogException(ex); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
using Microsoft.Extensions.Logging; |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Caching; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Domain.Entities.Events.Distributed; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
using Volo.Abp.MultiTenancy; |
|||
using Volo.Abp.TenantManagement; |
|||
using Volo.Abp.Uow; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy.DbFinder.EventBus.Distributed |
|||
{ |
|||
public class TenantCreateEventHandler : IDistributedEventHandler<EntityCreatedEto<TenantEto>>, ITransientDependency |
|||
{ |
|||
private readonly ILogger<TenantCreateEventHandler> _logger; |
|||
private readonly ICurrentTenant _currentTenant; |
|||
private readonly ITenantRepository _tenantRepository; |
|||
private readonly IDistributedCache<TenantConfigurationCacheItem> _cache; |
|||
|
|||
public TenantCreateEventHandler( |
|||
ICurrentTenant currentTenant, |
|||
ITenantRepository tenantRepository, |
|||
ILogger<TenantCreateEventHandler> logger, |
|||
IDistributedCache<TenantConfigurationCacheItem> cache) |
|||
{ |
|||
_cache = cache; |
|||
_logger = logger; |
|||
_currentTenant = currentTenant; |
|||
_tenantRepository = tenantRepository; |
|||
} |
|||
|
|||
[UnitOfWork] |
|||
public virtual async Task HandleEventAsync(EntityCreatedEto<TenantEto> eventData) |
|||
{ |
|||
try |
|||
{ |
|||
using (_currentTenant.Change(null)) |
|||
{ |
|||
var tenant = await _tenantRepository.FindAsync(eventData.Entity.Id, true); |
|||
if (tenant == null) |
|||
{ |
|||
return; |
|||
} |
|||
var connectionStrings = new ConnectionStrings(); |
|||
foreach (var tenantConnectionString in tenant.ConnectionStrings) |
|||
{ |
|||
connectionStrings[tenantConnectionString.Name] = tenantConnectionString.Value; |
|||
} |
|||
var cacheItem = new TenantConfigurationCacheItem(tenant.Id, tenant.Name, connectionStrings); |
|||
|
|||
await _cache.SetAsync( |
|||
TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Id.ToString()), |
|||
cacheItem); |
|||
|
|||
await _cache.SetAsync( |
|||
TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Name), |
|||
cacheItem); |
|||
} |
|||
} |
|||
catch (Exception ex) |
|||
{ |
|||
_logger.LogException(ex); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
@ -1,26 +1,29 @@ |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Caching; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Domain.Entities.Events.Distributed; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
using Volo.Abp.TenantManagement; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy.DbFinder.EventBus.Distributed |
|||
{ |
|||
public class TenantDeleteEventHandler : IDistributedEventHandler<EntityDeletedEto<TenantEto>>, ITransientDependency |
|||
{ |
|||
private readonly IDistributedCache<TenantConfigurationCacheItem> _cache; |
|||
|
|||
public TenantDeleteEventHandler( |
|||
IDistributedCache<TenantConfigurationCacheItem> cache) |
|||
{ |
|||
_cache = cache; |
|||
} |
|||
|
|||
public virtual async Task HandleEventAsync(EntityDeletedEto<TenantEto> eventData) |
|||
{ |
|||
var cacheKey = TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Id.ToString()); |
|||
await _cache.RemoveAsync(cacheKey); |
|||
} |
|||
} |
|||
} |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Caching; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Domain.Entities.Events.Distributed; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
using Volo.Abp.TenantManagement; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy.DbFinder.EventBus.Distributed |
|||
{ |
|||
public class TenantDeleteEventHandler : IDistributedEventHandler<EntityDeletedEto<TenantEto>>, ITransientDependency |
|||
{ |
|||
private readonly IDistributedCache<TenantConfigurationCacheItem> _cache; |
|||
|
|||
public TenantDeleteEventHandler( |
|||
IDistributedCache<TenantConfigurationCacheItem> cache) |
|||
{ |
|||
_cache = cache; |
|||
} |
|||
|
|||
public virtual async Task HandleEventAsync(EntityDeletedEto<TenantEto> eventData) |
|||
{ |
|||
await _cache.RemoveAsync( |
|||
TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Id.ToString())); |
|||
|
|||
await _cache.RemoveAsync( |
|||
TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Name)); |
|||
} |
|||
} |
|||
} |
|||
|
|||
@ -1,63 +1,68 @@ |
|||
using Microsoft.Extensions.Logging; |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Caching; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Domain.Entities.Events.Distributed; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
using Volo.Abp.MultiTenancy; |
|||
using Volo.Abp.TenantManagement; |
|||
using Volo.Abp.Uow; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy.DbFinder.EventBus.Distributed |
|||
{ |
|||
public class TenantUpdateEventHandler : IDistributedEventHandler<EntityUpdatedEto<TenantEto>>, ITransientDependency |
|||
{ |
|||
private readonly ILogger<TenantUpdateEventHandler> _logger; |
|||
private readonly ICurrentTenant _currentTenant; |
|||
private readonly ITenantRepository _tenantRepository; |
|||
private readonly IDistributedCache<TenantConfigurationCacheItem> _cache; |
|||
|
|||
public TenantUpdateEventHandler( |
|||
ICurrentTenant currentTenant, |
|||
ITenantRepository tenantRepository, |
|||
ILogger<TenantUpdateEventHandler> logger, |
|||
IDistributedCache<TenantConfigurationCacheItem> cache) |
|||
{ |
|||
_cache = cache; |
|||
_logger = logger; |
|||
_currentTenant = currentTenant; |
|||
_tenantRepository = tenantRepository; |
|||
} |
|||
|
|||
[UnitOfWork] |
|||
public virtual async Task HandleEventAsync(EntityUpdatedEto<TenantEto> eventData) |
|||
{ |
|||
try |
|||
{ |
|||
using (_currentTenant.Change(null)) |
|||
{ |
|||
var tenant = await _tenantRepository.FindAsync(eventData.Entity.Id, true); |
|||
if (tenant == null) |
|||
{ |
|||
return; |
|||
} |
|||
var connectionStrings = new ConnectionStrings(); |
|||
foreach (var tenantConnectionString in tenant.ConnectionStrings) |
|||
{ |
|||
connectionStrings[tenantConnectionString.Name] = tenantConnectionString.Value; |
|||
} |
|||
var cacheItem = new TenantConfigurationCacheItem(tenant.Id, tenant.Name, connectionStrings); |
|||
|
|||
var cacheKey = TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Id.ToString()); |
|||
await _cache.SetAsync(cacheKey, cacheItem); |
|||
} |
|||
} |
|||
catch(Exception ex) |
|||
{ |
|||
_logger.LogException(ex); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
using Microsoft.Extensions.Logging; |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Caching; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Domain.Entities.Events.Distributed; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
using Volo.Abp.MultiTenancy; |
|||
using Volo.Abp.TenantManagement; |
|||
using Volo.Abp.Uow; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy.DbFinder.EventBus.Distributed |
|||
{ |
|||
public class TenantUpdateEventHandler : IDistributedEventHandler<EntityUpdatedEto<TenantEto>>, ITransientDependency |
|||
{ |
|||
private readonly ILogger<TenantUpdateEventHandler> _logger; |
|||
private readonly ICurrentTenant _currentTenant; |
|||
private readonly ITenantRepository _tenantRepository; |
|||
private readonly IDistributedCache<TenantConfigurationCacheItem> _cache; |
|||
|
|||
public TenantUpdateEventHandler( |
|||
ICurrentTenant currentTenant, |
|||
ITenantRepository tenantRepository, |
|||
ILogger<TenantUpdateEventHandler> logger, |
|||
IDistributedCache<TenantConfigurationCacheItem> cache) |
|||
{ |
|||
_cache = cache; |
|||
_logger = logger; |
|||
_currentTenant = currentTenant; |
|||
_tenantRepository = tenantRepository; |
|||
} |
|||
|
|||
[UnitOfWork] |
|||
public virtual async Task HandleEventAsync(EntityUpdatedEto<TenantEto> eventData) |
|||
{ |
|||
try |
|||
{ |
|||
using (_currentTenant.Change(null)) |
|||
{ |
|||
var tenant = await _tenantRepository.FindAsync(eventData.Entity.Id, true); |
|||
if (tenant == null) |
|||
{ |
|||
return; |
|||
} |
|||
var connectionStrings = new ConnectionStrings(); |
|||
foreach (var tenantConnectionString in tenant.ConnectionStrings) |
|||
{ |
|||
connectionStrings[tenantConnectionString.Name] = tenantConnectionString.Value; |
|||
} |
|||
var cacheItem = new TenantConfigurationCacheItem(tenant.Id, tenant.Name, connectionStrings); |
|||
|
|||
await _cache.SetAsync( |
|||
TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Id.ToString()), |
|||
cacheItem); |
|||
|
|||
await _cache.SetAsync( |
|||
TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Name), |
|||
cacheItem); |
|||
} |
|||
} |
|||
catch(Exception ex) |
|||
{ |
|||
_logger.LogException(ex); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
@ -1,39 +1,39 @@ |
|||
# LINGYUN.Abp.MultiTenancy.DbFinder |
|||
|
|||
abp 多租户数据库查询组件,引用此模块将首先从分布式缓存查询当前租户配置 |
|||
|
|||
如果缓存不存在,则调用租户仓储接口获取租户数据,并存储到分布式缓存中 |
|||
|
|||
## 配置使用 |
|||
|
|||
模块按需引用 |
|||
|
|||
启动项目需要引用**Volo.Abp.TenantManagement.EntityFrameworkCore** |
|||
|
|||
``` shell |
|||
// .NET CLI |
|||
dotnet add package Volo.Abp.TenantManagement.EntityFrameworkCore --version 3.0.0 |
|||
|
|||
// Package Manager |
|||
Install-Package Volo.Abp.TenantManagement.EntityFrameworkCore -Version 3.0.0 |
|||
|
|||
``` |
|||
|
|||
事先定义**appsettings.json**文件 |
|||
|
|||
```json |
|||
{ |
|||
"ConnectionStrings": { |
|||
"AbpTenantManagement": "Server=127.0.0.1;Database=TenantDb;User Id=root;Password=yourPassword" |
|||
} |
|||
} |
|||
|
|||
``` |
|||
|
|||
```csharp |
|||
[DependsOn(typeof(AbpDbFinderMultiTenancyModule))] |
|||
public class YouProjectModule : AbpModule |
|||
{ |
|||
// other |
|||
} |
|||
# LINGYUN.Abp.MultiTenancy.DbFinder |
|||
|
|||
abp 多租户数据库查询组件,引用此模块将首先从分布式缓存查询当前租户配置 |
|||
|
|||
如果缓存不存在,则调用租户仓储接口获取租户数据,并存储到分布式缓存中 |
|||
|
|||
## 配置使用 |
|||
|
|||
模块按需引用 |
|||
|
|||
启动项目需要引用**Volo.Abp.TenantManagement.EntityFrameworkCore** |
|||
|
|||
``` shell |
|||
// .NET CLI |
|||
dotnet add package Volo.Abp.TenantManagement.EntityFrameworkCore |
|||
|
|||
// Package Manager |
|||
Install-Package Volo.Abp.TenantManagement.EntityFrameworkCore |
|||
|
|||
``` |
|||
|
|||
事先定义**appsettings.json**文件 |
|||
|
|||
```json |
|||
{ |
|||
"ConnectionStrings": { |
|||
"AbpTenantManagement": "Server=127.0.0.1;Database=TenantDb;User Id=root;Password=yourPassword" |
|||
} |
|||
} |
|||
|
|||
``` |
|||
|
|||
```csharp |
|||
[DependsOn(typeof(AbpDbFinderMultiTenancyModule))] |
|||
public class YouProjectModule : AbpModule |
|||
{ |
|||
// other |
|||
} |
|||
``` |
|||
@ -1,40 +1,45 @@ |
|||
using LINGYUN.Abp.TenantManagement; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Caching; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Domain.Entities.Events.Distributed; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
using Volo.Abp.TenantManagement; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy.RemoteService.EventBus.Distributed |
|||
{ |
|||
public class TenantCreateEventHandler : IDistributedEventHandler<EntityCreatedEto<TenantEto>>, ITransientDependency |
|||
{ |
|||
private readonly ITenantAppService _tenantAppService; |
|||
private readonly IDistributedCache<TenantConfigurationCacheItem> _cache; |
|||
|
|||
public TenantCreateEventHandler( |
|||
ITenantAppService tenantAppService, |
|||
IDistributedCache<TenantConfigurationCacheItem> cache) |
|||
{ |
|||
_cache = cache; |
|||
_tenantAppService = tenantAppService; |
|||
} |
|||
|
|||
public virtual async Task HandleEventAsync(EntityCreatedEto<TenantEto> eventData) |
|||
{ |
|||
var tenantDto = await _tenantAppService.GetAsync(eventData.Entity.Id); |
|||
var tenantConnectionStringsDto = await _tenantAppService.GetConnectionStringAsync(eventData.Entity.Id); |
|||
var connectionStrings = new ConnectionStrings(); |
|||
foreach (var tenantConnectionString in tenantConnectionStringsDto.Items) |
|||
{ |
|||
connectionStrings[tenantConnectionString.Name] = tenantConnectionString.Value; |
|||
} |
|||
var cacheItem = new TenantConfigurationCacheItem(tenantDto.Id, tenantDto.Name, connectionStrings); |
|||
|
|||
var cacheKey = TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Id.ToString()); |
|||
await _cache.SetAsync(cacheKey, cacheItem); |
|||
} |
|||
} |
|||
} |
|||
using LINGYUN.Abp.TenantManagement; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Caching; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Domain.Entities.Events.Distributed; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
using Volo.Abp.TenantManagement; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy.RemoteService.EventBus.Distributed |
|||
{ |
|||
public class TenantCreateEventHandler : IDistributedEventHandler<EntityCreatedEto<TenantEto>>, ITransientDependency |
|||
{ |
|||
private readonly ITenantAppService _tenantAppService; |
|||
private readonly IDistributedCache<TenantConfigurationCacheItem> _cache; |
|||
|
|||
public TenantCreateEventHandler( |
|||
ITenantAppService tenantAppService, |
|||
IDistributedCache<TenantConfigurationCacheItem> cache) |
|||
{ |
|||
_cache = cache; |
|||
_tenantAppService = tenantAppService; |
|||
} |
|||
|
|||
public virtual async Task HandleEventAsync(EntityCreatedEto<TenantEto> eventData) |
|||
{ |
|||
var tenantDto = await _tenantAppService.GetAsync(eventData.Entity.Id); |
|||
var tenantConnectionStringsDto = await _tenantAppService.GetConnectionStringAsync(eventData.Entity.Id); |
|||
var connectionStrings = new ConnectionStrings(); |
|||
foreach (var tenantConnectionString in tenantConnectionStringsDto.Items) |
|||
{ |
|||
connectionStrings[tenantConnectionString.Name] = tenantConnectionString.Value; |
|||
} |
|||
var cacheItem = new TenantConfigurationCacheItem(tenantDto.Id, tenantDto.Name, connectionStrings); |
|||
|
|||
await _cache.SetAsync( |
|||
TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Id.ToString()), |
|||
cacheItem); |
|||
|
|||
await _cache.SetAsync( |
|||
TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Name), |
|||
cacheItem); |
|||
} |
|||
} |
|||
} |
|||
|
|||
@ -1,26 +1,29 @@ |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Caching; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Domain.Entities.Events.Distributed; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
using Volo.Abp.TenantManagement; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy.RemoteService.EventBus.Distributed |
|||
{ |
|||
public class TenantDeleteEventHandler : IDistributedEventHandler<EntityDeletedEto<TenantEto>>, ITransientDependency |
|||
{ |
|||
private readonly IDistributedCache<TenantConfigurationCacheItem> _cache; |
|||
|
|||
public TenantDeleteEventHandler( |
|||
IDistributedCache<TenantConfigurationCacheItem> cache) |
|||
{ |
|||
_cache = cache; |
|||
} |
|||
|
|||
public virtual async Task HandleEventAsync(EntityDeletedEto<TenantEto> eventData) |
|||
{ |
|||
var cacheKey = TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Id.ToString()); |
|||
await _cache.RemoveAsync(cacheKey); |
|||
} |
|||
} |
|||
} |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Caching; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Domain.Entities.Events.Distributed; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
using Volo.Abp.TenantManagement; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy.RemoteService.EventBus.Distributed |
|||
{ |
|||
public class TenantDeleteEventHandler : IDistributedEventHandler<EntityDeletedEto<TenantEto>>, ITransientDependency |
|||
{ |
|||
private readonly IDistributedCache<TenantConfigurationCacheItem> _cache; |
|||
|
|||
public TenantDeleteEventHandler( |
|||
IDistributedCache<TenantConfigurationCacheItem> cache) |
|||
{ |
|||
_cache = cache; |
|||
} |
|||
|
|||
public virtual async Task HandleEventAsync(EntityDeletedEto<TenantEto> eventData) |
|||
{ |
|||
await _cache.RemoveAsync( |
|||
TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Id.ToString())); |
|||
|
|||
await _cache.RemoveAsync( |
|||
TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Name)); |
|||
} |
|||
} |
|||
} |
|||
|
|||
@ -1,40 +1,45 @@ |
|||
using LINGYUN.Abp.TenantManagement; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Caching; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Domain.Entities.Events.Distributed; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
using Volo.Abp.TenantManagement; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy.RemoteService.EventBus.Distributed |
|||
{ |
|||
public class TenantUpdateEventHandler : IDistributedEventHandler<EntityUpdatedEto<TenantEto>>, ITransientDependency |
|||
{ |
|||
private readonly ITenantAppService _tenantAppService; |
|||
private readonly IDistributedCache<TenantConfigurationCacheItem> _cache; |
|||
|
|||
public TenantUpdateEventHandler( |
|||
ITenantAppService tenantAppService, |
|||
IDistributedCache<TenantConfigurationCacheItem> cache) |
|||
{ |
|||
_cache = cache; |
|||
_tenantAppService = tenantAppService; |
|||
} |
|||
|
|||
public virtual async Task HandleEventAsync(EntityUpdatedEto<TenantEto> eventData) |
|||
{ |
|||
var tenantDto = await _tenantAppService.GetAsync(eventData.Entity.Id); |
|||
var tenantConnectionStringsDto = await _tenantAppService.GetConnectionStringAsync(eventData.Entity.Id); |
|||
var connectionStrings = new ConnectionStrings(); |
|||
foreach (var tenantConnectionString in tenantConnectionStringsDto.Items) |
|||
{ |
|||
connectionStrings[tenantConnectionString.Name] = tenantConnectionString.Value; |
|||
} |
|||
var cacheItem = new TenantConfigurationCacheItem(tenantDto.Id, tenantDto.Name, connectionStrings); |
|||
|
|||
var cacheKey = TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Id.ToString()); |
|||
await _cache.SetAsync(cacheKey, cacheItem); |
|||
} |
|||
} |
|||
} |
|||
using LINGYUN.Abp.TenantManagement; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Caching; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Domain.Entities.Events.Distributed; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
using Volo.Abp.TenantManagement; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy.RemoteService.EventBus.Distributed |
|||
{ |
|||
public class TenantUpdateEventHandler : IDistributedEventHandler<EntityUpdatedEto<TenantEto>>, ITransientDependency |
|||
{ |
|||
private readonly ITenantAppService _tenantAppService; |
|||
private readonly IDistributedCache<TenantConfigurationCacheItem> _cache; |
|||
|
|||
public TenantUpdateEventHandler( |
|||
ITenantAppService tenantAppService, |
|||
IDistributedCache<TenantConfigurationCacheItem> cache) |
|||
{ |
|||
_cache = cache; |
|||
_tenantAppService = tenantAppService; |
|||
} |
|||
|
|||
public virtual async Task HandleEventAsync(EntityUpdatedEto<TenantEto> eventData) |
|||
{ |
|||
var tenantDto = await _tenantAppService.GetAsync(eventData.Entity.Id); |
|||
var tenantConnectionStringsDto = await _tenantAppService.GetConnectionStringAsync(eventData.Entity.Id); |
|||
var connectionStrings = new ConnectionStrings(); |
|||
foreach (var tenantConnectionString in tenantConnectionStringsDto.Items) |
|||
{ |
|||
connectionStrings[tenantConnectionString.Name] = tenantConnectionString.Value; |
|||
} |
|||
var cacheItem = new TenantConfigurationCacheItem(tenantDto.Id, tenantDto.Name, connectionStrings); |
|||
|
|||
await _cache.SetAsync( |
|||
TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Id.ToString()), |
|||
cacheItem); |
|||
|
|||
await _cache.SetAsync( |
|||
TenantConfigurationCacheItem.CalculateCacheKey(eventData.Entity.Name), |
|||
cacheItem); |
|||
} |
|||
} |
|||
} |
|||
|
|||
@ -1,58 +1,58 @@ |
|||
# LINGYUN.Abp.MultiTenancy.RemoteService |
|||
|
|||
abp 多租户远程服务组件,引用此模块将首先从分布式缓存查询当前租户配置 |
|||
|
|||
如果缓存不存在,则调用远程租户服务接口获取租户数据,并存储到分布式缓存中 |
|||
|
|||
## 配置使用 |
|||
|
|||
模块按需引用 |
|||
|
|||
如果远程服务接口定义了授权策略,需要配置接口客户端授权,并且启动项目需要引用**Volo.Abp.Http.Client.IdentityModel**模块 |
|||
|
|||
``` shell |
|||
// .NET CLI |
|||
dotnet add package Volo.Abp.Http.Client.IdentityModel --version 3.0.0 |
|||
|
|||
// Package Manager |
|||
Install-Package Volo.Abp.Http.Client.IdentityModel -Version 3.0.0 |
|||
|
|||
``` |
|||
|
|||
具体**RemoteServices**与**IdentityClients**配置请阅读abp文档 |
|||
|
|||
[RemoteServices配置参阅](https://docs.abp.io/en/abp/latest/API/Dynamic-CSharp-API-Clients) |
|||
|
|||
[IdentityClients配置参阅](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/IdentityClientConfiguration.cs) |
|||
|
|||
事先定义**appsettings.json**文件 |
|||
|
|||
```json |
|||
{ |
|||
"RemoteServices": { |
|||
"TenantManagement": { |
|||
"BaseUrl": "http://localhost:30000/", |
|||
"IdentityClient": "tenant-finder-client" |
|||
} |
|||
}, |
|||
"IdentityClients": { |
|||
"tenant-finder-client": { |
|||
"Authority": "http://localhost:44385", |
|||
"RequireHttps": false, |
|||
"GrantType": "client_credentials", |
|||
"ClientId": "tenant-finder-client", |
|||
"Scope": "tenant-service", |
|||
"ClientSecret": "1q2w3e*" |
|||
} |
|||
} |
|||
} |
|||
|
|||
``` |
|||
|
|||
```csharp |
|||
[DependsOn(typeof(AbpRemoteServiceMultiTenancyModule))] |
|||
public class YouProjectModule : AbpModule |
|||
{ |
|||
// other |
|||
} |
|||
# LINGYUN.Abp.MultiTenancy.RemoteService |
|||
|
|||
abp 多租户远程服务组件,引用此模块将首先从分布式缓存查询当前租户配置 |
|||
|
|||
如果缓存不存在,则调用远程租户服务接口获取租户数据,并存储到分布式缓存中 |
|||
|
|||
## 配置使用 |
|||
|
|||
模块按需引用 |
|||
|
|||
如果远程服务接口定义了授权策略,需要配置接口客户端授权,并且启动项目需要引用**Volo.Abp.Http.Client.IdentityModel**模块 |
|||
|
|||
``` shell |
|||
// .NET CLI |
|||
dotnet add package Volo.Abp.Http.Client.IdentityModel |
|||
|
|||
// Package Manager |
|||
Install-Package Volo.Abp.Http.Client.IdentityModel |
|||
|
|||
``` |
|||
|
|||
具体**RemoteServices**与**IdentityClients**配置请阅读abp文档 |
|||
|
|||
[RemoteServices配置参阅](https://docs.abp.io/en/abp/latest/API/Dynamic-CSharp-API-Clients) |
|||
|
|||
[IdentityClients配置参阅](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/IdentityClientConfiguration.cs) |
|||
|
|||
事先定义**appsettings.json**文件 |
|||
|
|||
```json |
|||
{ |
|||
"RemoteServices": { |
|||
"AbpTenantManagement": { |
|||
"BaseUrl": "http://localhost:30000/", |
|||
"IdentityClient": "InternalServiceClient" |
|||
} |
|||
}, |
|||
"IdentityClients": { |
|||
"InternalServiceClient": { |
|||
"Authority": "http://localhost:44385", |
|||
"RequireHttps": false, |
|||
"GrantType": "client_credentials", |
|||
"ClientId": "tenant-finder-client", |
|||
"Scope": "tenant-service", |
|||
"ClientSecret": "1q2w3e*" |
|||
} |
|||
} |
|||
} |
|||
|
|||
``` |
|||
|
|||
```csharp |
|||
[DependsOn(typeof(AbpRemoteServiceMultiTenancyModule))] |
|||
public class YouProjectModule : AbpModule |
|||
{ |
|||
// other |
|||
} |
|||
``` |
|||
@ -1,13 +0,0 @@ |
|||
using System; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy |
|||
{ |
|||
public class CreateConnectionStringEventData |
|||
{ |
|||
public Guid Id { get; set; } |
|||
|
|||
public string Name { get; set; } |
|||
|
|||
public string Value { get; set; } |
|||
} |
|||
} |
|||
@ -1,11 +0,0 @@ |
|||
using System; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy |
|||
{ |
|||
public class DeleteConnectionStringEventData |
|||
{ |
|||
public Guid Id { get; set; } |
|||
|
|||
public string Name { get; set; } |
|||
} |
|||
} |
|||
@ -1,9 +0,0 @@ |
|||
using System; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy |
|||
{ |
|||
public class DeleteEventData |
|||
{ |
|||
public Guid Id { get; set; } |
|||
} |
|||
} |
|||
@ -1,17 +0,0 @@ |
|||
using System; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy |
|||
{ |
|||
public class UpdateConnectionStringEventData |
|||
{ |
|||
public Guid Id { get; set; } |
|||
|
|||
public string OriginName { get; set; } |
|||
|
|||
public string Name { get; set; } |
|||
|
|||
public string OriginValue { get; set; } |
|||
|
|||
public string Value { get; set; } |
|||
} |
|||
} |
|||
@ -1,13 +0,0 @@ |
|||
using System; |
|||
|
|||
namespace LINGYUN.Abp.MultiTenancy |
|||
{ |
|||
public class UpdateEventData |
|||
{ |
|||
public Guid Id { get; set; } |
|||
|
|||
public string OriginName { get; set; } |
|||
|
|||
public string Name { get; set; } |
|||
} |
|||
} |
|||
@ -1,184 +1,177 @@ |
|||
using LINGYUN.Abp.MultiTenancy; |
|||
using Microsoft.AspNetCore.Authorization; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp; |
|||
using Volo.Abp.Application.Dtos; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
using Volo.Abp.ObjectExtending; |
|||
using Volo.Abp.TenantManagement; |
|||
|
|||
namespace LINGYUN.Abp.TenantManagement |
|||
{ |
|||
[Authorize(TenantManagementPermissions.Tenants.Default)] |
|||
public class TenantAppService : TenantManagementAppServiceBase, ITenantAppService |
|||
{ |
|||
protected IDistributedEventBus EventBus { get; } |
|||
protected ITenantRepository TenantRepository { get; } |
|||
protected ITenantManager TenantManager { get; } |
|||
|
|||
public TenantAppService( |
|||
ITenantRepository tenantRepository, |
|||
ITenantManager tenantManager, |
|||
IDistributedEventBus eventBus) |
|||
{ |
|||
EventBus = eventBus; |
|||
TenantRepository = tenantRepository; |
|||
TenantManager = tenantManager; |
|||
} |
|||
|
|||
public virtual async Task<TenantDto> GetAsync(Guid id) |
|||
{ |
|||
var tenant = await TenantRepository.FindAsync(id, false); |
|||
if(tenant == null) |
|||
{ |
|||
throw new UserFriendlyException(L["TenantNotFoundById", id]); |
|||
} |
|||
return ObjectMapper.Map<Tenant, TenantDto>(tenant); |
|||
} |
|||
|
|||
public virtual async Task<TenantDto> GetAsync(string name) |
|||
{ |
|||
var tenant = await TenantRepository.FindByNameAsync(name, false); |
|||
if (tenant == null) |
|||
{ |
|||
throw new UserFriendlyException(L["TenantNotFoundByName", name]); |
|||
} |
|||
return ObjectMapper.Map<Tenant, TenantDto>(tenant); |
|||
} |
|||
|
|||
public virtual async Task<PagedResultDto<TenantDto>> GetListAsync(TenantGetByPagedInputDto input) |
|||
{ |
|||
var count = await TenantRepository.GetCountAsync(input.Filter); |
|||
var list = await TenantRepository.GetListAsync( |
|||
input.Sorting, |
|||
input.MaxResultCount, |
|||
input.SkipCount, |
|||
input.Filter |
|||
); |
|||
|
|||
return new PagedResultDto<TenantDto>( |
|||
count, |
|||
ObjectMapper.Map<List<Tenant>, List<TenantDto>>(list) |
|||
); |
|||
} |
|||
|
|||
[Authorize(TenantManagementPermissions.Tenants.Create)] |
|||
public virtual async Task<TenantDto> CreateAsync(TenantCreateDto input) |
|||
{ |
|||
var tenant = await TenantManager.CreateAsync(input.Name); |
|||
input.MapExtraPropertiesTo(tenant); |
|||
|
|||
await TenantRepository.InsertAsync(tenant); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
|
|||
var createEventData = new CreateEventData |
|||
{ |
|||
Id = tenant.Id, |
|||
Name = tenant.Name, |
|||
AdminUserId = GuidGenerator.Create(), |
|||
AdminEmailAddress = input.AdminEmailAddress, |
|||
AdminPassword = input.AdminPassword |
|||
}; |
|||
// 因为项目各自独立,租户增加时添加管理用户必须通过事件总线
|
|||
// 而 TenantEto 对象没有包含所需的用户名密码,需要独立发布事件
|
|||
await EventBus.PublishAsync(createEventData); |
|||
|
|||
return ObjectMapper.Map<Tenant, TenantDto>(tenant); |
|||
} |
|||
|
|||
[Authorize(TenantManagementPermissions.Tenants.Update)] |
|||
public virtual async Task<TenantDto> UpdateAsync(Guid id, TenantUpdateDto input) |
|||
{ |
|||
var tenant = await TenantRepository.GetAsync(id, false); |
|||
var updateEventData = new UpdateEventData |
|||
{ |
|||
Id = tenant.Id, |
|||
OriginName = tenant.Name, |
|||
Name = input.Name |
|||
}; |
|||
await TenantManager.ChangeNameAsync(tenant, input.Name); |
|||
input.MapExtraPropertiesTo(tenant); |
|||
await TenantRepository.UpdateAsync(tenant); |
|||
|
|||
await EventBus.PublishAsync(updateEventData); |
|||
return ObjectMapper.Map<Tenant, TenantDto>(tenant); |
|||
} |
|||
|
|||
[Authorize(TenantManagementPermissions.Tenants.Delete)] |
|||
public virtual async Task DeleteAsync(Guid id) |
|||
{ |
|||
var tenant = await TenantRepository.FindAsync(id); |
|||
if (tenant == null) |
|||
{ |
|||
return; |
|||
} |
|||
await TenantRepository.DeleteAsync(tenant); |
|||
} |
|||
|
|||
[Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)] |
|||
public virtual async Task<TenantConnectionStringDto> GetConnectionStringAsync(Guid id, string name) |
|||
{ |
|||
var tenant = await TenantRepository.GetAsync(id); |
|||
|
|||
var tenantConnectionString = tenant.FindConnectionString(name); |
|||
|
|||
return new TenantConnectionStringDto |
|||
{ |
|||
Name = name, |
|||
Value = tenantConnectionString |
|||
}; |
|||
} |
|||
|
|||
[Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)] |
|||
public virtual async Task<ListResultDto<TenantConnectionStringDto>> GetConnectionStringAsync(Guid id) |
|||
{ |
|||
var tenant = await TenantRepository.GetAsync(id); |
|||
|
|||
return new ListResultDto<TenantConnectionStringDto>( |
|||
ObjectMapper.Map<List<TenantConnectionString>, List<TenantConnectionStringDto>>(tenant.ConnectionStrings)); |
|||
} |
|||
|
|||
[Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)] |
|||
public virtual async Task<TenantConnectionStringDto> SetConnectionStringAsync(Guid id, TenantConnectionStringCreateOrUpdateDto tenantConnectionStringCreateOrUpdate) |
|||
{ |
|||
var tenant = await TenantRepository.GetAsync(id); |
|||
tenant.SetConnectionString(tenantConnectionStringCreateOrUpdate.Name, tenantConnectionStringCreateOrUpdate.Value); |
|||
var updateEventData = new UpdateEventData |
|||
{ |
|||
Id = tenant.Id, |
|||
OriginName = tenant.Name, |
|||
Name = tenant.Name |
|||
}; |
|||
// abp当前版本(3.0.0)在EntityChangeEventHelper中存在一个问题,无法发送框架默认的Eto,预计3.1.0修复
|
|||
// 发送自定义的事件数据来确保缓存被更新
|
|||
await EventBus.PublishAsync(updateEventData); |
|||
|
|||
return new TenantConnectionStringDto |
|||
{ |
|||
Name = tenantConnectionStringCreateOrUpdate.Name, |
|||
Value = tenantConnectionStringCreateOrUpdate.Value |
|||
}; |
|||
} |
|||
|
|||
[Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)] |
|||
public virtual async Task DeleteConnectionStringAsync(Guid id, string name) |
|||
{ |
|||
var tenant = await TenantRepository.GetAsync(id); |
|||
|
|||
tenant.RemoveConnectionString(name); |
|||
|
|||
var updateEventData = new UpdateEventData |
|||
{ |
|||
Id = tenant.Id, |
|||
OriginName = tenant.Name, |
|||
Name = tenant.Name |
|||
}; |
|||
await EventBus.PublishAsync(updateEventData); |
|||
|
|||
await TenantRepository.UpdateAsync(tenant); |
|||
} |
|||
} |
|||
} |
|||
using LINGYUN.Abp.MultiTenancy; |
|||
using Microsoft.AspNetCore.Authorization; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp; |
|||
using Volo.Abp.Application.Dtos; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
using Volo.Abp.ObjectExtending; |
|||
using Volo.Abp.TenantManagement; |
|||
|
|||
namespace LINGYUN.Abp.TenantManagement |
|||
{ |
|||
[Authorize(TenantManagementPermissions.Tenants.Default)] |
|||
public class TenantAppService : TenantManagementAppServiceBase, ITenantAppService |
|||
{ |
|||
protected IDistributedEventBus EventBus { get; } |
|||
protected ITenantRepository TenantRepository { get; } |
|||
protected ITenantManager TenantManager { get; } |
|||
|
|||
public TenantAppService( |
|||
ITenantRepository tenantRepository, |
|||
ITenantManager tenantManager, |
|||
IDistributedEventBus eventBus) |
|||
{ |
|||
EventBus = eventBus; |
|||
TenantRepository = tenantRepository; |
|||
TenantManager = tenantManager; |
|||
} |
|||
|
|||
public virtual async Task<TenantDto> GetAsync(Guid id) |
|||
{ |
|||
var tenant = await TenantRepository.FindAsync(id, false); |
|||
if(tenant == null) |
|||
{ |
|||
throw new UserFriendlyException(L["TenantNotFoundById", id]); |
|||
} |
|||
return ObjectMapper.Map<Tenant, TenantDto>(tenant); |
|||
} |
|||
|
|||
public virtual async Task<TenantDto> GetAsync(string name) |
|||
{ |
|||
var tenant = await TenantRepository.FindByNameAsync(name, false); |
|||
if (tenant == null) |
|||
{ |
|||
throw new UserFriendlyException(L["TenantNotFoundByName", name]); |
|||
} |
|||
return ObjectMapper.Map<Tenant, TenantDto>(tenant); |
|||
} |
|||
|
|||
public virtual async Task<PagedResultDto<TenantDto>> GetListAsync(TenantGetByPagedInputDto input) |
|||
{ |
|||
var count = await TenantRepository.GetCountAsync(input.Filter); |
|||
var list = await TenantRepository.GetListAsync( |
|||
input.Sorting, |
|||
input.MaxResultCount, |
|||
input.SkipCount, |
|||
input.Filter |
|||
); |
|||
|
|||
return new PagedResultDto<TenantDto>( |
|||
count, |
|||
ObjectMapper.Map<List<Tenant>, List<TenantDto>>(list) |
|||
); |
|||
} |
|||
|
|||
[Authorize(TenantManagementPermissions.Tenants.Create)] |
|||
public virtual async Task<TenantDto> CreateAsync(TenantCreateDto input) |
|||
{ |
|||
var tenant = await TenantManager.CreateAsync(input.Name); |
|||
input.MapExtraPropertiesTo(tenant); |
|||
|
|||
await TenantRepository.InsertAsync(tenant); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
|
|||
var createEventData = new CreateEventData |
|||
{ |
|||
Id = tenant.Id, |
|||
Name = tenant.Name, |
|||
AdminUserId = GuidGenerator.Create(), |
|||
AdminEmailAddress = input.AdminEmailAddress, |
|||
AdminPassword = input.AdminPassword |
|||
}; |
|||
// 因为项目各自独立,租户增加时添加管理用户必须通过事件总线
|
|||
// 而 TenantEto 对象没有包含所需的用户名密码,需要独立发布事件
|
|||
await EventBus.PublishAsync(createEventData); |
|||
|
|||
return ObjectMapper.Map<Tenant, TenantDto>(tenant); |
|||
} |
|||
|
|||
[Authorize(TenantManagementPermissions.Tenants.Update)] |
|||
public virtual async Task<TenantDto> UpdateAsync(Guid id, TenantUpdateDto input) |
|||
{ |
|||
var tenant = await TenantRepository.GetAsync(id, false); |
|||
|
|||
await TenantManager.ChangeNameAsync(tenant, input.Name); |
|||
input.MapExtraPropertiesTo(tenant); |
|||
await TenantRepository.UpdateAsync(tenant); |
|||
|
|||
return ObjectMapper.Map<Tenant, TenantDto>(tenant); |
|||
} |
|||
|
|||
[Authorize(TenantManagementPermissions.Tenants.Delete)] |
|||
public virtual async Task DeleteAsync(Guid id) |
|||
{ |
|||
var tenant = await TenantRepository.FindAsync(id); |
|||
if (tenant == null) |
|||
{ |
|||
return; |
|||
} |
|||
await TenantRepository.DeleteAsync(tenant); |
|||
} |
|||
|
|||
[Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)] |
|||
public virtual async Task<TenantConnectionStringDto> GetConnectionStringAsync(Guid id, string name) |
|||
{ |
|||
var tenant = await TenantRepository.GetAsync(id); |
|||
|
|||
var tenantConnectionString = tenant.FindConnectionString(name); |
|||
|
|||
return new TenantConnectionStringDto |
|||
{ |
|||
Name = name, |
|||
Value = tenantConnectionString |
|||
}; |
|||
} |
|||
|
|||
[Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)] |
|||
public virtual async Task<ListResultDto<TenantConnectionStringDto>> GetConnectionStringAsync(Guid id) |
|||
{ |
|||
var tenant = await TenantRepository.GetAsync(id); |
|||
|
|||
return new ListResultDto<TenantConnectionStringDto>( |
|||
ObjectMapper.Map<List<TenantConnectionString>, List<TenantConnectionStringDto>>(tenant.ConnectionStrings)); |
|||
} |
|||
|
|||
[Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)] |
|||
public virtual async Task<TenantConnectionStringDto> SetConnectionStringAsync(Guid id, TenantConnectionStringCreateOrUpdateDto tenantConnectionStringCreateOrUpdate) |
|||
{ |
|||
var tenant = await TenantRepository.GetAsync(id); |
|||
tenant.SetConnectionString(tenantConnectionStringCreateOrUpdate.Name, tenantConnectionStringCreateOrUpdate.Value); |
|||
|
|||
var eventData = new ConnectionStringChangedEventData |
|||
{ |
|||
Id = tenant.Id, |
|||
OriginName = tenantConnectionStringCreateOrUpdate.Name, |
|||
Name = tenantConnectionStringCreateOrUpdate.Name |
|||
}; |
|||
await EventBus.PublishAsync(eventData); |
|||
|
|||
return new TenantConnectionStringDto |
|||
{ |
|||
Name = tenantConnectionStringCreateOrUpdate.Name, |
|||
Value = tenantConnectionStringCreateOrUpdate.Value |
|||
}; |
|||
} |
|||
|
|||
[Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)] |
|||
public virtual async Task DeleteConnectionStringAsync(Guid id, string name) |
|||
{ |
|||
var tenant = await TenantRepository.GetAsync(id); |
|||
|
|||
tenant.RemoveConnectionString(name); |
|||
|
|||
var eventData = new ConnectionStringChangedEventData |
|||
{ |
|||
Id = tenant.Id, |
|||
OriginName = name, |
|||
Name = name |
|||
}; |
|||
await EventBus.PublishAsync(eventData); |
|||
|
|||
await TenantRepository.UpdateAsync(tenant); |
|||
} |
|||
} |
|||
} |
|||
|
|||
@ -1,22 +1,20 @@ |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Volo.Abp.Http.Client; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace LINGYUN.Abp.TenantManagement |
|||
{ |
|||
[DependsOn( |
|||
typeof(AbpTenantManagementApplicationContractsModule), |
|||
typeof(AbpHttpClientModule))] |
|||
public class AbpTenantManagementHttpApiClientModule : AbpModule |
|||
{ |
|||
public const string RemoteServiceName = "TenantManagement"; |
|||
|
|||
public override void ConfigureServices(ServiceConfigurationContext context) |
|||
{ |
|||
context.Services.AddHttpClientProxies( |
|||
typeof(AbpTenantManagementApplicationContractsModule).Assembly, |
|||
RemoteServiceName |
|||
); |
|||
} |
|||
} |
|||
} |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Volo.Abp.Http.Client; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace LINGYUN.Abp.TenantManagement |
|||
{ |
|||
[DependsOn( |
|||
typeof(AbpTenantManagementApplicationContractsModule), |
|||
typeof(AbpHttpClientModule))] |
|||
public class AbpTenantManagementHttpApiClientModule : AbpModule |
|||
{ |
|||
public override void ConfigureServices(ServiceConfigurationContext context) |
|||
{ |
|||
context.Services.AddHttpClientProxies( |
|||
typeof(AbpTenantManagementApplicationContractsModule).Assembly, |
|||
TenantManagementRemoteServiceConsts.RemoteServiceName |
|||
); |
|||
} |
|||
} |
|||
} |
|||
|
|||
Loading…
Reference in new issue