193 changed files with 4008 additions and 3921 deletions
@ -1,169 +1,178 @@ |
|||
|
|||
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", "{7C727110-59CA-495B-8143-C5DDEDE41289}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "services", "services", "{DDCA574F-911B-4547-BA21-12CCE1022D95}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AuthServer.Host", "services\account\AuthServer.Host\AuthServer.Host.csproj", "{BF8073FF-6403-4ED6-A3CD-74F240DC8044}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "identity-server", "identity-server", "{98887A8F-7040-4FA1-842F-A4C77A61ED09}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IdentityServer.SmsValidator", "modules\identityServer\LINGYUN.Abp.IdentityServer.SmsValidator\LINGYUN.Abp.IdentityServer.SmsValidator.csproj", "{9EA06629-DBAC-4369-9850-B7415D0470B0}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "identity", "identity", "{70B8D735-1E89-4163-8EDB-56A74E374CF4}" |
|||
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", "{F87B2BA3-40BC-4CB8-B53E-793C860F285D}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "wechat", "wechat", "{AF8AECC8-0F42-4FC5-B3C0-00987BA8279F}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "permission-management", "permission-management", "{2FEA83BA-2E6D-40AF-8781-12CFD042457F}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.PermissionManagement.Domain", "modules\permissions-management\LINGYUN.Abp.PermissionManagement.Domain\LINGYUN.Abp.PermissionManagement.Domain.csproj", "{A0A11373-635B-4343-8EE7-1DFC3611F05A}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat", "modules\wechat\LINGYUN.Abp.WeChat\LINGYUN.Abp.WeChat.csproj", "{6F13C138-1D71-48F5-A404-94047242E98F}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{572DBB40-4637-4C01-8491-8686F7E22B45}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.EventBus.CAP", "modules\common\LINGYUN.Abp.EventBus.CAP\LINGYUN.Abp.EventBus.CAP.csproj", "{843012AC-78C3-4A25-904C-353ED26C8524}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.MultiTenancy.DbFinder", "modules\tenants\LINGYUN.Abp.MultiTenancy.DbFinder\LINGYUN.Abp.MultiTenancy.DbFinder.csproj", "{FEEA68C2-D545-4AD6-81C7-71D0E2747CC3}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.MultiTenancy", "modules\tenants\LINGYUN.Abp.MultiTenancy\LINGYUN.Abp.MultiTenancy.csproj", "{D879BE04-BEFC-423B-868C-E8BA10605E16}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tenants", "tenants", "{6CB9D0F3-8D50-49B5-98E2-D777717E51E8}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Aliyun.Authorization", "modules\common\LINGYUN.Abp.Aliyun.Authorization\LINGYUN.Abp.Aliyun.Authorization.csproj", "{C675C7DB-5825-4F64-BF76-8A4452A448D2}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Sms.Aliyun", "modules\common\LINGYUN.Abp.Sms.Aliyun\LINGYUN.Abp.Sms.Aliyun.csproj", "{A51E2EB5-EEC0-4FB0-99B9-A0FBE0D8B0EB}" |
|||
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", "{E5E51981-864A-4B54-8E50-B5AE8B81245C}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Domain", "modules\identity\LINGYUN.Abp.Identity.Domain\LINGYUN.Abp.Identity.Domain.csproj", "{6514E12E-D97C-4311-8301-F270D4E04A9F}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.EntityFrameworkCore", "modules\identity\LINGYUN.Abp.Identity.EntityFrameworkCore\LINGYUN.Abp.Identity.EntityFrameworkCore.csproj", "{77F424CB-75F2-4D7F-8B52-BBE2E09CB423}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IdentityServer.EntityFrameworkCore", "modules\identityServer\LINGYUN.Abp.IdentityServer.EntityFrameworkCore\LINGYUN.Abp.IdentityServer.EntityFrameworkCore.csproj", "{644FAB8F-ED83-4539-AF43-8F8FE61EF778}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.MiniProgram", "modules\wechat\LINGYUN.Abp.WeChat.MiniProgram\LINGYUN.Abp.WeChat.MiniProgram.csproj", "{648D7B5D-8B78-4F90-BDE0-4AC50C902CC3}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Official", "modules\wechat\LINGYUN.Abp.WeChat.Official\LINGYUN.Abp.WeChat.Official.csproj", "{F762D1BB-66FB-421A-A917-D80B7DCC0DC0}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IdentityServer.WeChat", "modules\identityServer\LINGYUN.Abp.IdentityServer.WeChat\LINGYUN.Abp.IdentityServer.WeChat.csproj", "{D63C0CA8-554D-43F2-8DB4-8B464E4C1CDA}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IdentityServer.Domain", "modules\identityServer\LINGYUN.Abp.IdentityServer.Domain\LINGYUN.Abp.IdentityServer.Domain.csproj", "{79CAF2CA-E9E1-48A5-A21F-3786383C12E0}" |
|||
EndProject |
|||
Global |
|||
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
|||
Debug|Any CPU = Debug|Any CPU |
|||
Release|Any CPU = Release|Any CPU |
|||
EndGlobalSection |
|||
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
|||
{BF8073FF-6403-4ED6-A3CD-74F240DC8044}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{BF8073FF-6403-4ED6-A3CD-74F240DC8044}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{BF8073FF-6403-4ED6-A3CD-74F240DC8044}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{BF8073FF-6403-4ED6-A3CD-74F240DC8044}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{9EA06629-DBAC-4369-9850-B7415D0470B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{9EA06629-DBAC-4369-9850-B7415D0470B0}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{9EA06629-DBAC-4369-9850-B7415D0470B0}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{9EA06629-DBAC-4369-9850-B7415D0470B0}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{F87B2BA3-40BC-4CB8-B53E-793C860F285D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{F87B2BA3-40BC-4CB8-B53E-793C860F285D}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{F87B2BA3-40BC-4CB8-B53E-793C860F285D}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{F87B2BA3-40BC-4CB8-B53E-793C860F285D}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{A0A11373-635B-4343-8EE7-1DFC3611F05A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{A0A11373-635B-4343-8EE7-1DFC3611F05A}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{A0A11373-635B-4343-8EE7-1DFC3611F05A}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{A0A11373-635B-4343-8EE7-1DFC3611F05A}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{6F13C138-1D71-48F5-A404-94047242E98F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{6F13C138-1D71-48F5-A404-94047242E98F}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{6F13C138-1D71-48F5-A404-94047242E98F}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{6F13C138-1D71-48F5-A404-94047242E98F}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{843012AC-78C3-4A25-904C-353ED26C8524}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{843012AC-78C3-4A25-904C-353ED26C8524}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{843012AC-78C3-4A25-904C-353ED26C8524}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{843012AC-78C3-4A25-904C-353ED26C8524}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{FEEA68C2-D545-4AD6-81C7-71D0E2747CC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{FEEA68C2-D545-4AD6-81C7-71D0E2747CC3}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{FEEA68C2-D545-4AD6-81C7-71D0E2747CC3}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{FEEA68C2-D545-4AD6-81C7-71D0E2747CC3}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{D879BE04-BEFC-423B-868C-E8BA10605E16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{D879BE04-BEFC-423B-868C-E8BA10605E16}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{D879BE04-BEFC-423B-868C-E8BA10605E16}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{D879BE04-BEFC-423B-868C-E8BA10605E16}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{C675C7DB-5825-4F64-BF76-8A4452A448D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{C675C7DB-5825-4F64-BF76-8A4452A448D2}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{C675C7DB-5825-4F64-BF76-8A4452A448D2}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{C675C7DB-5825-4F64-BF76-8A4452A448D2}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{A51E2EB5-EEC0-4FB0-99B9-A0FBE0D8B0EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{A51E2EB5-EEC0-4FB0-99B9-A0FBE0D8B0EB}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{A51E2EB5-EEC0-4FB0-99B9-A0FBE0D8B0EB}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{A51E2EB5-EEC0-4FB0-99B9-A0FBE0D8B0EB}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{E5E51981-864A-4B54-8E50-B5AE8B81245C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{E5E51981-864A-4B54-8E50-B5AE8B81245C}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{E5E51981-864A-4B54-8E50-B5AE8B81245C}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{E5E51981-864A-4B54-8E50-B5AE8B81245C}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{6514E12E-D97C-4311-8301-F270D4E04A9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{6514E12E-D97C-4311-8301-F270D4E04A9F}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{6514E12E-D97C-4311-8301-F270D4E04A9F}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{6514E12E-D97C-4311-8301-F270D4E04A9F}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{77F424CB-75F2-4D7F-8B52-BBE2E09CB423}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{77F424CB-75F2-4D7F-8B52-BBE2E09CB423}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{77F424CB-75F2-4D7F-8B52-BBE2E09CB423}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{77F424CB-75F2-4D7F-8B52-BBE2E09CB423}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{644FAB8F-ED83-4539-AF43-8F8FE61EF778}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{644FAB8F-ED83-4539-AF43-8F8FE61EF778}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{644FAB8F-ED83-4539-AF43-8F8FE61EF778}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{644FAB8F-ED83-4539-AF43-8F8FE61EF778}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{648D7B5D-8B78-4F90-BDE0-4AC50C902CC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{648D7B5D-8B78-4F90-BDE0-4AC50C902CC3}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{648D7B5D-8B78-4F90-BDE0-4AC50C902CC3}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{648D7B5D-8B78-4F90-BDE0-4AC50C902CC3}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{F762D1BB-66FB-421A-A917-D80B7DCC0DC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{F762D1BB-66FB-421A-A917-D80B7DCC0DC0}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{F762D1BB-66FB-421A-A917-D80B7DCC0DC0}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{F762D1BB-66FB-421A-A917-D80B7DCC0DC0}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{D63C0CA8-554D-43F2-8DB4-8B464E4C1CDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{D63C0CA8-554D-43F2-8DB4-8B464E4C1CDA}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{D63C0CA8-554D-43F2-8DB4-8B464E4C1CDA}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{D63C0CA8-554D-43F2-8DB4-8B464E4C1CDA}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{79CAF2CA-E9E1-48A5-A21F-3786383C12E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{79CAF2CA-E9E1-48A5-A21F-3786383C12E0}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{79CAF2CA-E9E1-48A5-A21F-3786383C12E0}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{79CAF2CA-E9E1-48A5-A21F-3786383C12E0}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
EndGlobalSection |
|||
GlobalSection(SolutionProperties) = preSolution |
|||
HideSolutionNode = FALSE |
|||
EndGlobalSection |
|||
GlobalSection(NestedProjects) = preSolution |
|||
{BF8073FF-6403-4ED6-A3CD-74F240DC8044} = {DDCA574F-911B-4547-BA21-12CCE1022D95} |
|||
{98887A8F-7040-4FA1-842F-A4C77A61ED09} = {7C727110-59CA-495B-8143-C5DDEDE41289} |
|||
{9EA06629-DBAC-4369-9850-B7415D0470B0} = {98887A8F-7040-4FA1-842F-A4C77A61ED09} |
|||
{70B8D735-1E89-4163-8EDB-56A74E374CF4} = {7C727110-59CA-495B-8143-C5DDEDE41289} |
|||
{F87B2BA3-40BC-4CB8-B53E-793C860F285D} = {70B8D735-1E89-4163-8EDB-56A74E374CF4} |
|||
{AF8AECC8-0F42-4FC5-B3C0-00987BA8279F} = {7C727110-59CA-495B-8143-C5DDEDE41289} |
|||
{2FEA83BA-2E6D-40AF-8781-12CFD042457F} = {7C727110-59CA-495B-8143-C5DDEDE41289} |
|||
{A0A11373-635B-4343-8EE7-1DFC3611F05A} = {2FEA83BA-2E6D-40AF-8781-12CFD042457F} |
|||
{6F13C138-1D71-48F5-A404-94047242E98F} = {AF8AECC8-0F42-4FC5-B3C0-00987BA8279F} |
|||
{572DBB40-4637-4C01-8491-8686F7E22B45} = {7C727110-59CA-495B-8143-C5DDEDE41289} |
|||
{843012AC-78C3-4A25-904C-353ED26C8524} = {572DBB40-4637-4C01-8491-8686F7E22B45} |
|||
{FEEA68C2-D545-4AD6-81C7-71D0E2747CC3} = {6CB9D0F3-8D50-49B5-98E2-D777717E51E8} |
|||
{D879BE04-BEFC-423B-868C-E8BA10605E16} = {6CB9D0F3-8D50-49B5-98E2-D777717E51E8} |
|||
{6CB9D0F3-8D50-49B5-98E2-D777717E51E8} = {7C727110-59CA-495B-8143-C5DDEDE41289} |
|||
{C675C7DB-5825-4F64-BF76-8A4452A448D2} = {572DBB40-4637-4C01-8491-8686F7E22B45} |
|||
{A51E2EB5-EEC0-4FB0-99B9-A0FBE0D8B0EB} = {572DBB40-4637-4C01-8491-8686F7E22B45} |
|||
{E5E51981-864A-4B54-8E50-B5AE8B81245C} = {70B8D735-1E89-4163-8EDB-56A74E374CF4} |
|||
{6514E12E-D97C-4311-8301-F270D4E04A9F} = {70B8D735-1E89-4163-8EDB-56A74E374CF4} |
|||
{77F424CB-75F2-4D7F-8B52-BBE2E09CB423} = {70B8D735-1E89-4163-8EDB-56A74E374CF4} |
|||
{644FAB8F-ED83-4539-AF43-8F8FE61EF778} = {98887A8F-7040-4FA1-842F-A4C77A61ED09} |
|||
{648D7B5D-8B78-4F90-BDE0-4AC50C902CC3} = {AF8AECC8-0F42-4FC5-B3C0-00987BA8279F} |
|||
{F762D1BB-66FB-421A-A917-D80B7DCC0DC0} = {AF8AECC8-0F42-4FC5-B3C0-00987BA8279F} |
|||
{D63C0CA8-554D-43F2-8DB4-8B464E4C1CDA} = {98887A8F-7040-4FA1-842F-A4C77A61ED09} |
|||
{79CAF2CA-E9E1-48A5-A21F-3786383C12E0} = {98887A8F-7040-4FA1-842F-A4C77A61ED09} |
|||
EndGlobalSection |
|||
GlobalSection(ExtensibilityGlobals) = postSolution |
|||
SolutionGuid = {FCB77471-9ECB-4666-A316-1D6A6285A468} |
|||
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", "{7C727110-59CA-495B-8143-C5DDEDE41289}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "services", "services", "{DDCA574F-911B-4547-BA21-12CCE1022D95}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AuthServer.Host", "services\account\AuthServer.Host\AuthServer.Host.csproj", "{BF8073FF-6403-4ED6-A3CD-74F240DC8044}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "identity-server", "identity-server", "{98887A8F-7040-4FA1-842F-A4C77A61ED09}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IdentityServer.SmsValidator", "modules\identityServer\LINGYUN.Abp.IdentityServer.SmsValidator\LINGYUN.Abp.IdentityServer.SmsValidator.csproj", "{9EA06629-DBAC-4369-9850-B7415D0470B0}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "identity", "identity", "{70B8D735-1E89-4163-8EDB-56A74E374CF4}" |
|||
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", "{F87B2BA3-40BC-4CB8-B53E-793C860F285D}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "wechat", "wechat", "{AF8AECC8-0F42-4FC5-B3C0-00987BA8279F}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "permission-management", "permission-management", "{2FEA83BA-2E6D-40AF-8781-12CFD042457F}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.PermissionManagement.Domain", "modules\permissions-management\LINGYUN.Abp.PermissionManagement.Domain\LINGYUN.Abp.PermissionManagement.Domain.csproj", "{A0A11373-635B-4343-8EE7-1DFC3611F05A}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat", "modules\wechat\LINGYUN.Abp.WeChat\LINGYUN.Abp.WeChat.csproj", "{6F13C138-1D71-48F5-A404-94047242E98F}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{572DBB40-4637-4C01-8491-8686F7E22B45}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.EventBus.CAP", "modules\common\LINGYUN.Abp.EventBus.CAP\LINGYUN.Abp.EventBus.CAP.csproj", "{843012AC-78C3-4A25-904C-353ED26C8524}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.MultiTenancy.DbFinder", "modules\tenants\LINGYUN.Abp.MultiTenancy.DbFinder\LINGYUN.Abp.MultiTenancy.DbFinder.csproj", "{FEEA68C2-D545-4AD6-81C7-71D0E2747CC3}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.MultiTenancy", "modules\tenants\LINGYUN.Abp.MultiTenancy\LINGYUN.Abp.MultiTenancy.csproj", "{D879BE04-BEFC-423B-868C-E8BA10605E16}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tenants", "tenants", "{6CB9D0F3-8D50-49B5-98E2-D777717E51E8}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Aliyun.Authorization", "modules\common\LINGYUN.Abp.Aliyun.Authorization\LINGYUN.Abp.Aliyun.Authorization.csproj", "{C675C7DB-5825-4F64-BF76-8A4452A448D2}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Sms.Aliyun", "modules\common\LINGYUN.Abp.Sms.Aliyun\LINGYUN.Abp.Sms.Aliyun.csproj", "{A51E2EB5-EEC0-4FB0-99B9-A0FBE0D8B0EB}" |
|||
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", "{E5E51981-864A-4B54-8E50-B5AE8B81245C}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Domain", "modules\identity\LINGYUN.Abp.Identity.Domain\LINGYUN.Abp.Identity.Domain.csproj", "{6514E12E-D97C-4311-8301-F270D4E04A9F}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.EntityFrameworkCore", "modules\identity\LINGYUN.Abp.Identity.EntityFrameworkCore\LINGYUN.Abp.Identity.EntityFrameworkCore.csproj", "{77F424CB-75F2-4D7F-8B52-BBE2E09CB423}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IdentityServer.EntityFrameworkCore", "modules\identityServer\LINGYUN.Abp.IdentityServer.EntityFrameworkCore\LINGYUN.Abp.IdentityServer.EntityFrameworkCore.csproj", "{644FAB8F-ED83-4539-AF43-8F8FE61EF778}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.MiniProgram", "modules\wechat\LINGYUN.Abp.WeChat.MiniProgram\LINGYUN.Abp.WeChat.MiniProgram.csproj", "{648D7B5D-8B78-4F90-BDE0-4AC50C902CC3}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Official", "modules\wechat\LINGYUN.Abp.WeChat.Official\LINGYUN.Abp.WeChat.Official.csproj", "{F762D1BB-66FB-421A-A917-D80B7DCC0DC0}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IdentityServer.WeChat", "modules\identityServer\LINGYUN.Abp.IdentityServer.WeChat\LINGYUN.Abp.IdentityServer.WeChat.csproj", "{D63C0CA8-554D-43F2-8DB4-8B464E4C1CDA}" |
|||
EndProject |
|||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IdentityServer.Domain", "modules\identityServer\LINGYUN.Abp.IdentityServer.Domain\LINGYUN.Abp.IdentityServer.Domain.csproj", "{79CAF2CA-E9E1-48A5-A21F-3786383C12E0}" |
|||
EndProject |
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "theming", "theming", "{1D7CE7E0-37AB-477B-919B-B1EB2899A17E}" |
|||
EndProject |
|||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Components.WebAssembly.AntDesign", "theming\Volo.Abp.AspNetCore.Components.WebAssembly.AntDesign\Volo.Abp.AspNetCore.Components.WebAssembly.AntDesign.csproj", "{596BB67C-7765-4481-9C8B-EAE0D9726B75}" |
|||
EndProject |
|||
Global |
|||
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
|||
Debug|Any CPU = Debug|Any CPU |
|||
Release|Any CPU = Release|Any CPU |
|||
EndGlobalSection |
|||
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
|||
{BF8073FF-6403-4ED6-A3CD-74F240DC8044}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{BF8073FF-6403-4ED6-A3CD-74F240DC8044}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{BF8073FF-6403-4ED6-A3CD-74F240DC8044}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{BF8073FF-6403-4ED6-A3CD-74F240DC8044}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{9EA06629-DBAC-4369-9850-B7415D0470B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{9EA06629-DBAC-4369-9850-B7415D0470B0}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{9EA06629-DBAC-4369-9850-B7415D0470B0}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{9EA06629-DBAC-4369-9850-B7415D0470B0}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{F87B2BA3-40BC-4CB8-B53E-793C860F285D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{F87B2BA3-40BC-4CB8-B53E-793C860F285D}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{F87B2BA3-40BC-4CB8-B53E-793C860F285D}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{F87B2BA3-40BC-4CB8-B53E-793C860F285D}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{A0A11373-635B-4343-8EE7-1DFC3611F05A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{A0A11373-635B-4343-8EE7-1DFC3611F05A}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{A0A11373-635B-4343-8EE7-1DFC3611F05A}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{A0A11373-635B-4343-8EE7-1DFC3611F05A}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{6F13C138-1D71-48F5-A404-94047242E98F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{6F13C138-1D71-48F5-A404-94047242E98F}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{6F13C138-1D71-48F5-A404-94047242E98F}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{6F13C138-1D71-48F5-A404-94047242E98F}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{843012AC-78C3-4A25-904C-353ED26C8524}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{843012AC-78C3-4A25-904C-353ED26C8524}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{843012AC-78C3-4A25-904C-353ED26C8524}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{843012AC-78C3-4A25-904C-353ED26C8524}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{FEEA68C2-D545-4AD6-81C7-71D0E2747CC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{FEEA68C2-D545-4AD6-81C7-71D0E2747CC3}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{FEEA68C2-D545-4AD6-81C7-71D0E2747CC3}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{FEEA68C2-D545-4AD6-81C7-71D0E2747CC3}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{D879BE04-BEFC-423B-868C-E8BA10605E16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{D879BE04-BEFC-423B-868C-E8BA10605E16}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{D879BE04-BEFC-423B-868C-E8BA10605E16}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{D879BE04-BEFC-423B-868C-E8BA10605E16}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{C675C7DB-5825-4F64-BF76-8A4452A448D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{C675C7DB-5825-4F64-BF76-8A4452A448D2}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{C675C7DB-5825-4F64-BF76-8A4452A448D2}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{C675C7DB-5825-4F64-BF76-8A4452A448D2}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{A51E2EB5-EEC0-4FB0-99B9-A0FBE0D8B0EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{A51E2EB5-EEC0-4FB0-99B9-A0FBE0D8B0EB}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{A51E2EB5-EEC0-4FB0-99B9-A0FBE0D8B0EB}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{A51E2EB5-EEC0-4FB0-99B9-A0FBE0D8B0EB}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{E5E51981-864A-4B54-8E50-B5AE8B81245C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{E5E51981-864A-4B54-8E50-B5AE8B81245C}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{E5E51981-864A-4B54-8E50-B5AE8B81245C}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{E5E51981-864A-4B54-8E50-B5AE8B81245C}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{6514E12E-D97C-4311-8301-F270D4E04A9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{6514E12E-D97C-4311-8301-F270D4E04A9F}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{6514E12E-D97C-4311-8301-F270D4E04A9F}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{6514E12E-D97C-4311-8301-F270D4E04A9F}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{77F424CB-75F2-4D7F-8B52-BBE2E09CB423}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{77F424CB-75F2-4D7F-8B52-BBE2E09CB423}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{77F424CB-75F2-4D7F-8B52-BBE2E09CB423}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{77F424CB-75F2-4D7F-8B52-BBE2E09CB423}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{644FAB8F-ED83-4539-AF43-8F8FE61EF778}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{644FAB8F-ED83-4539-AF43-8F8FE61EF778}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{644FAB8F-ED83-4539-AF43-8F8FE61EF778}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{644FAB8F-ED83-4539-AF43-8F8FE61EF778}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{648D7B5D-8B78-4F90-BDE0-4AC50C902CC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{648D7B5D-8B78-4F90-BDE0-4AC50C902CC3}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{648D7B5D-8B78-4F90-BDE0-4AC50C902CC3}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{648D7B5D-8B78-4F90-BDE0-4AC50C902CC3}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{F762D1BB-66FB-421A-A917-D80B7DCC0DC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{F762D1BB-66FB-421A-A917-D80B7DCC0DC0}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{F762D1BB-66FB-421A-A917-D80B7DCC0DC0}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{F762D1BB-66FB-421A-A917-D80B7DCC0DC0}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{D63C0CA8-554D-43F2-8DB4-8B464E4C1CDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{D63C0CA8-554D-43F2-8DB4-8B464E4C1CDA}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{D63C0CA8-554D-43F2-8DB4-8B464E4C1CDA}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{D63C0CA8-554D-43F2-8DB4-8B464E4C1CDA}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{79CAF2CA-E9E1-48A5-A21F-3786383C12E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{79CAF2CA-E9E1-48A5-A21F-3786383C12E0}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{79CAF2CA-E9E1-48A5-A21F-3786383C12E0}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{79CAF2CA-E9E1-48A5-A21F-3786383C12E0}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
{596BB67C-7765-4481-9C8B-EAE0D9726B75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|||
{596BB67C-7765-4481-9C8B-EAE0D9726B75}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|||
{596BB67C-7765-4481-9C8B-EAE0D9726B75}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|||
{596BB67C-7765-4481-9C8B-EAE0D9726B75}.Release|Any CPU.Build.0 = Release|Any CPU |
|||
EndGlobalSection |
|||
GlobalSection(SolutionProperties) = preSolution |
|||
HideSolutionNode = FALSE |
|||
EndGlobalSection |
|||
GlobalSection(NestedProjects) = preSolution |
|||
{BF8073FF-6403-4ED6-A3CD-74F240DC8044} = {DDCA574F-911B-4547-BA21-12CCE1022D95} |
|||
{98887A8F-7040-4FA1-842F-A4C77A61ED09} = {7C727110-59CA-495B-8143-C5DDEDE41289} |
|||
{9EA06629-DBAC-4369-9850-B7415D0470B0} = {98887A8F-7040-4FA1-842F-A4C77A61ED09} |
|||
{70B8D735-1E89-4163-8EDB-56A74E374CF4} = {7C727110-59CA-495B-8143-C5DDEDE41289} |
|||
{F87B2BA3-40BC-4CB8-B53E-793C860F285D} = {70B8D735-1E89-4163-8EDB-56A74E374CF4} |
|||
{AF8AECC8-0F42-4FC5-B3C0-00987BA8279F} = {7C727110-59CA-495B-8143-C5DDEDE41289} |
|||
{2FEA83BA-2E6D-40AF-8781-12CFD042457F} = {7C727110-59CA-495B-8143-C5DDEDE41289} |
|||
{A0A11373-635B-4343-8EE7-1DFC3611F05A} = {2FEA83BA-2E6D-40AF-8781-12CFD042457F} |
|||
{6F13C138-1D71-48F5-A404-94047242E98F} = {AF8AECC8-0F42-4FC5-B3C0-00987BA8279F} |
|||
{572DBB40-4637-4C01-8491-8686F7E22B45} = {7C727110-59CA-495B-8143-C5DDEDE41289} |
|||
{843012AC-78C3-4A25-904C-353ED26C8524} = {572DBB40-4637-4C01-8491-8686F7E22B45} |
|||
{FEEA68C2-D545-4AD6-81C7-71D0E2747CC3} = {6CB9D0F3-8D50-49B5-98E2-D777717E51E8} |
|||
{D879BE04-BEFC-423B-868C-E8BA10605E16} = {6CB9D0F3-8D50-49B5-98E2-D777717E51E8} |
|||
{6CB9D0F3-8D50-49B5-98E2-D777717E51E8} = {7C727110-59CA-495B-8143-C5DDEDE41289} |
|||
{C675C7DB-5825-4F64-BF76-8A4452A448D2} = {572DBB40-4637-4C01-8491-8686F7E22B45} |
|||
{A51E2EB5-EEC0-4FB0-99B9-A0FBE0D8B0EB} = {572DBB40-4637-4C01-8491-8686F7E22B45} |
|||
{E5E51981-864A-4B54-8E50-B5AE8B81245C} = {70B8D735-1E89-4163-8EDB-56A74E374CF4} |
|||
{6514E12E-D97C-4311-8301-F270D4E04A9F} = {70B8D735-1E89-4163-8EDB-56A74E374CF4} |
|||
{77F424CB-75F2-4D7F-8B52-BBE2E09CB423} = {70B8D735-1E89-4163-8EDB-56A74E374CF4} |
|||
{644FAB8F-ED83-4539-AF43-8F8FE61EF778} = {98887A8F-7040-4FA1-842F-A4C77A61ED09} |
|||
{648D7B5D-8B78-4F90-BDE0-4AC50C902CC3} = {AF8AECC8-0F42-4FC5-B3C0-00987BA8279F} |
|||
{F762D1BB-66FB-421A-A917-D80B7DCC0DC0} = {AF8AECC8-0F42-4FC5-B3C0-00987BA8279F} |
|||
{D63C0CA8-554D-43F2-8DB4-8B464E4C1CDA} = {98887A8F-7040-4FA1-842F-A4C77A61ED09} |
|||
{79CAF2CA-E9E1-48A5-A21F-3786383C12E0} = {98887A8F-7040-4FA1-842F-A4C77A61ED09} |
|||
{596BB67C-7765-4481-9C8B-EAE0D9726B75} = {1D7CE7E0-37AB-477B-919B-B1EB2899A17E} |
|||
EndGlobalSection |
|||
GlobalSection(ExtensibilityGlobals) = postSolution |
|||
SolutionGuid = {FCB77471-9ECB-4666-A316-1D6A6285A468} |
|||
EndGlobalSection |
|||
EndGlobal |
|||
|
|||
@ -1,18 +1,18 @@ |
|||
<Project> |
|||
<PropertyGroup> |
|||
<LangVersion>latest</LangVersion> |
|||
<Version>4.3.0</Version> |
|||
<Authors>LINGYUN</Authors> |
|||
<NoWarn>$(NoWarn);CS1591;CS0436</NoWarn> |
|||
<PackageProjectUrl>https://github.com/colinin/abp-vue-admin-element-typescript/</PackageProjectUrl> |
|||
<PackageLicenseExpression>MIT</PackageLicenseExpression> |
|||
<RepositoryType>git</RepositoryType> |
|||
<RepositoryUrl>https://github.com/colinin/abp-vue-admin-element-typescript/</RepositoryUrl> |
|||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> |
|||
</PropertyGroup> |
|||
|
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> |
|||
<OutputPath>$(SolutionDir)LocalNuget</OutputPath> |
|||
</PropertyGroup> |
|||
|
|||
<Project> |
|||
<PropertyGroup> |
|||
<LangVersion>latest</LangVersion> |
|||
<Version>4.4.0</Version> |
|||
<Authors>LINGYUN</Authors> |
|||
<NoWarn>$(NoWarn);CS1591;CS0436</NoWarn> |
|||
<PackageProjectUrl>https://github.com/colinin/abp-vue-admin-element-typescript/</PackageProjectUrl> |
|||
<PackageLicenseExpression>MIT</PackageLicenseExpression> |
|||
<RepositoryType>git</RepositoryType> |
|||
<RepositoryUrl>https://github.com/colinin/abp-vue-admin-element-typescript/</RepositoryUrl> |
|||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> |
|||
</PropertyGroup> |
|||
|
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> |
|||
<OutputPath>$(SolutionDir)LocalNuget</OutputPath> |
|||
</PropertyGroup> |
|||
|
|||
</Project> |
|||
@ -1,38 +1,38 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk.Web"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netcoreapp3.1</TargetFramework> |
|||
<AssemblyName>LINGYUN.Abp.Account.Web</AssemblyName> |
|||
<PackageId>LINGYUN.Abp.Account.Web</PackageId> |
|||
<IsPackable>true</IsPackable> |
|||
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> |
|||
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> |
|||
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute> |
|||
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> |
|||
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest> |
|||
<RootNamespace>LINGYUN.Abp.Account.Web</RootNamespace> |
|||
<OutputType>Library</OutputType> |
|||
|
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<EmbeddedResource Include="Pages\**\*.css" /> |
|||
<EmbeddedResource Include="Pages\**\*.js" /> |
|||
<EmbeddedResource Include="Components\**\*.js" /> |
|||
<EmbeddedResource Include="Components\**\*.css" /> |
|||
<Content Remove="Pages\**\*.css" /> |
|||
<Content Remove="Pages\**\*.js" /> |
|||
<Content Remove="Components\**\*.js" /> |
|||
<Content Remove="Components\**\*.css" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Account.Web" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.Sms" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.Emailing" Version="4.3.0" /> |
|||
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="3.1.8" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk.Web"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netcoreapp3.1</TargetFramework> |
|||
<AssemblyName>LINGYUN.Abp.Account.Web</AssemblyName> |
|||
<PackageId>LINGYUN.Abp.Account.Web</PackageId> |
|||
<IsPackable>true</IsPackable> |
|||
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> |
|||
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> |
|||
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute> |
|||
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> |
|||
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest> |
|||
<RootNamespace>LINGYUN.Abp.Account.Web</RootNamespace> |
|||
<OutputType>Library</OutputType> |
|||
|
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<EmbeddedResource Include="Pages\**\*.css" /> |
|||
<EmbeddedResource Include="Pages\**\*.js" /> |
|||
<EmbeddedResource Include="Components\**\*.js" /> |
|||
<EmbeddedResource Include="Components\**\*.css" /> |
|||
<Content Remove="Pages\**\*.css" /> |
|||
<Content Remove="Pages\**\*.js" /> |
|||
<Content Remove="Components\**\*.js" /> |
|||
<Content Remove="Components\**\*.css" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Account.Web" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.Sms" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.Emailing" Version="4.4.0" /> |
|||
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="3.1.8" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,17 +1,17 @@ |
|||
using Newtonsoft.Json; |
|||
using System.ComponentModel.DataAnnotations; |
|||
|
|||
namespace LINGYUN.ApiGateway.Ocelot |
|||
{ |
|||
public class ReRouteUpdateDto : ReRouteDtoBase |
|||
{ |
|||
[Required] |
|||
public string ReRouteId { get; set; } |
|||
|
|||
[Required] |
|||
public string ConcurrencyStamp { get; set; } |
|||
|
|||
[StringLength(50)] |
|||
public string ReRouteName { get; set; } |
|||
} |
|||
} |
|||
using Newtonsoft.Json; |
|||
using System.ComponentModel.DataAnnotations; |
|||
|
|||
namespace LINGYUN.ApiGateway.Ocelot |
|||
{ |
|||
public class ReRouteUpdateDto : ReRouteDtoBase |
|||
{ |
|||
[Required] |
|||
public string ReRouteId { get; set; } |
|||
|
|||
[Required] |
|||
public string ConcurrencyStamp { get; set; } |
|||
|
|||
[StringLength(50)] |
|||
public string ReRouteName { get; set; } |
|||
} |
|||
} |
|||
|
|||
@ -1,21 +1,22 @@ |
|||
using System; |
|||
using System.Net; |
|||
using Volo.Abp.Application.Dtos; |
|||
|
|||
namespace LINGYUN.Abp.Auditing.Logging |
|||
{ |
|||
public class AuditLogGetByPagedDto : PagedAndSortedResultRequestDto |
|||
{ |
|||
public DateTime? StartTime { get; set; } |
|||
public DateTime? EndTime { get; set; } |
|||
public string HttpMethod { get; set; } |
|||
public string Url { get; set; } |
|||
public string UserName { get; set; } |
|||
public string ApplicationName { get; set; } |
|||
public string CorrelationId { get; set; } |
|||
public int? MaxExecutionDuration { get; set; } |
|||
public int? MinExecutionDuration { get; set; } |
|||
public bool? HasException { get; set; } |
|||
public HttpStatusCode? HttpStatusCode { get; set; } |
|||
} |
|||
} |
|||
using System; |
|||
using System.Net; |
|||
using Volo.Abp.Application.Dtos; |
|||
|
|||
namespace LINGYUN.Abp.Auditing.Logging |
|||
{ |
|||
public class AuditLogGetByPagedDto : PagedAndSortedResultRequestDto |
|||
{ |
|||
public DateTime? StartTime { get; set; } |
|||
public DateTime? EndTime { get; set; } |
|||
public string HttpMethod { get; set; } |
|||
public string Url { get; set; } |
|||
public Guid? UserId { get; set; } |
|||
public string UserName { get; set; } |
|||
public string ApplicationName { get; set; } |
|||
public string CorrelationId { get; set; } |
|||
public int? MaxExecutionDuration { get; set; } |
|||
public int? MinExecutionDuration { get; set; } |
|||
public bool? HasException { get; set; } |
|||
public HttpStatusCode? HttpStatusCode { get; set; } |
|||
} |
|||
} |
|||
|
|||
@ -1,60 +1,64 @@ |
|||
using LINGYUN.Abp.Auditing.Features; |
|||
using LINGYUN.Abp.Auditing.Permissions; |
|||
using Microsoft.AspNetCore.Authorization; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.ComponentModel.DataAnnotations; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Application.Dtos; |
|||
using Volo.Abp.AuditLogging; |
|||
using Volo.Abp.Features; |
|||
|
|||
namespace LINGYUN.Abp.Auditing.Logging |
|||
{ |
|||
[Authorize(AuditingPermissionNames.AuditLog.Default)] |
|||
[RequiresFeature(AuditingFeatureNames.Logging.AuditLog)] |
|||
public class AuditLogAppService : AuditingApplicationServiceBase, IAuditLogAppService |
|||
{ |
|||
protected IAuditLogRepository AuditLogRepository { get; } |
|||
|
|||
public AuditLogAppService(IAuditLogRepository auditLogRepository) |
|||
{ |
|||
AuditLogRepository = auditLogRepository; |
|||
} |
|||
|
|||
public virtual async Task<AuditLogDto> GetAsync(Guid id) |
|||
{ |
|||
var auditLog = await AuditLogRepository.GetAsync(id, includeDetails: true); |
|||
|
|||
return ObjectMapper.Map<AuditLog, AuditLogDto>(auditLog); |
|||
} |
|||
|
|||
public virtual async Task<PagedResultDto<AuditLogDto>> GetListAsync(AuditLogGetByPagedDto input) |
|||
{ |
|||
var auditLogCount = await AuditLogRepository |
|||
.GetCountAsync(input.StartTime, input.EndTime, |
|||
input.HttpMethod, input.Url, input.UserName, input.ApplicationName, |
|||
input.CorrelationId, input.MaxExecutionDuration, input.MinExecutionDuration, |
|||
input.HasException, input.HttpStatusCode); |
|||
|
|||
var auditLogs = await AuditLogRepository |
|||
.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount, |
|||
input.StartTime, input.EndTime, |
|||
input.HttpMethod, input.Url, input.UserName, input.ApplicationName, |
|||
input.CorrelationId, input.MaxExecutionDuration, input.MinExecutionDuration, |
|||
input.HasException, input.HttpStatusCode, includeDetails: false); |
|||
|
|||
return new PagedResultDto<AuditLogDto>(auditLogCount, |
|||
ObjectMapper.Map<List<AuditLog>, List<AuditLogDto>>(auditLogs)); |
|||
} |
|||
|
|||
[Authorize(AuditingPermissionNames.AuditLog.Delete)] |
|||
public virtual async Task DeleteAsync([Required] Guid id) |
|||
{ |
|||
var auditLog = await AuditLogRepository.GetAsync(id); |
|||
await AuditLogRepository.DeleteAsync(auditLog); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
} |
|||
} |
|||
} |
|||
using LINGYUN.Abp.Auditing.Features; |
|||
using LINGYUN.Abp.Auditing.Permissions; |
|||
using Microsoft.AspNetCore.Authorization; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.ComponentModel.DataAnnotations; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Application.Dtos; |
|||
using Volo.Abp.AuditLogging; |
|||
using Volo.Abp.Features; |
|||
|
|||
namespace LINGYUN.Abp.Auditing.Logging |
|||
{ |
|||
[Authorize(AuditingPermissionNames.AuditLog.Default)] |
|||
[RequiresFeature(AuditingFeatureNames.Logging.AuditLog)] |
|||
public class AuditLogAppService : AuditingApplicationServiceBase, IAuditLogAppService |
|||
{ |
|||
protected IAuditLogRepository AuditLogRepository { get; } |
|||
|
|||
public AuditLogAppService(IAuditLogRepository auditLogRepository) |
|||
{ |
|||
AuditLogRepository = auditLogRepository; |
|||
} |
|||
|
|||
public virtual async Task<AuditLogDto> GetAsync(Guid id) |
|||
{ |
|||
var auditLog = await AuditLogRepository.GetAsync(id, includeDetails: true); |
|||
|
|||
return ObjectMapper.Map<AuditLog, AuditLogDto>(auditLog); |
|||
} |
|||
|
|||
public virtual async Task<PagedResultDto<AuditLogDto>> GetListAsync(AuditLogGetByPagedDto input) |
|||
{ |
|||
var auditLogCount = await AuditLogRepository |
|||
.GetCountAsync(input.StartTime, input.EndTime, |
|||
input.HttpMethod, input.Url, |
|||
input.UserId, input.UserName, |
|||
input.ApplicationName, input.CorrelationId, |
|||
input.MaxExecutionDuration, input.MinExecutionDuration, |
|||
input.HasException, input.HttpStatusCode); |
|||
|
|||
var auditLogs = await AuditLogRepository |
|||
.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount, |
|||
input.StartTime, input.EndTime, |
|||
input.HttpMethod, input.Url, |
|||
input.UserId, input.UserName, |
|||
input.ApplicationName, input.CorrelationId, |
|||
input.MaxExecutionDuration, input.MinExecutionDuration, |
|||
input.HasException, input.HttpStatusCode, includeDetails: false); |
|||
|
|||
return new PagedResultDto<AuditLogDto>(auditLogCount, |
|||
ObjectMapper.Map<List<AuditLog>, List<AuditLogDto>>(auditLogs)); |
|||
} |
|||
|
|||
[Authorize(AuditingPermissionNames.AuditLog.Delete)] |
|||
public virtual async Task DeleteAsync([Required] Guid id) |
|||
{ |
|||
var auditLog = await AuditLogRepository.GetAsync(id); |
|||
await AuditLogRepository.DeleteAsync(auditLog); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
} |
|||
} |
|||
} |
|||
|
|||
@ -1,30 +1,30 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<None Remove="LINGYUN\Abp\Aliyun\SettingManagement\Localization\Resources\en.json" /> |
|||
<None Remove="LINGYUN\Abp\Aliyun\SettingManagement\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<EmbeddedResource Include="LINGYUN\Abp\Aliyun\SettingManagement\Localization\Resources\en.json" /> |
|||
<EmbeddedResource Include="LINGYUN\Abp\Aliyun\SettingManagement\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.AspNetCore.Mvc" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.SettingManagement.Domain" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\common\LINGYUN.Abp.Sms.Aliyun\LINGYUN.Abp.Sms.Aliyun.csproj" /> |
|||
<ProjectReference Include="..\..\settings\LINGYUN.Abp.SettingManagement.Application.Contracts\LINGYUN.Abp.SettingManagement.Application.Contracts.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<None Remove="LINGYUN\Abp\Aliyun\SettingManagement\Localization\Resources\en.json" /> |
|||
<None Remove="LINGYUN\Abp\Aliyun\SettingManagement\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<EmbeddedResource Include="LINGYUN\Abp\Aliyun\SettingManagement\Localization\Resources\en.json" /> |
|||
<EmbeddedResource Include="LINGYUN\Abp\Aliyun\SettingManagement\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.AspNetCore.Mvc" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.SettingManagement.Domain" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\common\LINGYUN.Abp.Sms.Aliyun\LINGYUN.Abp.Sms.Aliyun.csproj" /> |
|||
<ProjectReference Include="..\..\settings\LINGYUN.Abp.SettingManagement.Application.Contracts\LINGYUN.Abp.SettingManagement.Application.Contracts.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,14 +1,14 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.AspNetCore" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.AspNetCore" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,17 +1,17 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk.Web"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
<OutputType>Library</OutputType> |
|||
<GeneratePackageOnBuild>false</GeneratePackageOnBuild> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.Client.Common" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.EventBus" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk.Web"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
<OutputType>Library</OutputType> |
|||
<GeneratePackageOnBuild>false</GeneratePackageOnBuild> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.Client.Common" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.EventBus" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,24 +1,24 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<None Remove="LINGYUN\Abp\AspNetCore\Mvc\Validation\Localization\MissingFields\en.json" /> |
|||
<None Remove="LINGYUN\Abp\AspNetCore\Mvc\Validation\Localization\MissingFields\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<EmbeddedResource Include="LINGYUN\Abp\AspNetCore\Mvc\Validation\Localization\MissingFields\en.json" /> |
|||
<EmbeddedResource Include="LINGYUN\Abp\AspNetCore\Mvc\Validation\Localization\MissingFields\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.AspNetCore.Mvc" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<None Remove="LINGYUN\Abp\AspNetCore\Mvc\Validation\Localization\MissingFields\en.json" /> |
|||
<None Remove="LINGYUN\Abp\AspNetCore\Mvc\Validation\Localization\MissingFields\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<EmbeddedResource Include="LINGYUN\Abp\AspNetCore\Mvc\Validation\Localization\MissingFields\en.json" /> |
|||
<EmbeddedResource Include="LINGYUN\Abp\AspNetCore\Mvc\Validation\Localization\MissingFields\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.AspNetCore.Mvc" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,19 +1,19 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.HangFire" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.BackgroundJobs" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.Hangfire.Dashboard\LINGYUN.Abp.Hangfire.Dashboard.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.HangFire" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.BackgroundJobs" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.Hangfire.Dashboard\LINGYUN.Abp.Hangfire.Dashboard.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,15 +1,15 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.HangFire" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.BackgroundWorkers" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.HangFire" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.BackgroundWorkers" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,15 +1,15 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace>LINGYUN.Abp</RootNamespace> |
|||
<Description>Abp扩展基础库</Description> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Core" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace>LINGYUN.Abp</RootNamespace> |
|||
<Description>Abp扩展基础库</Description> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Core" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,115 +1,119 @@ |
|||
using DotNetCore.CAP.Internal; |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Microsoft.Extensions.Logging; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Threading; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace DotNetCore.CAP.Processor |
|||
{ |
|||
/// <summary>
|
|||
/// CapProcessingServer
|
|||
/// </summary>
|
|||
public class AbpCapProcessingServer : IProcessingServer |
|||
{ |
|||
private readonly CancellationTokenSource _cts; |
|||
private readonly ILogger _logger; |
|||
private readonly ILoggerFactory _loggerFactory; |
|||
private readonly IServiceProvider _provider; |
|||
|
|||
private Task _compositeTask; |
|||
private ProcessingContext _context; |
|||
private bool _disposed; |
|||
/// <summary>
|
|||
/// CapProcessingServer
|
|||
/// </summary>
|
|||
/// <param name="logger"></param>
|
|||
/// <param name="loggerFactory"></param>
|
|||
/// <param name="provider"></param>
|
|||
public AbpCapProcessingServer( |
|||
ILogger<AbpCapProcessingServer> logger, |
|||
ILoggerFactory loggerFactory, |
|||
IServiceProvider provider) |
|||
{ |
|||
_logger = logger; |
|||
_loggerFactory = loggerFactory; |
|||
_provider = provider; |
|||
_cts = new CancellationTokenSource(); |
|||
} |
|||
/// <summary>
|
|||
/// Start
|
|||
/// </summary>
|
|||
public void Start() |
|||
{ |
|||
_logger.LogInformation("Starting the processing server."); |
|||
|
|||
_context = new ProcessingContext(_provider, _cts.Token); |
|||
|
|||
var processorTasks = GetProcessors() |
|||
.Select(InfiniteRetry) |
|||
.Select(p => p.ProcessAsync(_context)); |
|||
_compositeTask = Task.WhenAll(processorTasks); |
|||
} |
|||
/// <summary>
|
|||
/// Pulse
|
|||
/// </summary>
|
|||
public void Pulse() |
|||
{ |
|||
_logger.LogTrace("Pulsing the processor."); |
|||
} |
|||
/// <summary>
|
|||
/// Dispose
|
|||
/// </summary>
|
|||
public void Dispose() |
|||
{ |
|||
if (_disposed) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
try |
|||
{ |
|||
_disposed = true; |
|||
|
|||
_logger.LogInformation("Shutting down the processing server..."); |
|||
_cts.Cancel(); |
|||
|
|||
_compositeTask?.Wait((int)TimeSpan.FromSeconds(10).TotalMilliseconds); |
|||
} |
|||
catch (AggregateException ex) |
|||
{ |
|||
var innerEx = ex.InnerExceptions[0]; |
|||
if (!(innerEx is OperationCanceledException)) |
|||
{ |
|||
_logger.LogWarning(innerEx, $"Expected an OperationCanceledException, but found '{innerEx.Message}'."); |
|||
} |
|||
} |
|||
catch (Exception ex) |
|||
{ |
|||
_logger.LogWarning(ex, "An exception was occured when disposing."); |
|||
} |
|||
finally |
|||
{ |
|||
_logger.LogInformation("### CAP shutdown!"); |
|||
} |
|||
} |
|||
|
|||
private IProcessor InfiniteRetry(IProcessor inner) |
|||
{ |
|||
return new InfiniteRetryProcessor(inner, _loggerFactory); |
|||
} |
|||
|
|||
private IProcessor[] GetProcessors() |
|||
{ |
|||
var returnedProcessors = new List<IProcessor> |
|||
{ |
|||
_provider.GetRequiredService<TransportCheckProcessor>(), |
|||
_provider.GetRequiredService<MessageNeedToRetryProcessor>(), |
|||
}; |
|||
|
|||
return returnedProcessors.ToArray(); |
|||
} |
|||
} |
|||
} |
|||
using DotNetCore.CAP.Internal; |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Microsoft.Extensions.Logging; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Threading; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace DotNetCore.CAP.Processor |
|||
{ |
|||
/// <summary>
|
|||
/// CapProcessingServer
|
|||
/// </summary>
|
|||
public class AbpCapProcessingServer : IProcessingServer |
|||
{ |
|||
private readonly CancellationTokenSource _cts; |
|||
private readonly ILogger _logger; |
|||
private readonly ILoggerFactory _loggerFactory; |
|||
private readonly IServiceProvider _provider; |
|||
|
|||
private Task _compositeTask; |
|||
private ProcessingContext _context; |
|||
private bool _disposed; |
|||
/// <summary>
|
|||
/// CapProcessingServer
|
|||
/// </summary>
|
|||
/// <param name="logger"></param>
|
|||
/// <param name="loggerFactory"></param>
|
|||
/// <param name="provider"></param>
|
|||
public AbpCapProcessingServer( |
|||
ILogger<AbpCapProcessingServer> logger, |
|||
ILoggerFactory loggerFactory, |
|||
IServiceProvider provider) |
|||
{ |
|||
_logger = logger; |
|||
_loggerFactory = loggerFactory; |
|||
_provider = provider; |
|||
_cts = new CancellationTokenSource(); |
|||
} |
|||
/// <summary>
|
|||
/// Start
|
|||
/// </summary>
|
|||
public void Start(CancellationToken stoppingToken) |
|||
{ |
|||
_logger.LogInformation("Starting the processing server."); |
|||
stoppingToken.Register(() => |
|||
{ |
|||
_cts.Cancel(); |
|||
}); |
|||
|
|||
_context = new ProcessingContext(_provider, _cts.Token); |
|||
|
|||
var processorTasks = GetProcessors() |
|||
.Select(InfiniteRetry) |
|||
.Select(p => p.ProcessAsync(_context)); |
|||
_compositeTask = Task.WhenAll(processorTasks); |
|||
} |
|||
/// <summary>
|
|||
/// Pulse
|
|||
/// </summary>
|
|||
public void Pulse() |
|||
{ |
|||
_logger.LogTrace("Pulsing the processor."); |
|||
} |
|||
/// <summary>
|
|||
/// Dispose
|
|||
/// </summary>
|
|||
public void Dispose() |
|||
{ |
|||
if (_disposed) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
try |
|||
{ |
|||
_disposed = true; |
|||
|
|||
_logger.LogInformation("Shutting down the processing server..."); |
|||
_cts.Cancel(); |
|||
|
|||
_compositeTask?.Wait((int)TimeSpan.FromSeconds(10).TotalMilliseconds); |
|||
} |
|||
catch (AggregateException ex) |
|||
{ |
|||
var innerEx = ex.InnerExceptions[0]; |
|||
if (!(innerEx is OperationCanceledException)) |
|||
{ |
|||
_logger.LogWarning(innerEx, $"Expected an OperationCanceledException, but found '{innerEx.Message}'."); |
|||
} |
|||
} |
|||
catch (Exception ex) |
|||
{ |
|||
_logger.LogWarning(ex, "An exception was occured when disposing."); |
|||
} |
|||
finally |
|||
{ |
|||
_logger.LogInformation("### CAP shutdown!"); |
|||
} |
|||
} |
|||
|
|||
private IProcessor InfiniteRetry(IProcessor inner) |
|||
{ |
|||
return new InfiniteRetryProcessor(inner, _loggerFactory); |
|||
} |
|||
|
|||
private IProcessor[] GetProcessors() |
|||
{ |
|||
var returnedProcessors = new List<IProcessor> |
|||
{ |
|||
_provider.GetRequiredService<TransportCheckProcessor>(), |
|||
_provider.GetRequiredService<MessageNeedToRetryProcessor>(), |
|||
}; |
|||
|
|||
return returnedProcessors.ToArray(); |
|||
} |
|||
} |
|||
} |
|||
|
|||
@ -1,20 +1,20 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.1</TargetFramework> |
|||
<RootNamespace /> |
|||
<Description>Cap分布式事件总线</Description> |
|||
<GenerateDocumentationFile>true</GenerateDocumentationFile> |
|||
<DocumentationFile>$(SolutionDir)modules\common\LINGYUN.Abp.EventBus.CAP\LINGYUN.Abp.EventBus.CAP.xml</DocumentationFile> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="DotNetCore.CAP" Version="5.1.0" /> |
|||
<PackageReference Include="Volo.Abp.BackgroundWorkers" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.EventBus" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.Json" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.1</TargetFramework> |
|||
<RootNamespace /> |
|||
<Description>Cap分布式事件总线</Description> |
|||
<GenerateDocumentationFile>true</GenerateDocumentationFile> |
|||
<DocumentationFile>$(SolutionDir)modules\common\LINGYUN.Abp.EventBus.CAP\LINGYUN.Abp.EventBus.CAP.xml</DocumentationFile> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="DotNetCore.CAP" Version="5.1.2" /> |
|||
<PackageReference Include="Volo.Abp.BackgroundWorkers" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.EventBus" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.Json" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,455 +1,456 @@ |
|||
<?xml version="1.0"?> |
|||
<doc> |
|||
<assembly> |
|||
<name>LINGYUN.Abp.EventBus.CAP</name> |
|||
</assembly> |
|||
<members> |
|||
<member name="T:DotNetCore.CAP.ConsumerServiceSelector"> |
|||
<summary> |
|||
消费者查找器 |
|||
</summary> |
|||
</member> |
|||
<member name="P:DotNetCore.CAP.ConsumerServiceSelector.CapOptions"> |
|||
<summary> |
|||
CAP配置 |
|||
</summary> |
|||
</member> |
|||
<member name="P:DotNetCore.CAP.ConsumerServiceSelector.AbpDistributedEventBusOptions"> |
|||
<summary> |
|||
Abp分布式事件配置 |
|||
</summary> |
|||
</member> |
|||
<member name="P:DotNetCore.CAP.ConsumerServiceSelector.ServiceProvider"> |
|||
<summary> |
|||
服务提供者 |
|||
</summary> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.ConsumerServiceSelector.#ctor(System.IServiceProvider,Microsoft.Extensions.Options.IOptions{DotNetCore.CAP.CapOptions},Microsoft.Extensions.Options.IOptions{Volo.Abp.EventBus.Distributed.AbpDistributedEventBusOptions})"> |
|||
<summary> |
|||
Creates a new <see cref="T:DotNetCore.CAP.Internal.ConsumerServiceSelector" />. |
|||
</summary> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.ConsumerServiceSelector.FindConsumersFromInterfaceTypes(System.IServiceProvider)"> |
|||
<summary> |
|||
查找消费者集合 |
|||
</summary> |
|||
<param name="provider"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.ConsumerServiceSelector.GetHandlerDescription(System.Type,System.Type)"> |
|||
<summary> |
|||
获取事件处理器集合 |
|||
</summary> |
|||
<param name="eventType"></param> |
|||
<param name="typeInfo"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="T:DotNetCore.CAP.Processor.AbpCapExpiresMessageCleanupBackgroundWorker"> |
|||
<summary> |
|||
过期消息清理任务 |
|||
</summary> |
|||
</member> |
|||
<member name="P:DotNetCore.CAP.Processor.AbpCapExpiresMessageCleanupBackgroundWorker.Options"> |
|||
<summary> |
|||
过期消息清理配置 |
|||
</summary> |
|||
</member> |
|||
<member name="P:DotNetCore.CAP.Processor.AbpCapExpiresMessageCleanupBackgroundWorker.Initializer"> |
|||
<summary> |
|||
Initializer |
|||
</summary> |
|||
</member> |
|||
<member name="P:DotNetCore.CAP.Processor.AbpCapExpiresMessageCleanupBackgroundWorker.Storage"> |
|||
<summary> |
|||
Storage |
|||
</summary> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.Processor.AbpCapExpiresMessageCleanupBackgroundWorker.#ctor(Volo.Abp.Threading.AbpAsyncTimer,DotNetCore.CAP.Persistence.IDataStorage,DotNetCore.CAP.Persistence.IStorageInitializer,Microsoft.Extensions.Options.IOptions{LINGYUN.Abp.EventBus.CAP.AbpCAPEventBusOptions},Microsoft.Extensions.DependencyInjection.IServiceScopeFactory)"> |
|||
<summary> |
|||
创建过期消息清理任务 |
|||
</summary> |
|||
<param name="timer"></param> |
|||
<param name="storage"></param> |
|||
<param name="initializer"></param> |
|||
<param name="options"></param> |
|||
<param name="serviceScopeFactory"></param> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.Processor.AbpCapExpiresMessageCleanupBackgroundWorker.DoWorkAsync(Volo.Abp.BackgroundWorkers.PeriodicBackgroundWorkerContext)"> |
|||
<summary> |
|||
异步执行任务 |
|||
</summary> |
|||
<param name="workerContext"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="T:DotNetCore.CAP.Processor.AbpCapProcessingServer"> |
|||
<summary> |
|||
CapProcessingServer |
|||
</summary> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.Processor.AbpCapProcessingServer.#ctor(Microsoft.Extensions.Logging.ILogger{DotNetCore.CAP.Processor.AbpCapProcessingServer},Microsoft.Extensions.Logging.ILoggerFactory,System.IServiceProvider)"> |
|||
<summary> |
|||
CapProcessingServer |
|||
</summary> |
|||
<param name="logger"></param> |
|||
<param name="loggerFactory"></param> |
|||
<param name="provider"></param> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.Processor.AbpCapProcessingServer.Start"> |
|||
<summary> |
|||
Start |
|||
</summary> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.Processor.AbpCapProcessingServer.Pulse"> |
|||
<summary> |
|||
Pulse |
|||
</summary> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.Processor.AbpCapProcessingServer.Dispose"> |
|||
<summary> |
|||
Dispose |
|||
</summary> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.AbpCAPEventBusModule"> |
|||
<summary> |
|||
AbpCAPEventBusModule |
|||
</summary> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPEventBusModule.ConfigureServices(Volo.Abp.Modularity.ServiceConfigurationContext)"> |
|||
<summary> |
|||
ConfigureServices |
|||
</summary> |
|||
<param name="context"></param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPEventBusModule.OnApplicationInitialization(Volo.Abp.ApplicationInitializationContext)"> |
|||
<summary> |
|||
OnApplicationInitialization |
|||
</summary> |
|||
<param name="context"></param> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.AbpCAPEventBusOptions"> |
|||
<summary> |
|||
过期消息清理配置项 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.AbpCAPEventBusOptions.NotifyFailedCallback"> |
|||
<summary> |
|||
发布消息处理失败通知 |
|||
default: false |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.AbpCAPEventBusOptions.CleanUpExpiresMessageBatch"> |
|||
<summary> |
|||
批量清理数量 |
|||
default: 1000 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.AbpCAPEventBusOptions.CleanUpExpiresMessageInterval"> |
|||
<summary> |
|||
执行间隔(ms) |
|||
default: 3600000 (1 hours) |
|||
</summary> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.AbpCAPExecutionFailedException"> |
|||
<summary> |
|||
AbpECAPExecutionFailedException |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.AbpCAPExecutionFailedException.MessageType"> |
|||
<summary> |
|||
MessageType |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.AbpCAPExecutionFailedException.Origin"> |
|||
<summary> |
|||
Message |
|||
</summary> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPExecutionFailedException.#ctor(DotNetCore.CAP.Messages.MessageType,DotNetCore.CAP.Messages.Message)"> |
|||
<summary> |
|||
constructor |
|||
</summary> |
|||
<param name="messageType"></param> |
|||
<param name="origin"></param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPExecutionFailedException.#ctor(DotNetCore.CAP.Messages.MessageType,DotNetCore.CAP.Messages.Message,System.String)"> |
|||
<summary> |
|||
constructor |
|||
</summary> |
|||
<param name="messageType"></param> |
|||
<param name="origin"></param> |
|||
<param name="message"></param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPExecutionFailedException.#ctor(DotNetCore.CAP.Messages.MessageType,DotNetCore.CAP.Messages.Message,System.String,System.Exception)"> |
|||
<summary> |
|||
constructor |
|||
</summary> |
|||
<param name="messageType"></param> |
|||
<param name="origin"></param> |
|||
<param name="message"></param> |
|||
<param name="innerException"></param> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.AbpCAPMessageExtensions"> |
|||
<summary> |
|||
CAP消息扩展 |
|||
</summary> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPMessageExtensions.TryGetTenantId(DotNetCore.CAP.Messages.Message,System.Nullable{System.Guid}@)"> |
|||
<summary> |
|||
尝试获取消息标头中的租户标识 |
|||
</summary> |
|||
<param name="message"></param> |
|||
<param name="tenantId"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPMessageExtensions.GetTenantIdOrNull(DotNetCore.CAP.Messages.Message)"> |
|||
<summary> |
|||
获取消息标头中的租户标识 |
|||
</summary> |
|||
<param name="message"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.AbpCAPSubscribeInvoker"> |
|||
<summary> |
|||
重写 ISubscribeInvoker 实现 Abp 租户集成 |
|||
</summary> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPSubscribeInvoker.#ctor(Microsoft.Extensions.Logging.ILoggerFactory,System.IServiceProvider,DotNetCore.CAP.Serialization.ISerializer,Volo.Abp.MultiTenancy.ICurrentTenant)"> |
|||
<summary> |
|||
AbpCAPSubscribeInvoker |
|||
</summary> |
|||
<param name="loggerFactory"></param> |
|||
<param name="serviceProvider"></param> |
|||
<param name="serializer"></param> |
|||
<param name="currentTenant"></param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPSubscribeInvoker.InvokeAsync(DotNetCore.CAP.Internal.ConsumerContext,System.Threading.CancellationToken)"> |
|||
<summary> |
|||
调用订阅者方法 |
|||
</summary> |
|||
<param name="context"></param> |
|||
<param name="cancellationToken"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPSubscribeInvoker.GetInstance(System.IServiceProvider,DotNetCore.CAP.Internal.ConsumerContext)"> |
|||
<summary> |
|||
获取事件处理类实例 |
|||
</summary> |
|||
<param name="provider"></param> |
|||
<param name="context"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPSubscribeInvoker.ExecuteWithParameterAsync(LINGYUN.Abp.EventBus.CAP.Internal.ObjectMethodExecutor,System.Object,System.Object[])"> |
|||
<summary> |
|||
通过给定的类型实例与参数调用订阅者方法 |
|||
</summary> |
|||
<param name="executor"></param> |
|||
<param name="class"></param> |
|||
<param name="parameter"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus"> |
|||
<summary> |
|||
CAP分布式事件总线 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.AbpDistributedEventBusOptions"> |
|||
<summary> |
|||
Abp分布式事件总线配置 |
|||
</summary> |
|||
</member> |
|||
<member name="F:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.CapPublisher"> |
|||
<summary> |
|||
CAP消息发布接口 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.CustomDistributedEventSubscriber"> |
|||
<summary> |
|||
自定义事件注册接口 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.HandlerFactories"> |
|||
<summary> |
|||
本地事件处理器工厂对象集合 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.EventTypes"> |
|||
<summary> |
|||
本地事件集合 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.CurrentUser"> |
|||
<summary> |
|||
当前用户 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.CurrentClient"> |
|||
<summary> |
|||
当前客户端 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.CancellationTokenProvider"> |
|||
<summary> |
|||
取消令牌 |
|||
</summary> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,Microsoft.Extensions.Options.IOptions{Volo.Abp.EventBus.Distributed.AbpDistributedEventBusOptions},DotNetCore.CAP.ICapPublisher,Volo.Abp.Users.ICurrentUser,Volo.Abp.Clients.ICurrentClient,Volo.Abp.MultiTenancy.ICurrentTenant,Volo.Abp.Threading.ICancellationTokenProvider,LINGYUN.Abp.EventBus.CAP.ICustomDistributedEventSubscriber)"> |
|||
<summary> |
|||
constructor |
|||
</summary> |
|||
<param name="serviceScopeFactory"></param> |
|||
<param name="distributedEventBusOptions"></param> |
|||
<param name="capPublisher"></param> |
|||
<param name="currentUser"></param> |
|||
<param name="currentTenant"></param> |
|||
<param name="currentClient"></param> |
|||
<param name="cancellationTokenProvider"></param> |
|||
<param name="customDistributedEventSubscriber"></param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.Subscribe(System.Type,Volo.Abp.EventBus.IEventHandlerFactory)"> |
|||
<summary> |
|||
订阅事件 |
|||
</summary> |
|||
<param name="eventType"></param> |
|||
<param name="factory"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.Unsubscribe``1(System.Func{``0,System.Threading.Tasks.Task})"> |
|||
<summary> |
|||
退订事件 |
|||
</summary> |
|||
<typeparam name="TEvent">事件类型</typeparam> |
|||
<param name="action"></param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.Unsubscribe(System.Type,Volo.Abp.EventBus.IEventHandler)"> |
|||
<summary> |
|||
退订事件 |
|||
</summary> |
|||
<param name="eventType">事件类型</param> |
|||
<param name="handler">事件处理器</param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.Unsubscribe(System.Type,Volo.Abp.EventBus.IEventHandlerFactory)"> |
|||
<summary> |
|||
退订事件 |
|||
</summary> |
|||
<param name="eventType">事件类型</param> |
|||
<param name="factory">事件处理器工厂</param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.UnsubscribeAll(System.Type)"> |
|||
<summary> |
|||
退订所有事件 |
|||
</summary> |
|||
<param name="eventType">事件类型</param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.Subscribe``1(Volo.Abp.EventBus.Distributed.IDistributedEventHandler{``0})"> |
|||
<summary> |
|||
订阅事件 |
|||
</summary> |
|||
<typeparam name="TEvent">事件类型</typeparam> |
|||
<param name="handler">事件处理器</param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.PublishAsync(System.Type,System.Object)"> |
|||
<summary> |
|||
发布事件 |
|||
</summary> |
|||
<param name="eventType">事件类型</param> |
|||
<param name="eventData">事件数据对象</param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.GetHandlerFactories(System.Type)"> |
|||
<summary> |
|||
获取事件处理器工厂列表 |
|||
</summary> |
|||
<param name="eventType"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.ICustomDistributedEventSubscriber"> |
|||
<summary> |
|||
自定义事件订阅者 |
|||
</summary> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.ICustomDistributedEventSubscriber.Subscribe(System.Type,Volo.Abp.EventBus.IEventHandlerFactory)"> |
|||
<summary> |
|||
订阅事件 |
|||
</summary> |
|||
<param name="eventType"></param> |
|||
<param name="factory"></param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.ICustomDistributedEventSubscriber.UnSubscribe(System.Type,Volo.Abp.EventBus.IEventHandlerFactory)"> |
|||
<summary> |
|||
取消订阅 |
|||
</summary> |
|||
<param name="eventType"></param> |
|||
<param name="factory"></param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.Internal.ObjectMethodExecutor.Execute(System.Object,System.Object[])"> |
|||
<summary> |
|||
Executes the configured method on <paramref name="target" />. This can be used whether or not |
|||
the configured method is asynchronous. |
|||
</summary> |
|||
<remarks> |
|||
Even if the target method is asynchronous, it's desirable to invoke it using Execute rather than |
|||
ExecuteAsync if you know at compile time what the return type is, because then you can directly |
|||
"await" that value (via a cast), and then the generated code will be able to reference the |
|||
resulting awaitable as a value-typed variable. If you use ExecuteAsync instead, the generated |
|||
code will have to treat the resulting awaitable as a boxed object, because it doesn't know at |
|||
compile time what type it would be. |
|||
</remarks> |
|||
<param name="target">The object whose method is to be executed.</param> |
|||
<param name="parameters">Parameters to pass to the method.</param> |
|||
<returns>The method return value.</returns> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.Internal.ObjectMethodExecutor.ExecuteAsync(System.Object,System.Object[])"> |
|||
<summary> |
|||
Executes the configured method on <paramref name="target" />. This can only be used if the configured |
|||
method is asynchronous. |
|||
</summary> |
|||
<remarks> |
|||
If you don't know at compile time the type of the method's returned awaitable, you can use ExecuteAsync, |
|||
which supplies an awaitable-of-object. This always works, but can incur several extra heap allocations |
|||
as compared with using Execute and then using "await" on the result value typecasted to the known |
|||
awaitable type. The possible extra heap allocations are for: |
|||
1. The custom awaitable (though usually there's a heap allocation for this anyway, since normally |
|||
it's a reference type, and you normally create a new instance per call). |
|||
2. The custom awaiter (whether or not it's a value type, since if it's not, you need a new instance |
|||
of it, and if it is, it will have to be boxed so the calling code can reference it as an object). |
|||
3. The async result value, if it's a value type (it has to be boxed as an object, since the calling |
|||
code doesn't know what type it's going to be). |
|||
</remarks> |
|||
<param name="target">The object whose method is to be executed.</param> |
|||
<param name="parameters">Parameters to pass to the method.</param> |
|||
<returns>An object that you can "await" to get the method return value.</returns> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.Internal.ObjectMethodExecutorAwaitable"> |
|||
<summary> |
|||
Provides a common awaitable structure that <see cref="M:LINGYUN.Abp.EventBus.CAP.Internal.ObjectMethodExecutor.ExecuteAsync(System.Object,System.Object[])" /> can |
|||
return, regardless of whether the underlying value is a System.Task, an FSharpAsync, or an |
|||
application-defined custom awaitable. |
|||
</summary> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.Internal.ObjectMethodExecutorFSharpSupport"> |
|||
<summary> |
|||
Helper for detecting whether a given type is FSharpAsync`1, and if so, supplying |
|||
an <see cref="T:System.Linq.Expressions.Expression" /> for mapping instances of that type to a C# awaitable. |
|||
</summary> |
|||
<remarks> |
|||
The main design goal here is to avoid taking a compile-time dependency on |
|||
FSharp.Core.dll, because non-F# applications wouldn't use it. So all the references |
|||
to FSharp types have to be constructed dynamically at runtime. |
|||
</remarks> |
|||
</member> |
|||
<member name="T:Microsoft.Extensions.DependencyInjection.ServiceCollectionExtensions"> |
|||
<summary> |
|||
CAP ServiceCollectionExtensions |
|||
</summary> |
|||
</member> |
|||
<member name="M:Microsoft.Extensions.DependencyInjection.ServiceCollectionExtensions.AddCAPEventBus(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{DotNetCore.CAP.CapOptions})"> |
|||
<summary> |
|||
Adds and configures the consistence services for the consistency. |
|||
</summary> |
|||
<param name="services"></param> |
|||
<param name="capAction"></param> |
|||
<returns></returns> |
|||
</member> |
|||
</members> |
|||
</doc> |
|||
<?xml version="1.0"?> |
|||
<doc> |
|||
<assembly> |
|||
<name>LINGYUN.Abp.EventBus.CAP</name> |
|||
</assembly> |
|||
<members> |
|||
<member name="T:DotNetCore.CAP.ConsumerServiceSelector"> |
|||
<summary> |
|||
消费者查找器 |
|||
</summary> |
|||
</member> |
|||
<member name="P:DotNetCore.CAP.ConsumerServiceSelector.CapOptions"> |
|||
<summary> |
|||
CAP配置 |
|||
</summary> |
|||
</member> |
|||
<member name="P:DotNetCore.CAP.ConsumerServiceSelector.AbpDistributedEventBusOptions"> |
|||
<summary> |
|||
Abp分布式事件配置 |
|||
</summary> |
|||
</member> |
|||
<member name="P:DotNetCore.CAP.ConsumerServiceSelector.ServiceProvider"> |
|||
<summary> |
|||
服务提供者 |
|||
</summary> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.ConsumerServiceSelector.#ctor(System.IServiceProvider,Microsoft.Extensions.Options.IOptions{DotNetCore.CAP.CapOptions},Microsoft.Extensions.Options.IOptions{Volo.Abp.EventBus.Distributed.AbpDistributedEventBusOptions})"> |
|||
<summary> |
|||
Creates a new <see cref="T:DotNetCore.CAP.Internal.ConsumerServiceSelector" />. |
|||
</summary> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.ConsumerServiceSelector.FindConsumersFromInterfaceTypes(System.IServiceProvider)"> |
|||
<summary> |
|||
查找消费者集合 |
|||
</summary> |
|||
<param name="provider"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.ConsumerServiceSelector.GetHandlerDescription(System.Type,System.Type)"> |
|||
<summary> |
|||
获取事件处理器集合 |
|||
</summary> |
|||
<param name="eventType"></param> |
|||
<param name="typeInfo"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="T:DotNetCore.CAP.Processor.AbpCapExpiresMessageCleanupBackgroundWorker"> |
|||
<summary> |
|||
过期消息清理任务 |
|||
</summary> |
|||
</member> |
|||
<member name="P:DotNetCore.CAP.Processor.AbpCapExpiresMessageCleanupBackgroundWorker.Options"> |
|||
<summary> |
|||
过期消息清理配置 |
|||
</summary> |
|||
</member> |
|||
<member name="P:DotNetCore.CAP.Processor.AbpCapExpiresMessageCleanupBackgroundWorker.Initializer"> |
|||
<summary> |
|||
Initializer |
|||
</summary> |
|||
</member> |
|||
<member name="P:DotNetCore.CAP.Processor.AbpCapExpiresMessageCleanupBackgroundWorker.Storage"> |
|||
<summary> |
|||
Storage |
|||
</summary> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.Processor.AbpCapExpiresMessageCleanupBackgroundWorker.#ctor(Volo.Abp.Threading.AbpAsyncTimer,DotNetCore.CAP.Persistence.IDataStorage,DotNetCore.CAP.Persistence.IStorageInitializer,Microsoft.Extensions.Options.IOptions{LINGYUN.Abp.EventBus.CAP.AbpCAPEventBusOptions},Microsoft.Extensions.DependencyInjection.IServiceScopeFactory)"> |
|||
<summary> |
|||
创建过期消息清理任务 |
|||
</summary> |
|||
<param name="timer"></param> |
|||
<param name="storage"></param> |
|||
<param name="initializer"></param> |
|||
<param name="options"></param> |
|||
<param name="serviceScopeFactory"></param> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.Processor.AbpCapExpiresMessageCleanupBackgroundWorker.DoWorkAsync(Volo.Abp.BackgroundWorkers.PeriodicBackgroundWorkerContext)"> |
|||
<summary> |
|||
异步执行任务 |
|||
</summary> |
|||
<param name="workerContext"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="T:DotNetCore.CAP.Processor.AbpCapProcessingServer"> |
|||
<summary> |
|||
CapProcessingServer |
|||
</summary> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.Processor.AbpCapProcessingServer.#ctor(Microsoft.Extensions.Logging.ILogger{DotNetCore.CAP.Processor.AbpCapProcessingServer},Microsoft.Extensions.Logging.ILoggerFactory,System.IServiceProvider)"> |
|||
<summary> |
|||
CapProcessingServer |
|||
</summary> |
|||
<param name="logger"></param> |
|||
<param name="loggerFactory"></param> |
|||
<param name="provider"></param> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.Processor.AbpCapProcessingServer.Start(System.Threading.CancellationToken)"> |
|||
<summary> |
|||
Start |
|||
</summary> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.Processor.AbpCapProcessingServer.Pulse"> |
|||
<summary> |
|||
Pulse |
|||
</summary> |
|||
</member> |
|||
<member name="M:DotNetCore.CAP.Processor.AbpCapProcessingServer.Dispose"> |
|||
<summary> |
|||
Dispose |
|||
</summary> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.AbpCAPEventBusModule"> |
|||
<summary> |
|||
AbpCAPEventBusModule |
|||
</summary> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPEventBusModule.ConfigureServices(Volo.Abp.Modularity.ServiceConfigurationContext)"> |
|||
<summary> |
|||
ConfigureServices |
|||
</summary> |
|||
<param name="context"></param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPEventBusModule.OnApplicationInitialization(Volo.Abp.ApplicationInitializationContext)"> |
|||
<summary> |
|||
OnApplicationInitialization |
|||
</summary> |
|||
<param name="context"></param> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.AbpCAPEventBusOptions"> |
|||
<summary> |
|||
过期消息清理配置项 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.AbpCAPEventBusOptions.NotifyFailedCallback"> |
|||
<summary> |
|||
发布消息处理失败通知 |
|||
default: false |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.AbpCAPEventBusOptions.CleanUpExpiresMessageBatch"> |
|||
<summary> |
|||
批量清理数量 |
|||
default: 1000 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.AbpCAPEventBusOptions.CleanUpExpiresMessageInterval"> |
|||
<summary> |
|||
执行间隔(ms) |
|||
default: 3600000 (1 hours) |
|||
</summary> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.AbpCAPExecutionFailedException"> |
|||
<summary> |
|||
AbpECAPExecutionFailedException |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.AbpCAPExecutionFailedException.MessageType"> |
|||
<summary> |
|||
MessageType |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.AbpCAPExecutionFailedException.Origin"> |
|||
<summary> |
|||
Message |
|||
</summary> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPExecutionFailedException.#ctor(DotNetCore.CAP.Messages.MessageType,DotNetCore.CAP.Messages.Message)"> |
|||
<summary> |
|||
constructor |
|||
</summary> |
|||
<param name="messageType"></param> |
|||
<param name="origin"></param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPExecutionFailedException.#ctor(DotNetCore.CAP.Messages.MessageType,DotNetCore.CAP.Messages.Message,System.String)"> |
|||
<summary> |
|||
constructor |
|||
</summary> |
|||
<param name="messageType"></param> |
|||
<param name="origin"></param> |
|||
<param name="message"></param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPExecutionFailedException.#ctor(DotNetCore.CAP.Messages.MessageType,DotNetCore.CAP.Messages.Message,System.String,System.Exception)"> |
|||
<summary> |
|||
constructor |
|||
</summary> |
|||
<param name="messageType"></param> |
|||
<param name="origin"></param> |
|||
<param name="message"></param> |
|||
<param name="innerException"></param> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.AbpCAPMessageExtensions"> |
|||
<summary> |
|||
CAP消息扩展 |
|||
</summary> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPMessageExtensions.TryGetTenantId(DotNetCore.CAP.Messages.Message,System.Nullable{System.Guid}@)"> |
|||
<summary> |
|||
尝试获取消息标头中的租户标识 |
|||
</summary> |
|||
<param name="message"></param> |
|||
<param name="tenantId"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPMessageExtensions.GetTenantIdOrNull(DotNetCore.CAP.Messages.Message)"> |
|||
<summary> |
|||
获取消息标头中的租户标识 |
|||
</summary> |
|||
<param name="message"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.AbpCAPSubscribeInvoker"> |
|||
<summary> |
|||
重写 ISubscribeInvoker 实现 Abp 租户集成 |
|||
</summary> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPSubscribeInvoker.#ctor(Microsoft.Extensions.Logging.ILoggerFactory,System.IServiceProvider,DotNetCore.CAP.Serialization.ISerializer,Volo.Abp.MultiTenancy.ICurrentTenant)"> |
|||
<summary> |
|||
AbpCAPSubscribeInvoker |
|||
</summary> |
|||
<param name="loggerFactory"></param> |
|||
<param name="serviceProvider"></param> |
|||
<param name="serializer"></param> |
|||
<param name="currentTenant"></param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPSubscribeInvoker.InvokeAsync(DotNetCore.CAP.Internal.ConsumerContext,System.Threading.CancellationToken)"> |
|||
<summary> |
|||
调用订阅者方法 |
|||
</summary> |
|||
<param name="context"></param> |
|||
<param name="cancellationToken"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPSubscribeInvoker.GetInstance(System.IServiceProvider,DotNetCore.CAP.Internal.ConsumerContext)"> |
|||
<summary> |
|||
获取事件处理类实例 |
|||
</summary> |
|||
<param name="provider"></param> |
|||
<param name="context"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.AbpCAPSubscribeInvoker.ExecuteWithParameterAsync(LINGYUN.Abp.EventBus.CAP.Internal.ObjectMethodExecutor,System.Object,System.Object[])"> |
|||
<summary> |
|||
通过给定的类型实例与参数调用订阅者方法 |
|||
</summary> |
|||
<param name="executor"></param> |
|||
<param name="class"></param> |
|||
<param name="parameter"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus"> |
|||
<summary> |
|||
CAP分布式事件总线 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.AbpDistributedEventBusOptions"> |
|||
<summary> |
|||
Abp分布式事件总线配置 |
|||
</summary> |
|||
</member> |
|||
<member name="F:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.CapPublisher"> |
|||
<summary> |
|||
CAP消息发布接口 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.CustomDistributedEventSubscriber"> |
|||
<summary> |
|||
自定义事件注册接口 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.HandlerFactories"> |
|||
<summary> |
|||
本地事件处理器工厂对象集合 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.EventTypes"> |
|||
<summary> |
|||
本地事件集合 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.CurrentUser"> |
|||
<summary> |
|||
当前用户 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.CurrentClient"> |
|||
<summary> |
|||
当前客户端 |
|||
</summary> |
|||
</member> |
|||
<member name="P:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.CancellationTokenProvider"> |
|||
<summary> |
|||
取消令牌 |
|||
</summary> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,Microsoft.Extensions.Options.IOptions{Volo.Abp.EventBus.Distributed.AbpDistributedEventBusOptions},DotNetCore.CAP.ICapPublisher,Volo.Abp.Users.ICurrentUser,Volo.Abp.Clients.ICurrentClient,Volo.Abp.MultiTenancy.ICurrentTenant,Volo.Abp.EventBus.IEventErrorHandler,Volo.Abp.Threading.ICancellationTokenProvider,LINGYUN.Abp.EventBus.CAP.ICustomDistributedEventSubscriber)"> |
|||
<summary> |
|||
constructor |
|||
</summary> |
|||
<param name="serviceScopeFactory"></param> |
|||
<param name="distributedEventBusOptions"></param> |
|||
<param name="capPublisher"></param> |
|||
<param name="currentUser"></param> |
|||
<param name="currentClient"></param> |
|||
<param name="currentTenant"></param> |
|||
<param name="eventErrorHandler"></param> |
|||
<param name="cancellationTokenProvider"></param> |
|||
<param name="customDistributedEventSubscriber"></param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.Subscribe(System.Type,Volo.Abp.EventBus.IEventHandlerFactory)"> |
|||
<summary> |
|||
订阅事件 |
|||
</summary> |
|||
<param name="eventType"></param> |
|||
<param name="factory"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.Unsubscribe``1(System.Func{``0,System.Threading.Tasks.Task})"> |
|||
<summary> |
|||
退订事件 |
|||
</summary> |
|||
<typeparam name="TEvent">事件类型</typeparam> |
|||
<param name="action"></param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.Unsubscribe(System.Type,Volo.Abp.EventBus.IEventHandler)"> |
|||
<summary> |
|||
退订事件 |
|||
</summary> |
|||
<param name="eventType">事件类型</param> |
|||
<param name="handler">事件处理器</param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.Unsubscribe(System.Type,Volo.Abp.EventBus.IEventHandlerFactory)"> |
|||
<summary> |
|||
退订事件 |
|||
</summary> |
|||
<param name="eventType">事件类型</param> |
|||
<param name="factory">事件处理器工厂</param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.UnsubscribeAll(System.Type)"> |
|||
<summary> |
|||
退订所有事件 |
|||
</summary> |
|||
<param name="eventType">事件类型</param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.Subscribe``1(Volo.Abp.EventBus.Distributed.IDistributedEventHandler{``0})"> |
|||
<summary> |
|||
订阅事件 |
|||
</summary> |
|||
<typeparam name="TEvent">事件类型</typeparam> |
|||
<param name="handler">事件处理器</param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.PublishAsync(System.Type,System.Object)"> |
|||
<summary> |
|||
发布事件 |
|||
</summary> |
|||
<param name="eventType">事件类型</param> |
|||
<param name="eventData">事件数据对象</param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.CAPDistributedEventBus.GetHandlerFactories(System.Type)"> |
|||
<summary> |
|||
获取事件处理器工厂列表 |
|||
</summary> |
|||
<param name="eventType"></param> |
|||
<returns></returns> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.ICustomDistributedEventSubscriber"> |
|||
<summary> |
|||
自定义事件订阅者 |
|||
</summary> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.ICustomDistributedEventSubscriber.Subscribe(System.Type,Volo.Abp.EventBus.IEventHandlerFactory)"> |
|||
<summary> |
|||
订阅事件 |
|||
</summary> |
|||
<param name="eventType"></param> |
|||
<param name="factory"></param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.ICustomDistributedEventSubscriber.UnSubscribe(System.Type,Volo.Abp.EventBus.IEventHandlerFactory)"> |
|||
<summary> |
|||
取消订阅 |
|||
</summary> |
|||
<param name="eventType"></param> |
|||
<param name="factory"></param> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.Internal.ObjectMethodExecutor.Execute(System.Object,System.Object[])"> |
|||
<summary> |
|||
Executes the configured method on <paramref name="target" />. This can be used whether or not |
|||
the configured method is asynchronous. |
|||
</summary> |
|||
<remarks> |
|||
Even if the target method is asynchronous, it's desirable to invoke it using Execute rather than |
|||
ExecuteAsync if you know at compile time what the return type is, because then you can directly |
|||
"await" that value (via a cast), and then the generated code will be able to reference the |
|||
resulting awaitable as a value-typed variable. If you use ExecuteAsync instead, the generated |
|||
code will have to treat the resulting awaitable as a boxed object, because it doesn't know at |
|||
compile time what type it would be. |
|||
</remarks> |
|||
<param name="target">The object whose method is to be executed.</param> |
|||
<param name="parameters">Parameters to pass to the method.</param> |
|||
<returns>The method return value.</returns> |
|||
</member> |
|||
<member name="M:LINGYUN.Abp.EventBus.CAP.Internal.ObjectMethodExecutor.ExecuteAsync(System.Object,System.Object[])"> |
|||
<summary> |
|||
Executes the configured method on <paramref name="target" />. This can only be used if the configured |
|||
method is asynchronous. |
|||
</summary> |
|||
<remarks> |
|||
If you don't know at compile time the type of the method's returned awaitable, you can use ExecuteAsync, |
|||
which supplies an awaitable-of-object. This always works, but can incur several extra heap allocations |
|||
as compared with using Execute and then using "await" on the result value typecasted to the known |
|||
awaitable type. The possible extra heap allocations are for: |
|||
1. The custom awaitable (though usually there's a heap allocation for this anyway, since normally |
|||
it's a reference type, and you normally create a new instance per call). |
|||
2. The custom awaiter (whether or not it's a value type, since if it's not, you need a new instance |
|||
of it, and if it is, it will have to be boxed so the calling code can reference it as an object). |
|||
3. The async result value, if it's a value type (it has to be boxed as an object, since the calling |
|||
code doesn't know what type it's going to be). |
|||
</remarks> |
|||
<param name="target">The object whose method is to be executed.</param> |
|||
<param name="parameters">Parameters to pass to the method.</param> |
|||
<returns>An object that you can "await" to get the method return value.</returns> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.Internal.ObjectMethodExecutorAwaitable"> |
|||
<summary> |
|||
Provides a common awaitable structure that <see cref="M:LINGYUN.Abp.EventBus.CAP.Internal.ObjectMethodExecutor.ExecuteAsync(System.Object,System.Object[])" /> can |
|||
return, regardless of whether the underlying value is a System.Task, an FSharpAsync, or an |
|||
application-defined custom awaitable. |
|||
</summary> |
|||
</member> |
|||
<member name="T:LINGYUN.Abp.EventBus.CAP.Internal.ObjectMethodExecutorFSharpSupport"> |
|||
<summary> |
|||
Helper for detecting whether a given type is FSharpAsync`1, and if so, supplying |
|||
an <see cref="T:System.Linq.Expressions.Expression" /> for mapping instances of that type to a C# awaitable. |
|||
</summary> |
|||
<remarks> |
|||
The main design goal here is to avoid taking a compile-time dependency on |
|||
FSharp.Core.dll, because non-F# applications wouldn't use it. So all the references |
|||
to FSharp types have to be constructed dynamically at runtime. |
|||
</remarks> |
|||
</member> |
|||
<member name="T:Microsoft.Extensions.DependencyInjection.ServiceCollectionExtensions"> |
|||
<summary> |
|||
CAP ServiceCollectionExtensions |
|||
</summary> |
|||
</member> |
|||
<member name="M:Microsoft.Extensions.DependencyInjection.ServiceCollectionExtensions.AddCAPEventBus(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{DotNetCore.CAP.CapOptions})"> |
|||
<summary> |
|||
Adds and configures the consistence services for the consistency. |
|||
</summary> |
|||
<param name="services"></param> |
|||
<param name="capAction"></param> |
|||
<returns></returns> |
|||
</member> |
|||
</members> |
|||
</doc> |
|||
|
|||
@ -1,244 +1,246 @@ |
|||
using DotNetCore.CAP; |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Microsoft.Extensions.Options; |
|||
using System; |
|||
using System.Collections.Concurrent; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp; |
|||
using Volo.Abp.Clients; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.EventBus; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
using Volo.Abp.MultiTenancy; |
|||
using Volo.Abp.Threading; |
|||
using Volo.Abp.Users; |
|||
|
|||
namespace LINGYUN.Abp.EventBus.CAP |
|||
{ |
|||
/// <summary>
|
|||
/// CAP分布式事件总线
|
|||
/// </summary>
|
|||
[Dependency(ServiceLifetime.Singleton, ReplaceServices = true)] |
|||
[ExposeServices(typeof(IDistributedEventBus), typeof(CAPDistributedEventBus))] |
|||
public class CAPDistributedEventBus : EventBusBase, IDistributedEventBus |
|||
{ |
|||
/// <summary>
|
|||
/// Abp分布式事件总线配置
|
|||
/// </summary>
|
|||
protected AbpDistributedEventBusOptions AbpDistributedEventBusOptions { get; } |
|||
/// <summary>
|
|||
/// CAP消息发布接口
|
|||
/// </summary>
|
|||
protected readonly ICapPublisher CapPublisher; |
|||
/// <summary>
|
|||
/// 自定义事件注册接口
|
|||
/// </summary>
|
|||
protected ICustomDistributedEventSubscriber CustomDistributedEventSubscriber { get; } |
|||
/// <summary>
|
|||
/// 本地事件处理器工厂对象集合
|
|||
/// </summary>
|
|||
protected ConcurrentDictionary<Type, List<IEventHandlerFactory>> HandlerFactories { get; } |
|||
/// <summary>
|
|||
/// 本地事件集合
|
|||
/// </summary>
|
|||
protected ConcurrentDictionary<string, Type> EventTypes { get; } |
|||
/// <summary>
|
|||
/// 当前用户
|
|||
/// </summary>
|
|||
protected ICurrentUser CurrentUser { get; } |
|||
/// <summary>
|
|||
/// 当前客户端
|
|||
/// </summary>
|
|||
protected ICurrentClient CurrentClient { get; } |
|||
/// <summary>
|
|||
/// 取消令牌
|
|||
/// </summary>
|
|||
protected ICancellationTokenProvider CancellationTokenProvider { get; } |
|||
/// <summary>
|
|||
/// constructor
|
|||
/// </summary>
|
|||
/// <param name="serviceScopeFactory"></param>
|
|||
/// <param name="distributedEventBusOptions"></param>
|
|||
/// <param name="capPublisher"></param>
|
|||
/// <param name="currentUser"></param>
|
|||
/// <param name="currentTenant"></param>
|
|||
/// <param name="currentClient"></param>
|
|||
/// <param name="cancellationTokenProvider"></param>
|
|||
/// <param name="customDistributedEventSubscriber"></param>
|
|||
public CAPDistributedEventBus(IServiceScopeFactory serviceScopeFactory, |
|||
IOptions<AbpDistributedEventBusOptions> distributedEventBusOptions, |
|||
ICapPublisher capPublisher, |
|||
ICurrentUser currentUser, |
|||
ICurrentClient currentClient, |
|||
ICurrentTenant currentTenant, |
|||
ICancellationTokenProvider cancellationTokenProvider, |
|||
ICustomDistributedEventSubscriber customDistributedEventSubscriber) |
|||
: base(serviceScopeFactory, currentTenant) |
|||
{ |
|||
CapPublisher = capPublisher; |
|||
CurrentUser = currentUser; |
|||
CurrentClient = currentClient; |
|||
CancellationTokenProvider = cancellationTokenProvider; |
|||
CustomDistributedEventSubscriber = customDistributedEventSubscriber; |
|||
AbpDistributedEventBusOptions = distributedEventBusOptions.Value; |
|||
HandlerFactories = new ConcurrentDictionary<Type, List<IEventHandlerFactory>>(); |
|||
EventTypes = new ConcurrentDictionary<string, Type>(); |
|||
} |
|||
/// <summary>
|
|||
/// 订阅事件
|
|||
/// </summary>
|
|||
/// <param name="eventType"></param>
|
|||
/// <param name="factory"></param>
|
|||
/// <returns></returns>
|
|||
public override IDisposable Subscribe(Type eventType, IEventHandlerFactory factory) |
|||
{ |
|||
// 自定义的事件订阅者,可以不需要事件注册的事件类型
|
|||
CustomDistributedEventSubscriber.Subscribe(eventType, factory); |
|||
return new DisposeAction(() => CustomDistributedEventSubscriber.UnSubscribe(eventType, factory)); |
|||
} |
|||
/// <summary>
|
|||
/// 退订事件
|
|||
/// </summary>
|
|||
/// <typeparam name="TEvent">事件类型</typeparam>
|
|||
/// <param name="action"></param>
|
|||
public override void Unsubscribe<TEvent>(Func<TEvent, Task> action) |
|||
{ |
|||
Check.NotNull(action, nameof(action)); |
|||
|
|||
GetOrCreateHandlerFactories(typeof(TEvent)) |
|||
.Locking(factories => |
|||
{ |
|||
factories.RemoveAll( |
|||
factory => |
|||
{ |
|||
if (!(factory is SingleInstanceHandlerFactory singleInstanceFactory)) |
|||
{ |
|||
return false; |
|||
} |
|||
|
|||
if (!(singleInstanceFactory.HandlerInstance is ActionEventHandler<TEvent> actionHandler)) |
|||
{ |
|||
return false; |
|||
} |
|||
|
|||
return actionHandler.Action == action; |
|||
}); |
|||
}); |
|||
} |
|||
/// <summary>
|
|||
/// 退订事件
|
|||
/// </summary>
|
|||
/// <param name="eventType">事件类型</param>
|
|||
/// <param name="handler">事件处理器</param>
|
|||
public override void Unsubscribe(Type eventType, IEventHandler handler) |
|||
{ |
|||
GetOrCreateHandlerFactories(eventType) |
|||
.Locking(factories => |
|||
{ |
|||
factories.RemoveAll( |
|||
factory => |
|||
factory is SingleInstanceHandlerFactory && |
|||
(factory as SingleInstanceHandlerFactory).HandlerInstance == handler |
|||
); |
|||
}); |
|||
} |
|||
/// <summary>
|
|||
/// 退订事件
|
|||
/// </summary>
|
|||
/// <param name="eventType">事件类型</param>
|
|||
/// <param name="factory">事件处理器工厂</param>
|
|||
public override void Unsubscribe(Type eventType, IEventHandlerFactory factory) |
|||
{ |
|||
GetOrCreateHandlerFactories(eventType).Locking(factories => factories.Remove(factory)); |
|||
CustomDistributedEventSubscriber.UnSubscribe(eventType, factory); |
|||
} |
|||
/// <summary>
|
|||
/// 退订所有事件
|
|||
/// </summary>
|
|||
/// <param name="eventType">事件类型</param>
|
|||
public override void UnsubscribeAll(Type eventType) |
|||
{ |
|||
GetOrCreateHandlerFactories(eventType).Locking(factories => factories.Clear()); |
|||
} |
|||
/// <summary>
|
|||
/// 订阅事件
|
|||
/// </summary>
|
|||
/// <typeparam name="TEvent">事件类型</typeparam>
|
|||
/// <param name="handler">事件处理器</param>
|
|||
/// <returns></returns>
|
|||
public IDisposable Subscribe<TEvent>(IDistributedEventHandler<TEvent> handler) where TEvent : class |
|||
{ |
|||
return Subscribe(typeof(TEvent), handler); |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// 发布事件
|
|||
/// </summary>
|
|||
/// <param name="eventType">事件类型</param>
|
|||
/// <param name="eventData">事件数据对象</param>
|
|||
/// <returns></returns>
|
|||
public override async Task PublishAsync(Type eventType, object eventData) |
|||
{ |
|||
var eventName = EventNameAttribute.GetNameOrDefault(eventType); |
|||
await CapPublisher |
|||
.PublishAsync( |
|||
eventName, eventData, |
|||
new Dictionary<string, string> |
|||
{ |
|||
{ AbpCAPHeaders.UserId, CurrentUser.Id?.ToString() ?? "" }, |
|||
{ AbpCAPHeaders.ClientId, CurrentClient.Id ?? "" }, |
|||
{ AbpCAPHeaders.TenantId, CurrentTenant.Id?.ToString() ?? "" }, |
|||
}, |
|||
CancellationTokenProvider.FallbackToProvider()); |
|||
} |
|||
/// <summary>
|
|||
/// 获取事件处理器工厂列表
|
|||
/// </summary>
|
|||
/// <param name="eventType"></param>
|
|||
/// <returns></returns>
|
|||
protected override IEnumerable<EventTypeWithEventHandlerFactories> GetHandlerFactories(Type eventType) |
|||
{ |
|||
var handlerFactoryList = new List<EventTypeWithEventHandlerFactories>(); |
|||
|
|||
foreach (var handlerFactory in HandlerFactories.Where(hf => ShouldTriggerEventForHandler(eventType, hf.Key))) |
|||
{ |
|||
handlerFactoryList.Add(new EventTypeWithEventHandlerFactories(handlerFactory.Key, handlerFactory.Value)); |
|||
} |
|||
|
|||
return handlerFactoryList.ToArray(); |
|||
} |
|||
|
|||
private List<IEventHandlerFactory> GetOrCreateHandlerFactories(Type eventType) |
|||
{ |
|||
return HandlerFactories.GetOrAdd( |
|||
eventType, |
|||
type => |
|||
{ |
|||
var eventName = EventNameAttribute.GetNameOrDefault(type); |
|||
EventTypes[eventName] = type; |
|||
return new List<IEventHandlerFactory>(); |
|||
} |
|||
); |
|||
} |
|||
|
|||
private static bool ShouldTriggerEventForHandler(Type targetEventType, Type handlerEventType) |
|||
{ |
|||
//Should trigger same type
|
|||
if (handlerEventType == targetEventType) |
|||
{ |
|||
return true; |
|||
} |
|||
|
|||
//TODO: Support inheritance? But it does not support on subscription to RabbitMq!
|
|||
//Should trigger for inherited types
|
|||
if (handlerEventType.IsAssignableFrom(targetEventType)) |
|||
{ |
|||
return true; |
|||
} |
|||
|
|||
return false; |
|||
} |
|||
} |
|||
} |
|||
using DotNetCore.CAP; |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Microsoft.Extensions.Options; |
|||
using System; |
|||
using System.Collections.Concurrent; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp; |
|||
using Volo.Abp.Clients; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.EventBus; |
|||
using Volo.Abp.EventBus.Distributed; |
|||
using Volo.Abp.MultiTenancy; |
|||
using Volo.Abp.Threading; |
|||
using Volo.Abp.Users; |
|||
|
|||
namespace LINGYUN.Abp.EventBus.CAP |
|||
{ |
|||
/// <summary>
|
|||
/// CAP分布式事件总线
|
|||
/// </summary>
|
|||
[Dependency(ServiceLifetime.Singleton, ReplaceServices = true)] |
|||
[ExposeServices(typeof(IDistributedEventBus), typeof(CAPDistributedEventBus))] |
|||
public class CAPDistributedEventBus : EventBusBase, IDistributedEventBus |
|||
{ |
|||
/// <summary>
|
|||
/// Abp分布式事件总线配置
|
|||
/// </summary>
|
|||
protected AbpDistributedEventBusOptions AbpDistributedEventBusOptions { get; } |
|||
/// <summary>
|
|||
/// CAP消息发布接口
|
|||
/// </summary>
|
|||
protected readonly ICapPublisher CapPublisher; |
|||
/// <summary>
|
|||
/// 自定义事件注册接口
|
|||
/// </summary>
|
|||
protected ICustomDistributedEventSubscriber CustomDistributedEventSubscriber { get; } |
|||
/// <summary>
|
|||
/// 本地事件处理器工厂对象集合
|
|||
/// </summary>
|
|||
protected ConcurrentDictionary<Type, List<IEventHandlerFactory>> HandlerFactories { get; } |
|||
/// <summary>
|
|||
/// 本地事件集合
|
|||
/// </summary>
|
|||
protected ConcurrentDictionary<string, Type> EventTypes { get; } |
|||
/// <summary>
|
|||
/// 当前用户
|
|||
/// </summary>
|
|||
protected ICurrentUser CurrentUser { get; } |
|||
/// <summary>
|
|||
/// 当前客户端
|
|||
/// </summary>
|
|||
protected ICurrentClient CurrentClient { get; } |
|||
/// <summary>
|
|||
/// 取消令牌
|
|||
/// </summary>
|
|||
protected ICancellationTokenProvider CancellationTokenProvider { get; } |
|||
/// <summary>
|
|||
/// constructor
|
|||
/// </summary>
|
|||
/// <param name="serviceScopeFactory"></param>
|
|||
/// <param name="distributedEventBusOptions"></param>
|
|||
/// <param name="capPublisher"></param>
|
|||
/// <param name="currentUser"></param>
|
|||
/// <param name="currentClient"></param>
|
|||
/// <param name="currentTenant"></param>
|
|||
/// <param name="eventErrorHandler"></param>
|
|||
/// <param name="cancellationTokenProvider"></param>
|
|||
/// <param name="customDistributedEventSubscriber"></param>
|
|||
public CAPDistributedEventBus(IServiceScopeFactory serviceScopeFactory, |
|||
IOptions<AbpDistributedEventBusOptions> distributedEventBusOptions, |
|||
ICapPublisher capPublisher, |
|||
ICurrentUser currentUser, |
|||
ICurrentClient currentClient, |
|||
ICurrentTenant currentTenant, |
|||
IEventErrorHandler eventErrorHandler, |
|||
ICancellationTokenProvider cancellationTokenProvider, |
|||
ICustomDistributedEventSubscriber customDistributedEventSubscriber) |
|||
: base(serviceScopeFactory, currentTenant, eventErrorHandler) |
|||
{ |
|||
CapPublisher = capPublisher; |
|||
CurrentUser = currentUser; |
|||
CurrentClient = currentClient; |
|||
CancellationTokenProvider = cancellationTokenProvider; |
|||
CustomDistributedEventSubscriber = customDistributedEventSubscriber; |
|||
AbpDistributedEventBusOptions = distributedEventBusOptions.Value; |
|||
HandlerFactories = new ConcurrentDictionary<Type, List<IEventHandlerFactory>>(); |
|||
EventTypes = new ConcurrentDictionary<string, Type>(); |
|||
} |
|||
/// <summary>
|
|||
/// 订阅事件
|
|||
/// </summary>
|
|||
/// <param name="eventType"></param>
|
|||
/// <param name="factory"></param>
|
|||
/// <returns></returns>
|
|||
public override IDisposable Subscribe(Type eventType, IEventHandlerFactory factory) |
|||
{ |
|||
// 自定义的事件订阅者,可以不需要事件注册的事件类型
|
|||
CustomDistributedEventSubscriber.Subscribe(eventType, factory); |
|||
return new DisposeAction(() => CustomDistributedEventSubscriber.UnSubscribe(eventType, factory)); |
|||
} |
|||
/// <summary>
|
|||
/// 退订事件
|
|||
/// </summary>
|
|||
/// <typeparam name="TEvent">事件类型</typeparam>
|
|||
/// <param name="action"></param>
|
|||
public override void Unsubscribe<TEvent>(Func<TEvent, Task> action) |
|||
{ |
|||
Check.NotNull(action, nameof(action)); |
|||
|
|||
GetOrCreateHandlerFactories(typeof(TEvent)) |
|||
.Locking(factories => |
|||
{ |
|||
factories.RemoveAll( |
|||
factory => |
|||
{ |
|||
if (!(factory is SingleInstanceHandlerFactory singleInstanceFactory)) |
|||
{ |
|||
return false; |
|||
} |
|||
|
|||
if (!(singleInstanceFactory.HandlerInstance is ActionEventHandler<TEvent> actionHandler)) |
|||
{ |
|||
return false; |
|||
} |
|||
|
|||
return actionHandler.Action == action; |
|||
}); |
|||
}); |
|||
} |
|||
/// <summary>
|
|||
/// 退订事件
|
|||
/// </summary>
|
|||
/// <param name="eventType">事件类型</param>
|
|||
/// <param name="handler">事件处理器</param>
|
|||
public override void Unsubscribe(Type eventType, IEventHandler handler) |
|||
{ |
|||
GetOrCreateHandlerFactories(eventType) |
|||
.Locking(factories => |
|||
{ |
|||
factories.RemoveAll( |
|||
factory => |
|||
factory is SingleInstanceHandlerFactory && |
|||
(factory as SingleInstanceHandlerFactory).HandlerInstance == handler |
|||
); |
|||
}); |
|||
} |
|||
/// <summary>
|
|||
/// 退订事件
|
|||
/// </summary>
|
|||
/// <param name="eventType">事件类型</param>
|
|||
/// <param name="factory">事件处理器工厂</param>
|
|||
public override void Unsubscribe(Type eventType, IEventHandlerFactory factory) |
|||
{ |
|||
GetOrCreateHandlerFactories(eventType).Locking(factories => factories.Remove(factory)); |
|||
CustomDistributedEventSubscriber.UnSubscribe(eventType, factory); |
|||
} |
|||
/// <summary>
|
|||
/// 退订所有事件
|
|||
/// </summary>
|
|||
/// <param name="eventType">事件类型</param>
|
|||
public override void UnsubscribeAll(Type eventType) |
|||
{ |
|||
GetOrCreateHandlerFactories(eventType).Locking(factories => factories.Clear()); |
|||
} |
|||
/// <summary>
|
|||
/// 订阅事件
|
|||
/// </summary>
|
|||
/// <typeparam name="TEvent">事件类型</typeparam>
|
|||
/// <param name="handler">事件处理器</param>
|
|||
/// <returns></returns>
|
|||
public IDisposable Subscribe<TEvent>(IDistributedEventHandler<TEvent> handler) where TEvent : class |
|||
{ |
|||
return Subscribe(typeof(TEvent), handler); |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// 发布事件
|
|||
/// </summary>
|
|||
/// <param name="eventType">事件类型</param>
|
|||
/// <param name="eventData">事件数据对象</param>
|
|||
/// <returns></returns>
|
|||
public override async Task PublishAsync(Type eventType, object eventData) |
|||
{ |
|||
var eventName = EventNameAttribute.GetNameOrDefault(eventType); |
|||
await CapPublisher |
|||
.PublishAsync( |
|||
eventName, eventData, |
|||
new Dictionary<string, string> |
|||
{ |
|||
{ AbpCAPHeaders.UserId, CurrentUser.Id?.ToString() ?? "" }, |
|||
{ AbpCAPHeaders.ClientId, CurrentClient.Id ?? "" }, |
|||
{ AbpCAPHeaders.TenantId, CurrentTenant.Id?.ToString() ?? "" }, |
|||
}, |
|||
CancellationTokenProvider.FallbackToProvider()); |
|||
} |
|||
/// <summary>
|
|||
/// 获取事件处理器工厂列表
|
|||
/// </summary>
|
|||
/// <param name="eventType"></param>
|
|||
/// <returns></returns>
|
|||
protected override IEnumerable<EventTypeWithEventHandlerFactories> GetHandlerFactories(Type eventType) |
|||
{ |
|||
var handlerFactoryList = new List<EventTypeWithEventHandlerFactories>(); |
|||
|
|||
foreach (var handlerFactory in HandlerFactories.Where(hf => ShouldTriggerEventForHandler(eventType, hf.Key))) |
|||
{ |
|||
handlerFactoryList.Add(new EventTypeWithEventHandlerFactories(handlerFactory.Key, handlerFactory.Value)); |
|||
} |
|||
|
|||
return handlerFactoryList.ToArray(); |
|||
} |
|||
|
|||
private List<IEventHandlerFactory> GetOrCreateHandlerFactories(Type eventType) |
|||
{ |
|||
return HandlerFactories.GetOrAdd( |
|||
eventType, |
|||
type => |
|||
{ |
|||
var eventName = EventNameAttribute.GetNameOrDefault(type); |
|||
EventTypes[eventName] = type; |
|||
return new List<IEventHandlerFactory>(); |
|||
} |
|||
); |
|||
} |
|||
|
|||
private static bool ShouldTriggerEventForHandler(Type targetEventType, Type handlerEventType) |
|||
{ |
|||
//Should trigger same type
|
|||
if (handlerEventType == targetEventType) |
|||
{ |
|||
return true; |
|||
} |
|||
|
|||
//TODO: Support inheritance? But it does not support on subscription to RabbitMq!
|
|||
//Should trigger for inherited types
|
|||
if (handlerEventType.IsAssignableFrom(targetEventType)) |
|||
{ |
|||
return true; |
|||
} |
|||
|
|||
return false; |
|||
} |
|||
} |
|||
} |
|||
|
|||
@ -1,15 +1,15 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
<Description>功能限制验证组件Redis客户端格式实现</Description> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.Features.LimitValidation.Redis\LINGYUN.Abp.Features.LimitValidation.Redis.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
<Description>功能限制验证组件Redis客户端格式实现</Description> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.Features.LimitValidation.Redis\LINGYUN.Abp.Features.LimitValidation.Redis.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,25 +1,25 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<None Remove="LINGYUN\Abp\Hangfire\Dashboard\Localization\Resources\en.json" /> |
|||
<None Remove="LINGYUN\Abp\Hangfire\Dashboard\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<EmbeddedResource Include="LINGYUN\Abp\Hangfire\Dashboard\Localization\Resources\en.json" /> |
|||
<EmbeddedResource Include="LINGYUN\Abp\Hangfire\Dashboard\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Authorization" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.Hangfire" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<None Remove="LINGYUN\Abp\Hangfire\Dashboard\Localization\Resources\en.json" /> |
|||
<None Remove="LINGYUN\Abp\Hangfire\Dashboard\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<EmbeddedResource Include="LINGYUN\Abp\Hangfire\Dashboard\Localization\Resources\en.json" /> |
|||
<EmbeddedResource Include="LINGYUN\Abp\Hangfire\Dashboard\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Authorization" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.Hangfire" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,15 +1,15 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Hangfire.MySqlStorage" Version="2.0.3" /> |
|||
<PackageReference Include="Volo.Abp.HangFire" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Hangfire.MySqlStorage" Version="2.0.3" /> |
|||
<PackageReference Include="Volo.Abp.HangFire" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,15 +1,15 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.EventBus" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.Localization" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.EventBus" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.Localization" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,29 +1,29 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<None Remove="LINGYUN\Abp\Location\Amap\Localization\Resources\en.json" /> |
|||
<None Remove="LINGYUN\Abp\Location\Amap\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<EmbeddedResource Include="LINGYUN\Abp\Location\Amap\Localization\Resources\en.json" /> |
|||
<EmbeddedResource Include="LINGYUN\Abp\Location\Amap\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="3.1.2" /> |
|||
<PackageReference Include="Volo.Abp.Json" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.Localization" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.Threading" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.Location\LINGYUN.Abp.Location.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<None Remove="LINGYUN\Abp\Location\Amap\Localization\Resources\en.json" /> |
|||
<None Remove="LINGYUN\Abp\Location\Amap\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<EmbeddedResource Include="LINGYUN\Abp\Location\Amap\Localization\Resources\en.json" /> |
|||
<EmbeddedResource Include="LINGYUN\Abp\Location\Amap\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="3.1.2" /> |
|||
<PackageReference Include="Volo.Abp.Json" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.Localization" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.Threading" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.Location\LINGYUN.Abp.Location.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,14 +1,14 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.Notifications\LINGYUN.Abp.Notifications.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.Notifications\LINGYUN.Abp.Notifications.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,21 +1,21 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.EventBus" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.Json" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.BackgroundJobs.Abstractions" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.BackgroundWorkers" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.RealTime\LINGYUN.Abp.RealTime.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.EventBus" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.Json" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.BackgroundJobs.Abstractions" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.BackgroundWorkers" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.RealTime\LINGYUN.Abp.RealTime.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,29 +1,29 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
<Description>阿里云短信服务</Description> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<None Remove="LINGYUN\Abp\Sms\Aliyun\Localization\Resources\en.json" /> |
|||
<None Remove="LINGYUN\Abp\Sms\Aliyun\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<EmbeddedResource Include="LINGYUN\Abp\Sms\Aliyun\Localization\Resources\en.json" /> |
|||
<EmbeddedResource Include="LINGYUN\Abp\Sms\Aliyun\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Sms" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\cloud-aliyun\LINGYUN.Abp.Aliyun\LINGYUN.Abp.Aliyun.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
<Description>阿里云短信服务</Description> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<None Remove="LINGYUN\Abp\Sms\Aliyun\Localization\Resources\en.json" /> |
|||
<None Remove="LINGYUN\Abp\Sms\Aliyun\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<EmbeddedResource Include="LINGYUN\Abp\Sms\Aliyun\Localization\Resources\en.json" /> |
|||
<EmbeddedResource Include="LINGYUN\Abp\Sms\Aliyun\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Sms" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\cloud-aliyun\LINGYUN.Abp.Aliyun\LINGYUN.Abp.Aliyun.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,12 +1,12 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<PropertyGroup> |
|||
<OutputType>Exe</OutputType> |
|||
<TargetFramework>netcoreapp3.1</TargetFramework> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Security" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<PropertyGroup> |
|||
<OutputType>Exe</OutputType> |
|||
<TargetFramework>netcoreapp3.1</TargetFramework> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Security" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,15 +1,15 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Dapr.Actors.AspNetCore" Version="1.1.0" /> |
|||
<PackageReference Include="Volo.Abp.AspNetCore" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Dapr.Actors.AspNetCore" Version="1.1.0" /> |
|||
<PackageReference Include="Volo.Abp.AspNetCore" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,14 +1,14 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Dapr.Actors" Version="1.1.0" /> |
|||
<PackageReference Include="Volo.Abp.Http.Client" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Dapr.Actors" Version="1.1.0" /> |
|||
<PackageReference Include="Volo.Abp.Http.Client" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
|
|||
@ -1,13 +1,13 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Dapr.Client" Version="1.1.0" /> |
|||
<PackageReference Include="Volo.Abp.Http.Client" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Dapr.Client" Version="1.1.0" /> |
|||
<PackageReference Include="Volo.Abp.Http.Client" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,16 +1,14 @@ |
|||
using Volo.Abp.Application; |
|||
using Volo.Abp.Authorization; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace LINGYUN.Abp.Identity |
|||
{ |
|||
[DependsOn( |
|||
typeof(Volo.Abp.Identity.AbpIdentityApplicationContractsModule), |
|||
typeof(AbpIdentityDomainSharedModule), |
|||
typeof(AbpAuthorizationModule), |
|||
typeof(AbpDddApplicationModule) |
|||
)] |
|||
public class AbpIdentityApplicationContractsModule : AbpModule |
|||
{ |
|||
} |
|||
} |
|||
using Volo.Abp.Authorization; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace LINGYUN.Abp.Identity |
|||
{ |
|||
[DependsOn( |
|||
typeof(Volo.Abp.Identity.AbpIdentityApplicationContractsModule), |
|||
typeof(AbpIdentityDomainSharedModule), |
|||
typeof(AbpAuthorizationModule) |
|||
)] |
|||
public class AbpIdentityApplicationContractsModule : AbpModule |
|||
{ |
|||
} |
|||
} |
|||
|
|||
@ -1,49 +1,62 @@ |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Application.Dtos; |
|||
using Volo.Abp.Application.Services; |
|||
using Volo.Abp.Identity; |
|||
|
|||
namespace LINGYUN.Abp.Identity |
|||
{ |
|||
public interface IIdentityUserAppService : IApplicationService |
|||
{ |
|||
|
|||
#region OrganizationUnit
|
|||
|
|||
Task<ListResultDto<OrganizationUnitDto>> GetOrganizationUnitsAsync(Guid id); |
|||
|
|||
Task SetOrganizationUnitsAsync(Guid id, IdentityUserOrganizationUnitUpdateDto input); |
|||
|
|||
Task RemoveOrganizationUnitsAsync(Guid id, Guid ouId); |
|||
|
|||
#endregion
|
|||
|
|||
#region ClaimType
|
|||
|
|||
Task<ListResultDto<IdentityClaimDto>> GetClaimsAsync(Guid id); |
|||
|
|||
Task AddClaimAsync(Guid id, IdentityUserClaimCreateDto input); |
|||
|
|||
Task UpdateClaimAsync(Guid id, IdentityUserClaimUpdateDto input); |
|||
|
|||
Task DeleteClaimAsync(Guid id, IdentityUserClaimDeleteDto input); |
|||
|
|||
#endregion
|
|||
|
|||
/// <summary>
|
|||
/// 变更用户双因素验证选项
|
|||
/// </summary>
|
|||
/// <param name="id"></param>
|
|||
/// <param name="input"></param>
|
|||
/// <returns></returns>
|
|||
Task ChangeTwoFactorEnabledAsync(Guid id, ChangeTwoFactorEnabledDto input); |
|||
/// <summary>
|
|||
/// 变更用户密码
|
|||
/// </summary>
|
|||
/// <param name="id"></param>
|
|||
/// <param name="input"></param>
|
|||
/// <returns></returns>
|
|||
Task ChangePasswordAsync(Guid id, ChangePasswordInput input); |
|||
} |
|||
} |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Application.Dtos; |
|||
using Volo.Abp.Application.Services; |
|||
using Volo.Abp.Identity; |
|||
|
|||
namespace LINGYUN.Abp.Identity |
|||
{ |
|||
public interface IIdentityUserAppService : IApplicationService |
|||
{ |
|||
|
|||
#region OrganizationUnit
|
|||
|
|||
Task<ListResultDto<OrganizationUnitDto>> GetOrganizationUnitsAsync(Guid id); |
|||
|
|||
Task SetOrganizationUnitsAsync(Guid id, IdentityUserOrganizationUnitUpdateDto input); |
|||
|
|||
Task RemoveOrganizationUnitsAsync(Guid id, Guid ouId); |
|||
|
|||
#endregion
|
|||
|
|||
#region ClaimType
|
|||
|
|||
Task<ListResultDto<IdentityClaimDto>> GetClaimsAsync(Guid id); |
|||
|
|||
Task AddClaimAsync(Guid id, IdentityUserClaimCreateDto input); |
|||
|
|||
Task UpdateClaimAsync(Guid id, IdentityUserClaimUpdateDto input); |
|||
|
|||
Task DeleteClaimAsync(Guid id, IdentityUserClaimDeleteDto input); |
|||
|
|||
#endregion
|
|||
|
|||
/// <summary>
|
|||
/// 变更用户双因素验证选项
|
|||
/// </summary>
|
|||
/// <param name="id"></param>
|
|||
/// <param name="input"></param>
|
|||
/// <returns></returns>
|
|||
Task ChangeTwoFactorEnabledAsync(Guid id, ChangeTwoFactorEnabledDto input); |
|||
/// <summary>
|
|||
/// 变更用户密码
|
|||
/// </summary>
|
|||
/// <param name="id"></param>
|
|||
/// <param name="input"></param>
|
|||
/// <returns></returns>
|
|||
Task ChangePasswordAsync(Guid id, ChangePasswordInput input); |
|||
/// <summary>
|
|||
/// 锁定
|
|||
/// </summary>
|
|||
/// <param name="id"></param>
|
|||
/// <param name="seconds">锁定时长</param>
|
|||
/// <returns></returns>
|
|||
Task LockAsync(Guid id, int seconds); |
|||
/// <summary>
|
|||
/// 解除锁定
|
|||
/// </summary>
|
|||
/// <param name="id"></param>
|
|||
/// <returns></returns>
|
|||
Task UnLockAsync(Guid id); |
|||
} |
|||
} |
|||
|
|||
@ -1,142 +1,181 @@ |
|||
using Microsoft.AspNetCore.Authorization; |
|||
using Microsoft.AspNetCore.Identity; |
|||
using Microsoft.Extensions.Options; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Security.Claims; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp; |
|||
using Volo.Abp.Application.Dtos; |
|||
using Volo.Abp.Identity; |
|||
|
|||
namespace LINGYUN.Abp.Identity |
|||
{ |
|||
[Authorize(Volo.Abp.Identity.IdentityPermissions.Users.Default)] |
|||
public class IdentityUserAppService : IdentityAppServiceBase, IIdentityUserAppService |
|||
{ |
|||
protected IdentityUserManager UserManager { get; } |
|||
protected IOptions<IdentityOptions> IdentityOptions { get; } |
|||
public IdentityUserAppService( |
|||
IdentityUserManager userManager, |
|||
IOptions<IdentityOptions> identityOptions) |
|||
{ |
|||
UserManager = userManager; |
|||
IdentityOptions = identityOptions; |
|||
} |
|||
|
|||
#region OrganizationUnit
|
|||
|
|||
|
|||
[Authorize(IdentityPermissions.Users.ManageOrganizationUnits)] |
|||
public virtual async Task<ListResultDto<OrganizationUnitDto>> GetOrganizationUnitsAsync(Guid id) |
|||
{ |
|||
var user = await UserManager.GetByIdAsync(id); |
|||
|
|||
var origanizationUnits = await UserManager.GetOrganizationUnitsAsync(user); |
|||
|
|||
return new ListResultDto<OrganizationUnitDto>( |
|||
ObjectMapper.Map<List<OrganizationUnit>, List<OrganizationUnitDto>>(origanizationUnits)); |
|||
} |
|||
|
|||
[Authorize(IdentityPermissions.Users.ManageOrganizationUnits)] |
|||
public virtual async Task SetOrganizationUnitsAsync(Guid id, IdentityUserOrganizationUnitUpdateDto input) |
|||
{ |
|||
var user = await UserManager.GetByIdAsync(id); |
|||
|
|||
await UserManager.SetOrganizationUnitsAsync(user, input.OrganizationUnitIds); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
} |
|||
|
|||
[Authorize(IdentityPermissions.Users.ManageOrganizationUnits)] |
|||
public virtual async Task RemoveOrganizationUnitsAsync(Guid id, Guid ouId) |
|||
{ |
|||
await UserManager.RemoveFromOrganizationUnitAsync(id, ouId); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
} |
|||
|
|||
#endregion
|
|||
|
|||
#region Claim
|
|||
|
|||
public virtual async Task<ListResultDto<IdentityClaimDto>> GetClaimsAsync(Guid id) |
|||
{ |
|||
var user = await UserManager.GetByIdAsync(id); |
|||
|
|||
return new ListResultDto<IdentityClaimDto>(ObjectMapper.Map<ICollection<IdentityUserClaim>, List<IdentityClaimDto>>(user.Claims)); |
|||
} |
|||
|
|||
[Authorize(IdentityPermissions.Users.ManageClaims)] |
|||
public virtual async Task AddClaimAsync(Guid id, IdentityUserClaimCreateDto input) |
|||
{ |
|||
var user = await UserManager.GetByIdAsync(id); |
|||
var claim = new Claim(input.ClaimType, input.ClaimValue); |
|||
if (user.FindClaim(claim) != null) |
|||
{ |
|||
throw new UserFriendlyException(L["UserClaimAlreadyExists"]); |
|||
} |
|||
user.AddClaim(GuidGenerator, claim); |
|||
(await UserManager.UpdateAsync(user)).CheckErrors(); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
} |
|||
|
|||
[Authorize(IdentityPermissions.Users.ManageClaims)] |
|||
public virtual async Task UpdateClaimAsync(Guid id, IdentityUserClaimUpdateDto input) |
|||
{ |
|||
var user = await UserManager.GetByIdAsync(id); |
|||
var oldClaim = new Claim(input.ClaimType, input.ClaimValue); |
|||
var newClaim = new Claim(input.ClaimType, input.NewClaimValue); |
|||
user.ReplaceClaim(oldClaim, newClaim); |
|||
(await UserManager.UpdateAsync(user)).CheckErrors(); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
} |
|||
|
|||
[Authorize(IdentityPermissions.Users.ManageClaims)] |
|||
public virtual async Task DeleteClaimAsync(Guid id, IdentityUserClaimDeleteDto input) |
|||
{ |
|||
var user = await UserManager.GetByIdAsync(id); |
|||
user.RemoveClaim(new Claim(input.ClaimType, input.ClaimValue)); |
|||
(await UserManager.UpdateAsync(user)).CheckErrors(); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
} |
|||
|
|||
#endregion
|
|||
|
|||
[Authorize(Volo.Abp.Identity.IdentityPermissions.Users.Update)] |
|||
public virtual async Task ChangePasswordAsync(Guid id, ChangePasswordInput input) |
|||
{ |
|||
await IdentityOptions.SetAsync(); |
|||
var user = await UserManager.GetByIdAsync(id); |
|||
|
|||
if (user.IsExternal) |
|||
{ |
|||
throw new BusinessException(code: Volo.Abp.Identity.IdentityErrorCodes.ExternalUserPasswordChange); |
|||
} |
|||
|
|||
if (user.PasswordHash == null) |
|||
{ |
|||
(await UserManager.AddPasswordAsync(user, input.NewPassword)).CheckErrors(); |
|||
|
|||
return; |
|||
} |
|||
|
|||
(await UserManager.ChangePasswordAsync(user, input.CurrentPassword, input.NewPassword)).CheckErrors(); |
|||
} |
|||
|
|||
[Authorize(Volo.Abp.Identity.IdentityPermissions.Users.Update)] |
|||
public virtual async Task ChangeTwoFactorEnabledAsync(Guid id, ChangeTwoFactorEnabledDto input) |
|||
{ |
|||
await IdentityOptions.SetAsync(); |
|||
var user = await UserManager.GetByIdAsync(id); |
|||
|
|||
(await UserManager.SetTwoFactorEnabledWithAccountConfirmedAsync(user, input.Enabled)).CheckErrors(); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
} |
|||
} |
|||
} |
|||
using Microsoft.AspNetCore.Authorization; |
|||
using Microsoft.AspNetCore.Identity; |
|||
using Microsoft.Extensions.Options; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Security.Claims; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp; |
|||
using Volo.Abp.Application.Dtos; |
|||
using Volo.Abp.Identity; |
|||
|
|||
namespace LINGYUN.Abp.Identity |
|||
{ |
|||
[Authorize(Volo.Abp.Identity.IdentityPermissions.Users.Default)] |
|||
public class IdentityUserAppService : IdentityAppServiceBase, IIdentityUserAppService |
|||
{ |
|||
protected IdentityUserManager UserManager { get; } |
|||
protected IOptions<IdentityOptions> IdentityOptions { get; } |
|||
public IdentityUserAppService( |
|||
IdentityUserManager userManager, |
|||
IOptions<IdentityOptions> identityOptions) |
|||
{ |
|||
UserManager = userManager; |
|||
IdentityOptions = identityOptions; |
|||
} |
|||
|
|||
#region OrganizationUnit
|
|||
|
|||
|
|||
[Authorize(IdentityPermissions.Users.ManageOrganizationUnits)] |
|||
public virtual async Task<ListResultDto<OrganizationUnitDto>> GetOrganizationUnitsAsync(Guid id) |
|||
{ |
|||
var user = await UserManager.GetByIdAsync(id); |
|||
|
|||
var origanizationUnits = await UserManager.GetOrganizationUnitsAsync(user); |
|||
|
|||
return new ListResultDto<OrganizationUnitDto>( |
|||
ObjectMapper.Map<List<OrganizationUnit>, List<OrganizationUnitDto>>(origanizationUnits)); |
|||
} |
|||
|
|||
[Authorize(IdentityPermissions.Users.ManageOrganizationUnits)] |
|||
public virtual async Task SetOrganizationUnitsAsync(Guid id, IdentityUserOrganizationUnitUpdateDto input) |
|||
{ |
|||
var user = await UserManager.GetByIdAsync(id); |
|||
|
|||
await UserManager.SetOrganizationUnitsAsync(user, input.OrganizationUnitIds); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
} |
|||
|
|||
[Authorize(IdentityPermissions.Users.ManageOrganizationUnits)] |
|||
public virtual async Task RemoveOrganizationUnitsAsync(Guid id, Guid ouId) |
|||
{ |
|||
await UserManager.RemoveFromOrganizationUnitAsync(id, ouId); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
} |
|||
|
|||
#endregion
|
|||
|
|||
#region Claim
|
|||
|
|||
public virtual async Task<ListResultDto<IdentityClaimDto>> GetClaimsAsync(Guid id) |
|||
{ |
|||
var user = await UserManager.GetByIdAsync(id); |
|||
|
|||
return new ListResultDto<IdentityClaimDto>(ObjectMapper.Map<ICollection<IdentityUserClaim>, List<IdentityClaimDto>>(user.Claims)); |
|||
} |
|||
|
|||
[Authorize(IdentityPermissions.Users.ManageClaims)] |
|||
public virtual async Task AddClaimAsync(Guid id, IdentityUserClaimCreateDto input) |
|||
{ |
|||
var user = await UserManager.GetByIdAsync(id); |
|||
var claim = new Claim(input.ClaimType, input.ClaimValue); |
|||
if (user.FindClaim(claim) != null) |
|||
{ |
|||
throw new UserFriendlyException(L["UserClaimAlreadyExists"]); |
|||
} |
|||
user.AddClaim(GuidGenerator, claim); |
|||
(await UserManager.UpdateAsync(user)).CheckErrors(); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
} |
|||
|
|||
[Authorize(IdentityPermissions.Users.ManageClaims)] |
|||
public virtual async Task UpdateClaimAsync(Guid id, IdentityUserClaimUpdateDto input) |
|||
{ |
|||
var user = await UserManager.GetByIdAsync(id); |
|||
var oldClaim = new Claim(input.ClaimType, input.ClaimValue); |
|||
var newClaim = new Claim(input.ClaimType, input.NewClaimValue); |
|||
user.ReplaceClaim(oldClaim, newClaim); |
|||
(await UserManager.UpdateAsync(user)).CheckErrors(); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
} |
|||
|
|||
[Authorize(IdentityPermissions.Users.ManageClaims)] |
|||
public virtual async Task DeleteClaimAsync(Guid id, IdentityUserClaimDeleteDto input) |
|||
{ |
|||
var user = await UserManager.GetByIdAsync(id); |
|||
user.RemoveClaim(new Claim(input.ClaimType, input.ClaimValue)); |
|||
(await UserManager.UpdateAsync(user)).CheckErrors(); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
} |
|||
|
|||
#endregion
|
|||
|
|||
[Authorize(Volo.Abp.Identity.IdentityPermissions.Users.Update)] |
|||
public virtual async Task ChangePasswordAsync(Guid id, ChangePasswordInput input) |
|||
{ |
|||
var user = await GetUserAsync(id); |
|||
|
|||
if (user.IsExternal) |
|||
{ |
|||
throw new BusinessException(code: Volo.Abp.Identity.IdentityErrorCodes.ExternalUserPasswordChange); |
|||
} |
|||
|
|||
if (user.PasswordHash == null) |
|||
{ |
|||
(await UserManager.AddPasswordAsync(user, input.NewPassword)).CheckErrors(); |
|||
|
|||
return; |
|||
} |
|||
|
|||
if (input.CurrentPassword.IsNullOrWhiteSpace()) |
|||
{ |
|||
// 管理员重置用户密码
|
|||
var resetToken = await UserManager.GeneratePasswordResetTokenAsync(user); |
|||
(await UserManager.ResetPasswordAsync(user, resetToken, input.NewPassword)).CheckErrors(); |
|||
} |
|||
else |
|||
{ |
|||
// 用户重置密码
|
|||
(await UserManager.ChangePasswordAsync(user, input.CurrentPassword, input.NewPassword)).CheckErrors(); |
|||
} |
|||
} |
|||
|
|||
[Authorize(Volo.Abp.Identity.IdentityPermissions.Users.Update)] |
|||
public virtual async Task ChangeTwoFactorEnabledAsync(Guid id, ChangeTwoFactorEnabledDto input) |
|||
{ |
|||
var user = await GetUserAsync(id); |
|||
|
|||
(await UserManager.SetTwoFactorEnabledWithAccountConfirmedAsync(user, input.Enabled)).CheckErrors(); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
} |
|||
|
|||
[Authorize(Volo.Abp.Identity.IdentityPermissions.Users.Update)] |
|||
public virtual async Task LockAsync(Guid id, int seconds) |
|||
{ |
|||
var user = await GetUserAsync(id); |
|||
//if (!UserManager.SupportsUserLockout)
|
|||
//{
|
|||
// throw new UserFriendlyException(L["Volo.Abp.Identity:UserLockoutNotEnabled"]);
|
|||
//}
|
|||
var endDate = new DateTimeOffset(Clock.Now).AddSeconds(seconds); |
|||
(await UserManager.SetLockoutEndDateAsync(user, endDate)).CheckErrors(); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
} |
|||
|
|||
[Authorize(Volo.Abp.Identity.IdentityPermissions.Users.Update)] |
|||
public virtual async Task UnLockAsync(Guid id) |
|||
{ |
|||
var user = await GetUserAsync(id); |
|||
(await UserManager.SetLockoutEndDateAsync(user, null)).CheckErrors(); |
|||
|
|||
await CurrentUnitOfWork.SaveChangesAsync(); |
|||
} |
|||
|
|||
protected virtual async Task<IdentityUser> GetUserAsync(Guid id) |
|||
{ |
|||
await IdentityOptions.SetAsync(); |
|||
var user = await UserManager.GetByIdAsync(id); |
|||
|
|||
return user; |
|||
} |
|||
} |
|||
} |
|||
|
|||
@ -1,95 +1,109 @@ |
|||
using Microsoft.AspNetCore.Mvc; |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp; |
|||
using Volo.Abp.Application.Dtos; |
|||
using Volo.Abp.AspNetCore.Mvc; |
|||
using Volo.Abp.Identity; |
|||
|
|||
namespace LINGYUN.Abp.Identity |
|||
{ |
|||
[RemoteService(true, Name = IdentityRemoteServiceConsts.RemoteServiceName)] |
|||
[Area("identity")] |
|||
[ControllerName("User")] |
|||
[Route("api/identity/users")] |
|||
public class IdentityUserController : AbpController, IIdentityUserAppService |
|||
{ |
|||
protected IIdentityUserAppService UserAppService { get; } |
|||
public IdentityUserController( |
|||
IIdentityUserAppService userAppService) |
|||
{ |
|||
UserAppService = userAppService; |
|||
} |
|||
|
|||
#region OrganizationUnit
|
|||
|
|||
[HttpGet] |
|||
[Route("{id}/organization-units")] |
|||
public virtual async Task<ListResultDto<OrganizationUnitDto>> GetOrganizationUnitsAsync(Guid id) |
|||
{ |
|||
return await UserAppService.GetOrganizationUnitsAsync(id); |
|||
} |
|||
|
|||
[HttpPut] |
|||
[Route("{id}/organization-units")] |
|||
public virtual async Task SetOrganizationUnitsAsync(Guid id, IdentityUserOrganizationUnitUpdateDto input) |
|||
{ |
|||
await UserAppService.SetOrganizationUnitsAsync(id, input); |
|||
} |
|||
|
|||
[HttpDelete] |
|||
[Route("{id}/organization-units/{ouId}")] |
|||
public virtual async Task RemoveOrganizationUnitsAsync(Guid id, Guid ouId) |
|||
{ |
|||
await UserAppService.RemoveOrganizationUnitsAsync(id, ouId); |
|||
} |
|||
|
|||
#endregion
|
|||
|
|||
#region Claim
|
|||
|
|||
[HttpGet] |
|||
[Route("{id}/claims")] |
|||
public virtual async Task<ListResultDto<IdentityClaimDto>> GetClaimsAsync(Guid id) |
|||
{ |
|||
return await UserAppService.GetClaimsAsync(id); |
|||
} |
|||
|
|||
[HttpPost] |
|||
[Route("{id}/claims")] |
|||
public virtual async Task AddClaimAsync(Guid id, IdentityUserClaimCreateDto input) |
|||
{ |
|||
await UserAppService.AddClaimAsync(id, input); |
|||
} |
|||
|
|||
[HttpPut] |
|||
[Route("{id}/claims")] |
|||
public virtual async Task UpdateClaimAsync(Guid id, IdentityUserClaimUpdateDto input) |
|||
{ |
|||
await UserAppService.UpdateClaimAsync(id, input); |
|||
} |
|||
|
|||
[HttpDelete] |
|||
[Route("{id}/claims")] |
|||
public virtual async Task DeleteClaimAsync(Guid id, IdentityUserClaimDeleteDto input) |
|||
{ |
|||
await UserAppService.DeleteClaimAsync(id, input); |
|||
} |
|||
|
|||
#endregion
|
|||
|
|||
[HttpPut] //TODO: Post?
|
|||
[Route("change-password")] |
|||
public virtual async Task ChangePasswordAsync(Guid id, ChangePasswordInput input) |
|||
{ |
|||
await UserAppService.ChangePasswordAsync(id, input); |
|||
} |
|||
|
|||
[HttpPut] |
|||
[Route("change-two-factor")] |
|||
public virtual async Task ChangeTwoFactorEnabledAsync(Guid id, ChangeTwoFactorEnabledDto input) |
|||
{ |
|||
await UserAppService.ChangeTwoFactorEnabledAsync(id, input); |
|||
} |
|||
} |
|||
} |
|||
using Microsoft.AspNetCore.Mvc; |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp; |
|||
using Volo.Abp.Application.Dtos; |
|||
using Volo.Abp.AspNetCore.Mvc; |
|||
using Volo.Abp.Identity; |
|||
|
|||
namespace LINGYUN.Abp.Identity |
|||
{ |
|||
[RemoteService(true, Name = IdentityRemoteServiceConsts.RemoteServiceName)] |
|||
[Area("identity")] |
|||
[ControllerName("User")] |
|||
[Route("api/identity/users")] |
|||
public class IdentityUserController : AbpController, IIdentityUserAppService |
|||
{ |
|||
protected IIdentityUserAppService UserAppService { get; } |
|||
public IdentityUserController( |
|||
IIdentityUserAppService userAppService) |
|||
{ |
|||
UserAppService = userAppService; |
|||
} |
|||
|
|||
#region OrganizationUnit
|
|||
|
|||
[HttpGet] |
|||
[Route("{id}/organization-units")] |
|||
public virtual async Task<ListResultDto<OrganizationUnitDto>> GetOrganizationUnitsAsync(Guid id) |
|||
{ |
|||
return await UserAppService.GetOrganizationUnitsAsync(id); |
|||
} |
|||
|
|||
[HttpPut] |
|||
[Route("{id}/organization-units")] |
|||
public virtual async Task SetOrganizationUnitsAsync(Guid id, IdentityUserOrganizationUnitUpdateDto input) |
|||
{ |
|||
await UserAppService.SetOrganizationUnitsAsync(id, input); |
|||
} |
|||
|
|||
[HttpDelete] |
|||
[Route("{id}/organization-units/{ouId}")] |
|||
public virtual async Task RemoveOrganizationUnitsAsync(Guid id, Guid ouId) |
|||
{ |
|||
await UserAppService.RemoveOrganizationUnitsAsync(id, ouId); |
|||
} |
|||
|
|||
#endregion
|
|||
|
|||
#region Claim
|
|||
|
|||
[HttpGet] |
|||
[Route("{id}/claims")] |
|||
public virtual async Task<ListResultDto<IdentityClaimDto>> GetClaimsAsync(Guid id) |
|||
{ |
|||
return await UserAppService.GetClaimsAsync(id); |
|||
} |
|||
|
|||
[HttpPost] |
|||
[Route("{id}/claims")] |
|||
public virtual async Task AddClaimAsync(Guid id, IdentityUserClaimCreateDto input) |
|||
{ |
|||
await UserAppService.AddClaimAsync(id, input); |
|||
} |
|||
|
|||
[HttpPut] |
|||
[Route("{id}/claims")] |
|||
public virtual async Task UpdateClaimAsync(Guid id, IdentityUserClaimUpdateDto input) |
|||
{ |
|||
await UserAppService.UpdateClaimAsync(id, input); |
|||
} |
|||
|
|||
[HttpDelete] |
|||
[Route("{id}/claims")] |
|||
public virtual async Task DeleteClaimAsync(Guid id, IdentityUserClaimDeleteDto input) |
|||
{ |
|||
await UserAppService.DeleteClaimAsync(id, input); |
|||
} |
|||
|
|||
#endregion
|
|||
|
|||
[HttpPut] //TODO: Post?
|
|||
[Route("change-password")] |
|||
public virtual async Task ChangePasswordAsync(Guid id, ChangePasswordInput input) |
|||
{ |
|||
await UserAppService.ChangePasswordAsync(id, input); |
|||
} |
|||
|
|||
[HttpPut] |
|||
[Route("change-two-factor")] |
|||
public virtual async Task ChangeTwoFactorEnabledAsync(Guid id, ChangeTwoFactorEnabledDto input) |
|||
{ |
|||
await UserAppService.ChangeTwoFactorEnabledAsync(id, input); |
|||
} |
|||
|
|||
[HttpPut] |
|||
[Route("{id}/lock/{seconds}")] |
|||
public virtual async Task LockAsync(Guid id, int seconds) |
|||
{ |
|||
await UserAppService.LockAsync(id, seconds); |
|||
} |
|||
|
|||
[HttpPut] |
|||
[Route("{id}/unlock")] |
|||
public virtual async Task UnLockAsync(Guid id) |
|||
{ |
|||
await UserAppService.UnLockAsync(id); |
|||
} |
|||
} |
|||
} |
|||
|
|||
@ -1,90 +1,91 @@ |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Microsoft.Extensions.Options; |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Authorization.Permissions; |
|||
using Volo.Abp.Caching; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Guids; |
|||
using Volo.Abp.Identity; |
|||
using Volo.Abp.MultiTenancy; |
|||
using Volo.Abp.PermissionManagement; |
|||
using Volo.Abp.Uow; |
|||
|
|||
namespace LINGYUN.Abp.PermissionManagement.Identity |
|||
{ |
|||
[Dependency(ServiceLifetime.Singleton, ReplaceServices = true)] |
|||
[ExposeServices(typeof(IPermissionManager), typeof(PermissionManager), typeof(DefaultPermissionManager))] |
|||
public class IdentityPermissionManager : DefaultPermissionManager |
|||
{ |
|||
protected IUnitOfWorkManager UnitOfWorkManager => LazyGetRequiredService(ref _unitOfWorkManager); |
|||
private IUnitOfWorkManager _unitOfWorkManager; |
|||
|
|||
protected IUnitOfWork CurrentUnitOfWork => UnitOfWorkManager?.Current; |
|||
|
|||
protected IUserRoleFinder UserRoleFinder { get; } |
|||
public IdentityPermissionManager( |
|||
IPermissionDefinitionManager permissionDefinitionManager, |
|||
IPermissionStateManager permissionStateManager, |
|||
IPermissionGrantRepository permissionGrantRepository, |
|||
IPermissionStore permissionStore, |
|||
IServiceProvider serviceProvider, |
|||
IGuidGenerator guidGenerator, |
|||
IOptions<PermissionManagementOptions> options, |
|||
ICurrentTenant currentTenant, |
|||
IDistributedCache<PermissionGrantCacheItem> cache, |
|||
IUserRoleFinder userRoleFinder) |
|||
: base( |
|||
permissionDefinitionManager, |
|||
permissionStateManager, |
|||
permissionGrantRepository, |
|||
permissionStore, |
|||
serviceProvider, |
|||
guidGenerator, |
|||
options, |
|||
currentTenant, |
|||
cache) |
|||
{ |
|||
UserRoleFinder = userRoleFinder; |
|||
} |
|||
|
|||
protected override async Task<bool> IsGrantedAsync(string permissionName, string providerName, string providerKey) |
|||
{ |
|||
if (!RolePermissionValueProvider.ProviderName.Equals(providerName)) |
|||
{ |
|||
// 如果查询的是用户权限,需要查询用户角色权限
|
|||
if (providerName == UserPermissionValueProvider.ProviderName) |
|||
{ |
|||
var userId = Guid.Parse(providerKey); |
|||
var roleNames = await GetUserRolesAsync(userId); |
|||
foreach (var roleName in roleNames) |
|||
{ |
|||
var permissionGrant = await PermissionStore.IsGrantedAsync(permissionName, RolePermissionValueProvider.ProviderName, roleName); |
|||
if (permissionGrant) |
|||
{ |
|||
return true; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
return await base.IsGrantedAsync(permissionName, providerName, providerKey); |
|||
} |
|||
|
|||
protected virtual async Task<string[]> GetUserRolesAsync(Guid userId) |
|||
{ |
|||
// 通过工作单元来缓存用户角色,防止多次查询
|
|||
if (CurrentUnitOfWork != null) |
|||
{ |
|||
var userRoleItemKey = $"FindRolesByUser:{userId}"; |
|||
|
|||
return await CurrentUnitOfWork.GetOrAddItem(userRoleItemKey, (key) => |
|||
{ |
|||
// 取消同步调用
|
|||
//var roles = AsyncHelper.RunSync(async ()=> await UserRoleFinder.GetRolesAsync(userId));
|
|||
return UserRoleFinder.GetRolesAsync(userId); |
|||
}); |
|||
} |
|||
return await UserRoleFinder.GetRolesAsync(userId); |
|||
} |
|||
} |
|||
} |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Microsoft.Extensions.Options; |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Authorization.Permissions; |
|||
using Volo.Abp.Caching; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Guids; |
|||
using Volo.Abp.Identity; |
|||
using Volo.Abp.MultiTenancy; |
|||
using Volo.Abp.PermissionManagement; |
|||
using Volo.Abp.SimpleStateChecking; |
|||
using Volo.Abp.Uow; |
|||
|
|||
namespace LINGYUN.Abp.PermissionManagement.Identity |
|||
{ |
|||
[Dependency(ServiceLifetime.Singleton, ReplaceServices = true)] |
|||
[ExposeServices(typeof(IPermissionManager), typeof(PermissionManager), typeof(DefaultPermissionManager))] |
|||
public class IdentityPermissionManager : DefaultPermissionManager |
|||
{ |
|||
protected IUnitOfWorkManager UnitOfWorkManager => LazyGetRequiredService(ref _unitOfWorkManager); |
|||
private IUnitOfWorkManager _unitOfWorkManager; |
|||
|
|||
protected IUnitOfWork CurrentUnitOfWork => UnitOfWorkManager?.Current; |
|||
|
|||
protected IUserRoleFinder UserRoleFinder { get; } |
|||
public IdentityPermissionManager( |
|||
IPermissionDefinitionManager permissionDefinitionManager, |
|||
ISimpleStateCheckerManager<PermissionDefinition> simpleStateCheckerManager, |
|||
IPermissionGrantRepository permissionGrantRepository, |
|||
IPermissionStore permissionStore, |
|||
IServiceProvider serviceProvider, |
|||
IGuidGenerator guidGenerator, |
|||
IOptions<PermissionManagementOptions> options, |
|||
ICurrentTenant currentTenant, |
|||
IDistributedCache<PermissionGrantCacheItem> cache, |
|||
IUserRoleFinder userRoleFinder) |
|||
: base( |
|||
permissionDefinitionManager, |
|||
simpleStateCheckerManager, |
|||
permissionGrantRepository, |
|||
permissionStore, |
|||
serviceProvider, |
|||
guidGenerator, |
|||
options, |
|||
currentTenant, |
|||
cache) |
|||
{ |
|||
UserRoleFinder = userRoleFinder; |
|||
} |
|||
|
|||
protected override async Task<bool> IsGrantedAsync(string permissionName, string providerName, string providerKey) |
|||
{ |
|||
if (!RolePermissionValueProvider.ProviderName.Equals(providerName)) |
|||
{ |
|||
// 如果查询的是用户权限,需要查询用户角色权限
|
|||
if (providerName == UserPermissionValueProvider.ProviderName) |
|||
{ |
|||
var userId = Guid.Parse(providerKey); |
|||
var roleNames = await GetUserRolesAsync(userId); |
|||
foreach (var roleName in roleNames) |
|||
{ |
|||
var permissionGrant = await PermissionStore.IsGrantedAsync(permissionName, RolePermissionValueProvider.ProviderName, roleName); |
|||
if (permissionGrant) |
|||
{ |
|||
return true; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
return await base.IsGrantedAsync(permissionName, providerName, providerKey); |
|||
} |
|||
|
|||
protected virtual async Task<string[]> GetUserRolesAsync(Guid userId) |
|||
{ |
|||
// 通过工作单元来缓存用户角色,防止多次查询
|
|||
if (CurrentUnitOfWork != null) |
|||
{ |
|||
var userRoleItemKey = $"FindRolesByUser:{userId}"; |
|||
|
|||
return await CurrentUnitOfWork.GetOrAddItem(userRoleItemKey, (key) => |
|||
{ |
|||
// 取消同步调用
|
|||
//var roles = AsyncHelper.RunSync(async ()=> await UserRoleFinder.GetRolesAsync(userId));
|
|||
return UserRoleFinder.GetRolesAsync(userId); |
|||
}); |
|||
} |
|||
return await UserRoleFinder.GetRolesAsync(userId); |
|||
} |
|||
} |
|||
} |
|||
|
|||
@ -1,19 +1,19 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Ddd.Application" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.IdentityServer.Application.Contracts\LINGYUN.Abp.IdentityServer.Application.Contracts.csproj" /> |
|||
<ProjectReference Include="..\LINGYUN.Abp.IdentityServer.Domain\LINGYUN.Abp.IdentityServer.Domain.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Ddd.Application" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.IdentityServer.Application.Contracts\LINGYUN.Abp.IdentityServer.Application.Contracts.csproj" /> |
|||
<ProjectReference Include="..\LINGYUN.Abp.IdentityServer.Domain\LINGYUN.Abp.IdentityServer.Domain.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,15 +1,15 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Localization" Version="4.3.0" /> |
|||
<PackageReference Include="Microsoft.Extensions.FileProviders.Physical" Version="5.0.*" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Localization" Version="4.4.0" /> |
|||
<PackageReference Include="Microsoft.Extensions.FileProviders.Physical" Version="5.0.*" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,15 +1,15 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Localization" Version="4.3.0" /> |
|||
<PackageReference Include="Microsoft.Extensions.FileProviders.Physical" Version="5.0.*" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Localization" Version="4.4.0" /> |
|||
<PackageReference Include="Microsoft.Extensions.FileProviders.Physical" Version="5.0.*" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,19 +1,19 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Authorization" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.Ddd.Application.Contracts" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.LocalizationManagement.Domain.Shared\LINGYUN.Abp.LocalizationManagement.Domain.Shared.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Authorization" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.Ddd.Application.Contracts" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.LocalizationManagement.Domain.Shared\LINGYUN.Abp.LocalizationManagement.Domain.Shared.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,19 +1,19 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Ddd.Application" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.LocalizationManagement.Domain\LINGYUN.Abp.LocalizationManagement.Domain.csproj" /> |
|||
<ProjectReference Include="..\LINGYUN.Abp.LocalizationManagement.Application.Contracts\LINGYUN.Abp.LocalizationManagement.Application.Contracts.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Ddd.Application" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.LocalizationManagement.Domain\LINGYUN.Abp.LocalizationManagement.Domain.csproj" /> |
|||
<ProjectReference Include="..\LINGYUN.Abp.LocalizationManagement.Application.Contracts\LINGYUN.Abp.LocalizationManagement.Application.Contracts.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,25 +1,25 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<None Remove="LINGYUN\Abp\LocalizationManagement\Localization\Resources\en.json" /> |
|||
<None Remove="LINGYUN\Abp\LocalizationManagement\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<EmbeddedResource Include="LINGYUN\Abp\LocalizationManagement\Localization\Resources\en.json" /> |
|||
<EmbeddedResource Include="LINGYUN\Abp\LocalizationManagement\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Validation" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.Localization" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<None Remove="LINGYUN\Abp\LocalizationManagement\Localization\Resources\en.json" /> |
|||
<None Remove="LINGYUN\Abp\LocalizationManagement\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<EmbeddedResource Include="LINGYUN\Abp\LocalizationManagement\Localization\Resources\en.json" /> |
|||
<EmbeddedResource Include="LINGYUN\Abp\LocalizationManagement\Localization\Resources\zh-Hans.json" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.Validation" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.Localization" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,20 +1,20 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.AutoMapper" Version="4.3.0" /> |
|||
<PackageReference Include="Volo.Abp.Ddd.Domain" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\common\LINGYUN.Abp.Localization.Dynamic\LINGYUN.Abp.Localization.Dynamic.csproj" /> |
|||
<ProjectReference Include="..\LINGYUN.Abp.LocalizationManagement.Domain.Shared\LINGYUN.Abp.LocalizationManagement.Domain.Shared.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.AutoMapper" Version="4.4.0" /> |
|||
<PackageReference Include="Volo.Abp.Ddd.Domain" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\common\LINGYUN.Abp.Localization.Dynamic\LINGYUN.Abp.Localization.Dynamic.csproj" /> |
|||
<ProjectReference Include="..\LINGYUN.Abp.LocalizationManagement.Domain.Shared\LINGYUN.Abp.LocalizationManagement.Domain.Shared.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,18 +1,18 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.1</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.EntityFrameworkCore" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.LocalizationManagement.Domain\LINGYUN.Abp.LocalizationManagement.Domain.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.1</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.EntityFrameworkCore" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.LocalizationManagement.Domain\LINGYUN.Abp.LocalizationManagement.Domain.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
@ -1,18 +1,18 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.AspNetCore.Mvc" Version="4.3.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.LocalizationManagement.Application.Contracts\LINGYUN.Abp.LocalizationManagement.Application.Contracts.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net5.0</TargetFramework> |
|||
<RootNamespace /> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Volo.Abp.AspNetCore.Mvc" Version="4.4.0" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\LINGYUN.Abp.LocalizationManagement.Application.Contracts\LINGYUN.Abp.LocalizationManagement.Application.Contracts.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
|
|||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue