From 6e9218d7ea47390bd789b1469bbeecd4fcbe4bdd Mon Sep 17 00:00:00 2001
From: guotianliang <1265346495@qq.com>
Date: Tue, 10 May 2022 14:24:21 +0800
Subject: [PATCH] =?UTF-8?q?vue=20=E8=8F=9C=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Sanhe.Abp.Framework.sln | 52 +++++
.../FodyWeavers.xml | 3 +
...enuManagement.Application.Contracts.csproj | 21 ++
.../Sanhe/Abp/MenuManagement/AuthPolicyDto.cs | 23 ++
.../MenuManagement/CreateOrUpdateMenuDto.cs | 97 ++++++++
.../Sanhe/Abp/MenuManagement/FrontMenu.cs | 44 ++++
.../GetMenuGrantListResultDto.cs | 10 +
.../Abp/MenuManagement/GetMenuResultDto.cs | 10 +
.../Abp/MenuManagement/IMenuAppService.cs | 16 ++
.../MenuManagement/IMenuGrantAppService.cs | 13 ++
.../Sanhe/Abp/MenuManagement/MenuDto.cs | 63 +++++
...enuManagementApplicationContractsModule.cs | 17 ++
.../MenuManagementRemoteServiceConsts.cs | 8 +
.../Sanhe/Abp/MenuManagement/MenuMeta.cs | 14 ++
.../Abp/MenuManagement/MenuRequestDto.cs | 14 ++
...uManagementPermissionDefinitionProvider.cs | 24 ++
.../Permissions/MenuManagementPermissions.cs | 22 ++
.../Abp/MenuManagement/UpdateMenuGrantDto.cs | 20 ++
.../Abp/MenuManagement/UpdateMenuGrantsDto.cs | 7 +
.../FodyWeavers.xml | 3 +
...anhe.Abp.MenuManagement.Application.csproj | 22 ++
.../Abp/MenuManagement/MenuAppService.cs | 182 +++++++++++++++
.../Abp/MenuManagement/MenuGrantAppService.cs | 215 ++++++++++++++++++
.../MenuManagementAppService.cs | 13 ++
...uManagementApplicationAutoMapperProfile.cs | 24 ++
.../MenuManagementApplicationModule.cs | 26 +++
.../FodyWeavers.xml | 3 +
....Abp.MenuManagement.Domain.Identity.csproj | 19 ++
.../Identity/RoleMenuManagementProvider.cs | 60 +++++
.../Identity/UserMenuManagementProvider.cs | 22 ++
.../MenuManagementDomainIdentityModule.cs | 24 ++
.../FodyWeavers.xml | 3 +
...he.Abp.MenuManagement.Domain.Shared.csproj | 25 ++
.../Localization/MenuManagementResource.cs | 9 +
.../Localization/Resources/en.json | 25 ++
.../Localization/Resources/zh-Hans.json | 30 +++
.../Sanhe/Abp/MenuManagement/MenuEnumType.cs | 17 ++
.../Abp/MenuManagement/MenuGrantConsts.cs | 16 ++
.../Abp/MenuManagement/MenuGrantInfoDto.cs | 18 ++
.../MenuManagementDomainSharedModule.cs | 38 ++++
.../Abp/MenuManagement/MenuProviderInfo.cs | 21 ++
.../FodyWeavers.xml | 3 +
.../Sanhe.Abp.MenuManagement.Domain.csproj | 20 ++
.../Abp/MenuManagement/IMenuGrantChecker.cs | 10 +
.../MenuManagement/IMenuGrantRepository.cs | 24 ++
.../IMenuGrantRuntimeCheckerProvider.cs | 9 +
.../MenuManagement/IMenuManagementProvider.cs | 25 ++
.../Sanhe/Abp/MenuManagement/IMenuManager.cs | 15 ++
.../Abp/MenuManagement/IMenuRepository.cs | 10 +
.../MenuManagement/IUserMenuGrantChecker.cs | 65 ++++++
.../Sanhe/Abp/MenuManagement/Menu.cs | 100 ++++++++
.../Sanhe/Abp/MenuManagement/MenuGrant.cs | 60 +++++
.../Abp/MenuManagement/MenuGrantCacheItem.cs | 27 +++
.../MenuGrantCacheItemInvalidator.cs | 65 ++++++
.../Abp/MenuManagement/MenuGrantChecker.cs | 59 +++++
.../Sanhe/Abp/MenuManagement/MenuGrantInfo.cs | 19 ++
.../Abp/MenuManagement/MenuGrantResultEnum.cs | 8 +
.../MenuGrantRuntimeCheckerContent.cs | 10 +
.../MenuGrantRuntimeCheckerProvider.cs | 61 +++++
.../MenuManagementDbProperties.cs | 10 +
.../MenuManagementDomainModule.cs | 13 ++
.../MenuManagement/MenuManagementOptions.cs | 14 ++
.../MenuManagement/MenuManagementProvider.cs | 81 +++++++
.../Sanhe/Abp/MenuManagement/MenuManager.cs | 116 ++++++++++
.../MenuWithGrantedProviders.cs | 26 +++
.../Sanhe/Abp/MenuManagement/Permission.cs | 48 ++++
.../Abp/MenuManagement/PermissionGroup.cs | 63 +++++
...MenuManagementSettingDefinitionProvider.cs | 13 ++
.../Settings/MenuManagementSettings.cs | 10 +
.../FodyWeavers.xml | 3 +
....MenuManagement.EntityFrameworkCore.csproj | 20 ++
.../IMenuManagementDbContext.cs | 12 +
.../MenuManagementDbContext.cs | 25 ++
...agementDbContextModelCreatingExtensions.cs | 43 ++++
...MenuManagementEntityFrameworkCoreModule.cs | 22 ++
.../Abp/MenuManagement/MenuGrantRepository.cs | 66 ++++++
.../Abp/MenuManagement/MenuRepository.cs | 25 ++
.../FodyWeavers.xml | 3 +
.../Sanhe.Abp.MenuManagement.HttpApi.csproj | 16 ++
.../Abp/MenuManagement/MenuController.cs | 57 +++++
.../Abp/MenuManagement/MenuGrantController.cs | 39 ++++
.../MenuManagementController.cs | 12 +
.../MenuManagementHttpApiModule.cs | 34 +++
83 files changed, 2654 insertions(+)
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/FodyWeavers.xml
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe.Abp.MenuManagement.Application.Contracts.csproj
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/AuthPolicyDto.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/CreateOrUpdateMenuDto.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/FrontMenu.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/GetMenuGrantListResultDto.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/GetMenuResultDto.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/IMenuAppService.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/IMenuGrantAppService.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuDto.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuManagementApplicationContractsModule.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuManagementRemoteServiceConsts.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuMeta.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuRequestDto.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/Permissions/MenuManagementPermissionDefinitionProvider.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/Permissions/MenuManagementPermissions.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/UpdateMenuGrantDto.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/UpdateMenuGrantsDto.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application/FodyWeavers.xml
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application/Sanhe.Abp.MenuManagement.Application.csproj
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application/Sanhe/Abp/MenuManagement/MenuAppService.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application/Sanhe/Abp/MenuManagement/MenuGrantAppService.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application/Sanhe/Abp/MenuManagement/MenuManagementAppService.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application/Sanhe/Abp/MenuManagement/MenuManagementApplicationAutoMapperProfile.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Application/Sanhe/Abp/MenuManagement/MenuManagementApplicationModule.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain.Identity/FodyWeavers.xml
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain.Identity/Sanhe.Abp.MenuManagement.Domain.Identity.csproj
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain.Identity/Sanhe/Abp/MenuManagement/Identity/RoleMenuManagementProvider.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain.Identity/Sanhe/Abp/MenuManagement/Identity/UserMenuManagementProvider.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain.Identity/Sanhe/Abp/MenuManagement/MenuManagementDomainIdentityModule.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain.Shared/FodyWeavers.xml
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain.Shared/Sanhe.Abp.MenuManagement.Domain.Shared.csproj
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain.Shared/Sanhe/Abp/MenuManagement/Localization/MenuManagementResource.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain.Shared/Sanhe/Abp/MenuManagement/Localization/Resources/en.json
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain.Shared/Sanhe/Abp/MenuManagement/Localization/Resources/zh-Hans.json
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain.Shared/Sanhe/Abp/MenuManagement/MenuEnumType.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain.Shared/Sanhe/Abp/MenuManagement/MenuGrantConsts.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain.Shared/Sanhe/Abp/MenuManagement/MenuGrantInfoDto.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain.Shared/Sanhe/Abp/MenuManagement/MenuManagementDomainSharedModule.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain.Shared/Sanhe/Abp/MenuManagement/MenuProviderInfo.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/FodyWeavers.xml
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe.Abp.MenuManagement.Domain.csproj
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/IMenuGrantChecker.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/IMenuGrantRepository.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/IMenuGrantRuntimeCheckerProvider.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/IMenuManagementProvider.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/IMenuManager.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/IMenuRepository.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/IUserMenuGrantChecker.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/Menu.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/MenuGrant.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/MenuGrantCacheItem.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/MenuGrantCacheItemInvalidator.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/MenuGrantChecker.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/MenuGrantInfo.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/MenuGrantResultEnum.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/MenuGrantRuntimeCheckerContent.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/MenuGrantRuntimeCheckerProvider.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/MenuManagementDbProperties.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/MenuManagementDomainModule.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/MenuManagementOptions.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/MenuManagementProvider.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/MenuManager.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/MenuWithGrantedProviders.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/Permission.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/PermissionGroup.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/Settings/MenuManagementSettingDefinitionProvider.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.Domain/Sanhe/Abp/MenuManagement/Settings/MenuManagementSettings.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.EntityFrameworkCore/FodyWeavers.xml
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.EntityFrameworkCore/Sanhe.Abp.MenuManagement.EntityFrameworkCore.csproj
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.EntityFrameworkCore/Sanhe/Abp/MenuManagement/EntityFrameworkCore/IMenuManagementDbContext.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.EntityFrameworkCore/Sanhe/Abp/MenuManagement/EntityFrameworkCore/MenuManagementDbContext.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.EntityFrameworkCore/Sanhe/Abp/MenuManagement/EntityFrameworkCore/MenuManagementDbContextModelCreatingExtensions.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.EntityFrameworkCore/Sanhe/Abp/MenuManagement/EntityFrameworkCore/MenuManagementEntityFrameworkCoreModule.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.EntityFrameworkCore/Sanhe/Abp/MenuManagement/MenuGrantRepository.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.EntityFrameworkCore/Sanhe/Abp/MenuManagement/MenuRepository.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.HttpApi/FodyWeavers.xml
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.HttpApi/Sanhe.Abp.MenuManagement.HttpApi.csproj
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.HttpApi/Sanhe/Abp/MenuManagement/MenuController.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.HttpApi/Sanhe/Abp/MenuManagement/MenuGrantController.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.HttpApi/Sanhe/Abp/MenuManagement/MenuManagementController.cs
create mode 100644 modules/menu-management/Sanhe.Abp.MenuManagement.HttpApi/Sanhe/Abp/MenuManagement/MenuManagementHttpApiModule.cs
diff --git a/Sanhe.Abp.Framework.sln b/Sanhe.Abp.Framework.sln
index ad240d5..0938217 100644
--- a/Sanhe.Abp.Framework.sln
+++ b/Sanhe.Abp.Framework.sln
@@ -91,6 +91,22 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "elasticsearch", "elasticsea
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sanhe.Abp.Elasticsearch", "modules\elasticsearch\Sanhe.Abp.Elasticsearch\Sanhe.Abp.Elasticsearch.csproj", "{3E1DA541-4D48-47A1-93FA-3D75BCB078F3}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "menu-management", "menu-management", "{1D9012F7-AAA3-49E0-9852-4A97FFB26E8C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sanhe.Abp.MenuManagement.Domain", "modules\menu-management\Sanhe.Abp.MenuManagement.Domain\Sanhe.Abp.MenuManagement.Domain.csproj", "{FC204CCD-E64A-4388-86DF-5366E181C811}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sanhe.Abp.MenuManagement.Domain.Identity", "modules\menu-management\Sanhe.Abp.MenuManagement.Domain.Identity\Sanhe.Abp.MenuManagement.Domain.Identity.csproj", "{CE313A6B-8C92-4939-9853-54FFAF553E7D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sanhe.Abp.MenuManagement.Domain.Shared", "modules\menu-management\Sanhe.Abp.MenuManagement.Domain.Shared\Sanhe.Abp.MenuManagement.Domain.Shared.csproj", "{89719844-E5AE-4FF9-B930-77ADF4B6404F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sanhe.Abp.MenuManagement.Application.Contracts", "modules\menu-management\Sanhe.Abp.MenuManagement.Application.Contracts\Sanhe.Abp.MenuManagement.Application.Contracts.csproj", "{F9F99C94-2558-4B29-9192-61072A240CA1}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sanhe.Abp.MenuManagement.Application", "modules\menu-management\Sanhe.Abp.MenuManagement.Application\Sanhe.Abp.MenuManagement.Application.csproj", "{B234FA38-6CC5-44D1-8D4F-926E8575C989}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sanhe.Abp.MenuManagement.EntityFrameworkCore", "modules\menu-management\Sanhe.Abp.MenuManagement.EntityFrameworkCore\Sanhe.Abp.MenuManagement.EntityFrameworkCore.csproj", "{F60BA528-E8FE-465D-BAED-EAC48DE57847}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sanhe.Abp.MenuManagement.HttpApi", "modules\menu-management\Sanhe.Abp.MenuManagement.HttpApi\Sanhe.Abp.MenuManagement.HttpApi.csproj", "{4A545053-9CD6-4578-92AF-1637AAC79F80}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -221,6 +237,34 @@ Global
{3E1DA541-4D48-47A1-93FA-3D75BCB078F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E1DA541-4D48-47A1-93FA-3D75BCB078F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E1DA541-4D48-47A1-93FA-3D75BCB078F3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FC204CCD-E64A-4388-86DF-5366E181C811}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FC204CCD-E64A-4388-86DF-5366E181C811}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FC204CCD-E64A-4388-86DF-5366E181C811}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FC204CCD-E64A-4388-86DF-5366E181C811}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CE313A6B-8C92-4939-9853-54FFAF553E7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CE313A6B-8C92-4939-9853-54FFAF553E7D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CE313A6B-8C92-4939-9853-54FFAF553E7D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CE313A6B-8C92-4939-9853-54FFAF553E7D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {89719844-E5AE-4FF9-B930-77ADF4B6404F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {89719844-E5AE-4FF9-B930-77ADF4B6404F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {89719844-E5AE-4FF9-B930-77ADF4B6404F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {89719844-E5AE-4FF9-B930-77ADF4B6404F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F9F99C94-2558-4B29-9192-61072A240CA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F9F99C94-2558-4B29-9192-61072A240CA1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F9F99C94-2558-4B29-9192-61072A240CA1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F9F99C94-2558-4B29-9192-61072A240CA1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B234FA38-6CC5-44D1-8D4F-926E8575C989}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B234FA38-6CC5-44D1-8D4F-926E8575C989}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B234FA38-6CC5-44D1-8D4F-926E8575C989}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B234FA38-6CC5-44D1-8D4F-926E8575C989}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F60BA528-E8FE-465D-BAED-EAC48DE57847}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F60BA528-E8FE-465D-BAED-EAC48DE57847}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F60BA528-E8FE-465D-BAED-EAC48DE57847}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F60BA528-E8FE-465D-BAED-EAC48DE57847}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4A545053-9CD6-4578-92AF-1637AAC79F80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4A545053-9CD6-4578-92AF-1637AAC79F80}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4A545053-9CD6-4578-92AF-1637AAC79F80}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4A545053-9CD6-4578-92AF-1637AAC79F80}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -264,6 +308,14 @@ Global
{464E3A2C-BBEB-4CD9-BAB8-A51D6283940A} = {2A768109-31B7-4C52-928C-3023DAB9F254}
{449F764E-D3D5-4DFD-8707-2A378CF44C64} = {F5F5D604-531B-4B57-A88E-C9C5CEEC55D7}
{3E1DA541-4D48-47A1-93FA-3D75BCB078F3} = {449F764E-D3D5-4DFD-8707-2A378CF44C64}
+ {1D9012F7-AAA3-49E0-9852-4A97FFB26E8C} = {F5F5D604-531B-4B57-A88E-C9C5CEEC55D7}
+ {FC204CCD-E64A-4388-86DF-5366E181C811} = {1D9012F7-AAA3-49E0-9852-4A97FFB26E8C}
+ {CE313A6B-8C92-4939-9853-54FFAF553E7D} = {1D9012F7-AAA3-49E0-9852-4A97FFB26E8C}
+ {89719844-E5AE-4FF9-B930-77ADF4B6404F} = {1D9012F7-AAA3-49E0-9852-4A97FFB26E8C}
+ {F9F99C94-2558-4B29-9192-61072A240CA1} = {1D9012F7-AAA3-49E0-9852-4A97FFB26E8C}
+ {B234FA38-6CC5-44D1-8D4F-926E8575C989} = {1D9012F7-AAA3-49E0-9852-4A97FFB26E8C}
+ {F60BA528-E8FE-465D-BAED-EAC48DE57847} = {1D9012F7-AAA3-49E0-9852-4A97FFB26E8C}
+ {4A545053-9CD6-4578-92AF-1637AAC79F80} = {1D9012F7-AAA3-49E0-9852-4A97FFB26E8C}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {AB69BFDE-9DDB-4D16-8CB8-72472C0319CD}
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/FodyWeavers.xml b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/FodyWeavers.xml
new file mode 100644
index 0000000..1715698
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe.Abp.MenuManagement.Application.Contracts.csproj b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe.Abp.MenuManagement.Application.Contracts.csproj
new file mode 100644
index 0000000..c705c92
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe.Abp.MenuManagement.Application.Contracts.csproj
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+ netstandard2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/AuthPolicyDto.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/AuthPolicyDto.cs
new file mode 100644
index 0000000..77c1b53
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/AuthPolicyDto.cs
@@ -0,0 +1,23 @@
+using System.Collections.Generic;
+
+namespace Sanhe.Abp.MenuManagement
+{
+ ///
+ /// 授权策略
+ ///
+ public class AuthPolicyDto
+ {
+ ///
+ /// 名称
+ ///
+ public string Name { get; set; }
+ ///
+ /// 显示名称
+ ///
+ public string DisplayName { get; set; }
+ ///
+ /// 子策略
+ ///
+ public List Children { get; set; } = new List();
+ }
+}
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/CreateOrUpdateMenuDto.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/CreateOrUpdateMenuDto.cs
new file mode 100644
index 0000000..6924cfa
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/CreateOrUpdateMenuDto.cs
@@ -0,0 +1,97 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.MultiTenancy;
+
+namespace Sanhe.Abp.MenuManagement
+{
+ ///
+ /// 创建修改菜单
+ ///
+ public class CreateOrUpdateMenuDto : EntityDto, IValidatableObject
+ {
+ ///
+ /// 名称
+ ///
+ public string Name { get; set; }
+ ///
+ /// 显示名称
+ ///
+ public string DisplayName { get; set; }
+ ///
+ /// 组件路径
+ ///
+ public string ComponentPath { get; set; }
+ ///
+ /// 路由路径
+ ///
+ public string RouterPath { get; set; }
+ ///
+ /// 父Id
+ ///
+ public Guid? ParentId { get; set; }
+ ///
+ /// 菜单类型
+ ///
+ public MenuEnumType MenuType { get; set; }
+ ///
+ /// 图标
+ ///
+ public string Icon { get; set; }
+ ///
+ /// 排序
+ ///
+ public string Sort { get; set; }
+ ///
+ /// window.open _blank
+ ///
+ public string TargetUrl { get; set; }
+ ///
+ /// 此菜单关联的权限key
+ ///
+ public string PermissionKey { get; set; }
+ ///
+ /// 表示多租户应用程序中的所属方
+ ///
+ public MultiTenancySides MultiTenancySide { get; set; }
+
+ public IEnumerable Validate(ValidationContext validationContext)
+ {
+ if (MenuType == MenuEnumType.Menu)
+ {
+ if (Name.IsNullOrWhiteSpace())
+ {
+ yield return new ValidationResult("Name 不能为空", new[] { "Name" });
+ }
+
+ if (DisplayName.IsNullOrWhiteSpace())
+ {
+ yield return new ValidationResult("DisplayName 不能为空", new[] { "DisplayName" });
+ }
+
+ if (RouterPath.IsNullOrWhiteSpace())
+ {
+ yield return new ValidationResult("RouterPath 不能为空", new[] { "RouterPath" });
+ }
+
+ if (ComponentPath.IsNullOrWhiteSpace())
+ {
+ yield return new ValidationResult("ComponentPath 不能为空", new[] { "ComponentPath" });
+ }
+ }
+ else if (MenuType == MenuEnumType.Permission)
+ {
+ if (DisplayName.IsNullOrWhiteSpace())
+ {
+ yield return new ValidationResult("DisplayName 不能为空", new[] { "DisplayName" });
+ }
+
+ if (!ParentId.HasValue)
+ {
+ yield return new ValidationResult("ParentId 不能为空", new[] { "ParentId" });
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/FrontMenu.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/FrontMenu.cs
new file mode 100644
index 0000000..f0764a0
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/FrontMenu.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+
+namespace Sanhe.Abp.MenuManagement
+{
+ ///
+ /// 前端菜单
+ ///
+ public class FrontMenu
+ {
+ ///
+ /// Id
+ ///
+ public Guid Id { get; set; }
+ ///
+ /// 名称
+ ///
+ public string Name { get; set; }
+ ///
+ /// 组件
+ ///
+ public string Component { get; set; }
+ ///
+ /// 路径
+ ///
+ public string Path { get; set; }
+ ///
+ /// window.open _blank
+ ///
+ public string TargetUrl { get; set; }
+ ///
+ /// 此菜单关联的权限key.
+ ///
+ public string PermissionKey { get; set; }
+ ///
+ /// 菜单标签
+ ///
+ public MenuMeta Meta { get; set; }
+ ///
+ /// 子菜单
+ ///
+ public List Children { get; set; } = new List();
+ }
+}
\ No newline at end of file
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/GetMenuGrantListResultDto.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/GetMenuGrantListResultDto.cs
new file mode 100644
index 0000000..a8b03a0
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/GetMenuGrantListResultDto.cs
@@ -0,0 +1,10 @@
+using System.Collections.Generic;
+
+namespace Sanhe.Abp.MenuManagement
+{
+ public class GetMenuGrantListResultDto
+ {
+ public List MenuGrants { get; set; }
+ public List Menus { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/GetMenuResultDto.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/GetMenuResultDto.cs
new file mode 100644
index 0000000..b0009fa
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/GetMenuResultDto.cs
@@ -0,0 +1,10 @@
+using System.Collections.Generic;
+
+namespace Sanhe.Abp.MenuManagement
+{
+ public class GetMenuResultDto
+ {
+ public List PermissionGrants { get; set; }
+ public List Menus { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/IMenuAppService.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/IMenuAppService.cs
new file mode 100644
index 0000000..339a666
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/IMenuAppService.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Services;
+
+namespace Sanhe.Abp.MenuManagement
+{
+ public interface IMenuAppService : ICrudAppService
+ {
+ ///
+ /// 获取授权策略
+ ///
+ ///
+ Task> GetAuthPolicies();
+ }
+}
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/IMenuGrantAppService.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/IMenuGrantAppService.cs
new file mode 100644
index 0000000..44c3a97
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/IMenuGrantAppService.cs
@@ -0,0 +1,13 @@
+using JetBrains.Annotations;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Services;
+
+namespace Sanhe.Abp.MenuManagement
+{
+ public interface IMenuGrantAppService : IApplicationService
+ {
+ Task GetListAsync();
+ Task GetAsync([NotNull] string providerName, [NotNull] string providerKey);
+ Task UpdateAsync([NotNull] string providerName, [NotNull] string providerKey, UpdateMenuGrantsDto input);
+ }
+}
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuDto.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuDto.cs
new file mode 100644
index 0000000..bbc279f
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuDto.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.MultiTenancy;
+
+namespace Sanhe.Abp.MenuManagement
+{
+ public class MenuDto : AuditedEntityDto
+ {
+ ///
+ /// 名称
+ ///
+ public string Name { get; set; }
+ ///
+ /// 显示名称
+ ///
+ public string DisplayName { get; set; }
+ ///
+ /// 菜单类型
+ ///
+ public MenuEnumType MenuType { get; set; }
+ ///
+ /// 组件路径
+ ///
+ public string ComponentPath { get; set; }
+ ///
+ /// 路由路径
+ ///
+ public string RouterPath { get; set; }
+ ///
+ /// 父级显示名称
+ ///
+ public string ParentDisplayName { get; set; }
+ ///
+ /// 父Id
+ ///
+ public Guid? ParentId { get; set; }
+ ///
+ /// 图标
+ ///
+ public string Icon { get; set; }
+ ///
+ /// 排序
+ ///
+ public string Sort { get; set; }
+ ///
+ /// window.open _blank
+ ///
+ public string TargetUrl { get; set; }
+ ///
+ /// 此菜单关联的权限key
+ ///
+ public string PermissionKey { get; set; }
+ ///
+ /// 表示多租户应用程序中的所属方
+ ///
+ public MultiTenancySides MultiTenancySide { get; set; }
+ ///
+ /// 子菜单
+ ///
+ public List Children { get; set; } = new List();
+ }
+}
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuManagementApplicationContractsModule.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuManagementApplicationContractsModule.cs
new file mode 100644
index 0000000..eb814d3
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuManagementApplicationContractsModule.cs
@@ -0,0 +1,17 @@
+using Volo.Abp.Application;
+using Volo.Abp.Authorization;
+using Volo.Abp.Modularity;
+using Volo.Abp.PermissionManagement;
+
+namespace Sanhe.Abp.MenuManagement;
+
+[DependsOn(
+ typeof(AbpPermissionManagementApplicationContractsModule),
+ typeof(MenuManagementDomainSharedModule),
+ typeof(AbpDddApplicationContractsModule),
+ typeof(AbpAuthorizationModule)
+ )]
+public class MenuManagementApplicationContractsModule : AbpModule
+{
+
+}
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuManagementRemoteServiceConsts.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuManagementRemoteServiceConsts.cs
new file mode 100644
index 0000000..4f13142
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuManagementRemoteServiceConsts.cs
@@ -0,0 +1,8 @@
+namespace Sanhe.Abp.MenuManagement;
+
+public class MenuManagementRemoteServiceConsts
+{
+ public const string RemoteServiceName = "MenuManagement";
+
+ public const string ModuleName = "menuManagement";
+}
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuMeta.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuMeta.cs
new file mode 100644
index 0000000..3fa2266
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuMeta.cs
@@ -0,0 +1,14 @@
+namespace Sanhe.Abp.MenuManagement
+{
+ public class MenuMeta
+ {
+ ///
+ /// 标题
+ ///
+ public string Title { get; set; }
+ ///
+ /// 图标
+ ///
+ public string Icon { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuRequestDto.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuRequestDto.cs
new file mode 100644
index 0000000..c684931
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/MenuRequestDto.cs
@@ -0,0 +1,14 @@
+namespace Sanhe.Abp.MenuManagement
+{
+ public class MenuRequestDto
+ {
+ ///
+ /// 名称
+ ///
+ public string Name { get; set; }
+ ///
+ /// 类型
+ ///
+ public MenuEnumType? Type { get; set; }
+ }
+}
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/Permissions/MenuManagementPermissionDefinitionProvider.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/Permissions/MenuManagementPermissionDefinitionProvider.cs
new file mode 100644
index 0000000..e4d3b4b
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/Permissions/MenuManagementPermissionDefinitionProvider.cs
@@ -0,0 +1,24 @@
+using Sanhe.Abp.MenuManagement.Localization;
+using Volo.Abp.Authorization.Permissions;
+using Volo.Abp.Localization;
+using Volo.Abp.MultiTenancy;
+
+namespace Sanhe.Abp.MenuManagement.Permissions;
+
+public class MenuManagementPermissionDefinitionProvider : PermissionDefinitionProvider
+{
+ public override void Define(IPermissionDefinitionContext context)
+ {
+ var moduleGroup = context.AddGroup(MenuManagementPermissions.GroupName, L("MenuManagement:MenuManagement"));
+ var permission = moduleGroup.AddPermission(MenuManagementPermissions.Menus.Default, L("MenuManagement:MenuManagement"), multiTenancySide: MultiTenancySides.Host);
+ permission.AddChild(MenuManagementPermissions.Menus.Create, L("MenuManagement:Create"), multiTenancySide: MultiTenancySides.Host);
+ permission.AddChild(MenuManagementPermissions.Menus.Update, L("MenuManagement:Update"), multiTenancySide: MultiTenancySides.Host);
+ permission.AddChild(MenuManagementPermissions.Menus.Delete, L("MenuManagement:Delete"), multiTenancySide: MultiTenancySides.Host);
+ permission.AddChild(MenuManagementPermissions.Menus.CreatePermission, L("MenuManagement:CreatePermission"), multiTenancySide: MultiTenancySides.Host);
+ }
+
+ private static LocalizableString L(string name)
+ {
+ return LocalizableString.Create(name);
+ }
+}
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/Permissions/MenuManagementPermissions.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/Permissions/MenuManagementPermissions.cs
new file mode 100644
index 0000000..3f7a6d9
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/Permissions/MenuManagementPermissions.cs
@@ -0,0 +1,22 @@
+using Volo.Abp.Reflection;
+
+namespace Sanhe.Abp.MenuManagement.Permissions;
+
+public class MenuManagementPermissions
+{
+ public const string GroupName = "MenuManagement";
+
+ public static class Menus
+ {
+ public const string Default = GroupName + ".Menus";
+ public const string Create = Default + ".Create";
+ public const string Update = Default + ".Update";
+ public const string Delete = Default + ".Delete";
+ public const string CreatePermission = Default + ".CreatePermission";
+ }
+
+ public static string[] GetAll()
+ {
+ return ReflectionHelper.GetPublicConstantsRecursively(typeof(MenuManagementPermissions));
+ }
+}
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/UpdateMenuGrantDto.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/UpdateMenuGrantDto.cs
new file mode 100644
index 0000000..7533a55
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/UpdateMenuGrantDto.cs
@@ -0,0 +1,20 @@
+using System;
+
+namespace Sanhe.Abp.MenuManagement
+{
+ public class UpdateMenuGrantDto
+ {
+ ///
+ /// 菜单Id
+ ///
+ public Guid Id { get; set; }
+ ///
+ /// 权限key
+ ///
+ public string PermissionKey { get; set; }
+ ///
+ /// 是否分配
+ ///
+ public bool IsGranted { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/UpdateMenuGrantsDto.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/UpdateMenuGrantsDto.cs
new file mode 100644
index 0000000..fae65f0
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application.Contracts/Sanhe/Abp/MenuManagement/UpdateMenuGrantsDto.cs
@@ -0,0 +1,7 @@
+namespace Sanhe.Abp.MenuManagement
+{
+ public class UpdateMenuGrantsDto
+ {
+ public UpdateMenuGrantDto[] Menus { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application/FodyWeavers.xml b/modules/menu-management/Sanhe.Abp.MenuManagement.Application/FodyWeavers.xml
new file mode 100644
index 0000000..1715698
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application/Sanhe.Abp.MenuManagement.Application.csproj b/modules/menu-management/Sanhe.Abp.MenuManagement.Application/Sanhe.Abp.MenuManagement.Application.csproj
new file mode 100644
index 0000000..52f6b9f
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application/Sanhe.Abp.MenuManagement.Application.csproj
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ netstandard2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/menu-management/Sanhe.Abp.MenuManagement.Application/Sanhe/Abp/MenuManagement/MenuAppService.cs b/modules/menu-management/Sanhe.Abp.MenuManagement.Application/Sanhe/Abp/MenuManagement/MenuAppService.cs
new file mode 100644
index 0000000..0b12f4a
--- /dev/null
+++ b/modules/menu-management/Sanhe.Abp.MenuManagement.Application/Sanhe/Abp/MenuManagement/MenuAppService.cs
@@ -0,0 +1,182 @@
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.Extensions.Localization;
+using Sanhe.Abp.MenuManagement.Permissions;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Volo.Abp;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Application.Services;
+using Volo.Abp.Authorization.Permissions;
+using Volo.Abp.Domain.Repositories;
+using Volo.Abp.MultiTenancy;
+
+namespace Sanhe.Abp.MenuManagement
+{
+ [Authorize]
+ public class MenuAppService : CrudAppService