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