From 36c081b4a5ba8f783b968ccb31122eb410815bc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=86=9B?= <510423039@qq.com> Date: Tue, 23 Aug 2022 22:24:19 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E6=B7=BB=E5=8A=A0BasicManagement?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aspnet-core/Lion.AbpPro.sln | 103 ++ .../Lion.AbpPro.BasicManagement.sln | 118 ++ .../BasicManagementHttpApiHostModule.cs | 223 +++ .../Controllers/HomeController.cs | 12 + .../Dockerfile | 18 + ...anagementHttpApiHostMigrationsDbContext.cs | 20 + ...ntHttpApiHostMigrationsDbContextFactory.cs | 28 + .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 + ...AbpPro.BasicManagement.HttpApi.Host.csproj | 43 + .../Logs/logs-20220823.txt | 876 +++++++++++ .../Logs/logs.txt | 16 + .../20220823141140_Init.Designer.cs | 1295 +++++++++++++++++ .../Migrations/20220823141140_Init.cs | 880 +++++++++++ ...ApiHostMigrationsDbContextModelSnapshot.cs | 1293 ++++++++++++++++ .../Program.cs | 32 + .../Properties/launchSettings.json | 12 + .../SerilogToEsExtensions.cs | 15 + .../Startup.cs | 15 + .../appsettings.json | 48 + .../AuditLogs/GetAuditLogPageListOutput.cs | 43 + .../AuditLogs/IAuditLogAppService.cs | 12 + .../AuditLogs/PagingAuditLogListInput.cs | 67 + ...sicManagementApplicationContractsModule.cs | 25 + .../BasicManagementRemoteServiceConsts.cs | 8 + .../ConfigurationOptions/JwtOptions.cs | 25 + .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 + .../GlobalUsings.cs | 11 + ...sicManagement.Application.Contracts.csproj | 22 + .../Dto/AddRoleToOrganizationUnitInput.cs | 8 + .../Dto/AddUserToOrganizationUnitInput.cs | 8 + .../Dto/CreateOrganizationUnitInput.cs | 9 + .../Dto/GetOrganizationUnitRoleInput.cs | 7 + .../Dto/GetOrganizationUnitRoleOutput.cs | 8 + .../Dto/GetOrganizationUnitUserInput.cs | 8 + .../Dto/GetOrganizationUnitUserOutput.cs | 10 + .../Dto/GetUnAddRoleInput.cs | 8 + .../Dto/GetUnAddRoleOutput.cs | 8 + .../Dto/GetUnAddUserInput.cs | 8 + .../Dto/GetUnAddUserOutput.cs | 10 + .../Dto/OrganizationUnitDto.cs | 14 + .../Dto/RemoveRoleToOrganizationUnitInput.cs | 8 + .../Dto/RemoveUserToOrganizationUnitInput.cs | 8 + .../OrganizationUnits/Dto/TreeOutput.cs | 10 + .../Dto/UpdateOrganizationUnitInput.cs | 9 + .../IOrganizationUnitAppService.cs | 66 + ...cManagementPermissionDefinitionProvider.cs | 44 + .../Permissions/BasicManagementPermissions.cs | 32 + .../Roles/Dtos/GetPermissionInput.cs | 10 + .../Roles/Dtos/PagingRoleListInput.cs | 7 + .../Roles/Dtos/PermissionOutput.cs | 19 + .../Roles/Dtos/UpdateRoleInput.cs | 11 + .../Roles/Dtos/UpdateRolePermissionsInput.cs | 13 + .../Roles/IRoleAppService.cs | 18 + .../Roles/IRolePermissionAppService.cs | 12 + .../Roles/PermissionOptions.cs | 25 + .../Settings/Dtos/SettingOutput.cs | 59 + .../Settings/Dtos/UpdateSettingInput.cs | 12 + .../Settings/ISettingAppService.cs | 19 + .../Tenants/Dtos/FindTenantByNameInput.cs | 7 + .../Tenants/Dtos/PagingTenantInput.cs | 7 + .../UpdateDefaultConnectionStringInput.cs | 8 + .../Tenants/Dtos/UpdateTenantInput.cs | 9 + .../Tenants/IVoloTenantAppService.cs | 21 + .../Users/Dtos/ExportIdentityUserOutput.cs | 32 + .../Users/Dtos/GithubAccessTokenResponse.cs | 24 + .../Users/Dtos/LockUserInput.cs | 11 + .../Users/Dtos/LoginGithubResponse.cs | 99 ++ .../Users/Dtos/LoginInput.cs | 35 + .../Users/Dtos/LoginOutput.cs | 15 + .../Users/Dtos/LoginStsResponse.cs | 21 + .../Users/Dtos/PagingUserListInput.cs | 10 + .../Users/Dtos/UpdateUserInput.cs | 11 + .../Users/IAccountAppService.cs | 12 + .../Users/IUserAppService.cs | 51 + ...onAbpApplicationConfigurationAppService.cs | 339 +++++ .../AuditLogs/AuditLogAppService.cs | 54 + .../BasicManagementAppService.cs | 12 + ...cManagementApplicationAutoMapperProfile.cs | 23 + .../BasicManagementApplicationModule.cs | 65 + .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 + .../GlobalUsings.cs | 31 + ....AbpPro.BasicManagement.Application.csproj | 25 + .../OrganizationUnitAppService.cs | 198 +++ .../Roles/RoleAppService.cs | 87 ++ .../Roles/RolePermissionAppService.cs | 120 ++ .../Settings/SettingAppService.cs | 97 ++ .../Tenants/VoloTenantAppService.cs | 73 + .../Users/AccountAppService.cs | 103 ++ .../Users/UserAppService.cs | 154 ++ .../BasicManagementConsts.cs | 9 + .../BasicManagementDomainSharedModule.cs | 39 + .../BasicManagementErrorCodes.cs | 8 + .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 + .../GlobalUsings.cs | 19 + ...bpPro.BasicManagement.Domain.Shared.csproj | 27 + .../Localization/BasicManagement/ar.json | 7 + .../Localization/BasicManagement/cs.json | 7 + .../Localization/BasicManagement/de-DE.json | 7 + .../Localization/BasicManagement/en-GB.json | 7 + .../Localization/BasicManagement/en.json | 21 + .../Localization/BasicManagement/es.json | 7 + .../Localization/BasicManagement/fi.json | 7 + .../Localization/BasicManagement/fr.json | 7 + .../Localization/BasicManagement/hi.json | 7 + .../Localization/BasicManagement/hu.json | 7 + .../Localization/BasicManagement/is.json | 7 + .../Localization/BasicManagement/it.json | 7 + .../Localization/BasicManagement/nl.json | 7 + .../Localization/BasicManagement/pl-PL.json | 7 + .../Localization/BasicManagement/pt-BR.json | 7 + .../Localization/BasicManagement/ro-RO.json | 7 + .../Localization/BasicManagement/ru.json | 7 + .../Localization/BasicManagement/sk.json | 7 + .../Localization/BasicManagement/sl.json | 7 + .../Localization/BasicManagement/tr.json | 7 + .../Localization/BasicManagement/vi.json | 7 + .../Localization/BasicManagement/zh-Hans.json | 22 + .../Localization/BasicManagement/zh-Hant.json | 7 + .../Localization/BasicManagementResource.cs | 7 + .../BasicManagementDbProperties.cs | 10 + .../BasicManagementDomainModule.cs | 23 + .../Data/AbpProDbMigrationService.cs | 213 +++ .../Data/IAbpProDbSchemaMigrator.cs | 7 + .../Data/NullAbpProDbSchemaMigrator.cs | 15 + .../Seeds/AbpSettingDataSeedContributor.cs | 22 + .../Data/Seeds/UserDataSeedContributor.cs | 37 + .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 + .../GlobalUsings.cs | 12 + .../Lion.AbpPro.BasicManagement.Domain.csproj | 22 + ...asicManagementSettingDefinitionProvider.cs | 62 + .../Settings/BasicManagementSettings.cs | 26 + .../BasicManagementDbContext.cs | 33 + ...agementDbContextModelCreatingExtensions.cs | 18 + ...asicManagementEntityFrameworkCoreModule.cs | 25 + .../IBasicManagementDbContext.cs | 15 + .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 + .../GlobalUsings.cs | 22 + ...BasicManagement.EntityFrameworkCore.csproj | 20 + .../BasicManagementHttpApiClientModule.cs | 26 + .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 + ...BasicManagement.HttpApi.Client.abppkg.json | 3 + ...pPro.BasicManagement.HttpApi.Client.csproj | 18 + .../BasicManagementController.cs | 12 + .../BasicManagementHttpApiModule.cs | 32 + .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 + .../GlobalUsings.cs | 19 + ...Lion.AbpPro.BasicManagement.HttpApi.csproj | 14 + .../Systems/AccountController.cs | 19 + .../Systems/AuditLogController.cs | 20 + .../Systems/OrganizationUnitController.cs | 96 ++ .../Systems/PermissionController.cs | 28 + .../Systems/RoleController.cs | 49 + .../Systems/SettingController.cs | 27 + .../Systems/UserController.cs | 73 + .../Tenants/TenantController.cs | 73 + .../BasicManagementApplicationTestBase.cs | 9 + .../BasicManagementApplicationTestModule.cs | 12 + .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 + ...icManagement.Application.Tests.abppkg.json | 3 + ...o.BasicManagement.Application.Tests.csproj | 14 + .../BasicManagementDomainTestBase.cs | 9 + .../BasicManagementDomainTestModule.cs | 16 + .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 + ...AbpPro.BasicManagement.Domain.Tests.csproj | 13 + .../Samples/SampleManager_Tests.cs | 20 + ...icManagementEntityFrameworkCoreTestBase.cs | 9 + ...ManagementEntityFrameworkCoreTestModule.cs | 42 + .../Samples/SampleRepositoryTests.cs | 11 + .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 + ...anagement.EntityFrameworkCore.Tests.csproj | 16 + .../BasicManagementConsoleApiClientModule.cs | 15 + .../ClientDemoService.cs | 24 + .../ConsoleTestAppHostedService.cs | 40 + ....HttpApi.Client.ConsoleTestApp.abppkg.json | 1 + ...ement.HttpApi.Client.ConsoleTestApp.csproj | 32 + .../Program.cs | 22 + .../appsettings.json | 21 + .../appsettings.secrets.json | 2 + .../BasicManagementDataSeedContributor.cs | 32 + .../BasicManagementTestBase.cs | 59 + .../BasicManagementTestBaseModule.cs | 41 + .../FodyWeavers.xml | 3 + .../FodyWeavers.xsd | 30 + ...bpPro.BasicManagement.TestBase.abppkg.json | 1 + ...ion.AbpPro.BasicManagement.TestBase.csproj | 21 + .../Samples/SampleRepository_Tests.cs | 26 + .../Security/FakeCurrentPrincipalAccessor.cs | 42 + .../HttpClientNameConsts.cs | 16 - 199 files changed, 9841 insertions(+), 16 deletions(-) create mode 100644 aspnet-core/modules/BasicManagement/Lion.AbpPro.BasicManagement.sln create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/BasicManagementHttpApiHostModule.cs create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Controllers/HomeController.cs create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Dockerfile create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/EntityFrameworkCore/BasicManagementHttpApiHostMigrationsDbContext.cs create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/EntityFrameworkCore/BasicManagementHttpApiHostMigrationsDbContextFactory.cs create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/FodyWeavers.xml create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/FodyWeavers.xsd create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Lion.AbpPro.BasicManagement.HttpApi.Host.csproj create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Logs/logs-20220823.txt create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Logs/logs.txt create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Migrations/20220823141140_Init.Designer.cs create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Migrations/20220823141140_Init.cs create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Migrations/BasicManagementHttpApiHostMigrationsDbContextModelSnapshot.cs create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Program.cs create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Properties/launchSettings.json create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/SerilogToEsExtensions.cs create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Startup.cs create mode 100644 aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/appsettings.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/AuditLogs/GetAuditLogPageListOutput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/AuditLogs/IAuditLogAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/AuditLogs/PagingAuditLogListInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/BasicManagementApplicationContractsModule.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/BasicManagementRemoteServiceConsts.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/ConfigurationOptions/JwtOptions.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/FodyWeavers.xml create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/FodyWeavers.xsd create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/GlobalUsings.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Lion.AbpPro.BasicManagement.Application.Contracts.csproj create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/AddRoleToOrganizationUnitInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/AddUserToOrganizationUnitInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/CreateOrganizationUnitInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetOrganizationUnitRoleInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetOrganizationUnitRoleOutput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetOrganizationUnitUserInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetOrganizationUnitUserOutput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetUnAddRoleInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetUnAddRoleOutput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetUnAddUserInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetUnAddUserOutput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/OrganizationUnitDto.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/RemoveRoleToOrganizationUnitInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/RemoveUserToOrganizationUnitInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/TreeOutput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/UpdateOrganizationUnitInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/IOrganizationUnitAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Permissions/BasicManagementPermissionDefinitionProvider.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Permissions/BasicManagementPermissions.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/GetPermissionInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/PagingRoleListInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/PermissionOutput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/UpdateRoleInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/UpdateRolePermissionsInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/IRoleAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/IRolePermissionAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/PermissionOptions.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Settings/Dtos/SettingOutput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Settings/Dtos/UpdateSettingInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Settings/ISettingAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/FindTenantByNameInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/PagingTenantInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/UpdateDefaultConnectionStringInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/UpdateTenantInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/IVoloTenantAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/ExportIdentityUserOutput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/GithubAccessTokenResponse.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LockUserInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginGithubResponse.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginOutput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginStsResponse.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/PagingUserListInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/UpdateUserInput.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/IAccountAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/IUserAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/ApplicationConfigurations/LionAbpApplicationConfigurationAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/AuditLogs/AuditLogAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/BasicManagementAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/BasicManagementApplicationAutoMapperProfile.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/BasicManagementApplicationModule.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/FodyWeavers.xml create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/FodyWeavers.xsd create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/GlobalUsings.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Lion.AbpPro.BasicManagement.Application.csproj create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/OrganizationUnits/OrganizationUnitAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Roles/RoleAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Roles/RolePermissionAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Settings/SettingAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Tenants/VoloTenantAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Users/AccountAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Users/UserAppService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/BasicManagementConsts.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/BasicManagementDomainSharedModule.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/BasicManagementErrorCodes.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/FodyWeavers.xml create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/FodyWeavers.xsd create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/GlobalUsings.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Lion.AbpPro.BasicManagement.Domain.Shared.csproj create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/ar.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/cs.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/de-DE.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/en-GB.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/en.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/es.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/fi.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/fr.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/hi.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/hu.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/is.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/it.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/nl.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/pl-PL.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/pt-BR.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/ro-RO.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/ru.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/sk.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/sl.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/tr.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/vi.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/zh-Hans.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/zh-Hant.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagementResource.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/BasicManagementDbProperties.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/BasicManagementDomainModule.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/AbpProDbMigrationService.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/IAbpProDbSchemaMigrator.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/NullAbpProDbSchemaMigrator.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/Seeds/AbpSettingDataSeedContributor.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/Seeds/UserDataSeedContributor.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/FodyWeavers.xml create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/FodyWeavers.xsd create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/GlobalUsings.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Lion.AbpPro.BasicManagement.Domain.csproj create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Settings/BasicManagementSettingDefinitionProvider.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Settings/BasicManagementSettings.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/EntityFrameworkCore/BasicManagementDbContext.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/EntityFrameworkCore/BasicManagementDbContextModelCreatingExtensions.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/EntityFrameworkCore/BasicManagementEntityFrameworkCoreModule.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/EntityFrameworkCore/IBasicManagementDbContext.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/FodyWeavers.xml create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/FodyWeavers.xsd create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/GlobalUsings.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/Lion.AbpPro.BasicManagement.EntityFrameworkCore.csproj create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/BasicManagementHttpApiClientModule.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/FodyWeavers.xml create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/FodyWeavers.xsd create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/Lion.AbpPro.BasicManagement.HttpApi.Client.abppkg.json create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/Lion.AbpPro.BasicManagement.HttpApi.Client.csproj create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/BasicManagementController.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/BasicManagementHttpApiModule.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/FodyWeavers.xml create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/FodyWeavers.xsd create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/GlobalUsings.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Lion.AbpPro.BasicManagement.HttpApi.csproj create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/AccountController.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/AuditLogController.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/OrganizationUnitController.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/PermissionController.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/RoleController.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/SettingController.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/UserController.cs create mode 100644 aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Tenants/TenantController.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/BasicManagementApplicationTestBase.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/BasicManagementApplicationTestModule.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/FodyWeavers.xml create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/FodyWeavers.xsd create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/Lion.AbpPro.BasicManagement.Application.Tests.abppkg.json create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/Lion.AbpPro.BasicManagement.Application.Tests.csproj create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/BasicManagementDomainTestBase.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/BasicManagementDomainTestModule.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/FodyWeavers.xml create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/FodyWeavers.xsd create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/Lion.AbpPro.BasicManagement.Domain.Tests.csproj create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/Samples/SampleManager_Tests.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/EntityFrameworkCore/BasicManagementEntityFrameworkCoreTestBase.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/EntityFrameworkCore/BasicManagementEntityFrameworkCoreTestModule.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/FodyWeavers.xml create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/FodyWeavers.xsd create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests.csproj create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/BasicManagementConsoleApiClientModule.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/ConsoleTestAppHostedService.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp.abppkg.json create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp.csproj create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/Program.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/appsettings.json create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/appsettings.secrets.json create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/BasicManagementDataSeedContributor.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/BasicManagementTestBase.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/BasicManagementTestBaseModule.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/FodyWeavers.xml create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/FodyWeavers.xsd create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/Lion.AbpPro.BasicManagement.TestBase.abppkg.json create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/Lion.AbpPro.BasicManagement.TestBase.csproj create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/Samples/SampleRepository_Tests.cs create mode 100644 aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/Security/FakeCurrentPrincipalAccessor.cs delete mode 100644 aspnet-core/services/src/Lion.AbpPro.Application/HttpClientNameConsts.cs diff --git a/aspnet-core/Lion.AbpPro.sln b/aspnet-core/Lion.AbpPro.sln index 9a3a9483..1cf8bff9 100644 --- a/aspnet-core/Lion.AbpPro.sln +++ b/aspnet-core/Lion.AbpPro.sln @@ -173,6 +173,40 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{7FF93622-9 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.NotificationManagement.HttpApi.Host", "modules\NotificationManagement\host\Lion.AbpPro.NotificationManagement.HttpApi.Host\Lion.AbpPro.NotificationManagement.HttpApi.Host.csproj", "{FA5E029F-1826-4C1E-8AED-6FA5C3362A3A}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BasicManagement", "BasicManagement", "{C2FE6BA0-3DE5-403F-A91F-BCB9ADA5B068}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{4E6D558B-CA6D-4133-8701-FDC6F245DA37}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{AF419621-2F14-45CE-AF1B-B688E1B21BCB}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{6464122A-1DC2-45E8-B599-4B5C32FBC85B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.BasicManagement.HttpApi.Client", "modules\BasicManagement\src\Lion.AbpPro.BasicManagement.HttpApi.Client\Lion.AbpPro.BasicManagement.HttpApi.Client.csproj", "{97EE641B-69AB-40A6-B20B-4A7FD3B2681E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.BasicManagement.HttpApi", "modules\BasicManagement\src\Lion.AbpPro.BasicManagement.HttpApi\Lion.AbpPro.BasicManagement.HttpApi.csproj", "{0EE57014-A75A-4E54-97B6-785C2F874EA4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.BasicManagement.EntityFrameworkCore", "modules\BasicManagement\src\Lion.AbpPro.BasicManagement.EntityFrameworkCore\Lion.AbpPro.BasicManagement.EntityFrameworkCore.csproj", "{4F5841EB-A0C9-4E89-AA02-376F2190F68D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.BasicManagement.Domain.Shared", "modules\BasicManagement\src\Lion.AbpPro.BasicManagement.Domain.Shared\Lion.AbpPro.BasicManagement.Domain.Shared.csproj", "{C4E1B96F-7905-48ED-AD72-98F5983E65A5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.BasicManagement.Domain", "modules\BasicManagement\src\Lion.AbpPro.BasicManagement.Domain\Lion.AbpPro.BasicManagement.Domain.csproj", "{95385FBA-53E4-4144-B6FE-B5561081B9F9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.BasicManagement.Application.Contracts", "modules\BasicManagement\src\Lion.AbpPro.BasicManagement.Application.Contracts\Lion.AbpPro.BasicManagement.Application.Contracts.csproj", "{4D808FF7-C204-40F1-881D-21B27D8D290E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.BasicManagement.Application", "modules\BasicManagement\src\Lion.AbpPro.BasicManagement.Application\Lion.AbpPro.BasicManagement.Application.csproj", "{354E0590-F6B2-43F5-A563-F543C498F3EA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.BasicManagement.TestBase", "modules\BasicManagement\test\Lion.AbpPro.BasicManagement.TestBase\Lion.AbpPro.BasicManagement.TestBase.csproj", "{47F2E236-E6BE-4F52-8389-5CF03BDC9B78}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp", "modules\BasicManagement\test\Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp\Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp.csproj", "{1368FE7F-E1A7-4FD5-AF05-CFA59C0E0E69}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests", "modules\BasicManagement\test\Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests\Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests.csproj", "{9ECCC0EC-CC5A-4E49-96BE-3F2B15CCD94D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.BasicManagement.Domain.Tests", "modules\BasicManagement\test\Lion.AbpPro.BasicManagement.Domain.Tests\Lion.AbpPro.BasicManagement.Domain.Tests.csproj", "{2BACB63E-2830-4371-AEBB-E8089E3EB316}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.BasicManagement.Application.Tests", "modules\BasicManagement\test\Lion.AbpPro.BasicManagement.Application.Tests\Lion.AbpPro.BasicManagement.Application.Tests.csproj", "{19A28EF9-A5AE-4EC5-851C-D2547E5FE29C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.BasicManagement.HttpApi.Host", "modules\BasicManagement\host\Lion.AbpPro.BasicManagement.HttpApi.Host\Lion.AbpPro.BasicManagement.HttpApi.Host.csproj", "{26765303-B9D8-457B-915C-ED869CEEB210}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -407,6 +441,58 @@ Global {FA5E029F-1826-4C1E-8AED-6FA5C3362A3A}.Debug|Any CPU.Build.0 = Debug|Any CPU {FA5E029F-1826-4C1E-8AED-6FA5C3362A3A}.Release|Any CPU.ActiveCfg = Release|Any CPU {FA5E029F-1826-4C1E-8AED-6FA5C3362A3A}.Release|Any CPU.Build.0 = Release|Any CPU + {97EE641B-69AB-40A6-B20B-4A7FD3B2681E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {97EE641B-69AB-40A6-B20B-4A7FD3B2681E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {97EE641B-69AB-40A6-B20B-4A7FD3B2681E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {97EE641B-69AB-40A6-B20B-4A7FD3B2681E}.Release|Any CPU.Build.0 = Release|Any CPU + {0EE57014-A75A-4E54-97B6-785C2F874EA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0EE57014-A75A-4E54-97B6-785C2F874EA4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0EE57014-A75A-4E54-97B6-785C2F874EA4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0EE57014-A75A-4E54-97B6-785C2F874EA4}.Release|Any CPU.Build.0 = Release|Any CPU + {4F5841EB-A0C9-4E89-AA02-376F2190F68D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4F5841EB-A0C9-4E89-AA02-376F2190F68D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4F5841EB-A0C9-4E89-AA02-376F2190F68D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4F5841EB-A0C9-4E89-AA02-376F2190F68D}.Release|Any CPU.Build.0 = Release|Any CPU + {C4E1B96F-7905-48ED-AD72-98F5983E65A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C4E1B96F-7905-48ED-AD72-98F5983E65A5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C4E1B96F-7905-48ED-AD72-98F5983E65A5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C4E1B96F-7905-48ED-AD72-98F5983E65A5}.Release|Any CPU.Build.0 = Release|Any CPU + {95385FBA-53E4-4144-B6FE-B5561081B9F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {95385FBA-53E4-4144-B6FE-B5561081B9F9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {95385FBA-53E4-4144-B6FE-B5561081B9F9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {95385FBA-53E4-4144-B6FE-B5561081B9F9}.Release|Any CPU.Build.0 = Release|Any CPU + {4D808FF7-C204-40F1-881D-21B27D8D290E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4D808FF7-C204-40F1-881D-21B27D8D290E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4D808FF7-C204-40F1-881D-21B27D8D290E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4D808FF7-C204-40F1-881D-21B27D8D290E}.Release|Any CPU.Build.0 = Release|Any CPU + {354E0590-F6B2-43F5-A563-F543C498F3EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {354E0590-F6B2-43F5-A563-F543C498F3EA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {354E0590-F6B2-43F5-A563-F543C498F3EA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {354E0590-F6B2-43F5-A563-F543C498F3EA}.Release|Any CPU.Build.0 = Release|Any CPU + {47F2E236-E6BE-4F52-8389-5CF03BDC9B78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {47F2E236-E6BE-4F52-8389-5CF03BDC9B78}.Debug|Any CPU.Build.0 = Debug|Any CPU + {47F2E236-E6BE-4F52-8389-5CF03BDC9B78}.Release|Any CPU.ActiveCfg = Release|Any CPU + {47F2E236-E6BE-4F52-8389-5CF03BDC9B78}.Release|Any CPU.Build.0 = Release|Any CPU + {1368FE7F-E1A7-4FD5-AF05-CFA59C0E0E69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1368FE7F-E1A7-4FD5-AF05-CFA59C0E0E69}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1368FE7F-E1A7-4FD5-AF05-CFA59C0E0E69}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1368FE7F-E1A7-4FD5-AF05-CFA59C0E0E69}.Release|Any CPU.Build.0 = Release|Any CPU + {9ECCC0EC-CC5A-4E49-96BE-3F2B15CCD94D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9ECCC0EC-CC5A-4E49-96BE-3F2B15CCD94D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9ECCC0EC-CC5A-4E49-96BE-3F2B15CCD94D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9ECCC0EC-CC5A-4E49-96BE-3F2B15CCD94D}.Release|Any CPU.Build.0 = Release|Any CPU + {2BACB63E-2830-4371-AEBB-E8089E3EB316}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2BACB63E-2830-4371-AEBB-E8089E3EB316}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2BACB63E-2830-4371-AEBB-E8089E3EB316}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2BACB63E-2830-4371-AEBB-E8089E3EB316}.Release|Any CPU.Build.0 = Release|Any CPU + {19A28EF9-A5AE-4EC5-851C-D2547E5FE29C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {19A28EF9-A5AE-4EC5-851C-D2547E5FE29C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {19A28EF9-A5AE-4EC5-851C-D2547E5FE29C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {19A28EF9-A5AE-4EC5-851C-D2547E5FE29C}.Release|Any CPU.Build.0 = Release|Any CPU + {26765303-B9D8-457B-915C-ED869CEEB210}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {26765303-B9D8-457B-915C-ED869CEEB210}.Debug|Any CPU.Build.0 = Debug|Any CPU + {26765303-B9D8-457B-915C-ED869CEEB210}.Release|Any CPU.ActiveCfg = Release|Any CPU + {26765303-B9D8-457B-915C-ED869CEEB210}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -488,6 +574,23 @@ Global {7971DF5A-B001-4751-8F40-D7752C612BF1} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} {7FF93622-971D-4B30-A5FC-72D729D26E29} = {EB2B8705-18E7-49E1-A565-93A6DE5570D5} {FA5E029F-1826-4C1E-8AED-6FA5C3362A3A} = {7FF93622-971D-4B30-A5FC-72D729D26E29} + {C2FE6BA0-3DE5-403F-A91F-BCB9ADA5B068} = {F8A8EB2A-2D4B-464F-9A13-F8F7B6A8FAA3} + {4E6D558B-CA6D-4133-8701-FDC6F245DA37} = {C2FE6BA0-3DE5-403F-A91F-BCB9ADA5B068} + {AF419621-2F14-45CE-AF1B-B688E1B21BCB} = {C2FE6BA0-3DE5-403F-A91F-BCB9ADA5B068} + {6464122A-1DC2-45E8-B599-4B5C32FBC85B} = {C2FE6BA0-3DE5-403F-A91F-BCB9ADA5B068} + {97EE641B-69AB-40A6-B20B-4A7FD3B2681E} = {AF419621-2F14-45CE-AF1B-B688E1B21BCB} + {0EE57014-A75A-4E54-97B6-785C2F874EA4} = {AF419621-2F14-45CE-AF1B-B688E1B21BCB} + {4F5841EB-A0C9-4E89-AA02-376F2190F68D} = {AF419621-2F14-45CE-AF1B-B688E1B21BCB} + {C4E1B96F-7905-48ED-AD72-98F5983E65A5} = {AF419621-2F14-45CE-AF1B-B688E1B21BCB} + {95385FBA-53E4-4144-B6FE-B5561081B9F9} = {AF419621-2F14-45CE-AF1B-B688E1B21BCB} + {4D808FF7-C204-40F1-881D-21B27D8D290E} = {AF419621-2F14-45CE-AF1B-B688E1B21BCB} + {354E0590-F6B2-43F5-A563-F543C498F3EA} = {AF419621-2F14-45CE-AF1B-B688E1B21BCB} + {47F2E236-E6BE-4F52-8389-5CF03BDC9B78} = {6464122A-1DC2-45E8-B599-4B5C32FBC85B} + {1368FE7F-E1A7-4FD5-AF05-CFA59C0E0E69} = {6464122A-1DC2-45E8-B599-4B5C32FBC85B} + {9ECCC0EC-CC5A-4E49-96BE-3F2B15CCD94D} = {6464122A-1DC2-45E8-B599-4B5C32FBC85B} + {2BACB63E-2830-4371-AEBB-E8089E3EB316} = {6464122A-1DC2-45E8-B599-4B5C32FBC85B} + {19A28EF9-A5AE-4EC5-851C-D2547E5FE29C} = {6464122A-1DC2-45E8-B599-4B5C32FBC85B} + {26765303-B9D8-457B-915C-ED869CEEB210} = {4E6D558B-CA6D-4133-8701-FDC6F245DA37} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F} diff --git a/aspnet-core/modules/BasicManagement/Lion.AbpPro.BasicManagement.sln b/aspnet-core/modules/BasicManagement/Lion.AbpPro.BasicManagement.sln new file mode 100644 index 00000000..06bc99b8 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/Lion.AbpPro.BasicManagement.sln @@ -0,0 +1,118 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29001.49 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.Domain.Shared", "src\Lion.AbpPro.BasicManagement.Domain.Shared\Lion.AbpPro.BasicManagement.Domain.Shared.csproj", "{D64C1577-4929-4B60-939E-96DE1534891A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.Domain", "src\Lion.AbpPro.BasicManagement.Domain\Lion.AbpPro.BasicManagement.Domain.csproj", "{F2840BC7-0188-4606-9126-DADD0F5ABF7A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.Application.Contracts", "src\Lion.AbpPro.BasicManagement.Application.Contracts\Lion.AbpPro.BasicManagement.Application.Contracts.csproj", "{BD65D04F-08D5-40C1-8C24-77CA0BACB877}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.Application", "src\Lion.AbpPro.BasicManagement.Application\Lion.AbpPro.BasicManagement.Application.csproj", "{78040F9E-3501-4A40-82DF-00A597710F35}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{649A3FFA-182F-4E56-9717-E6A9A2BEC545}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{E400416D-2895-4512-9D17-90681EEC7E0A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.EntityFrameworkCore", "src\Lion.AbpPro.BasicManagement.EntityFrameworkCore\Lion.AbpPro.BasicManagement.EntityFrameworkCore.csproj", "{0CE86223-D31D-4315-A1F5-87BA3EE1B844}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.HttpApi", "src\Lion.AbpPro.BasicManagement.HttpApi\Lion.AbpPro.BasicManagement.HttpApi.csproj", "{077AA5F8-8B61-420C-A6B5-0150A66FDB34}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.HttpApi.Client", "src\Lion.AbpPro.BasicManagement.HttpApi.Client\Lion.AbpPro.BasicManagement.HttpApi.Client.csproj", "{36E2735F-CEAB-44C8-A6D1-2CDAFF399751}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.TestBase", "test\Lion.AbpPro.BasicManagement.TestBase\Lion.AbpPro.BasicManagement.TestBase.csproj", "{C5BB573D-3030-4BCB-88B7-F6A85C32766C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests", "test\Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests\Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests.csproj", "{527F645C-C1FC-406E-8479-81386C8ECF13}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.Domain.Tests", "test\Lion.AbpPro.BasicManagement.Domain.Tests\Lion.AbpPro.BasicManagement.Domain.Tests.csproj", "{E60895E5-79C4-447D-88B7-85CB5BA336A4}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.Application.Tests", "test\Lion.AbpPro.BasicManagement.Application.Tests\Lion.AbpPro.BasicManagement.Application.Tests.csproj", "{90CB5DC4-C040-45C7-8900-9688B26405BC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.HttpApi.Host", "host\Lion.AbpPro.BasicManagement.HttpApi.Host\Lion.AbpPro.BasicManagement.HttpApi.Host.csproj", "{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp", "test\Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp\Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp.csproj", "{1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D64C1577-4929-4B60-939E-96DE1534891A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D64C1577-4929-4B60-939E-96DE1534891A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D64C1577-4929-4B60-939E-96DE1534891A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D64C1577-4929-4B60-939E-96DE1534891A}.Release|Any CPU.Build.0 = Release|Any CPU + {F2840BC7-0188-4606-9126-DADD0F5ABF7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F2840BC7-0188-4606-9126-DADD0F5ABF7A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F2840BC7-0188-4606-9126-DADD0F5ABF7A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F2840BC7-0188-4606-9126-DADD0F5ABF7A}.Release|Any CPU.Build.0 = Release|Any CPU + {BD65D04F-08D5-40C1-8C24-77CA0BACB877}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BD65D04F-08D5-40C1-8C24-77CA0BACB877}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BD65D04F-08D5-40C1-8C24-77CA0BACB877}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BD65D04F-08D5-40C1-8C24-77CA0BACB877}.Release|Any CPU.Build.0 = Release|Any CPU + {78040F9E-3501-4A40-82DF-00A597710F35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {78040F9E-3501-4A40-82DF-00A597710F35}.Debug|Any CPU.Build.0 = Debug|Any CPU + {78040F9E-3501-4A40-82DF-00A597710F35}.Release|Any CPU.ActiveCfg = Release|Any CPU + {78040F9E-3501-4A40-82DF-00A597710F35}.Release|Any CPU.Build.0 = Release|Any CPU + {0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Release|Any CPU.Build.0 = Release|Any CPU + {077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Debug|Any CPU.Build.0 = Debug|Any CPU + {077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Release|Any CPU.ActiveCfg = Release|Any CPU + {077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Release|Any CPU.Build.0 = Release|Any CPU + {36E2735F-CEAB-44C8-A6D1-2CDAFF399751}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {36E2735F-CEAB-44C8-A6D1-2CDAFF399751}.Debug|Any CPU.Build.0 = Debug|Any CPU + {36E2735F-CEAB-44C8-A6D1-2CDAFF399751}.Release|Any CPU.ActiveCfg = Release|Any CPU + {36E2735F-CEAB-44C8-A6D1-2CDAFF399751}.Release|Any CPU.Build.0 = Release|Any CPU + {C5BB573D-3030-4BCB-88B7-F6A85C32766C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C5BB573D-3030-4BCB-88B7-F6A85C32766C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C5BB573D-3030-4BCB-88B7-F6A85C32766C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C5BB573D-3030-4BCB-88B7-F6A85C32766C}.Release|Any CPU.Build.0 = Release|Any CPU + {527F645C-C1FC-406E-8479-81386C8ECF13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {527F645C-C1FC-406E-8479-81386C8ECF13}.Debug|Any CPU.Build.0 = Debug|Any CPU + {527F645C-C1FC-406E-8479-81386C8ECF13}.Release|Any CPU.ActiveCfg = Release|Any CPU + {527F645C-C1FC-406E-8479-81386C8ECF13}.Release|Any CPU.Build.0 = Release|Any CPU + {E60895E5-79C4-447D-88B7-85CB5BA336A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E60895E5-79C4-447D-88B7-85CB5BA336A4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E60895E5-79C4-447D-88B7-85CB5BA336A4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E60895E5-79C4-447D-88B7-85CB5BA336A4}.Release|Any CPU.Build.0 = Release|Any CPU + {90CB5DC4-C040-45C7-8900-9688B26405BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {90CB5DC4-C040-45C7-8900-9688B26405BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {90CB5DC4-C040-45C7-8900-9688B26405BC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {90CB5DC4-C040-45C7-8900-9688B26405BC}.Release|Any CPU.Build.0 = Release|Any CPU + {37B135B0-DAFE-4616-B25C-1BDF32FC44A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {37B135B0-DAFE-4616-B25C-1BDF32FC44A2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {37B135B0-DAFE-4616-B25C-1BDF32FC44A2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {37B135B0-DAFE-4616-B25C-1BDF32FC44A2}.Release|Any CPU.Build.0 = Release|Any CPU + {1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {D64C1577-4929-4B60-939E-96DE1534891A} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} + {F2840BC7-0188-4606-9126-DADD0F5ABF7A} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} + {BD65D04F-08D5-40C1-8C24-77CA0BACB877} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} + {78040F9E-3501-4A40-82DF-00A597710F35} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} + {0CE86223-D31D-4315-A1F5-87BA3EE1B844} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} + {077AA5F8-8B61-420C-A6B5-0150A66FDB34} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} + {36E2735F-CEAB-44C8-A6D1-2CDAFF399751} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} + {C5BB573D-3030-4BCB-88B7-F6A85C32766C} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} + {527F645C-C1FC-406E-8479-81386C8ECF13} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} + {E60895E5-79C4-447D-88B7-85CB5BA336A4} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} + {90CB5DC4-C040-45C7-8900-9688B26405BC} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} + {37B135B0-DAFE-4616-B25C-1BDF32FC44A2} = {E400416D-2895-4512-9D17-90681EEC7E0A} + {1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD} + EndGlobalSection +EndGlobal diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/BasicManagementHttpApiHostModule.cs b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/BasicManagementHttpApiHostModule.cs new file mode 100644 index 00000000..9cc9484e --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/BasicManagementHttpApiHostModule.cs @@ -0,0 +1,223 @@ +using System.Text; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.DataProtection; +using Lion.AbpPro.BasicManagement.EntityFrameworkCore; +using Lion.AbpPro.Shared.Hosting.Microservices; +using Lion.AbpPro.Shared.Hosting.Microservices.Swaggers; +using Microsoft.AspNetCore.Mvc; +using Microsoft.IdentityModel.Tokens; +using StackExchange.Redis; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerUI; +using Volo.Abp; +using Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy; +using Volo.Abp.AspNetCore.Serilog; +using Volo.Abp.Autofac; +using Volo.Abp.Caching; +using Volo.Abp.Caching.StackExchangeRedis; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore.MySQL; +using Volo.Abp.Modularity; +using Volo.Abp.Swashbuckle; + +namespace Lion.AbpPro.BasicManagement; + +[DependsOn( + typeof(BasicManagementApplicationModule), + typeof(BasicManagementEntityFrameworkCoreModule), + typeof(BasicManagementHttpApiModule), + typeof(AbpAspNetCoreMvcUiMultiTenancyModule), + typeof(AbpAutofacModule), + typeof(AbpCachingStackExchangeRedisModule), + typeof(AbpEntityFrameworkCoreMySQLModule), + typeof(AbpAspNetCoreSerilogModule), + typeof(AbpSwashbuckleModule), + typeof(SharedHostingMicroserviceModule) +)] +public class BasicManagementHttpApiHostModule : AbpModule +{ + private const string DefaultCorsPolicyName = "Default"; + + public override void ConfigureServices(ServiceConfigurationContext context) + { + ConfigureCache(context); + ConfigureSwaggerServices(context); + ConfigureJwtAuthentication(context); + Configure(options => { options.UseMySQL(); }); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var app = context.GetApplicationBuilder(); + + app.UseHttpsRedirection(); + app.UseCorrelationId(); + app.UseStaticFiles(); + app.UseRouting(); + app.UseCors(); + app.UseAuthentication(); + app.UseMultiTenancy(); + app.UseAbpRequestLocalization(); + app.UseAuthorization(); + app.UseSwagger(); + app.UseAbpSwaggerUI(options => + { + options.SwaggerEndpoint("/swagger/BasicManagement/swagger.json", "BasicManagement API"); + options.DocExpansion(DocExpansion.None); + options.DefaultModelsExpandDepth(-1); + }); + app.UseAuditing(); + app.UseAbpSerilogEnrichers(); + app.UseConfiguredEndpoints(); + } + + /// + /// Redis缓存 + /// + private void ConfigureCache(ServiceConfigurationContext context) + { + Configure( + options => { options.KeyPrefix = "AbpPro:"; }); + var configuration = context.Services.GetConfiguration(); + var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]); + context.Services + .AddDataProtection() + .PersistKeysToStackExchangeRedis(redis, "AbpPro-Protection-Keys"); + } + + private static void ConfigureSwaggerServices(ServiceConfigurationContext context) + { + context.Services.AddSwaggerGen( + options => + { + // 文件下载类型 + options.MapType(() => new OpenApiSchema() { Type = "file" }); + + options.SwaggerDoc("BasicManagement", + new OpenApiInfo { Title = "BasicManagement API", Version = "v1" }); + options.DocInclusionPredicate((docName, description) => true); + options.EnableAnnotations(); // 启用注解 + options.DocumentFilter(); + options.SchemaFilter(); + // 加载所有xml注释,这里会导致swagger加载有点缓慢 + var xmlPaths = Directory.GetFiles(AppContext.BaseDirectory, "*.xml"); + foreach (var xml in xmlPaths) + { + options.IncludeXmlComments(xml, true); + } + + options.AddSecurityDefinition(JwtBearerDefaults.AuthenticationScheme, + new OpenApiSecurityScheme() + { + Description = "直接在下框输入JWT生成的Token", + Name = "Authorization", + In = ParameterLocation.Header, + Type = SecuritySchemeType.Http, + Scheme = JwtBearerDefaults.AuthenticationScheme, + BearerFormat = "JWT" + }); + options.AddSecurityRequirement(new OpenApiSecurityRequirement + { + { + new OpenApiSecurityScheme + { + Reference = new OpenApiReference + { + Type = ReferenceType.SecurityScheme, Id = "Bearer" + } + }, + new List() + } + }); + + options.AddSecurityDefinition("ApiKey", new OpenApiSecurityScheme() + { + Type = SecuritySchemeType.ApiKey, + In = ParameterLocation.Header, + Name = "Accept-Language", + Description = "多语言设置,系统预设语言有zh-Hans、en,默认为zh-Hans", + }); + + options.AddSecurityRequirement(new OpenApiSecurityRequirement + { + { + new OpenApiSecurityScheme + { + Reference = new OpenApiReference + { Type = ReferenceType.SecurityScheme, Id = "ApiKey" } + }, + Array.Empty() + } + }); + }); + } + + /// + /// 配置JWT + /// + private void ConfigureJwtAuthentication(ServiceConfigurationContext context) + { + var configuration = context.Services.GetConfiguration(); + context.Services.AddAuthentication(options => + { + options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; + }) + .AddJwtBearer(options => + { + options.TokenValidationParameters = + new TokenValidationParameters() + { + // 是否开启签名认证 + ValidateIssuerSigningKey = true, + ValidateIssuer = true, + ValidateAudience = true, + ValidateLifetime = true, + //ClockSkew = TimeSpan.Zero, + ValidIssuer = configuration["Jwt:Issuer"], + ValidAudience = configuration["Jwt:Audience"], + IssuerSigningKey = + new SymmetricSecurityKey( + Encoding.ASCII.GetBytes(configuration["Jwt:SecurityKey"])) + }; + + options.Events = new JwtBearerEvents + { + OnMessageReceived = currentContext => + { + var path = currentContext.HttpContext.Request.Path; + if (path.StartsWithSegments("/login")) + { + return Task.CompletedTask; + } + + var accessToken = string.Empty; + if (currentContext.HttpContext.Request.Headers.ContainsKey("Authorization")) + { + accessToken = currentContext.HttpContext.Request.Headers["Authorization"]; + if (!string.IsNullOrWhiteSpace(accessToken)) + { + accessToken = accessToken.Split(" ").LastOrDefault(); + } + } + + if (accessToken.IsNullOrWhiteSpace()) + { + accessToken = currentContext.Request.Query["access_token"].FirstOrDefault(); + } + + if (accessToken.IsNullOrWhiteSpace()) + { + accessToken = currentContext.Request.Cookies[DefaultCorsPolicyName]; + } + + currentContext.Token = accessToken; + currentContext.Request.Headers.Remove("Authorization"); + currentContext.Request.Headers.Add("Authorization", $"Bearer {accessToken}"); + + return Task.CompletedTask; + } + }; + }); + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Controllers/HomeController.cs b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Controllers/HomeController.cs new file mode 100644 index 00000000..8455b54d --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Controllers/HomeController.cs @@ -0,0 +1,12 @@ +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc; + +namespace Lion.AbpPro.BasicManagement.Controllers; + +public class HomeController : AbpController +{ + public ActionResult Index() + { + return Redirect("~/swagger"); + } +} diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Dockerfile b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Dockerfile new file mode 100644 index 00000000..504518f2 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Dockerfile @@ -0,0 +1,18 @@ +FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base +WORKDIR /app +EXPOSE 80 + +FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build +WORKDIR /src +COPY . . +WORKDIR /src/templates/service/host/Lion.AbpPro.BasicManagement.HttpApi.Host +RUN dotnet restore -nowarn:msb3202,nu1503 +RUN dotnet build --no-restore -c Release -o /app + +FROM build AS publish +RUN dotnet publish --no-restore -c Release -o /app + +FROM base AS final +WORKDIR /app +COPY --from=publish /app . +ENTRYPOINT ["dotnet", "Lion.AbpPro.BasicManagement.HttpApi.Host.dll"] diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/EntityFrameworkCore/BasicManagementHttpApiHostMigrationsDbContext.cs b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/EntityFrameworkCore/BasicManagementHttpApiHostMigrationsDbContext.cs new file mode 100644 index 00000000..9a3bd045 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/EntityFrameworkCore/BasicManagementHttpApiHostMigrationsDbContext.cs @@ -0,0 +1,20 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +namespace Lion.AbpPro.BasicManagement.EntityFrameworkCore; + +public class BasicManagementHttpApiHostMigrationsDbContext : AbpDbContext +{ + public BasicManagementHttpApiHostMigrationsDbContext(DbContextOptions options) + : base(options) + { + + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); + + modelBuilder.ConfigureBasicManagement(); + } +} diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/EntityFrameworkCore/BasicManagementHttpApiHostMigrationsDbContextFactory.cs b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/EntityFrameworkCore/BasicManagementHttpApiHostMigrationsDbContextFactory.cs new file mode 100644 index 00000000..28008457 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/EntityFrameworkCore/BasicManagementHttpApiHostMigrationsDbContextFactory.cs @@ -0,0 +1,28 @@ +using System.IO; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Design; +using Microsoft.Extensions.Configuration; + +namespace Lion.AbpPro.BasicManagement.EntityFrameworkCore; + +public class BasicManagementHttpApiHostMigrationsDbContextFactory : IDesignTimeDbContextFactory +{ + public BasicManagementHttpApiHostMigrationsDbContext CreateDbContext(string[] args) + { + var configuration = BuildConfiguration(); + + var builder = new DbContextOptionsBuilder() + .UseMySql(configuration.GetConnectionString("Default"), MySqlServerVersion.LatestSupportedServerVersion); + + return new BasicManagementHttpApiHostMigrationsDbContext(builder.Options); + } + + private static IConfigurationRoot BuildConfiguration() + { + var builder = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json", optional: false); + + return builder.Build(); + } +} diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/FodyWeavers.xml b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/FodyWeavers.xml new file mode 100644 index 00000000..1715698c --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/FodyWeavers.xsd b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/FodyWeavers.xsd new file mode 100644 index 00000000..ffa6fc4b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Lion.AbpPro.BasicManagement.HttpApi.Host.csproj b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Lion.AbpPro.BasicManagement.HttpApi.Host.csproj new file mode 100644 index 00000000..babbab88 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Lion.AbpPro.BasicManagement.HttpApi.Host.csproj @@ -0,0 +1,43 @@ + + + + net6.0 + Lion.AbpPro.BasicManagement + true + Lion.AbpPro.BasicManagement-c2d31439-b723-48e2-b061-5ebd7aeb6010 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Logs/logs-20220823.txt b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Logs/logs-20220823.txt new file mode 100644 index 00000000..cc20b243 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Logs/logs-20220823.txt @@ -0,0 +1,876 @@ +2022-08-23 22:20:03.435 +08:00 [INF] Loaded ABP modules: +2022-08-23 22:20:03.463 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementHttpApiHostModule +2022-08-23 22:20:03.464 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementApplicationModule +2022-08-23 22:20:03.464 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementDomainModule +2022-08-23 22:20:03.465 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2022-08-23 22:20:03.465 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2022-08-23 22:20:03.466 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2022-08-23 22:20:03.468 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2022-08-23 22:20:03.469 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2022-08-23 22:20:03.481 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2022-08-23 22:20:03.482 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2022-08-23 22:20:03.483 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2022-08-23 22:20:03.484 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2022-08-23 22:20:03.484 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2022-08-23 22:20:03.485 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2022-08-23 22:20:03.485 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2022-08-23 22:20:03.486 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2022-08-23 22:20:03.487 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2022-08-23 22:20:03.487 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2022-08-23 22:20:03.488 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2022-08-23 22:20:03.488 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2022-08-23 22:20:03.489 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2022-08-23 22:20:03.490 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2022-08-23 22:20:03.490 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2022-08-23 22:20:03.491 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2022-08-23 22:20:03.491 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2022-08-23 22:20:03.492 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2022-08-23 22:20:03.492 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2022-08-23 22:20:03.493 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementDomainSharedModule +2022-08-23 22:20:03.493 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2022-08-23 22:20:03.494 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2022-08-23 22:20:03.494 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2022-08-23 22:20:03.495 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2022-08-23 22:20:03.496 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2022-08-23 22:20:03.496 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2022-08-23 22:20:03.497 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2022-08-23 22:20:03.499 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2022-08-23 22:20:03.501 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2022-08-23 22:20:03.502 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2022-08-23 22:20:03.502 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2022-08-23 22:20:03.503 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2022-08-23 22:20:03.503 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2022-08-23 22:20:03.504 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2022-08-23 22:20:03.505 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2022-08-23 22:20:03.505 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2022-08-23 22:20:03.506 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2022-08-23 22:20:03.507 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2022-08-23 22:20:03.507 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2022-08-23 22:20:03.508 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2022-08-23 22:20:03.509 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2022-08-23 22:20:03.509 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2022-08-23 22:20:03.510 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2022-08-23 22:20:03.510 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2022-08-23 22:20:03.511 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2022-08-23 22:20:03.512 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2022-08-23 22:20:03.512 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2022-08-23 22:20:03.515 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementApplicationContractsModule +2022-08-23 22:20:03.515 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2022-08-23 22:20:03.516 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2022-08-23 22:20:03.517 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2022-08-23 22:20:03.517 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2022-08-23 22:20:03.518 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationContractsModule +2022-08-23 22:20:03.519 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationContractsModule +2022-08-23 22:20:03.519 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationContractsModule +2022-08-23 22:20:03.520 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2022-08-23 22:20:03.520 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2022-08-23 22:20:03.521 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2022-08-23 22:20:03.521 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2022-08-23 22:20:03.522 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2022-08-23 22:20:03.523 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2022-08-23 22:20:03.523 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2022-08-23 22:20:03.524 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2022-08-23 22:20:03.524 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2022-08-23 22:20:03.525 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2022-08-23 22:20:03.526 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2022-08-23 22:20:03.526 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2022-08-23 22:20:03.527 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationModule +2022-08-23 22:20:03.527 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationModule +2022-08-23 22:20:03.532 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationModule +2022-08-23 22:20:03.533 +08:00 [INF] - Lion.AbpPro.BasicManagement.EntityFrameworkCore.BasicManagementEntityFrameworkCoreModule +2022-08-23 22:20:03.533 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.AbpEntityFrameworkCoreModule +2022-08-23 22:20:03.534 +08:00 [INF] - Volo.Abp.Identity.EntityFrameworkCore.AbpIdentityEntityFrameworkCoreModule +2022-08-23 22:20:03.534 +08:00 [INF] - Volo.Abp.Users.EntityFrameworkCore.AbpUsersEntityFrameworkCoreModule +2022-08-23 22:20:03.535 +08:00 [INF] - Volo.Abp.PermissionManagement.EntityFrameworkCore.AbpPermissionManagementEntityFrameworkCoreModule +2022-08-23 22:20:03.536 +08:00 [INF] - Volo.Abp.SettingManagement.EntityFrameworkCore.AbpSettingManagementEntityFrameworkCoreModule +2022-08-23 22:20:03.536 +08:00 [INF] - Volo.Abp.BackgroundJobs.EntityFrameworkCore.AbpBackgroundJobsEntityFrameworkCoreModule +2022-08-23 22:20:03.537 +08:00 [INF] - Volo.Abp.AuditLogging.EntityFrameworkCore.AbpAuditLoggingEntityFrameworkCoreModule +2022-08-23 22:20:03.537 +08:00 [INF] - Volo.Abp.TenantManagement.EntityFrameworkCore.AbpTenantManagementEntityFrameworkCoreModule +2022-08-23 22:20:03.538 +08:00 [INF] - Volo.Abp.FeatureManagement.EntityFrameworkCore.AbpFeatureManagementEntityFrameworkCoreModule +2022-08-23 22:20:03.539 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementHttpApiModule +2022-08-23 22:20:03.539 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2022-08-23 22:20:03.540 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2022-08-23 22:20:03.540 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2022-08-23 22:20:03.541 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2022-08-23 22:20:03.541 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2022-08-23 22:20:03.542 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2022-08-23 22:20:03.543 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2022-08-23 22:20:03.546 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2022-08-23 22:20:03.547 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2022-08-23 22:20:03.547 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2022-08-23 22:20:03.548 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2022-08-23 22:20:03.549 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2022-08-23 22:20:03.549 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2022-08-23 22:20:03.550 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2022-08-23 22:20:03.551 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2022-08-23 22:20:03.551 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2022-08-23 22:20:03.552 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2022-08-23 22:20:03.553 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2022-08-23 22:20:03.553 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.MySQL.AbpEntityFrameworkCoreMySQLModule +2022-08-23 22:20:03.554 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2022-08-23 22:20:03.554 +08:00 [INF] - Volo.Abp.Swashbuckle.AbpSwashbuckleModule +2022-08-23 22:20:03.555 +08:00 [INF] - Lion.AbpPro.Shared.Hosting.Microservices.SharedHostingMicroserviceModule +2022-08-23 22:20:04.009 +08:00 [INF] Initialized all ABP modules. +2022-08-23 22:20:04.060 +08:00 [INF] Now listening on: http://localhost:44324 +2022-08-23 22:20:04.062 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2022-08-23 22:20:04.064 +08:00 [INF] Hosting environment: Development +2022-08-23 22:20:04.065 +08:00 [INF] Content root path: D:\github\WangJunZzz\abp-vnext-pro\aspnet-core\modules\BasicManagement\host\Lion.AbpPro.BasicManagement.HttpApi.Host +2022-08-23 22:20:04.402 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/ - - +2022-08-23 22:20:04.409 +08:00 [WRN] Failed to determine the https port for redirect. +2022-08-23 22:20:05.138 +08:00 [ERR] Connection id "0HMK52A99DPT6", Request id "0HMK52A99DPT6:00000002": An unhandled exception was thrown by the application. +Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.AspNetCore.MultiTenancy.MultiTenancyMiddleware -> Volo.Abp.MultiTenancy.TenantConfigurationProvider -> Volo.Abp.TenantManagement.TenantStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.TenantManagement.AbpTenantManagementDomainModule, Volo.Abp.TenantManagement.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.TenantManagement.AbpTenantManagementDomainModule, Volo.Abp.TenantManagement.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. + ---> AutoMapper.AutoMapperConfigurationException: +Unmapped members were found. Review the types and members below. +Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type +For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters +===================================================================================== +IdentityUser -> LoginOutput (Destination member list) +Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) + +Unmapped properties: +Token + + at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.g__ValidateAll|2(IConfigurationProvider config) + at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.b__0(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext ctxt, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) + at Microsoft.AspNetCore.Http.MiddlewareFactory.Create(Type middlewareType) + at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<b__1>d.MoveNext() +--- End of stack trace from previous location --- + at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) + at Volo.Abp.AspNetCore.Tracing.AbpCorrelationIdMiddleware.InvokeAsync(HttpContext context, RequestDelegate next) + at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<b__1>d.MoveNext() +--- End of stack trace from previous location --- + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application) +2022-08-23 22:20:05.306 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/ - - - 500 0 - 904.5064ms +2022-08-23 22:20:08.779 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. +Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. + ---> AutoMapper.AutoMapperConfigurationException: +Unmapped members were found. Review the types and members below. +Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type +For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters +===================================================================================== +IdentityUser -> LoginOutput (Destination member list) +Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) + +Unmapped properties: +Token + + at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.g__ValidateAll|2(IConfigurationProvider config) + at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.b__0(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext ctxt, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() +2022-08-23 22:20:08.803 +08:00 [ERR] ---------- Exception Data ---------- +ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor + +2022-08-23 22:20:13.839 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. +Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. + ---> AutoMapper.AutoMapperConfigurationException: +Unmapped members were found. Review the types and members below. +Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type +For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters +===================================================================================== +IdentityUser -> LoginOutput (Destination member list) +Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) + +Unmapped properties: +Token + + at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.g__ValidateAll|2(IConfigurationProvider config) + at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.b__0(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext ctxt, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() +2022-08-23 22:20:13.865 +08:00 [ERR] ---------- Exception Data ---------- +ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor + +2022-08-23 22:20:18.884 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. +Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. + ---> AutoMapper.AutoMapperConfigurationException: +Unmapped members were found. Review the types and members below. +Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type +For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters +===================================================================================== +IdentityUser -> LoginOutput (Destination member list) +Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) + +Unmapped properties: +Token + + at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.g__ValidateAll|2(IConfigurationProvider config) + at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.b__0(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext ctxt, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() +2022-08-23 22:20:18.910 +08:00 [ERR] ---------- Exception Data ---------- +ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor + +2022-08-23 22:20:23.921 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. +Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. + ---> AutoMapper.AutoMapperConfigurationException: +Unmapped members were found. Review the types and members below. +Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type +For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters +===================================================================================== +IdentityUser -> LoginOutput (Destination member list) +Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) + +Unmapped properties: +Token + + at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.g__ValidateAll|2(IConfigurationProvider config) + at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.b__0(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext ctxt, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() +2022-08-23 22:20:23.937 +08:00 [ERR] ---------- Exception Data ---------- +ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor + +2022-08-23 22:20:28.965 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. +Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. + ---> AutoMapper.AutoMapperConfigurationException: +Unmapped members were found. Review the types and members below. +Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type +For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters +===================================================================================== +IdentityUser -> LoginOutput (Destination member list) +Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) + +Unmapped properties: +Token + + at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.g__ValidateAll|2(IConfigurationProvider config) + at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.b__0(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext ctxt, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() +2022-08-23 22:20:28.994 +08:00 [ERR] ---------- Exception Data ---------- +ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor + +2022-08-23 22:20:34.011 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. +Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. + ---> AutoMapper.AutoMapperConfigurationException: +Unmapped members were found. Review the types and members below. +Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type +For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters +===================================================================================== +IdentityUser -> LoginOutput (Destination member list) +Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) + +Unmapped properties: +Token + + at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.g__ValidateAll|2(IConfigurationProvider config) + at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.b__0(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext ctxt, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() +2022-08-23 22:20:34.040 +08:00 [ERR] ---------- Exception Data ---------- +ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor + +2022-08-23 22:20:39.058 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. +Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. + ---> AutoMapper.AutoMapperConfigurationException: +Unmapped members were found. Review the types and members below. +Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type +For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters +===================================================================================== +IdentityUser -> LoginOutput (Destination member list) +Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) + +Unmapped properties: +Token + + at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.g__ValidateAll|2(IConfigurationProvider config) + at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.b__0(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext ctxt, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() +2022-08-23 22:20:39.083 +08:00 [ERR] ---------- Exception Data ---------- +ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor + +2022-08-23 22:20:44.107 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. +Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. + ---> AutoMapper.AutoMapperConfigurationException: +Unmapped members were found. Review the types and members below. +Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type +For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters +===================================================================================== +IdentityUser -> LoginOutput (Destination member list) +Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) + +Unmapped properties: +Token + + at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.g__ValidateAll|2(IConfigurationProvider config) + at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.b__0(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext ctxt, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() +2022-08-23 22:20:44.124 +08:00 [ERR] ---------- Exception Data ---------- +ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor + +2022-08-23 22:20:49.136 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. +Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. + ---> AutoMapper.AutoMapperConfigurationException: +Unmapped members were found. Review the types and members below. +Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type +For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters +===================================================================================== +IdentityUser -> LoginOutput (Destination member list) +Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) + +Unmapped properties: +Token + + at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.g__ValidateAll|2(IConfigurationProvider config) + at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) + at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.b__0(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Delegate.DelegateActivator.b__2_0(ResolveRequestContext ctxt, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) + at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() +2022-08-23 22:20:49.152 +08:00 [ERR] ---------- Exception Data ---------- +ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor + +2022-08-23 22:21:24.843 +08:00 [INF] Loaded ABP modules: +2022-08-23 22:21:24.869 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementHttpApiHostModule +2022-08-23 22:21:24.870 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementApplicationModule +2022-08-23 22:21:24.870 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementDomainModule +2022-08-23 22:21:24.871 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2022-08-23 22:21:24.871 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2022-08-23 22:21:24.872 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2022-08-23 22:21:24.872 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2022-08-23 22:21:24.873 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2022-08-23 22:21:24.873 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2022-08-23 22:21:24.873 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2022-08-23 22:21:24.874 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2022-08-23 22:21:24.874 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2022-08-23 22:21:24.875 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2022-08-23 22:21:24.875 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2022-08-23 22:21:24.876 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2022-08-23 22:21:24.876 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2022-08-23 22:21:24.877 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2022-08-23 22:21:24.877 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2022-08-23 22:21:24.878 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2022-08-23 22:21:24.880 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2022-08-23 22:21:24.882 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2022-08-23 22:21:24.882 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2022-08-23 22:21:24.883 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2022-08-23 22:21:24.883 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2022-08-23 22:21:24.884 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2022-08-23 22:21:24.884 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2022-08-23 22:21:24.885 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2022-08-23 22:21:24.885 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementDomainSharedModule +2022-08-23 22:21:24.886 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule +2022-08-23 22:21:24.887 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule +2022-08-23 22:21:24.887 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule +2022-08-23 22:21:24.888 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2022-08-23 22:21:24.888 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule +2022-08-23 22:21:24.889 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule +2022-08-23 22:21:24.889 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2022-08-23 22:21:24.890 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2022-08-23 22:21:24.890 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule +2022-08-23 22:21:24.891 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule +2022-08-23 22:21:24.891 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule +2022-08-23 22:21:24.892 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule +2022-08-23 22:21:24.892 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule +2022-08-23 22:21:24.893 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule +2022-08-23 22:21:24.893 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule +2022-08-23 22:21:24.894 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule +2022-08-23 22:21:24.896 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule +2022-08-23 22:21:24.897 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2022-08-23 22:21:24.897 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2022-08-23 22:21:24.898 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule +2022-08-23 22:21:24.898 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule +2022-08-23 22:21:24.899 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule +2022-08-23 22:21:24.900 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule +2022-08-23 22:21:24.900 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule +2022-08-23 22:21:24.901 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2022-08-23 22:21:24.901 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule +2022-08-23 22:21:24.902 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule +2022-08-23 22:21:24.902 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementApplicationContractsModule +2022-08-23 22:21:24.903 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2022-08-23 22:21:24.903 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule +2022-08-23 22:21:24.904 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule +2022-08-23 22:21:24.905 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule +2022-08-23 22:21:24.905 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationContractsModule +2022-08-23 22:21:24.906 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationContractsModule +2022-08-23 22:21:24.906 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationContractsModule +2022-08-23 22:21:24.907 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2022-08-23 22:21:24.907 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2022-08-23 22:21:24.908 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2022-08-23 22:21:24.908 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule +2022-08-23 22:21:24.909 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule +2022-08-23 22:21:24.909 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule +2022-08-23 22:21:24.910 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2022-08-23 22:21:24.915 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2022-08-23 22:21:24.915 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule +2022-08-23 22:21:24.916 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule +2022-08-23 22:21:24.916 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule +2022-08-23 22:21:24.917 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule +2022-08-23 22:21:24.917 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationModule +2022-08-23 22:21:24.918 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationModule +2022-08-23 22:21:24.918 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationModule +2022-08-23 22:21:24.919 +08:00 [INF] - Lion.AbpPro.BasicManagement.EntityFrameworkCore.BasicManagementEntityFrameworkCoreModule +2022-08-23 22:21:24.920 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.AbpEntityFrameworkCoreModule +2022-08-23 22:21:24.920 +08:00 [INF] - Volo.Abp.Identity.EntityFrameworkCore.AbpIdentityEntityFrameworkCoreModule +2022-08-23 22:21:24.921 +08:00 [INF] - Volo.Abp.Users.EntityFrameworkCore.AbpUsersEntityFrameworkCoreModule +2022-08-23 22:21:24.921 +08:00 [INF] - Volo.Abp.PermissionManagement.EntityFrameworkCore.AbpPermissionManagementEntityFrameworkCoreModule +2022-08-23 22:21:24.922 +08:00 [INF] - Volo.Abp.SettingManagement.EntityFrameworkCore.AbpSettingManagementEntityFrameworkCoreModule +2022-08-23 22:21:24.922 +08:00 [INF] - Volo.Abp.BackgroundJobs.EntityFrameworkCore.AbpBackgroundJobsEntityFrameworkCoreModule +2022-08-23 22:21:24.923 +08:00 [INF] - Volo.Abp.AuditLogging.EntityFrameworkCore.AbpAuditLoggingEntityFrameworkCoreModule +2022-08-23 22:21:24.923 +08:00 [INF] - Volo.Abp.TenantManagement.EntityFrameworkCore.AbpTenantManagementEntityFrameworkCoreModule +2022-08-23 22:21:24.924 +08:00 [INF] - Volo.Abp.FeatureManagement.EntityFrameworkCore.AbpFeatureManagementEntityFrameworkCoreModule +2022-08-23 22:21:24.925 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementHttpApiModule +2022-08-23 22:21:24.925 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2022-08-23 22:21:24.928 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2022-08-23 22:21:24.928 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2022-08-23 22:21:24.929 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2022-08-23 22:21:24.930 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2022-08-23 22:21:24.931 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2022-08-23 22:21:24.931 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule +2022-08-23 22:21:24.932 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule +2022-08-23 22:21:24.932 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule +2022-08-23 22:21:24.933 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule +2022-08-23 22:21:24.934 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule +2022-08-23 22:21:24.934 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule +2022-08-23 22:21:24.935 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule +2022-08-23 22:21:24.935 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule +2022-08-23 22:21:24.936 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule +2022-08-23 22:21:24.936 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2022-08-23 22:21:24.937 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2022-08-23 22:21:24.937 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule +2022-08-23 22:21:24.938 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.MySQL.AbpEntityFrameworkCoreMySQLModule +2022-08-23 22:21:24.938 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2022-08-23 22:21:24.939 +08:00 [INF] - Volo.Abp.Swashbuckle.AbpSwashbuckleModule +2022-08-23 22:21:24.939 +08:00 [INF] - Lion.AbpPro.Shared.Hosting.Microservices.SharedHostingMicroserviceModule +2022-08-23 22:21:25.334 +08:00 [INF] Initialized all ABP modules. +2022-08-23 22:21:25.376 +08:00 [INF] Now listening on: http://localhost:44324 +2022-08-23 22:21:25.378 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2022-08-23 22:21:25.379 +08:00 [INF] Hosting environment: Development +2022-08-23 22:21:25.379 +08:00 [INF] Content root path: D:\github\WangJunZzz\abp-vnext-pro\aspnet-core\modules\BasicManagement\host\Lion.AbpPro.BasicManagement.HttpApi.Host +2022-08-23 22:21:25.784 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/ - - +2022-08-23 22:21:25.792 +08:00 [WRN] Failed to determine the https port for redirect. +2022-08-23 22:21:28.295 +08:00 [INF] Executing endpoint 'Lion.AbpPro.BasicManagement.Controllers.HomeController.Index (Lion.AbpPro.BasicManagement.HttpApi.Host)' +2022-08-23 22:21:28.317 +08:00 [INF] Route matched with {action = "Index", controller = "Home", area = "", page = ""}. Executing controller action with signature Microsoft.AspNetCore.Mvc.ActionResult Index() on controller Lion.AbpPro.BasicManagement.Controllers.HomeController (Lion.AbpPro.BasicManagement.HttpApi.Host). +2022-08-23 22:21:28.351 +08:00 [INF] Executing RedirectResult, redirecting to /swagger. +2022-08-23 22:21:28.360 +08:00 [INF] Executed action Lion.AbpPro.BasicManagement.Controllers.HomeController.Index (Lion.AbpPro.BasicManagement.HttpApi.Host) in 36.344ms +2022-08-23 22:21:28.364 +08:00 [INF] Executed endpoint 'Lion.AbpPro.BasicManagement.Controllers.HomeController.Index (Lion.AbpPro.BasicManagement.HttpApi.Host)' +2022-08-23 22:21:28.383 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/ - - - 302 0 - 2599.4371ms +2022-08-23 22:21:28.390 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger - - +2022-08-23 22:21:28.396 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger - - - 301 0 - 5.4534ms +2022-08-23 22:21:28.402 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger/index.html - - +2022-08-23 22:21:28.476 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger/index.html - - - 200 - text/html;charset=utf-8 73.9537ms +2022-08-23 22:21:28.521 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger/swagger-ui.css - - +2022-08-23 22:21:28.522 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger/ui/abp.js - - +2022-08-23 22:21:28.527 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger/ui/abp.swagger.js - - +2022-08-23 22:21:28.528 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger/swagger-ui-bundle.js - - +2022-08-23 22:21:28.530 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger/swagger-ui-standalone-preset.js - - +2022-08-23 22:21:28.547 +08:00 [INF] Sending file. Request path: '/swagger/ui/abp.js'. Physical path: 'N/A' +2022-08-23 22:21:28.547 +08:00 [INF] Sending file. Request path: '/swagger/ui/abp.swagger.js'. Physical path: 'N/A' +2022-08-23 22:21:28.553 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger/ui/abp.js - - - 200 3122 application/javascript 30.6392ms +2022-08-23 22:21:28.560 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger/ui/abp.swagger.js - - - 200 1246 application/javascript 33.7304ms +2022-08-23 22:21:28.571 +08:00 [INF] Sending file. Request path: '/swagger-ui.css'. Physical path: 'N/A' +2022-08-23 22:21:28.580 +08:00 [INF] Sending file. Request path: '/swagger-ui-standalone-preset.js'. Physical path: 'N/A' +2022-08-23 22:21:28.584 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger/swagger-ui.css - - - 200 143943 text/css 63.6951ms +2022-08-23 22:21:28.585 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger/swagger-ui-standalone-preset.js - - - 200 339486 application/javascript 55.0516ms +2022-08-23 22:21:28.595 +08:00 [INF] Sending file. Request path: '/swagger-ui-bundle.js'. Physical path: 'N/A' +2022-08-23 22:21:28.597 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger/swagger-ui-bundle.js - - - 200 1095087 application/javascript 68.6634ms +2022-08-23 22:21:28.885 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger/BasicManagement/swagger.json - - +2022-08-23 22:21:28.932 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger/favicon-32x32.png - - +2022-08-23 22:21:28.948 +08:00 [INF] Sending file. Request path: '/favicon-32x32.png'. Physical path: 'N/A' +2022-08-23 22:21:28.951 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger/favicon-32x32.png - - - 200 628 image/png 18.9267ms +2022-08-23 22:21:29.159 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger/BasicManagement/swagger.json - - - 200 - application/json;charset=utf-8 273.8320ms +2022-08-23 22:21:39.697 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/abp/Swashbuckle/SetCsrfCookie application/json - +2022-08-23 22:21:39.700 +08:00 [INF] Executing endpoint 'Volo.Abp.Swashbuckle.AbpSwashbuckleController.SetCsrfCookie (Volo.Abp.Swashbuckle)' +2022-08-23 22:21:39.702 +08:00 [INF] Route matched with {area = "Abp", action = "SetCsrfCookie", controller = "AbpSwashbuckle", page = ""}. Executing controller action with signature Void SetCsrfCookie() on controller Volo.Abp.Swashbuckle.AbpSwashbuckleController (Volo.Abp.Swashbuckle). +2022-08-23 22:21:39.713 +08:00 [WRN] The cookie 'XSRF-TOKEN' has set 'SameSite=None' and must also set 'Secure'. +2022-08-23 22:21:39.714 +08:00 [INF] Executed action Volo.Abp.Swashbuckle.AbpSwashbuckleController.SetCsrfCookie (Volo.Abp.Swashbuckle) in 10.3525ms +2022-08-23 22:21:39.715 +08:00 [INF] Executed endpoint 'Volo.Abp.Swashbuckle.AbpSwashbuckleController.SetCsrfCookie (Volo.Abp.Swashbuckle)' +2022-08-23 22:21:39.716 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/abp/Swashbuckle/SetCsrfCookie application/json - - 204 - - 18.5906ms +2022-08-23 22:21:39.751 +08:00 [INF] Request starting HTTP/1.1 POST http://localhost:44324/api/app/account/login application/json 46 +2022-08-23 22:21:39.753 +08:00 [INF] No CORS policy found for the specified request. +2022-08-23 22:21:39.754 +08:00 [INF] Executing endpoint 'Lion.AbpPro.BasicManagement.Systems.AccountController.LoginAsync (Lion.AbpPro.BasicManagement.HttpApi)' +2022-08-23 22:21:39.763 +08:00 [INF] Route matched with {action = "Login", controller = "Account", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput] LoginAsync(Lion.AbpPro.BasicManagement.Users.Dtos.LoginInput) on controller Lion.AbpPro.BasicManagement.Systems.AccountController (Lion.AbpPro.BasicManagement.HttpApi). +2022-08-23 22:21:39.801 +08:00 [ERR] ---------- RemoteServiceErrorInfo ---------- +{ + "code": null, + "message": "对不起,在处理你的请求期间,产生了一个服务器内部错误!", + "details": null, + "data": { + "ActivatorChain": "Lion.AbpPro.BasicManagement.Systems.AccountController -> Lion.AbpPro.BasicManagement.Users.AccountAppService" + }, + "validationErrors": null +} + +2022-08-23 22:21:39.803 +08:00 [ERR] An exception was thrown while activating Lion.AbpPro.BasicManagement.Systems.AccountController -> Lion.AbpPro.BasicManagement.Users.AccountAppService. +Autofac.Core.DependencyResolutionException: An exception was thrown while activating Lion.AbpPro.BasicManagement.Systems.AccountController -> Lion.AbpPro.BasicManagement.Users.AccountAppService. + ---> Autofac.Core.DependencyResolutionException: None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'Lion.AbpPro.BasicManagement.Users.AccountAppService' can be invoked with the available services and parameters: +Cannot resolve parameter 'Microsoft.AspNetCore.Identity.SignInManager`1[Volo.Abp.Identity.IdentityUser] signInManager' of constructor 'Void .ctor(Volo.Abp.Identity.IdentityUserManager, Microsoft.Extensions.Options.IOptionsSnapshot`1[Lion.AbpPro.BasicManagement.ConfigurationOptions.JwtOptions], Microsoft.AspNetCore.Identity.SignInManager`1[Volo.Abp.Identity.IdentityUser])'. + at Autofac.Core.Activators.Reflection.ReflectionActivator.GetAllBindings(ConstructorBinder[] availableConstructors, IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Reflection.ReflectionActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) + at Autofac.Core.Activators.Reflection.ReflectionActivator.b__11_0(ResolveRequestContext ctxt, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Builder.RegistrationBuilder`3.<>c__DisplayClass41_0.b__0(ResolveRequestContext ctxt, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Extras.DynamicProxy.RegistrationExtensions.<>c__DisplayClass8_0`3.b__1(ResolveRequestContext ctxt, Action`1 next) + at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + --- End of inner exception stack trace --- + at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) + at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt) + at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) + at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) + at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) + at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) + at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) + at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) + at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) + at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) + at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) + at Microsoft.AspNetCore.Mvc.Controllers.ServiceBasedControllerActivator.Create(ControllerContext actionContext) + at Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.<>c__DisplayClass6_0.g__CreateController|0(ControllerContext controllerContext) + at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) + at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync() +--- End of stack trace from previous location --- + at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) +2022-08-23 22:21:39.845 +08:00 [ERR] ---------- Exception Data ---------- +ActivatorChain = Lion.AbpPro.BasicManagement.Systems.AccountController -> Lion.AbpPro.BasicManagement.Users.AccountAppService + +2022-08-23 22:21:39.853 +08:00 [INF] Executing ObjectResult, writing value of type 'Volo.Abp.Http.RemoteServiceErrorResponse'. +2022-08-23 22:21:39.858 +08:00 [INF] Executed action Lion.AbpPro.BasicManagement.Systems.AccountController.LoginAsync (Lion.AbpPro.BasicManagement.HttpApi) in 93.438ms +2022-08-23 22:21:39.862 +08:00 [INF] Executed endpoint 'Lion.AbpPro.BasicManagement.Systems.AccountController.LoginAsync (Lion.AbpPro.BasicManagement.HttpApi)' +2022-08-23 22:21:40.175 +08:00 [INF] Request finished HTTP/1.1 POST http://localhost:44324/api/app/account/login application/json 46 - 500 - application/json;+charset=utf-8 424.1464ms diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Logs/logs.txt b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Logs/logs.txt new file mode 100644 index 00000000..2aa25252 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Logs/logs.txt @@ -0,0 +1,16 @@ +2022-08-23 22:11:33.863 +08:00 [INF] Starting web host. +2022-08-23 22:11:39.197 +08:00 [FTL] Host terminated unexpectedly! +Microsoft.Extensions.Hosting.HostFactoryResolver+HostingListener+StopTheHostException: Exception of type 'Microsoft.Extensions.Hosting.HostFactoryResolver+HostingListener+StopTheHostException' was thrown. + at Microsoft.Extensions.Hosting.HostFactoryResolver.HostingListener.OnNext(KeyValuePair`2 value) + at System.Diagnostics.DiagnosticListener.Write(String name, Object value) + at Microsoft.Extensions.Hosting.HostBuilder.Build() + at Microsoft.AspNetCore.Builder.WebApplicationBuilder.Build() + at Lion.AbpPro.BasicManagement.Program.Main(String[] args) in D:\github\WangJunZzz\abp-vnext-pro\aspnet-core\modules\BasicManagement\host\Lion.AbpPro.BasicManagement.HttpApi.Host\Program.cs:line 36 +2022-08-23 22:13:21.209 +08:00 [INF] Starting web host. +2022-08-23 22:13:22.124 +08:00 [FTL] Host terminated unexpectedly! +Microsoft.Extensions.Hosting.HostFactoryResolver+HostingListener+StopTheHostException: Exception of type 'Microsoft.Extensions.Hosting.HostFactoryResolver+HostingListener+StopTheHostException' was thrown. + at Microsoft.Extensions.Hosting.HostFactoryResolver.HostingListener.OnNext(KeyValuePair`2 value) + at System.Diagnostics.DiagnosticListener.Write(String name, Object value) + at Microsoft.Extensions.Hosting.HostBuilder.Build() + at Microsoft.AspNetCore.Builder.WebApplicationBuilder.Build() + at Lion.AbpPro.BasicManagement.Program.Main(String[] args) in D:\github\WangJunZzz\abp-vnext-pro\aspnet-core\modules\BasicManagement\host\Lion.AbpPro.BasicManagement.HttpApi.Host\Program.cs:line 36 diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Migrations/20220823141140_Init.Designer.cs b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Migrations/20220823141140_Init.Designer.cs new file mode 100644 index 00000000..97fb9c62 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Migrations/20220823141140_Init.Designer.cs @@ -0,0 +1,1295 @@ +// +using System; +using Lion.AbpPro.BasicManagement.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Lion.AbpPro.BasicManagement.Migrations +{ + [DbContext(typeof(BasicManagementHttpApiHostMigrationsDbContext))] + [Migration("20220823141140_Init")] + partial class Init + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) + .HasAnnotation("ProductVersion", "6.0.7") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("varchar(96)") + .HasColumnName("ApplicationName"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("BrowserInfo"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("ClientId"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("ClientIpAddress"); + + b.Property("ClientName") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("ClientName"); + + b.Property("Comments") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Comments"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("CorrelationId"); + + b.Property("Exceptions") + .HasColumnType("longtext"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime(6)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("HttpMethod") + .HasMaxLength(16) + .HasColumnType("varchar(16)") + .HasColumnName("HttpMethod"); + + b.Property("HttpStatusCode") + .HasColumnType("int") + .HasColumnName("HttpStatusCode"); + + b.Property("ImpersonatorTenantId") + .HasColumnType("char(36)") + .HasColumnName("ImpersonatorTenantId"); + + b.Property("ImpersonatorTenantName") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("ImpersonatorTenantName"); + + b.Property("ImpersonatorUserId") + .HasColumnType("char(36)") + .HasColumnName("ImpersonatorUserId"); + + b.Property("ImpersonatorUserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("ImpersonatorUserName"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("TenantName"); + + b.Property("Url") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Url"); + + b.Property("UserId") + .HasColumnType("char(36)") + .HasColumnName("UserId"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AuditLogId") + .HasColumnType("char(36)") + .HasColumnName("AuditLogId"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime(6)") + .HasColumnName("ExecutionTime"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("MethodName") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("MethodName"); + + b.Property("Parameters") + .HasMaxLength(2000) + .HasColumnType("varchar(2000)") + .HasColumnName("Parameters"); + + b.Property("ServiceName") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("ServiceName"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AuditLogId") + .HasColumnType("char(36)") + .HasColumnName("AuditLogId"); + + b.Property("ChangeTime") + .HasColumnType("datetime(6)") + .HasColumnName("ChangeTime"); + + b.Property("ChangeType") + .HasColumnType("tinyint unsigned") + .HasColumnName("ChangeType"); + + b.Property("EntityId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("EntityId"); + + b.Property("EntityTenantId") + .HasColumnType("char(36)"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("EntityTypeFullName"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("EntityChangeId") + .HasColumnType("char(36)"); + + b.Property("NewValue") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("NewValue"); + + b.Property("OriginalValue") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("OriginalValue"); + + b.Property("PropertyName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("PropertyName"); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("PropertyTypeFullName"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BackgroundJobs.BackgroundJobRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsAbandoned") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false); + + b.Property("JobArgs") + .IsRequired() + .HasMaxLength(1048576) + .HasColumnType("longtext"); + + b.Property("JobName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("LastTryTime") + .HasColumnType("datetime(6)"); + + b.Property("NextTryTime") + .HasColumnType("datetime(6)"); + + b.Property("Priority") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint unsigned") + .HasDefaultValue((byte)15); + + b.Property("TryCount") + .ValueGeneratedOnAdd() + .HasColumnType("smallint") + .HasDefaultValue((short)0); + + b.HasKey("Id"); + + b.HasIndex("IsAbandoned", "NextTryTime"); + + b.ToTable("AbpBackgroundJobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique(); + + b.ToTable("AbpFeatureValues", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("tinyint(1)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("varchar(512)"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("Required") + .HasColumnType("tinyint(1)"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("SourceTenantId") + .HasColumnType("char(36)"); + + b.Property("SourceUserId") + .HasColumnType("char(36)"); + + b.Property("TargetTenantId") + .HasColumnType("char(36)"); + + b.Property("TargetUserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique(); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("tinyint(1)") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("tinyint(1)") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("tinyint(1)") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("varchar(96)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("varchar(96)"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("varchar(512)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("varchar(96)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("varchar(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("SecurityStamp"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("varchar(196)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("char(36)"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("varchar(95)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("DisplayName"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("char(36)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ProviderName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") + .IsUnique(); + + b.ToTable("AbpPermissionGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2048) + .HasColumnType("varchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique(); + + b.ToTable("AbpSettings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("AbpTenants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("varchar(1024)"); + + b.HasKey("TenantId", "Name"); + + b.ToTable("AbpTenantConnectionStrings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.HasOne("Volo.Abp.TenantManagement.Tenant", null) + .WithMany("ConnectionStrings") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Navigation("Actions"); + + b.Navigation("EntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Navigation("PropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Navigation("ConnectionStrings"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Migrations/20220823141140_Init.cs b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Migrations/20220823141140_Init.cs new file mode 100644 index 00000000..ab400db7 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Migrations/20220823141140_Init.cs @@ -0,0 +1,880 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Lion.AbpPro.BasicManagement.Migrations +{ + public partial class Init : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterDatabase() + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpAuditLogs", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + ApplicationName = table.Column(type: "varchar(96)", maxLength: 96, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + UserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + UserName = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + TenantName = table.Column(type: "varchar(64)", maxLength: 64, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ImpersonatorUserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + ImpersonatorUserName = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ImpersonatorTenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + ImpersonatorTenantName = table.Column(type: "varchar(64)", maxLength: 64, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ExecutionTime = table.Column(type: "datetime(6)", nullable: false), + ExecutionDuration = table.Column(type: "int", nullable: false), + ClientIpAddress = table.Column(type: "varchar(64)", maxLength: 64, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ClientName = table.Column(type: "varchar(128)", maxLength: 128, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ClientId = table.Column(type: "varchar(64)", maxLength: 64, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CorrelationId = table.Column(type: "varchar(64)", maxLength: 64, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + BrowserInfo = table.Column(type: "varchar(512)", maxLength: 512, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + HttpMethod = table.Column(type: "varchar(16)", maxLength: 16, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Url = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Exceptions = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Comments = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + HttpStatusCode = table.Column(type: "int", nullable: true), + ExtraProperties = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpAuditLogs", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpBackgroundJobs", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + JobName = table.Column(type: "varchar(128)", maxLength: 128, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + JobArgs = table.Column(type: "longtext", maxLength: 1048576, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + TryCount = table.Column(type: "smallint", nullable: false, defaultValue: (short)0), + CreationTime = table.Column(type: "datetime(6)", nullable: false), + NextTryTime = table.Column(type: "datetime(6)", nullable: false), + LastTryTime = table.Column(type: "datetime(6)", nullable: true), + IsAbandoned = table.Column(type: "tinyint(1)", nullable: false, defaultValue: false), + Priority = table.Column(type: "tinyint unsigned", nullable: false, defaultValue: (byte)15), + ExtraProperties = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpBackgroundJobs", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpClaimTypes", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + Name = table.Column(type: "varchar(256)", maxLength: 256, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Required = table.Column(type: "tinyint(1)", nullable: false), + IsStatic = table.Column(type: "tinyint(1)", nullable: false), + Regex = table.Column(type: "varchar(512)", maxLength: 512, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + RegexDescription = table.Column(type: "varchar(128)", maxLength: 128, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Description = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ValueType = table.Column(type: "int", nullable: false), + ExtraProperties = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpClaimTypes", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpFeatureValues", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + Name = table.Column(type: "varchar(128)", maxLength: 128, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Value = table.Column(type: "varchar(128)", maxLength: 128, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ProviderName = table.Column(type: "varchar(64)", maxLength: 64, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ProviderKey = table.Column(type: "varchar(64)", maxLength: 64, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpFeatureValues", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpLinkUsers", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + SourceUserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + SourceTenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + TargetUserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + TargetTenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpLinkUsers", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpOrganizationUnits", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + ParentId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + Code = table.Column(type: "varchar(95)", maxLength: 95, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + DisplayName = table.Column(type: "varchar(128)", maxLength: 128, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ExtraProperties = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreationTime = table.Column(type: "datetime(6)", nullable: false), + CreatorId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + LastModificationTime = table.Column(type: "datetime(6)", nullable: true), + LastModifierId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + IsDeleted = table.Column(type: "tinyint(1)", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + DeletionTime = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpOrganizationUnits", x => x.Id); + table.ForeignKey( + name: "FK_AbpOrganizationUnits_AbpOrganizationUnits_ParentId", + column: x => x.ParentId, + principalTable: "AbpOrganizationUnits", + principalColumn: "Id"); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpPermissionGrants", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + Name = table.Column(type: "varchar(128)", maxLength: 128, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ProviderName = table.Column(type: "varchar(64)", maxLength: 64, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ProviderKey = table.Column(type: "varchar(64)", maxLength: 64, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpPermissionGrants", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpRoles", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + Name = table.Column(type: "varchar(256)", maxLength: 256, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + NormalizedName = table.Column(type: "varchar(256)", maxLength: 256, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + IsDefault = table.Column(type: "tinyint(1)", nullable: false), + IsStatic = table.Column(type: "tinyint(1)", nullable: false), + IsPublic = table.Column(type: "tinyint(1)", nullable: false), + ExtraProperties = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpRoles", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpSecurityLogs", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + ApplicationName = table.Column(type: "varchar(96)", maxLength: 96, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Identity = table.Column(type: "varchar(96)", maxLength: 96, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Action = table.Column(type: "varchar(96)", maxLength: 96, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + UserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + UserName = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + TenantName = table.Column(type: "varchar(64)", maxLength: 64, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ClientId = table.Column(type: "varchar(64)", maxLength: 64, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CorrelationId = table.Column(type: "varchar(64)", maxLength: 64, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ClientIpAddress = table.Column(type: "varchar(64)", maxLength: 64, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + BrowserInfo = table.Column(type: "varchar(512)", maxLength: 512, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreationTime = table.Column(type: "datetime(6)", nullable: false), + ExtraProperties = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpSecurityLogs", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpSettings", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + Name = table.Column(type: "varchar(128)", maxLength: 128, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Value = table.Column(type: "varchar(2048)", maxLength: 2048, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ProviderName = table.Column(type: "varchar(64)", maxLength: 64, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ProviderKey = table.Column(type: "varchar(64)", maxLength: 64, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpSettings", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpTenants", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + Name = table.Column(type: "varchar(64)", maxLength: 64, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ExtraProperties = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreationTime = table.Column(type: "datetime(6)", nullable: false), + CreatorId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + LastModificationTime = table.Column(type: "datetime(6)", nullable: true), + LastModifierId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + IsDeleted = table.Column(type: "tinyint(1)", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + DeletionTime = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpTenants", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpUsers", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + UserName = table.Column(type: "varchar(256)", maxLength: 256, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + NormalizedUserName = table.Column(type: "varchar(256)", maxLength: 256, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Name = table.Column(type: "varchar(64)", maxLength: 64, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Surname = table.Column(type: "varchar(64)", maxLength: 64, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Email = table.Column(type: "varchar(256)", maxLength: 256, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + NormalizedEmail = table.Column(type: "varchar(256)", maxLength: 256, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + EmailConfirmed = table.Column(type: "tinyint(1)", nullable: false, defaultValue: false), + PasswordHash = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + SecurityStamp = table.Column(type: "varchar(256)", maxLength: 256, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + IsExternal = table.Column(type: "tinyint(1)", nullable: false, defaultValue: false), + PhoneNumber = table.Column(type: "varchar(16)", maxLength: 16, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + PhoneNumberConfirmed = table.Column(type: "tinyint(1)", nullable: false, defaultValue: false), + IsActive = table.Column(type: "tinyint(1)", nullable: false), + TwoFactorEnabled = table.Column(type: "tinyint(1)", nullable: false, defaultValue: false), + LockoutEnd = table.Column(type: "datetime(6)", nullable: true), + LockoutEnabled = table.Column(type: "tinyint(1)", nullable: false, defaultValue: false), + AccessFailedCount = table.Column(type: "int", nullable: false, defaultValue: 0), + ExtraProperties = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreationTime = table.Column(type: "datetime(6)", nullable: false), + CreatorId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + LastModificationTime = table.Column(type: "datetime(6)", nullable: true), + LastModifierId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + IsDeleted = table.Column(type: "tinyint(1)", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + DeletionTime = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUsers", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpAuditLogActions", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + AuditLogId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + ServiceName = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + MethodName = table.Column(type: "varchar(128)", maxLength: 128, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Parameters = table.Column(type: "varchar(2000)", maxLength: 2000, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ExecutionTime = table.Column(type: "datetime(6)", nullable: false), + ExecutionDuration = table.Column(type: "int", nullable: false), + ExtraProperties = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpAuditLogActions", x => x.Id); + table.ForeignKey( + name: "FK_AbpAuditLogActions_AbpAuditLogs_AuditLogId", + column: x => x.AuditLogId, + principalTable: "AbpAuditLogs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpEntityChanges", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + AuditLogId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + ChangeTime = table.Column(type: "datetime(6)", nullable: false), + ChangeType = table.Column(type: "tinyint unsigned", nullable: false), + EntityTenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + EntityId = table.Column(type: "varchar(128)", maxLength: 128, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + EntityTypeFullName = table.Column(type: "varchar(128)", maxLength: 128, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ExtraProperties = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpEntityChanges", x => x.Id); + table.ForeignKey( + name: "FK_AbpEntityChanges_AbpAuditLogs_AuditLogId", + column: x => x.AuditLogId, + principalTable: "AbpAuditLogs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpOrganizationUnitRoles", + columns: table => new + { + RoleId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + OrganizationUnitId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + CreationTime = table.Column(type: "datetime(6)", nullable: false), + CreatorId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpOrganizationUnitRoles", x => new { x.OrganizationUnitId, x.RoleId }); + table.ForeignKey( + name: "FK_AbpOrganizationUnitRoles_AbpOrganizationUnits_OrganizationUn~", + column: x => x.OrganizationUnitId, + principalTable: "AbpOrganizationUnits", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AbpOrganizationUnitRoles_AbpRoles_RoleId", + column: x => x.RoleId, + principalTable: "AbpRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpRoleClaims", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + RoleId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + ClaimType = table.Column(type: "varchar(256)", maxLength: 256, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ClaimValue = table.Column(type: "varchar(1024)", maxLength: 1024, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpRoleClaims", x => x.Id); + table.ForeignKey( + name: "FK_AbpRoleClaims_AbpRoles_RoleId", + column: x => x.RoleId, + principalTable: "AbpRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpTenantConnectionStrings", + columns: table => new + { + TenantId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + Name = table.Column(type: "varchar(64)", maxLength: 64, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Value = table.Column(type: "varchar(1024)", maxLength: 1024, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpTenantConnectionStrings", x => new { x.TenantId, x.Name }); + table.ForeignKey( + name: "FK_AbpTenantConnectionStrings_AbpTenants_TenantId", + column: x => x.TenantId, + principalTable: "AbpTenants", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpUserClaims", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + UserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + ClaimType = table.Column(type: "varchar(256)", maxLength: 256, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ClaimValue = table.Column(type: "varchar(1024)", maxLength: 1024, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserClaims", x => x.Id); + table.ForeignKey( + name: "FK_AbpUserClaims_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpUserLogins", + columns: table => new + { + UserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + LoginProvider = table.Column(type: "varchar(64)", maxLength: 64, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + ProviderKey = table.Column(type: "varchar(196)", maxLength: 196, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ProviderDisplayName = table.Column(type: "varchar(128)", maxLength: 128, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserLogins", x => new { x.UserId, x.LoginProvider }); + table.ForeignKey( + name: "FK_AbpUserLogins_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpUserOrganizationUnits", + columns: table => new + { + UserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + OrganizationUnitId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + CreationTime = table.Column(type: "datetime(6)", nullable: false), + CreatorId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserOrganizationUnits", x => new { x.OrganizationUnitId, x.UserId }); + table.ForeignKey( + name: "FK_AbpUserOrganizationUnits_AbpOrganizationUnits_OrganizationUn~", + column: x => x.OrganizationUnitId, + principalTable: "AbpOrganizationUnits", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AbpUserOrganizationUnits_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpUserRoles", + columns: table => new + { + UserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + RoleId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserRoles", x => new { x.UserId, x.RoleId }); + table.ForeignKey( + name: "FK_AbpUserRoles_AbpRoles_RoleId", + column: x => x.RoleId, + principalTable: "AbpRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AbpUserRoles_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpUserTokens", + columns: table => new + { + UserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + LoginProvider = table.Column(type: "varchar(64)", maxLength: 64, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Name = table.Column(type: "varchar(128)", maxLength: 128, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + Value = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); + table.ForeignKey( + name: "FK_AbpUserTokens_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpEntityPropertyChanges", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + TenantId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + EntityChangeId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + NewValue = table.Column(type: "varchar(512)", maxLength: 512, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + OriginalValue = table.Column(type: "varchar(512)", maxLength: 512, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + PropertyName = table.Column(type: "varchar(128)", maxLength: 128, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + PropertyTypeFullName = table.Column(type: "varchar(64)", maxLength: 64, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpEntityPropertyChanges", x => x.Id); + table.ForeignKey( + name: "FK_AbpEntityPropertyChanges_AbpEntityChanges_EntityChangeId", + column: x => x.EntityChangeId, + principalTable: "AbpEntityChanges", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogActions_AuditLogId", + table: "AbpAuditLogActions", + column: "AuditLogId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogActions_TenantId_ServiceName_MethodName_Execution~", + table: "AbpAuditLogActions", + columns: new[] { "TenantId", "ServiceName", "MethodName", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogs_TenantId_ExecutionTime", + table: "AbpAuditLogs", + columns: new[] { "TenantId", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogs_TenantId_UserId_ExecutionTime", + table: "AbpAuditLogs", + columns: new[] { "TenantId", "UserId", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpBackgroundJobs_IsAbandoned_NextTryTime", + table: "AbpBackgroundJobs", + columns: new[] { "IsAbandoned", "NextTryTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityChanges_AuditLogId", + table: "AbpEntityChanges", + column: "AuditLogId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityChanges_TenantId_EntityTypeFullName_EntityId", + table: "AbpEntityChanges", + columns: new[] { "TenantId", "EntityTypeFullName", "EntityId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityPropertyChanges_EntityChangeId", + table: "AbpEntityPropertyChanges", + column: "EntityChangeId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpFeatureValues_Name_ProviderName_ProviderKey", + table: "AbpFeatureValues", + columns: new[] { "Name", "ProviderName", "ProviderKey" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpLinkUsers_SourceUserId_SourceTenantId_TargetUserId_Target~", + table: "AbpLinkUsers", + columns: new[] { "SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpOrganizationUnitRoles_RoleId_OrganizationUnitId", + table: "AbpOrganizationUnitRoles", + columns: new[] { "RoleId", "OrganizationUnitId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpOrganizationUnits_Code", + table: "AbpOrganizationUnits", + column: "Code"); + + migrationBuilder.CreateIndex( + name: "IX_AbpOrganizationUnits_ParentId", + table: "AbpOrganizationUnits", + column: "ParentId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissionGrants_TenantId_Name_ProviderName_ProviderKey", + table: "AbpPermissionGrants", + columns: new[] { "TenantId", "Name", "ProviderName", "ProviderKey" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpRoleClaims_RoleId", + table: "AbpRoleClaims", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpRoles_NormalizedName", + table: "AbpRoles", + column: "NormalizedName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpSecurityLogs_TenantId_Action", + table: "AbpSecurityLogs", + columns: new[] { "TenantId", "Action" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSecurityLogs_TenantId_ApplicationName", + table: "AbpSecurityLogs", + columns: new[] { "TenantId", "ApplicationName" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSecurityLogs_TenantId_Identity", + table: "AbpSecurityLogs", + columns: new[] { "TenantId", "Identity" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSecurityLogs_TenantId_UserId", + table: "AbpSecurityLogs", + columns: new[] { "TenantId", "UserId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSettings_Name_ProviderName_ProviderKey", + table: "AbpSettings", + columns: new[] { "Name", "ProviderName", "ProviderKey" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpTenants_Name", + table: "AbpTenants", + column: "Name"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUserClaims_UserId", + table: "AbpUserClaims", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUserLogins_LoginProvider_ProviderKey", + table: "AbpUserLogins", + columns: new[] { "LoginProvider", "ProviderKey" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpUserOrganizationUnits_UserId_OrganizationUnitId", + table: "AbpUserOrganizationUnits", + columns: new[] { "UserId", "OrganizationUnitId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpUserRoles_RoleId_UserId", + table: "AbpUserRoles", + columns: new[] { "RoleId", "UserId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpUsers_Email", + table: "AbpUsers", + column: "Email"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUsers_NormalizedEmail", + table: "AbpUsers", + column: "NormalizedEmail"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUsers_NormalizedUserName", + table: "AbpUsers", + column: "NormalizedUserName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUsers_UserName", + table: "AbpUsers", + column: "UserName"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AbpAuditLogActions"); + + migrationBuilder.DropTable( + name: "AbpBackgroundJobs"); + + migrationBuilder.DropTable( + name: "AbpClaimTypes"); + + migrationBuilder.DropTable( + name: "AbpEntityPropertyChanges"); + + migrationBuilder.DropTable( + name: "AbpFeatureValues"); + + migrationBuilder.DropTable( + name: "AbpLinkUsers"); + + migrationBuilder.DropTable( + name: "AbpOrganizationUnitRoles"); + + migrationBuilder.DropTable( + name: "AbpPermissionGrants"); + + migrationBuilder.DropTable( + name: "AbpRoleClaims"); + + migrationBuilder.DropTable( + name: "AbpSecurityLogs"); + + migrationBuilder.DropTable( + name: "AbpSettings"); + + migrationBuilder.DropTable( + name: "AbpTenantConnectionStrings"); + + migrationBuilder.DropTable( + name: "AbpUserClaims"); + + migrationBuilder.DropTable( + name: "AbpUserLogins"); + + migrationBuilder.DropTable( + name: "AbpUserOrganizationUnits"); + + migrationBuilder.DropTable( + name: "AbpUserRoles"); + + migrationBuilder.DropTable( + name: "AbpUserTokens"); + + migrationBuilder.DropTable( + name: "AbpEntityChanges"); + + migrationBuilder.DropTable( + name: "AbpTenants"); + + migrationBuilder.DropTable( + name: "AbpOrganizationUnits"); + + migrationBuilder.DropTable( + name: "AbpRoles"); + + migrationBuilder.DropTable( + name: "AbpUsers"); + + migrationBuilder.DropTable( + name: "AbpAuditLogs"); + } + } +} diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Migrations/BasicManagementHttpApiHostMigrationsDbContextModelSnapshot.cs b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Migrations/BasicManagementHttpApiHostMigrationsDbContextModelSnapshot.cs new file mode 100644 index 00000000..123fe83f --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Migrations/BasicManagementHttpApiHostMigrationsDbContextModelSnapshot.cs @@ -0,0 +1,1293 @@ +// +using System; +using Lion.AbpPro.BasicManagement.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Lion.AbpPro.BasicManagement.Migrations +{ + [DbContext(typeof(BasicManagementHttpApiHostMigrationsDbContext))] + partial class BasicManagementHttpApiHostMigrationsDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) + .HasAnnotation("ProductVersion", "6.0.7") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("varchar(96)") + .HasColumnName("ApplicationName"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("BrowserInfo"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("ClientId"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("ClientIpAddress"); + + b.Property("ClientName") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("ClientName"); + + b.Property("Comments") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Comments"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("CorrelationId"); + + b.Property("Exceptions") + .HasColumnType("longtext"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime(6)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("HttpMethod") + .HasMaxLength(16) + .HasColumnType("varchar(16)") + .HasColumnName("HttpMethod"); + + b.Property("HttpStatusCode") + .HasColumnType("int") + .HasColumnName("HttpStatusCode"); + + b.Property("ImpersonatorTenantId") + .HasColumnType("char(36)") + .HasColumnName("ImpersonatorTenantId"); + + b.Property("ImpersonatorTenantName") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("ImpersonatorTenantName"); + + b.Property("ImpersonatorUserId") + .HasColumnType("char(36)") + .HasColumnName("ImpersonatorUserId"); + + b.Property("ImpersonatorUserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("ImpersonatorUserName"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("TenantName"); + + b.Property("Url") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Url"); + + b.Property("UserId") + .HasColumnType("char(36)") + .HasColumnName("UserId"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AuditLogId") + .HasColumnType("char(36)") + .HasColumnName("AuditLogId"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime(6)") + .HasColumnName("ExecutionTime"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("MethodName") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("MethodName"); + + b.Property("Parameters") + .HasMaxLength(2000) + .HasColumnType("varchar(2000)") + .HasColumnName("Parameters"); + + b.Property("ServiceName") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("ServiceName"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AuditLogId") + .HasColumnType("char(36)") + .HasColumnName("AuditLogId"); + + b.Property("ChangeTime") + .HasColumnType("datetime(6)") + .HasColumnName("ChangeTime"); + + b.Property("ChangeType") + .HasColumnType("tinyint unsigned") + .HasColumnName("ChangeType"); + + b.Property("EntityId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("EntityId"); + + b.Property("EntityTenantId") + .HasColumnType("char(36)"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("EntityTypeFullName"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("EntityChangeId") + .HasColumnType("char(36)"); + + b.Property("NewValue") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("NewValue"); + + b.Property("OriginalValue") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("OriginalValue"); + + b.Property("PropertyName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("PropertyName"); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("PropertyTypeFullName"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BackgroundJobs.BackgroundJobRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsAbandoned") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false); + + b.Property("JobArgs") + .IsRequired() + .HasMaxLength(1048576) + .HasColumnType("longtext"); + + b.Property("JobName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("LastTryTime") + .HasColumnType("datetime(6)"); + + b.Property("NextTryTime") + .HasColumnType("datetime(6)"); + + b.Property("Priority") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint unsigned") + .HasDefaultValue((byte)15); + + b.Property("TryCount") + .ValueGeneratedOnAdd() + .HasColumnType("smallint") + .HasDefaultValue((short)0); + + b.HasKey("Id"); + + b.HasIndex("IsAbandoned", "NextTryTime"); + + b.ToTable("AbpBackgroundJobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique(); + + b.ToTable("AbpFeatureValues", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("tinyint(1)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("varchar(512)"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("Required") + .HasColumnType("tinyint(1)"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("SourceTenantId") + .HasColumnType("char(36)"); + + b.Property("SourceUserId") + .HasColumnType("char(36)"); + + b.Property("TargetTenantId") + .HasColumnType("char(36)"); + + b.Property("TargetUserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique(); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("tinyint(1)") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("tinyint(1)") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("tinyint(1)") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("varchar(96)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("varchar(96)"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("varchar(512)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("varchar(96)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("varchar(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("SecurityStamp"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("varchar(196)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("char(36)"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("varchar(95)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("DisplayName"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("char(36)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ProviderName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") + .IsUnique(); + + b.ToTable("AbpPermissionGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2048) + .HasColumnType("varchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique(); + + b.ToTable("AbpSettings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("AbpTenants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("varchar(1024)"); + + b.HasKey("TenantId", "Name"); + + b.ToTable("AbpTenantConnectionStrings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.HasOne("Volo.Abp.TenantManagement.Tenant", null) + .WithMany("ConnectionStrings") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Navigation("Actions"); + + b.Navigation("EntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Navigation("PropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Navigation("ConnectionStrings"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Program.cs b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Program.cs new file mode 100644 index 00000000..4bafdea7 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Program.cs @@ -0,0 +1,32 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Serilog; +using Serilog.Events; + +namespace Lion.AbpPro.BasicManagement; + +public class Program +{ + public static void Main(string[] args) + { + CreateHostBuilder(args).Build().Run(); + + } + + private static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.ConfigureKestrel((context, options) => { options.Limits.MaxRequestBodySize = 1024 * 50; }); + webBuilder.UseStartup(); + }) + .UseSerilog((context, loggerConfiguration) => + { + SerilogToEsExtensions.SetSerilogConfiguration( + loggerConfiguration, + context.Configuration); + }).UseAutofac(); +} diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Properties/launchSettings.json b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Properties/launchSettings.json new file mode 100644 index 00000000..26e73be5 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Lion.AbpPro.BasicManagement.HttpApi.Host": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "http://localhost:44324", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/SerilogToEsExtensions.cs b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/SerilogToEsExtensions.cs new file mode 100644 index 00000000..155541dc --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/SerilogToEsExtensions.cs @@ -0,0 +1,15 @@ +using Serilog; + +namespace Lion.AbpPro.BasicManagement +{ + public static class SerilogToEsExtensions + { + public static void SetSerilogConfiguration(LoggerConfiguration loggerConfiguration, IConfiguration configuration) + { + // 默认读取 configuration 中 "Serilog" 节点下的配置 + loggerConfiguration + .ReadFrom.Configuration(configuration) + .Enrich.FromLogContext(); + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Startup.cs b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Startup.cs new file mode 100644 index 00000000..2efeeafa --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/Startup.cs @@ -0,0 +1,15 @@ +namespace Lion.AbpPro.BasicManagement +{ + public class Startup + { + public void ConfigureServices(IServiceCollection services) + { + services.AddApplication(); + } + + public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) + { + app.InitializeApplication(); + } + } +} diff --git a/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/appsettings.json b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/appsettings.json new file mode 100644 index 00000000..668a7993 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/host/Lion.AbpPro.BasicManagement.HttpApi.Host/appsettings.json @@ -0,0 +1,48 @@ +{ + "Serilog": { + "Using": [ + "Serilog.Sinks.Console", + "Serilog.Sinks.File" + ], + "MinimumLevel": { + "Default": "Debug", + "Override": { + "Microsoft": "Information", + "Volo.Abp": "Information", + "Hangfire": "Information", + "DotNetCore.CAP": "Information", + "Serilog.AspNetCore": "Information", + "Microsoft.EntityFrameworkCore": "Warning", + "Microsoft.AspNetCore": "Information" + } + }, + "WriteTo": [ + { + "Name": "Console" + }, + { + "Name": "File", + "Args": { + "path": "logs/logs-.txt", + "rollingInterval": "Day" + } + } + ] + }, + "App": { + "SelfUrl": "http://localhost:44315", + "CorsOrigins": "https://*.AbpPro.com,http://localhost:4200,http://localhost:3100" + }, + "ConnectionStrings": { + "Default": "Data Source=localhost;Port=3306;Database=LionAbpProBasicManagementDB;uid=root;pwd=1q2w3E*;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true" + }, + "Redis": { + "Configuration": "localhost,password=mypassword,defaultdatabase=1" + }, + "Jwt": { + "Audience": "Lion.AbpPro.BasicManagement", + "SecurityKey": "dzehzRz9a8asdfasfdadfasdfasdfafsdadfasbasdf=", + "Issuer": "Lion.AbpPro", + "ExpirationTime": 30 + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/AuditLogs/GetAuditLogPageListOutput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/AuditLogs/GetAuditLogPageListOutput.cs new file mode 100644 index 00000000..05766ca7 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/AuditLogs/GetAuditLogPageListOutput.cs @@ -0,0 +1,43 @@ +namespace Lion.AbpPro.BasicManagement.AuditLogs +{ + public class GetAuditLogPageListOutput + { + public string ApplicationName { get; set; } + + public Guid? UserId { get; set; } + + public string UserName { get; set; } + + public Guid? TenantId { get; set; } + + public string TenantName { get; set; } + + public Guid? ImpersonatorUserId { get; set; } + + public Guid? ImpersonatorTenantId { get; set; } + + public DateTime ExecutionTime { get; set; } + + public int ExecutionDuration { get; set; } + + public string ClientIpAddress { get; set; } + + public string ClientName { get; set; } + + public string ClientId { get; set; } + + public string CorrelationId { get; set; } + + public string BrowserInfo { get; set; } + + public string HttpMethod { get; set; } + + public string Url { get; set; } + + public string Exceptions { get; set; } + + public string Comments { get; set; } + + public int? HttpStatusCode { get; set; } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/AuditLogs/IAuditLogAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/AuditLogs/IAuditLogAppService.cs new file mode 100644 index 00000000..769f1531 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/AuditLogs/IAuditLogAppService.cs @@ -0,0 +1,12 @@ +namespace Lion.AbpPro.BasicManagement.AuditLogs +{ + public interface IAuditLogAppService : IApplicationService + { + /// + /// 分页查询审计日志 + /// + /// + /// + Task> GetListAsync(PagingAuditLogListInput input); + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/AuditLogs/PagingAuditLogListInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/AuditLogs/PagingAuditLogListInput.cs new file mode 100644 index 00000000..3b6933b2 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/AuditLogs/PagingAuditLogListInput.cs @@ -0,0 +1,67 @@ +using System.Net; + +namespace Lion.AbpPro.BasicManagement.AuditLogs +{ + public class PagingAuditLogListInput : PagingBase + { + /// + /// 排序 + /// + public string Sorting { get; set; } + + /// + /// 开始时间 + /// + public DateTime? StartTime { get; set; } + + /// + /// 结束时间 + /// + public DateTime? EndTime { get; set; } + + /// + /// 请求方法 + /// + public string HttpMethod { get; set; } + + /// + /// 请求地址 + /// + public string Url { get; set; } + + /// + /// 用户名 + /// + public string UserName { get; set; } + + /// + /// 应用程序名称 + /// + public string ApplicationName { get; set; } + + /// + /// RequestId + /// + public string CorrelationId { get; set; } + + /// + /// 最大执行时间 + /// + public int? MaxExecutionDuration { get; set; } + + /// + /// 最小执行时间 + /// + public int? MinExecutionDuration { get; set; } + + /// + /// 是否有异常 + /// + public bool? HasException { get; set; } + + /// + /// http 状态码 + /// + public HttpStatusCode? HttpStatusCode { get; set; } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/BasicManagementApplicationContractsModule.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/BasicManagementApplicationContractsModule.cs new file mode 100644 index 00000000..d7610ed8 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/BasicManagementApplicationContractsModule.cs @@ -0,0 +1,25 @@ +using Volo.Abp.Account; +using Volo.Abp.Application; +using Volo.Abp.Modularity; +using Volo.Abp.Authorization; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.SettingManagement; + +namespace Lion.AbpPro.BasicManagement; + +[DependsOn( + typeof(BasicManagementDomainSharedModule), + typeof(AbpDddApplicationContractsModule), + typeof(AbpAuthorizationModule), + typeof(AbpAccountApplicationContractsModule), + typeof(AbpFeatureManagementApplicationContractsModule), + typeof(AbpIdentityApplicationContractsModule), + typeof(AbpPermissionManagementApplicationContractsModule), + typeof(AbpSettingManagementApplicationContractsModule), + typeof(AbpTenantManagementApplicationContractsModule) + )] +public class BasicManagementApplicationContractsModule : AbpModule +{ + +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/BasicManagementRemoteServiceConsts.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/BasicManagementRemoteServiceConsts.cs new file mode 100644 index 00000000..27044d03 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/BasicManagementRemoteServiceConsts.cs @@ -0,0 +1,8 @@ +namespace Lion.AbpPro.BasicManagement; + +public class BasicManagementRemoteServiceConsts +{ + public const string RemoteServiceName = "BasicManagement"; + + public const string ModuleName = "basicManagement"; +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/ConfigurationOptions/JwtOptions.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/ConfigurationOptions/JwtOptions.cs new file mode 100644 index 00000000..c0c7cb2b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/ConfigurationOptions/JwtOptions.cs @@ -0,0 +1,25 @@ +namespace Lion.AbpPro.BasicManagement.ConfigurationOptions +{ + public class JwtOptions + { + /// + /// 过期时间 单位小时 + /// + public int ExpirationTime { get; set; } + + /// + /// Audience + /// + public string Audience { get; set; } + + /// + /// 密钥 + /// + public string SecurityKey { get; set; } + + /// + /// Issuer + /// + public string Issuer { get; set; } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/FodyWeavers.xml b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/FodyWeavers.xml new file mode 100644 index 00000000..1715698c --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/FodyWeavers.xsd b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/FodyWeavers.xsd new file mode 100644 index 00000000..ffa6fc4b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/GlobalUsings.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/GlobalUsings.cs new file mode 100644 index 00000000..df8da7ef --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/GlobalUsings.cs @@ -0,0 +1,11 @@ +// Global using directives + +global using System.ComponentModel.DataAnnotations; +global using Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; +global using Lion.AbpPro.BasicManagement.Tenants.Dtos; +global using Lion.AbpPro.Extension.Customs.Dtos; +global using Volo.Abp.Application.Dtos; +global using Volo.Abp.Application.Services; +global using Volo.Abp.AspNetCore.Mvc.MultiTenancy; +global using Volo.Abp.PermissionManagement; +global using Volo.Abp.TenantManagement; \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Lion.AbpPro.BasicManagement.Application.Contracts.csproj b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Lion.AbpPro.BasicManagement.Application.Contracts.csproj new file mode 100644 index 00000000..c15d3abb --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Lion.AbpPro.BasicManagement.Application.Contracts.csproj @@ -0,0 +1,22 @@ + + + net6.0 + Lion.AbpPro.BasicManagement + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/AddRoleToOrganizationUnitInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/AddRoleToOrganizationUnitInput.cs new file mode 100644 index 00000000..baeb5c3c --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/AddRoleToOrganizationUnitInput.cs @@ -0,0 +1,8 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; + +public class AddRoleToOrganizationUnitInput +{ + public List RoleId { get; set; } + + public Guid OrganizationUnitId { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/AddUserToOrganizationUnitInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/AddUserToOrganizationUnitInput.cs new file mode 100644 index 00000000..0ae05acd --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/AddUserToOrganizationUnitInput.cs @@ -0,0 +1,8 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; + +public class AddUserToOrganizationUnitInput +{ + public List UserId { get; set; } + + public Guid OrganizationUnitId { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/CreateOrganizationUnitInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/CreateOrganizationUnitInput.cs new file mode 100644 index 00000000..61a50586 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/CreateOrganizationUnitInput.cs @@ -0,0 +1,9 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; + +public class CreateOrganizationUnitInput +{ + [Required] + public string DisplayName { get; set; } + + public Guid? ParentId { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetOrganizationUnitRoleInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetOrganizationUnitRoleInput.cs new file mode 100644 index 00000000..9fea6594 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetOrganizationUnitRoleInput.cs @@ -0,0 +1,7 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; + +public class GetOrganizationUnitRoleInput : PagingBase +{ + public Guid OrganizationUnitId { get; set; } + +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetOrganizationUnitRoleOutput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetOrganizationUnitRoleOutput.cs new file mode 100644 index 00000000..5e9c4baa --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetOrganizationUnitRoleOutput.cs @@ -0,0 +1,8 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; + +public class GetOrganizationUnitRoleOutput +{ + public Guid Id { get; set; } + + public string Name { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetOrganizationUnitUserInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetOrganizationUnitUserInput.cs new file mode 100644 index 00000000..a2397f83 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetOrganizationUnitUserInput.cs @@ -0,0 +1,8 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; + +public class GetOrganizationUnitUserInput : PagingBase +{ + public Guid OrganizationUnitId { get; set; } + + public string Filter { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetOrganizationUnitUserOutput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetOrganizationUnitUserOutput.cs new file mode 100644 index 00000000..3c399415 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetOrganizationUnitUserOutput.cs @@ -0,0 +1,10 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; + +public class GetOrganizationUnitUserOutput +{ + public Guid Id { get; set; } + + public string UserName { get; set; } + + public string Email { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetUnAddRoleInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetUnAddRoleInput.cs new file mode 100644 index 00000000..2018d71e --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetUnAddRoleInput.cs @@ -0,0 +1,8 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; + +public class GetUnAddRoleInput : PagingBase +{ + public Guid OrganizationUnitId { get; set; } + + public string Filter { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetUnAddRoleOutput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetUnAddRoleOutput.cs new file mode 100644 index 00000000..2d12b2dd --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetUnAddRoleOutput.cs @@ -0,0 +1,8 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; + +public class GetUnAddRoleOutput +{ + public Guid Id { get; set; } + + public string Name { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetUnAddUserInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetUnAddUserInput.cs new file mode 100644 index 00000000..b8cfb273 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetUnAddUserInput.cs @@ -0,0 +1,8 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; + +public class GetUnAddUserInput : PagingBase +{ + public Guid OrganizationUnitId { get; set; } + + public string Filter { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetUnAddUserOutput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetUnAddUserOutput.cs new file mode 100644 index 00000000..6de56e27 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/GetUnAddUserOutput.cs @@ -0,0 +1,10 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; + +public class GetUnAddUserOutput +{ + public Guid Id { get; set; } + + public string UserName { get; set; } + + public string Email { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/OrganizationUnitDto.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/OrganizationUnitDto.cs new file mode 100644 index 00000000..a41a8a67 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/OrganizationUnitDto.cs @@ -0,0 +1,14 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; + +public class OrganizationUnitDto +{ + public Guid Id { get; set; } + + public Guid? TenantId { get; set; } + + public string Code { get; set; } + + public string DisplayName { get; set; } + + public Guid? ParentId { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/RemoveRoleToOrganizationUnitInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/RemoveRoleToOrganizationUnitInput.cs new file mode 100644 index 00000000..46e2eb19 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/RemoveRoleToOrganizationUnitInput.cs @@ -0,0 +1,8 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; + +public class RemoveRoleToOrganizationUnitInput +{ + public Guid RoleId { get; set; } + + public Guid OrganizationUnitId { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/RemoveUserToOrganizationUnitInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/RemoveUserToOrganizationUnitInput.cs new file mode 100644 index 00000000..8a13e9d3 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/RemoveUserToOrganizationUnitInput.cs @@ -0,0 +1,8 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; + +public class RemoveUserToOrganizationUnitInput +{ + public Guid UserId { get; set; } + + public Guid OrganizationUnitId { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/TreeOutput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/TreeOutput.cs new file mode 100644 index 00000000..f721dbd2 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/TreeOutput.cs @@ -0,0 +1,10 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; + +public class TreeOutput +{ + public string Title { get; set; } + + public Guid Key { get; set; } + + public List Children { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/UpdateOrganizationUnitInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/UpdateOrganizationUnitInput.cs new file mode 100644 index 00000000..5246fb03 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/UpdateOrganizationUnitInput.cs @@ -0,0 +1,9 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; + +public class UpdateOrganizationUnitInput +{ + [Required] + public string DisplayName { get; set; } + + public Guid Id { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/IOrganizationUnitAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/IOrganizationUnitAppService.cs new file mode 100644 index 00000000..819c3ee8 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/IOrganizationUnitAppService.cs @@ -0,0 +1,66 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits; + +public interface IOrganizationUnitAppService : IApplicationService +{ + /// + /// 获取组织机构树结构 + /// + /// + Task> GetTreeAsync(); + + /// + /// 创建组织机构 + /// + Task CreateAsync(CreateOrganizationUnitInput input); + + /// + /// 删除组织机构 + /// + Task DeleteAsync(IdInput input); + + /// + /// 编辑组织机构 + /// + Task UpdateAsync(UpdateOrganizationUnitInput input); + + /// + /// 向组织机构添加角色 + /// + Task AddRoleToOrganizationUnitAsync(AddRoleToOrganizationUnitInput input); + + /// + /// 向组织机构删除角色 + /// + Task RemoveRoleFromOrganizationUnitAsync(RemoveRoleToOrganizationUnitInput input); + + /// + /// 向组织机构添加用户 + /// + Task AddUserToOrganizationUnitAsync(AddUserToOrganizationUnitInput input); + + /// + /// 向组织机构删除用户 + /// + Task RemoveUserFromOrganizationUnitAsync(RemoveUserToOrganizationUnitInput input); + + /// + /// 分页获取组织机构下用户 + /// + Task> GetUsersAsync(GetOrganizationUnitUserInput input); + + + /// + /// 分页获取组织机构下角色 + /// + Task> GetRolesAsync(GetOrganizationUnitRoleInput input); + + /// + /// 获取不在组织机构的用户 + /// + Task> GetUnAddUsersAsync(GetUnAddUserInput input); + + /// + /// 获取不在组织机构的角色 + /// + Task> GetUnAddRolessAsync(GetUnAddRoleInput input); +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Permissions/BasicManagementPermissionDefinitionProvider.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Permissions/BasicManagementPermissionDefinitionProvider.cs new file mode 100644 index 00000000..a29b3613 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Permissions/BasicManagementPermissionDefinitionProvider.cs @@ -0,0 +1,44 @@ +using Lion.AbpPro.BasicManagement.Localization; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Identity; +using Volo.Abp.Localization; + +namespace Lion.AbpPro.BasicManagement.Permissions; + +public class BasicManagementPermissionDefinitionProvider : PermissionDefinitionProvider +{ + public override void Define(IPermissionDefinitionContext context) + { + var abpIdentityGroup = context.GetGroup(IdentityPermissions.GroupName); + var userManagement = abpIdentityGroup.GetPermissionOrNull(IdentityPermissions.Users.Default); + userManagement.AddChild(BasicManagementPermissions.SystemManagement.UserEnable, L("Permission:Enable")); + userManagement.AddChild(BasicManagementPermissions.SystemManagement.UserExport, L("Permission:Export")); + + var auditManagement = + abpIdentityGroup.AddPermission(BasicManagementPermissions.SystemManagement.AuditLog, L("Permission:AuditLogManagement")); + var esManagement = abpIdentityGroup.AddPermission(BasicManagementPermissions.SystemManagement.ES, L("Permission:ESManagement")); + var settingManagement = abpIdentityGroup.AddPermission(BasicManagementPermissions.SystemManagement.Setting, L("Permission:SettingManagement")); + var organizationUnitManagement = abpIdentityGroup.AddPermission(BasicManagementPermissions.SystemManagement.OrganizationUnit, L("Permission:OrganizationUnitManagement")); + organizationUnitManagement.AddChild + ( + BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Create, + L("Permission:Create") + ); + organizationUnitManagement.AddChild + ( + BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Update, + L("Permission:Update") + ); + organizationUnitManagement.AddChild + ( + BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Delete, + L("Permission:Delete") + ); + + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Permissions/BasicManagementPermissions.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Permissions/BasicManagementPermissions.cs new file mode 100644 index 00000000..c01065da --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Permissions/BasicManagementPermissions.cs @@ -0,0 +1,32 @@ +using Volo.Abp.Reflection; + +namespace Lion.AbpPro.BasicManagement.Permissions; + +public class BasicManagementPermissions +{ + /// + /// 系统管理扩展权限 + /// + public static class SystemManagement + { + public const string Default = "AbpIdentity"; + public const string UserEnable = Default + ".Users.Enable"; + public const string UserExport = Default + ".Users.Export"; + public const string AuditLog = Default + ".AuditLog"; + public const string ES = Default + ".ES"; + public const string Setting = Default + ".Setting"; + public const string OrganizationUnit = Default + ".OrganizationUnitManagement"; + public static class OrganizationUnitManagement + { + public const string Default = SystemManagement.Default + ".OrganizationUnitManagement"; + public const string Create = Default + ".Create"; + public const string Update = Default + ".Update"; + public const string Delete = Default + ".Delete"; + } + } + + public static string[] GetAll() + { + return ReflectionHelper.GetPublicConstantsRecursively(typeof(BasicManagementPermissions)); + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/GetPermissionInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/GetPermissionInput.cs new file mode 100644 index 00000000..c5766f96 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/GetPermissionInput.cs @@ -0,0 +1,10 @@ +namespace Lion.AbpPro.BasicManagement.Roles.Dtos +{ + public class GetPermissionInput + { + [Required] + public string ProviderName { get; set; } + [Required] + public string ProviderKey { get; set; } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/PagingRoleListInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/PagingRoleListInput.cs new file mode 100644 index 00000000..c168ff47 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/PagingRoleListInput.cs @@ -0,0 +1,7 @@ +namespace Lion.AbpPro.BasicManagement.Roles.Dtos +{ + public class PagingRoleListInput : PagingBase + { + public string Filter { get; set; } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/PermissionOutput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/PermissionOutput.cs new file mode 100644 index 00000000..0f48d9de --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/PermissionOutput.cs @@ -0,0 +1,19 @@ +namespace Lion.AbpPro.BasicManagement.Roles.Dtos +{ + public class PermissionOutput { + public List Grants { get; set; } = new List(); + + public List AllGrants { get; set; } = new List(); + + public List Permissions { get; set; } = new List(); + } + + public class PermissionTreeDto + { + public string Title { get; set; } + + public string Key { get; set; } + + public List Children { get; set; }=new List(); + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/UpdateRoleInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/UpdateRoleInput.cs new file mode 100644 index 00000000..b9ce2c14 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/UpdateRoleInput.cs @@ -0,0 +1,11 @@ +using Volo.Abp.Identity; + +namespace Lion.AbpPro.BasicManagement.Roles.Dtos +{ + public class UpdateRoleInput + { + public Guid RoleId { get; set; } + + public IdentityRoleUpdateDto RoleInfo { get; set; } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/UpdateRolePermissionsInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/UpdateRolePermissionsInput.cs new file mode 100644 index 00000000..6844a7e4 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/UpdateRolePermissionsInput.cs @@ -0,0 +1,13 @@ +namespace Lion.AbpPro.BasicManagement.Roles.Dtos +{ + public class UpdateRolePermissionsInput + { + [Required] + public string ProviderName { get; set; } + + [Required] + public string ProviderKey { get; set; } + + public UpdatePermissionsDto UpdatePermissionsDto { get; set; } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/IRoleAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/IRoleAppService.cs new file mode 100644 index 00000000..c521ca63 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/IRoleAppService.cs @@ -0,0 +1,18 @@ +using Lion.AbpPro.BasicManagement.Roles.Dtos; +using Volo.Abp.Identity; + +namespace Lion.AbpPro.BasicManagement.Roles +{ + public interface IRoleAppService : IApplicationService + { + Task> AllListAsync(); + + Task> ListAsync(PagingRoleListInput input); + + Task CreateAsync(IdentityRoleCreateDto input); + + Task UpdateAsync(UpdateRoleInput input); + + Task DeleteAsync(IdInput input); + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/IRolePermissionAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/IRolePermissionAppService.cs new file mode 100644 index 00000000..dc10fd9e --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/IRolePermissionAppService.cs @@ -0,0 +1,12 @@ +using Lion.AbpPro.BasicManagement.Roles.Dtos; + +namespace Lion.AbpPro.BasicManagement.Roles +{ + public interface IRolePermissionAppService : IApplicationService + { + + Task GetPermissionAsync(GetPermissionInput input); + + Task UpdatePermissionAsync(UpdateRolePermissionsInput input); + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/PermissionOptions.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/PermissionOptions.cs new file mode 100644 index 00000000..75662a6e --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/PermissionOptions.cs @@ -0,0 +1,25 @@ +namespace Lion.AbpPro.BasicManagement.Roles; + +public class PermissionOptions +{ + /// + /// 需要排除的权限 + /// + public List Excludes { get; } + + public PermissionOptions() + { + Excludes = new List(); + } + + /// + /// 权限是否排除 + /// + /// 权限名称 + /// bool + public bool IsExclude(string permission) + { + if (permission.IsNullOrWhiteSpace()) return false; + return Excludes.Any(e => e.ToLower() == permission.ToLower()); + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Settings/Dtos/SettingOutput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Settings/Dtos/SettingOutput.cs new file mode 100644 index 00000000..453ca495 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Settings/Dtos/SettingOutput.cs @@ -0,0 +1,59 @@ +namespace Lion.AbpPro.BasicManagement.Settings.Dtos +{ + public class SettingOutput + { + /// + /// 分组 + /// + public string Group { get; set; } + + /// + /// 分组显示名称 + /// + public string GroupDisplayName { get; set; } + + public List SettingItemOutput { get; set; } + + public SettingOutput() + { + SettingItemOutput = new List(); + } + } + + public class SettingItemOutput + { + public SettingItemOutput(string name, string displayName, string value, string type,string description) + { + Name = name; + DisplayName = displayName; + Value = value; + Type = type ?? "Text"; + Description = description; + } + + /// + /// 名称 + /// + public string Name { get; set; } + + /// + /// 显示名称 + /// + public string DisplayName { get; set; } + + /// + /// 描述 + /// + public string Description { get; set; } + + /// + /// 值 + /// + public string Value { get; set; } + + /// + /// 前端控件类型 + /// + public string Type { get; set; } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Settings/Dtos/UpdateSettingInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Settings/Dtos/UpdateSettingInput.cs new file mode 100644 index 00000000..90dc0b84 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Settings/Dtos/UpdateSettingInput.cs @@ -0,0 +1,12 @@ +namespace Lion.AbpPro.BasicManagement.Settings.Dtos +{ + public class UpdateSettingInput + { + public Dictionary Values { get; set; } + + public UpdateSettingInput() + { + Values = new Dictionary(); + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Settings/ISettingAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Settings/ISettingAppService.cs new file mode 100644 index 00000000..3c860186 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Settings/ISettingAppService.cs @@ -0,0 +1,19 @@ +using Lion.AbpPro.BasicManagement.Settings.Dtos; + +namespace Lion.AbpPro.BasicManagement.Settings +{ + public interface ISettingAppService : IApplicationService + { + /// + /// 获取setting信息 + /// + /// + Task> GetAsync(); + + /// + /// 更新setting + /// + /// + Task UpdateAsync(UpdateSettingInput input); + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/FindTenantByNameInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/FindTenantByNameInput.cs new file mode 100644 index 00000000..df04e765 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/FindTenantByNameInput.cs @@ -0,0 +1,7 @@ +namespace Lion.AbpPro.BasicManagement.Tenants.Dtos +{ + public class FindTenantByNameInput + { + public string Name { get; set; } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/PagingTenantInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/PagingTenantInput.cs new file mode 100644 index 00000000..4c8c6758 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/PagingTenantInput.cs @@ -0,0 +1,7 @@ +namespace Lion.AbpPro.BasicManagement.Tenants.Dtos +{ + public class PagingTenantInput : PagingBase + { + public string Filter { get; set; } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/UpdateDefaultConnectionStringInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/UpdateDefaultConnectionStringInput.cs new file mode 100644 index 00000000..e60de924 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/UpdateDefaultConnectionStringInput.cs @@ -0,0 +1,8 @@ +namespace Lion.AbpPro.BasicManagement.Tenants.Dtos +{ + public class UpdateConnectionStringInput + { + public Guid Id { get; set; } + [Required(ErrorMessage = "连接字符串不能为空")] public string ConnectionString { get; set; } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/UpdateTenantInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/UpdateTenantInput.cs new file mode 100644 index 00000000..4aa78c29 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/UpdateTenantInput.cs @@ -0,0 +1,9 @@ +namespace Lion.AbpPro.BasicManagement.Tenants.Dtos +{ + public class UpdateTenantInput + { + public Guid Id { get; set; } + + [Required(ErrorMessage = "租户名称不能为空")] public string Name { get; set; } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/IVoloTenantAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/IVoloTenantAppService.cs new file mode 100644 index 00000000..ef71680e --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/IVoloTenantAppService.cs @@ -0,0 +1,21 @@ +namespace Lion.AbpPro.BasicManagement.Tenants +{ + public interface IVoloTenantAppService : IApplicationService + { + Task FindTenantByNameAsync(FindTenantByNameInput input); + + Task> ListAsync(PagingTenantInput input); + + Task CreateAsync(TenantCreateDto input); + + Task UpdateAsync(UpdateTenantInput input); + + Task DeleteAsync(IdInput input); + + Task GetDefaultConnectionStringAsync(IdInput input); + + Task UpdateDefaultConnectionStringAsync(UpdateConnectionStringInput input); + + Task DeleteDefaultConnectionStringAsync(IdInput input); + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/ExportIdentityUserOutput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/ExportIdentityUserOutput.cs new file mode 100644 index 00000000..fa2d8838 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/ExportIdentityUserOutput.cs @@ -0,0 +1,32 @@ +using Magicodes.ExporterAndImporter.Core; + +namespace Lion.AbpPro.BasicManagement.Users.Dtos +{ + public class ExportIdentityUserOutput + { + [ExporterHeader(DisplayName = "用户名")] + public string UserName { get; set; } + + [ExporterHeader(DisplayName = "真实名称")] + public string Name { get; set; } + + [ExporterHeader(DisplayName = "邮箱")] + public string Email { get; set; } + + [ExporterHeader(DisplayName = "手机号码")] + public string PhoneNumber { get; set; } + + [ExporterHeader(IsIgnore = true)] + public bool IsActive { get; set; } + + + [ExporterHeader(DisplayName = "状态")] + public string Status => IsActive ? "启用" : "禁用"; + + [ExporterHeader(IsIgnore = true)] + public DateTime CreationTime { get; set; } + + [ExporterHeader(DisplayName = "创建时间")] + public string CreationTimeFormat => CreationTime.ToString("yyyy-MM-dd hh:mm:ss"); + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/GithubAccessTokenResponse.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/GithubAccessTokenResponse.cs new file mode 100644 index 00000000..62b2299b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/GithubAccessTokenResponse.cs @@ -0,0 +1,24 @@ +using Newtonsoft.Json; + +namespace Lion.AbpPro.BasicManagement.Users.Dtos; + +public class GithubAccessTokenResponse +{ + /// + /// access_token + /// + [JsonProperty("access_token")] + public string Access_token { get; set; } + + /// + /// scope + /// + [JsonProperty("scope")] + public string Scope { get; set; } + + /// + /// token_type + /// + [JsonProperty("token_type")] + public string TokenType { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LockUserInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LockUserInput.cs new file mode 100644 index 00000000..aa450ce5 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LockUserInput.cs @@ -0,0 +1,11 @@ +namespace Lion.AbpPro.BasicManagement.Users.Dtos +{ + public class LockUserInput + { + [Required] + public Guid UserId { get; set; } + + [Required] + public bool Locked { get; set; } + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginGithubResponse.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginGithubResponse.cs new file mode 100644 index 00000000..d4d02dee --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginGithubResponse.cs @@ -0,0 +1,99 @@ +namespace Lion.AbpPro.BasicManagement.Users.Dtos; + +public class LoginGithubResponse +{ + public string login { get; set; } + + + public int id { get; set; } + + + public string node_id { get; set; } + + + public string avatar_url { get; set; } + + + public string gravatar_id { get; set; } + + + public string url { get; set; } + + + public string html_url { get; set; } + + + public string followers_url { get; set; } + + + public string following_url { get; set; } + + + public string gists_url { get; set; } + + + public string starred_url { get; set; } + + + public string subscriptions_url { get; set; } + + + public string organizations_url { get; set; } + + + public string repos_url { get; set; } + + + public string events_url { get; set; } + + + public string received_events_url { get; set; } + + + public string type { get; set; } + + + public string site_admin { get; set; } + + + public string name { get; set; } + + + public string company { get; set; } + + + public string blog { get; set; } + + + public string location { get; set; } + + + public string email { get; set; } + + + public string hireable { get; set; } + + + public string bio { get; set; } + + + public string twitter_username { get; set; } + + + public int public_repos { get; set; } + + + public int public_gists { get; set; } + + + public int followers { get; set; } + + + public int following { get; set; } + + + public string created_at { get; set; } + + + public string updated_at { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginInput.cs new file mode 100644 index 00000000..9b6ec59d --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginInput.cs @@ -0,0 +1,35 @@ +using Volo.Abp.Auditing; + +namespace Lion.AbpPro.BasicManagement.Users.Dtos +{ + /// + /// 登录 + /// + public class LoginInput : IValidatableObject + { + /// + /// 用户名或者邮箱 + /// + public string Name { get; set; } + + + /// + /// 密码 + /// + [DisableAuditing] + public string Password { get; set; } + + public IEnumerable Validate(ValidationContext validationContext) + { + if (Name.IsNullOrWhiteSpace()) + { + yield return new ValidationResult("Email can not be null", new[] { "Email" }); + } + + if (Password.IsNullOrWhiteSpace()) + { + yield return new ValidationResult("Password can not be null", new[] { "Password" }); + } + } + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginOutput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginOutput.cs new file mode 100644 index 00000000..5e1ac2f9 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginOutput.cs @@ -0,0 +1,15 @@ +namespace Lion.AbpPro.BasicManagement.Users.Dtos +{ + public class LoginOutput + { + public Guid Id { get; set; } + + public string Name { get; set; } + + public string UserName { get; set; } + + public string Token { get; set; } + + public List Roles { get; set; } = new List(); + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginStsResponse.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginStsResponse.cs new file mode 100644 index 00000000..80af74ed --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginStsResponse.cs @@ -0,0 +1,21 @@ +namespace Lion.AbpPro.BasicManagement.Users.Dtos +{ + public class LoginStsResponse + { + public string name { get; set; } + + public string preferred_username { get; set; } + + public string family_name { get; set; } + + public string email { get; set; } + + public string given_name { get; set; } + + public string avatar { get; set; } + + public string sub { get; set; } + + public Guid? tenantId { get; set; } + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/PagingUserListInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/PagingUserListInput.cs new file mode 100644 index 00000000..b32de3a4 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/PagingUserListInput.cs @@ -0,0 +1,10 @@ +namespace Lion.AbpPro.BasicManagement.Users.Dtos +{ + public class PagingUserListInput : PagingBase + { + /// + /// 关键字 + /// + public string Filter { get; set; } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/UpdateUserInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/UpdateUserInput.cs new file mode 100644 index 00000000..3a8ef0c8 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/UpdateUserInput.cs @@ -0,0 +1,11 @@ +using Volo.Abp.Identity; + +namespace Lion.AbpPro.BasicManagement.Users.Dtos +{ + public class UpdateUserInput + { + public Guid UserId { get; set; } + + public IdentityUserUpdateDto UserInfo { get; set; } + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/IAccountAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/IAccountAppService.cs new file mode 100644 index 00000000..9009b7c1 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/IAccountAppService.cs @@ -0,0 +1,12 @@ +using Lion.AbpPro.BasicManagement.Users.Dtos; + +namespace Lion.AbpPro.BasicManagement.Users +{ + public interface IAccountAppService: IApplicationService + { + /// + /// 用户名密码登录 + /// + Task LoginAsync(LoginInput input); + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/IUserAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/IUserAppService.cs new file mode 100644 index 00000000..171869ab --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/IUserAppService.cs @@ -0,0 +1,51 @@ +using Lion.AbpPro.BasicManagement.Users.Dtos; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.Account; +using Volo.Abp.Identity; + +namespace Lion.AbpPro.BasicManagement.Users +{ + public interface IUserAppService : IApplicationService + { + /// + /// 分页查询用户 + /// + Task> ListAsync(PagingUserListInput input); + + /// + /// 用户导出列表 + /// + Task ExportAsync(PagingUserListInput input); + + /// + /// 新增用户 + /// + Task CreateAsync(IdentityUserCreateDto input); + + /// + /// 更新用户 + /// + Task UpdateAsync(UpdateUserInput input); + + /// + /// 删除用户 + /// + Task DeleteAsync(IdInput input); + + + /// + /// 获取用户角色信息 + /// + Task> GetRoleByUserId(IdInput input); + + /// + /// 修改密码 + /// + Task ChangePasswordAsync(ChangePasswordInput input); + + /// + /// 锁定用户 + /// + Task LockAsync(LockUserInput input); + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/ApplicationConfigurations/LionAbpApplicationConfigurationAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/ApplicationConfigurations/LionAbpApplicationConfigurationAppService.cs new file mode 100644 index 00000000..ad9b9338 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/ApplicationConfigurations/LionAbpApplicationConfigurationAppService.cs @@ -0,0 +1,339 @@ +namespace Lion.AbpPro.BasicManagement.ApplicationConfigurations; + +[Dependency(ReplaceServices = true)] +public class LionAbpApplicationConfigurationAppService : ApplicationService, IAbpApplicationConfigurationAppService +{ + private readonly AbpLocalizationOptions _localizationOptions; + private readonly AbpMultiTenancyOptions _multiTenancyOptions; + private readonly IServiceProvider _serviceProvider; + private readonly IAbpAuthorizationPolicyProvider _abpAuthorizationPolicyProvider; + private readonly IPermissionDefinitionManager _permissionDefinitionManager; + private readonly DefaultAuthorizationPolicyProvider _defaultAuthorizationPolicyProvider; + private readonly IPermissionChecker _permissionChecker; + private readonly IAuthorizationService _authorizationService; + private readonly ICurrentUser _currentUser; + private readonly ISettingProvider _settingProvider; + private readonly ISettingDefinitionManager _settingDefinitionManager; + private readonly IFeatureDefinitionManager _featureDefinitionManager; + private readonly ILanguageProvider _languageProvider; + private readonly ITimezoneProvider _timezoneProvider; + private readonly AbpClockOptions _abpClockOptions; + private readonly ICachedObjectExtensionsDtoService _cachedObjectExtensionsDtoService; + + public LionAbpApplicationConfigurationAppService( + IOptions localizationOptions, + IOptions multiTenancyOptions, + IServiceProvider serviceProvider, + IAbpAuthorizationPolicyProvider abpAuthorizationPolicyProvider, + IPermissionDefinitionManager permissionDefinitionManager, + DefaultAuthorizationPolicyProvider defaultAuthorizationPolicyProvider, + IPermissionChecker permissionChecker, + IAuthorizationService authorizationService, + ICurrentUser currentUser, + ISettingProvider settingProvider, + ISettingDefinitionManager settingDefinitionManager, + IFeatureDefinitionManager featureDefinitionManager, + ILanguageProvider languageProvider, + ITimezoneProvider timezoneProvider, + IOptions abpClockOptions, + ICachedObjectExtensionsDtoService cachedObjectExtensionsDtoService) + { + _serviceProvider = serviceProvider; + _abpAuthorizationPolicyProvider = abpAuthorizationPolicyProvider; + _permissionDefinitionManager = permissionDefinitionManager; + _defaultAuthorizationPolicyProvider = defaultAuthorizationPolicyProvider; + _permissionChecker = permissionChecker; + _authorizationService = authorizationService; + _currentUser = currentUser; + _settingProvider = settingProvider; + _settingDefinitionManager = settingDefinitionManager; + _featureDefinitionManager = featureDefinitionManager; + _languageProvider = languageProvider; + _timezoneProvider = timezoneProvider; + _abpClockOptions = abpClockOptions.Value; + _cachedObjectExtensionsDtoService = cachedObjectExtensionsDtoService; + _localizationOptions = localizationOptions.Value; + _multiTenancyOptions = multiTenancyOptions.Value; + } + + public virtual async Task GetAsync() + { + //TODO: Optimize & cache..? + + Logger.LogDebug("Executing AbpApplicationConfigurationAppService.GetAsync()..."); + + var result = new ApplicationConfigurationDto + { + Auth = await GetAuthConfigAsync(), + Features = await GetFeaturesConfigAsync(), + Localization = await GetLocalizationConfigAsync(), + CurrentUser = GetCurrentUser(), + Setting = await GetSettingConfigAsync(), + MultiTenancy = GetMultiTenancy(), + CurrentTenant = GetCurrentTenant(), + Timing = await GetTimingConfigAsync(), + Clock = GetClockConfig(), + ObjectExtensions = _cachedObjectExtensionsDtoService.Get() + }; + + Logger.LogDebug("Executed AbpApplicationConfigurationAppService.GetAsync()."); + + return result; + } + + protected virtual CurrentTenantDto GetCurrentTenant() + { + return new CurrentTenantDto() + { + Id = CurrentTenant.Id, + Name = CurrentTenant.Name, + IsAvailable = CurrentTenant.IsAvailable + }; + } + + protected virtual MultiTenancyInfoDto GetMultiTenancy() + { + return new MultiTenancyInfoDto + { + IsEnabled = _multiTenancyOptions.IsEnabled + }; + } + + protected virtual CurrentUserDto GetCurrentUser() + { + return new CurrentUserDto + { + IsAuthenticated = _currentUser.IsAuthenticated, + Id = _currentUser.Id, + TenantId = _currentUser.TenantId, + ImpersonatorUserId = _currentUser.FindImpersonatorUserId(), + ImpersonatorTenantId = _currentUser.FindImpersonatorTenantId(), + UserName = _currentUser.UserName, + SurName = _currentUser.SurName, + Name = _currentUser.Name, + Email = _currentUser.Email, + EmailVerified = _currentUser.EmailVerified, + PhoneNumber = _currentUser.PhoneNumber, + PhoneNumberVerified = _currentUser.PhoneNumberVerified, + Roles = _currentUser.Roles + }; + } + + protected virtual async Task GetAuthConfigAsync() + { + var authConfig = new ApplicationAuthConfigurationDto(); + + var policyNames = await _abpAuthorizationPolicyProvider.GetPoliciesNamesAsync(); + var abpPolicyNames = new List(); + var otherPolicyNames = new List(); + + foreach (var policyName in policyNames) + { + if (await _defaultAuthorizationPolicyProvider.GetPolicyAsync(policyName) == null && _permissionDefinitionManager.GetOrNull(policyName) != null) + { + abpPolicyNames.Add(policyName); + } + else + { + otherPolicyNames.Add(policyName); + } + } + + foreach (var policyName in otherPolicyNames) + { + authConfig.Policies[policyName] = true; + + if (await _authorizationService.IsGrantedAsync(policyName)) + { + authConfig.GrantedPolicies[policyName] = true; + } + } + + var result = await _permissionChecker.IsGrantedAsync(abpPolicyNames.ToArray()); + foreach (var (key, value) in result.Result) + { + authConfig.Policies[key] = true; + if (value == PermissionGrantResult.Granted) + { + authConfig.GrantedPolicies[key] = true; + } + } + + var policies = BuildGrantedPolicies(authConfig.GrantedPolicies.Select(e => e.Key).ToList()); + foreach (var item in policies) + { + if (authConfig.GrantedPolicies.Any(e => e.Key == item)) continue; + authConfig.GrantedPolicies.Add(item, true); + } + + return authConfig; + } + + private List BuildGrantedPolicies(List grantedPolicies) + { + var result = new List(); + foreach (var policy in grantedPolicies) + { + result.AddRange(GetPolicy(policy)); + } + + return result.Distinct().ToList(); + } + + private List GetPolicy(string policy) + { + var result = new List(); + var split = policy.Split('.', StringSplitOptions.RemoveEmptyEntries); + if (split.Length <= 0) return result; + var currentPolicy = string.Empty; + for (int i = 0; i < split.Length - 1; i++) + { + if (i == 0) + { + currentPolicy += split[i]; + } + else + { + currentPolicy += "." + split[i]; + } + } + + if (!currentPolicy.IsNullOrWhiteSpace()) + { + result.Add(currentPolicy); + result.AddRange(GetPolicy(currentPolicy)); + } + + return result; + } + + + protected virtual async Task GetLocalizationConfigAsync() + { + var localizationConfig = new ApplicationLocalizationConfigurationDto(); + + localizationConfig.Languages.AddRange(await _languageProvider.GetLanguagesAsync()); + + foreach (var resource in _localizationOptions.Resources.Values) + { + var dictionary = new Dictionary(); + + var localizer = _serviceProvider.GetRequiredService( + typeof(IStringLocalizer<>).MakeGenericType(resource.ResourceType) + ) as IStringLocalizer; + + foreach (var localizedString in localizer.GetAllStrings()) + { + dictionary[localizedString.Name] = localizedString.Value; + } + + localizationConfig.Values[resource.ResourceName] = dictionary; + } + + localizationConfig.CurrentCulture = GetCurrentCultureInfo(); + + if (_localizationOptions.DefaultResourceType != null) + { + localizationConfig.DefaultResourceName = LocalizationResourceNameAttribute.GetName( + _localizationOptions.DefaultResourceType + ); + } + + localizationConfig.LanguagesMap = _localizationOptions.LanguagesMap; + localizationConfig.LanguageFilesMap = _localizationOptions.LanguageFilesMap; + + return localizationConfig; + } + + private static CurrentCultureDto GetCurrentCultureInfo() + { + return new CurrentCultureDto + { + Name = CultureInfo.CurrentUICulture.Name, + DisplayName = CultureInfo.CurrentUICulture.DisplayName, + EnglishName = CultureInfo.CurrentUICulture.EnglishName, + NativeName = CultureInfo.CurrentUICulture.NativeName, + IsRightToLeft = CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft, + CultureName = CultureInfo.CurrentUICulture.TextInfo.CultureName, + TwoLetterIsoLanguageName = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName, + ThreeLetterIsoLanguageName = CultureInfo.CurrentUICulture.ThreeLetterISOLanguageName, + DateTimeFormat = new DateTimeFormatDto + { + CalendarAlgorithmType = + CultureInfo.CurrentUICulture.DateTimeFormat.Calendar.AlgorithmType.ToString(), + DateTimeFormatLong = CultureInfo.CurrentUICulture.DateTimeFormat.LongDatePattern, + ShortDatePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern, + FullDateTimePattern = CultureInfo.CurrentUICulture.DateTimeFormat.FullDateTimePattern, + DateSeparator = CultureInfo.CurrentUICulture.DateTimeFormat.DateSeparator, + ShortTimePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortTimePattern, + LongTimePattern = CultureInfo.CurrentUICulture.DateTimeFormat.LongTimePattern, + } + }; + } + + private async Task GetSettingConfigAsync() + { + var result = new ApplicationSettingConfigurationDto + { + Values = new Dictionary() + }; + + var settingDefinitions = _settingDefinitionManager.GetAll().Where(x => x.IsVisibleToClients); + + var settingValues = await _settingProvider.GetAllAsync(settingDefinitions.Select(x => x.Name).ToArray()); + + foreach (var settingValue in settingValues) + { + result.Values[settingValue.Name] = settingValue.Value; + } + + return result; + } + + protected virtual async Task GetFeaturesConfigAsync() + { + var result = new ApplicationFeatureConfigurationDto(); + + foreach (var featureDefinition in _featureDefinitionManager.GetAll()) + { + if (!featureDefinition.IsVisibleToClients) + { + continue; + } + + result.Values[featureDefinition.Name] = await FeatureChecker.GetOrNullAsync(featureDefinition.Name); + } + + return result; + } + + protected virtual async Task GetTimingConfigAsync() + { + var windowsTimeZoneId = await _settingProvider.GetOrNullAsync(TimingSettingNames.TimeZone); + + return new TimingDto + { + TimeZone = new Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone + { + Windows = new WindowsTimeZone + { + TimeZoneId = windowsTimeZoneId + }, + Iana = new IanaTimeZone + { + TimeZoneName = windowsTimeZoneId.IsNullOrWhiteSpace() + ? null + : _timezoneProvider.WindowsToIana(windowsTimeZoneId) + } + } + }; + } + + protected virtual ClockDto GetClockConfig() + { + return new ClockDto + { + Kind = Enum.GetName(typeof(DateTimeKind), _abpClockOptions.Kind) + }; + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/AuditLogs/AuditLogAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/AuditLogs/AuditLogAppService.cs new file mode 100644 index 00000000..7645b377 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/AuditLogs/AuditLogAppService.cs @@ -0,0 +1,54 @@ +namespace Lion.AbpPro.BasicManagement.AuditLogs +{ + [Authorize] + public class AuditLogAppService : BasicManagementAppService, IAuditLogAppService + { + private readonly IAuditLogRepository _auditLogRepository; + + public AuditLogAppService(IAuditLogRepository auditLogRepository) + { + _auditLogRepository = auditLogRepository; + } + + /// + /// 分页查询审计日志 + /// + [Authorize(Policy = BasicManagementPermissions.SystemManagement.AuditLog)] + public async Task> GetListAsync(PagingAuditLogListInput input) + { + var list = await _auditLogRepository.GetListAsync( + input.Sorting, + input.PageSize, + input.SkipCount, + input.StartTime?.Date, + input.EndTime?.Date, + input.HttpMethod, + input.Url, + null, + input.UserName, + input.ApplicationName, + input.CorrelationId, + null, + input.MaxExecutionDuration, + input.MinExecutionDuration, + input.HasException, + input.HttpStatusCode); + var totalCount = await _auditLogRepository.GetCountAsync( + input.StartTime?.Date, + input.EndTime?.Date, + input.HttpMethod, + input.Url, + null, + input.UserName, + input.ApplicationName, + null, + input.CorrelationId, + input.MaxExecutionDuration, + input.MinExecutionDuration, + input.HasException, + input.HttpStatusCode); + return new PagedResultDto(totalCount, + ObjectMapper.Map, List>(list)); + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/BasicManagementAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/BasicManagementAppService.cs new file mode 100644 index 00000000..f8af60b5 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/BasicManagementAppService.cs @@ -0,0 +1,12 @@ +using Lion.AbpPro.BasicManagement.Localization; + +namespace Lion.AbpPro.BasicManagement; + +public abstract class BasicManagementAppService : ApplicationService +{ + protected BasicManagementAppService() + { + LocalizationResource = typeof(BasicManagementResource); + ObjectMapperContext = typeof(BasicManagementApplicationModule); + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/BasicManagementApplicationAutoMapperProfile.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/BasicManagementApplicationAutoMapperProfile.cs new file mode 100644 index 00000000..dd42966c --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/BasicManagementApplicationAutoMapperProfile.cs @@ -0,0 +1,23 @@ +using AutoMapper; +using Lion.AbpPro.BasicManagement.AuditLogs; +using Lion.AbpPro.BasicManagement.Users.Dtos; + +namespace Lion.AbpPro.BasicManagement; + +public class BasicManagementApplicationAutoMapperProfile : Profile +{ + public BasicManagementApplicationAutoMapperProfile() + { + CreateMap(); + CreateMap() + .ForMember(dest => dest.Token, opt => opt.Ignore()); + CreateMap() + .ForMember(e => e.CreationTimeFormat, opt => opt.Ignore()) + .ForMember(e => e.Status, opt => opt.Ignore()); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/BasicManagementApplicationModule.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/BasicManagementApplicationModule.cs new file mode 100644 index 00000000..198378c1 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/BasicManagementApplicationModule.cs @@ -0,0 +1,65 @@ +using Lion.AbpPro.BasicManagement.ConfigurationOptions; +using Lion.AbpPro.BasicManagement.Roles; +using Magicodes.ExporterAndImporter.Core; +using Magicodes.ExporterAndImporter.Excel; +using Volo.Abp.Account; +using Volo.Abp.AutoMapper; +using Volo.Abp.Modularity; +using Volo.Abp.Application; +using Volo.Abp.FeatureManagement; +using Volo.Abp.PermissionManagement; +using Volo.Abp.SettingManagement; + +namespace Lion.AbpPro.BasicManagement; + +[DependsOn( + typeof(BasicManagementDomainModule), + typeof(BasicManagementApplicationContractsModule), + typeof(AbpDddApplicationModule), + typeof(AbpAutoMapperModule), + typeof(AbpAccountApplicationModule), + typeof(AbpIdentityApplicationModule), + typeof(AbpPermissionManagementApplicationModule), + typeof(AbpTenantManagementApplicationModule), + typeof(AbpFeatureManagementApplicationModule), + typeof(AbpSettingManagementApplicationModule), + typeof(AbpAuditLoggingDomainModule) + )] +public class BasicManagementApplicationModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAutoMapperObjectMapper(); + Configure(options => + { + options.AddMaps(validate: true); + }); + + Configure(options => + { + options.Excludes.Add("AbpIdentity.Users.ManagePermissions"); + options.Excludes.Add("AbpIdentity.UserLookup"); + options.Excludes.Add("FeatureManagement"); + options.Excludes.Add("FeatureManagement.ManageHostFeatures"); + options.Excludes.Add("SettingManagement"); + options.Excludes.Add("SettingManagement.Emailing"); + options.Excludes.Add("AbpTenantManagement"); + options.Excludes.Add("AbpTenantManagement.Tenants.ManageFeatures"); + options.Excludes.Add("AbpTenantManagement.Tenants.ManageConnectionStrings"); + }); + + context.Services.Configure(context.Services.GetConfiguration().GetSection("Jwt")); + + ConfigureMagicodes(context); + } + + /// + /// 配置Magicodes.IE + /// Excel导入导出 + /// + private void ConfigureMagicodes(ServiceConfigurationContext context) + { + context.Services.AddTransient(); + context.Services.AddTransient(); + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/FodyWeavers.xml b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/FodyWeavers.xml new file mode 100644 index 00000000..1715698c --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/FodyWeavers.xsd b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/FodyWeavers.xsd new file mode 100644 index 00000000..ffa6fc4b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/GlobalUsings.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/GlobalUsings.cs new file mode 100644 index 00000000..dfa459e8 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/GlobalUsings.cs @@ -0,0 +1,31 @@ +// Global using directives + +global using System.Globalization; +global using AutoMapper.Internal.Mappers; +global using Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; +global using Lion.AbpPro.BasicManagement.Permissions; +global using Lion.AbpPro.BasicManagement.Tenants.Dtos; +global using Lion.AbpPro.Extension.Customs.Dtos; +global using Microsoft.AspNetCore.Authorization; +global using Microsoft.Extensions.DependencyInjection; +global using Microsoft.Extensions.Localization; +global using Microsoft.Extensions.Logging; +global using Microsoft.Extensions.Options; +global using Volo.Abp; +global using Volo.Abp.Application.Dtos; +global using Volo.Abp.Application.Services; +global using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; +global using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; +global using Volo.Abp.AspNetCore.Mvc.MultiTenancy; +global using Volo.Abp.AuditLogging; +global using Volo.Abp.Authorization; +global using Volo.Abp.Authorization.Permissions; +global using Volo.Abp.DependencyInjection; +global using Volo.Abp.Features; +global using Volo.Abp.Identity; +global using Volo.Abp.Localization; +global using Volo.Abp.MultiTenancy; +global using Volo.Abp.Settings; +global using Volo.Abp.TenantManagement; +global using Volo.Abp.Timing; +global using Volo.Abp.Users; \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Lion.AbpPro.BasicManagement.Application.csproj b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Lion.AbpPro.BasicManagement.Application.csproj new file mode 100644 index 00000000..574310e1 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Lion.AbpPro.BasicManagement.Application.csproj @@ -0,0 +1,25 @@ + + + + net6.0 + Lion.AbpPro.BasicManagement + + + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/OrganizationUnits/OrganizationUnitAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/OrganizationUnits/OrganizationUnitAppService.cs new file mode 100644 index 00000000..55e9f3f1 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/OrganizationUnits/OrganizationUnitAppService.cs @@ -0,0 +1,198 @@ +namespace Lion.AbpPro.BasicManagement.OrganizationUnits; + +[Authorize] +public class OrganizationUnitAppService : BasicManagementAppService, IOrganizationUnitAppService +{ + private readonly OrganizationUnitManager _organizationUnitManager; + private readonly IdentityUserManager _identityUserManager; + private readonly IOrganizationUnitRepository _organizationUnitRepository; + + public OrganizationUnitAppService( + OrganizationUnitManager OrganizationUnitManager, + IdentityUserManager identityUserManager, + IOrganizationUnitRepository organizationUnitRepository) + { + _organizationUnitManager = OrganizationUnitManager; + _identityUserManager = identityUserManager; + _organizationUnitRepository = organizationUnitRepository; + } + + public async Task> GetTreeAsync() + { + var organizationUnits = await _organizationUnitRepository.GetListAsync(); + var organizationUnitDtos = ObjectMapper.Map, List>(organizationUnits); + return ConvertToTree(organizationUnitDtos); + } + + [Authorize(BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Create)] + public async Task CreateAsync(CreateOrganizationUnitInput input) + { + var entity = new OrganizationUnit + ( + GuidGenerator.Create(), + input.DisplayName, + input.ParentId, + CurrentTenant.Id + ); + await _organizationUnitManager.CreateAsync(entity); + } + + [Authorize(BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Delete)] + public Task DeleteAsync(IdInput input) + { + return _organizationUnitManager.DeleteAsync(input.Id); + } + + [Authorize(BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Update)] + public async Task UpdateAsync(UpdateOrganizationUnitInput input) + { + var entity = await _organizationUnitRepository.FindAsync(input.Id); + if (entity != null) + { + entity.DisplayName = input.DisplayName; + await _organizationUnitManager.UpdateAsync(entity); + } + } + + [Authorize(BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Create)] + public async Task AddRoleToOrganizationUnitAsync(AddRoleToOrganizationUnitInput input) + { + foreach (var roleId in input.RoleId) + { + await _organizationUnitManager.AddRoleToOrganizationUnitAsync(roleId, input.OrganizationUnitId); + } + } + + [Authorize(BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Delete)] + public async Task RemoveRoleFromOrganizationUnitAsync(RemoveRoleToOrganizationUnitInput input) + { + await _organizationUnitManager.RemoveRoleFromOrganizationUnitAsync(input.RoleId, input.OrganizationUnitId); + } + + [Authorize(BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Create)] + public async Task AddUserToOrganizationUnitAsync(AddUserToOrganizationUnitInput input) + { + foreach (var userId in input.UserId) + { + await _identityUserManager.AddToOrganizationUnitAsync(userId, input.OrganizationUnitId); + } + } + + [Authorize(BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Delete)] + public async Task RemoveUserFromOrganizationUnitAsync(RemoveUserToOrganizationUnitInput input) + { + await _identityUserManager.RemoveFromOrganizationUnitAsync(input.UserId, input.OrganizationUnitId); + } + + public async Task> GetUsersAsync(GetOrganizationUnitUserInput input) + { + var listResult = new List(); + var organizationUnit = await _organizationUnitRepository.FindAsync(input.OrganizationUnitId); + if (organizationUnit == null) throw new BusinessException(BasicManagementErrorCodes.OrganizationUnitNotExist); + + var count = await _organizationUnitRepository.GetMembersCountAsync(organizationUnit, filter: input.Filter); + if (count > 0) + { + var list = await _organizationUnitRepository.GetMembersAsync + ( + organizationUnit, + maxResultCount: input.PageSize, + skipCount: input.SkipCount, + filter: input.Filter + ); + listResult = ObjectMapper.Map, List>(list); + } + + return new PagedResultDto(count, listResult); + } + + public async Task> GetUnAddUsersAsync(GetUnAddUserInput input) + { + var listResult = new List(); + var organizationUnit = await _organizationUnitRepository.FindAsync(input.OrganizationUnitId); + if (organizationUnit == null) throw new BusinessException(BasicManagementErrorCodes.OrganizationUnitNotExist); + var count = await _organizationUnitRepository.GetUnaddedUsersCountAsync(organizationUnit, input.Filter); + if (count > 0) + { + var users = await _organizationUnitRepository.GetUnaddedUsersAsync + ( + organizationUnit, + maxResultCount: input.PageSize, + skipCount: input.SkipCount, + filter: input.Filter + ); + listResult = ObjectMapper.Map, List>(users); + } + + return new PagedResultDto(count, listResult); + } + + public async Task> GetRolesAsync(GetOrganizationUnitRoleInput input) + { + var listResult = new List(); + var organizationUnit = await _organizationUnitRepository.FindAsync(input.OrganizationUnitId); + if (organizationUnit == null) throw new BusinessException(BasicManagementErrorCodes.OrganizationUnitNotExist); + + var count = await _organizationUnitRepository.GetRolesCountAsync(organizationUnit); + if (count > 0) + { + var list = await _organizationUnitRepository.GetRolesAsync(organizationUnit, maxResultCount: input.PageSize, skipCount: input.SkipCount); + listResult = ObjectMapper.Map, List>(list); + } + + return new PagedResultDto(count, listResult); + } + + public async Task> GetUnAddRolessAsync(GetUnAddRoleInput input) + { + var listResult = new List(); + var organizationUnit = await _organizationUnitRepository.FindAsync(input.OrganizationUnitId); + if (organizationUnit == null) throw new BusinessException(BasicManagementErrorCodes.OrganizationUnitNotExist); + var count = await _organizationUnitRepository.GetUnaddedRolesCountAsync(organizationUnit, input.Filter); + if (count > 0) + { + var roles = await _organizationUnitRepository.GetUnaddedRolesAsync + ( + organizationUnit, + maxResultCount: input.PageSize, + skipCount: input.SkipCount, + filter: input.Filter + ); + listResult = ObjectMapper.Map, List>(roles); + } + + return new PagedResultDto(count, listResult); + } + + #region 私有方法 + + private List ConvertToTree( + List list, + Guid? Id = null) + { + var result = new List(); + var childList = Children(list, Id); + foreach (var item in childList) + { + var tree = new TreeOutput + { + Key = item.Id, + Title = item.DisplayName, + Children = ConvertToTree(list, item.Id) + }; + result.Add(tree); + } + + return result; + } + + private List Children( + List list, + Guid? Id) + { + var childList = list.Where(x => x.ParentId == Id).ToList(); + return childList; + } + + #endregion +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Roles/RoleAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Roles/RoleAppService.cs new file mode 100644 index 00000000..e167f138 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Roles/RoleAppService.cs @@ -0,0 +1,87 @@ +using Lion.AbpPro.BasicManagement.Roles.Dtos; + +namespace Lion.AbpPro.BasicManagement.Roles +{ + [Authorize] + public class RoleAppService : BasicManagementAppService, IRoleAppService + { + private readonly IIdentityRoleAppService _identityRoleAppService; + + private readonly IIdentityRoleRepository _roleRepository; + + public RoleAppService( + IIdentityRoleAppService identityRoleAppService, + IIdentityRoleRepository roleRepository) + { + _identityRoleAppService = identityRoleAppService; + + _roleRepository = roleRepository; + } + + /// + /// 获取所有角色 + /// + + public async Task> AllListAsync() + { + List source = + await _roleRepository.GetListAsync() + .ConfigureAwait(continueOnCapturedContext: false); + return new ListResultDto( + ObjectMapper.Map, List>(source)); + } + + /// + /// 分页查询角色 + /// + /// + /// + public async Task> ListAsync(PagingRoleListInput input) + { + var request = new GetIdentityRolesInput + { + Filter = input.Filter?.Trim(), MaxResultCount = input.PageSize, + SkipCount = input.SkipCount + }; + List list = await _roleRepository + .GetListAsync(request.Sorting, request.MaxResultCount, request.SkipCount, + request.Filter) + .ConfigureAwait(continueOnCapturedContext: false); + return new PagedResultDto( + await _roleRepository.GetCountAsync(request.Filter) + .ConfigureAwait(continueOnCapturedContext: false), + ObjectMapper.Map, List>(list)); + } + + + /// + /// 创建角色 + /// + /// + /// + [Authorize(IdentityPermissions.Roles.Create)] + public async Task CreateAsync(IdentityRoleCreateDto input) + { + return await _identityRoleAppService.CreateAsync(input); + } + + /// + /// 更新角色 + /// + [Authorize(IdentityPermissions.Roles.Update)] + public async Task UpdateAsync(UpdateRoleInput input) + { + return await _identityRoleAppService.UpdateAsync(input.RoleId, input.RoleInfo); + } + + + /// + /// 删除角色 + /// + [Authorize(IdentityPermissions.Roles.Delete)] + public async Task DeleteAsync(IdInput input) + { + await _identityRoleAppService.DeleteAsync(input.Id); + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Roles/RolePermissionAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Roles/RolePermissionAppService.cs new file mode 100644 index 00000000..88e60b00 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Roles/RolePermissionAppService.cs @@ -0,0 +1,120 @@ +using Lion.AbpPro.BasicManagement.Roles.Dtos; +using Volo.Abp.PermissionManagement; + +namespace Lion.AbpPro.BasicManagement.Roles +{ + [Authorize] + public class RolePermissionAppService : BasicManagementAppService, IRolePermissionAppService + { + private readonly IPermissionAppService _rolePermissionAppService; + private readonly PermissionOptions _permissionOptions; + + public RolePermissionAppService(IPermissionAppService rolePermissionAppService, IOptions permissionOptions) + { + _rolePermissionAppService = rolePermissionAppService; + _permissionOptions = permissionOptions.Value; + } + + /// + /// 获取所有权限 + /// + /// + public async Task GetPermissionAsync(GetPermissionInput input) + { + var permissions = + await _rolePermissionAppService.GetAsync(input.ProviderName, input.ProviderKey); + return BuildTreeData(permissions.Groups); + } + + /// + /// 更新权限 + /// + /// + [Authorize(IdentityPermissions.Roles.ManagePermissions)] + public async Task UpdatePermissionAsync(UpdateRolePermissionsInput input) + { + await _rolePermissionAppService.UpdateAsync(input.ProviderName, input.ProviderKey, + input.UpdatePermissionsDto); + } + + /// + /// 生成权限树 + /// + /// + /// + private PermissionOutput BuildTreeData(List input) + { + var result = new PermissionOutput(); + + + var permissions = new List(); + + foreach (var group in input) + { + if (_permissionOptions.IsExclude(group.Name)) continue; + + // 获取分组信息 + var groupPermission = new PermissionTreeDto + { + Key = group.Name, + Title = group.Name == "AbpIdentity" + ? L[$"Permission:SystemManagement"] + : group.DisplayName + }; + result.Grants.Add(group.Name); + // 获取所有已授权和未授权权限集合 + foreach (var item in group.Permissions) + { + if (_permissionOptions.IsExclude(item.Name)) continue; + + result.AllGrants.Add(item.Name); + if (item.IsGranted) + { + result.Grants.Add(item.Name); + } + else + { + // 只要没有授权的,就移除顶级的分组 + result.Grants.Remove(group.Name); + result.Grants.Remove(item.ParentName); + } + } + + // 递归菜单 + var childTreeMenu = RecursionMenu(group.Permissions, null); + + groupPermission.Children.AddRange(childTreeMenu.Children); + + permissions.Add(groupPermission); + } + + + result.Permissions = permissions; + return result; + } + + + /// + /// 递归菜单 + /// + private PermissionTreeDto RecursionMenu(List permissionGrantInfoDtos, + string parentName) + { + var tree = new PermissionTreeDto(); + var permissions = permissionGrantInfoDtos + .Where(e => e.ParentName == parentName && !_permissionOptions.IsExclude(e.Name)).ToList(); + foreach (var item in permissions) + { + var child = new PermissionTreeDto + { + Key = item.Name, + Title = item.DisplayName + }; + child.Children.AddRange(RecursionMenu(permissionGrantInfoDtos, item.Name).Children); + tree.Children.Add(child); + } + + return tree; + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Settings/SettingAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Settings/SettingAppService.cs new file mode 100644 index 00000000..cb780748 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Settings/SettingAppService.cs @@ -0,0 +1,97 @@ +using Lion.AbpPro.BasicManagement.Settings.Dtos; +using Volo.Abp.SettingManagement; + +namespace Lion.AbpPro.BasicManagement.Settings +{ + [Authorize(policy: BasicManagementPermissions.SystemManagement.Setting)] + public class SettingAppService : BasicManagementAppService, ISettingAppService + { + private readonly ISettingDefinitionManager _settingDefinitionManager; + private readonly ISettingManager _settingManager; + private readonly IStringLocalizerFactory _factory; + + public SettingAppService( + ISettingDefinitionManager settingDefinitionManager, + ISettingManager settingManager, + IStringLocalizerFactory factory) + { + _settingDefinitionManager = settingDefinitionManager; + _settingManager = settingManager; + _factory = factory; + } + + public async Task> GetAsync() + { + var allSettings = _settingDefinitionManager.GetAll().ToList(); + var settings = allSettings + .Where(e => e.Properties.ContainsKey(BasicManagementSettings.Group.Default)).ToList(); + + var settingOutput = settings + .GroupBy(e => e.Properties[BasicManagementSettings.Group.Default].ToString()).Select(s => + new SettingOutput + { + Group = s.Key, + GroupDisplayName = _factory.CreateDefaultOrNull()[s.Key] + }).ToList(); + + foreach (var item in settingOutput) + { + var currentSettings = settings.Where(e => e.Properties.ContainsValue(item.Group)); + foreach (var itemDefinition in currentSettings) + { + var value = await SettingProvider.GetOrNullAsync(itemDefinition.Name); + var type = itemDefinition.Properties + .FirstOrDefault(f => f.Key == BasicManagementSettings.ControlType.Default).Value + .ToString(); + + item.SettingItemOutput.Add(new SettingItemOutput( + itemDefinition.Name, + itemDefinition.DisplayName.Localize(_factory), + value, + type, + itemDefinition.Description.Localize(_factory))); + } + } + + return await Task.FromResult(settingOutput); + } + + public async Task UpdateAsync(UpdateSettingInput input) + { + foreach (var kv in input.Values) + { + // The key of the settingValues is in camel_Case, like "setting_Abp_Localization_DefaultLanguage", + // change it to "Abp.Localization.DefaultLanguage" form + if (!kv.Key.StartsWith(BasicManagementSettings.Prefix)) + { + continue; + } + + string name = kv.Key.RemovePreFix(BasicManagementSettings.Prefix); + var setting = _settingDefinitionManager.GetOrNull(name); + if (setting == null) + { + continue; + } + + await SetSetting(setting, kv.Value); + } + } + + private Task SetSetting(SettingDefinition setting, string value) + { + if (setting.Providers.Any(p => p == UserSettingValueProvider.ProviderName)) + { + return _settingManager.SetForCurrentUserAsync(setting.Name, value); + } + + if (setting.Providers.Any(p => p == TenantSettingValueProvider.ProviderName)) + { + return _settingManager.SetForCurrentTenantAsync(setting.Name, value); + } + + + return _settingManager.SetGlobalAsync(setting.Name, value); + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Tenants/VoloTenantAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Tenants/VoloTenantAppService.cs new file mode 100644 index 00000000..3c59d663 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Tenants/VoloTenantAppService.cs @@ -0,0 +1,73 @@ +namespace Lion.AbpPro.BasicManagement.Tenants +{ + [Authorize] + public class VoloTenantAppService : BasicManagementAppService, IVoloTenantAppService + { + private readonly IAbpTenantAppService _abpTenantAppService; + private readonly ITenantAppService _tenantAppService; + + public VoloTenantAppService( + IAbpTenantAppService abpTenantAppService, + ITenantAppService tenantAppService) + { + _abpTenantAppService = abpTenantAppService; + _tenantAppService = tenantAppService; + } + + public async Task FindTenantByNameAsync(FindTenantByNameInput input) + { + return await _abpTenantAppService.FindTenantByNameAsync(input.Name); + } + + + public Task> ListAsync(PagingTenantInput input) + { + var request = new GetTenantsInput + { + Filter = input.Filter, SkipCount = input.SkipCount, MaxResultCount = input.PageSize + }; + return _tenantAppService.GetListAsync(request); + } + + [Authorize(policy:TenantManagementPermissions.Tenants.Create)] + public Task CreateAsync(TenantCreateDto input) + { + return _tenantAppService.CreateAsync(input); + } + + [Authorize(policy:TenantManagementPermissions.Tenants.Update)] + public Task UpdateAsync(UpdateTenantInput input) + { + var request = new TenantUpdateDto() + { + Name = input.Name.Trim() + }; + return _tenantAppService.UpdateAsync(input.Id, request); + } + + [Authorize(policy:TenantManagementPermissions.Tenants.Delete)] + public Task DeleteAsync(IdInput input) + { + return _tenantAppService.DeleteAsync(input.Id); + } + + [Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)] + public Task GetDefaultConnectionStringAsync(IdInput input) + { + return _tenantAppService.GetDefaultConnectionStringAsync(input.Id); + } + + [Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)] + public Task UpdateDefaultConnectionStringAsync(UpdateConnectionStringInput input) + { + return _tenantAppService.UpdateDefaultConnectionStringAsync(input.Id, + input.ConnectionString); + } + + [Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)] + public Task DeleteDefaultConnectionStringAsync(IdInput input) + { + return _tenantAppService.DeleteDefaultConnectionStringAsync(input.Id); + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Users/AccountAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Users/AccountAppService.cs new file mode 100644 index 00000000..faf0e494 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Users/AccountAppService.cs @@ -0,0 +1,103 @@ +using System.IdentityModel.Tokens.Jwt; +using System.Security.Claims; +using System.Text; +using IdentityModel; +using Lion.AbpPro.BasicManagement.ConfigurationOptions; +using Lion.AbpPro.BasicManagement.Users.Dtos; +using Microsoft.IdentityModel.Tokens; +using Volo.Abp.Security.Claims; + +namespace Lion.AbpPro.BasicManagement.Users +{ + public class AccountAppService : BasicManagementAppService, IAccountAppService + { + private readonly IdentityUserManager _userManager; + private readonly JwtOptions _jwtOptions; + private readonly Microsoft.AspNetCore.Identity.SignInManager _signInManager; + + public AccountAppService( + IdentityUserManager userManager, + IOptionsSnapshot jwtOptions, + Microsoft.AspNetCore.Identity.SignInManager signInManager) + { + _userManager = userManager; + _jwtOptions = jwtOptions.Value; + _signInManager = signInManager; + } + + + public async Task LoginAsync(LoginInput input) + { + var result = await _signInManager.PasswordSignInAsync(input.Name, input.Password, false, true); + if (result.IsNotAllowed) + { + throw new BusinessException(BasicManagementErrorCodes.UserLockedOut); + } + + if (!result.Succeeded) + { + throw new BusinessException(BasicManagementErrorCodes.UserOrPasswordMismatch); + } + + var user = await _userManager.FindByNameAsync(input.Name); + return await BuildResult(user); + } + + #region 私有方法 + + + private async Task BuildResult(IdentityUser user) + { + if (!user.IsActive) throw new BusinessException(BasicManagementErrorCodes.UserLockedOut); + var roles = await _userManager.GetRolesAsync(user); + if (roles == null || roles.Count == 0) throw new AbpAuthorizationException(); + var token = GenerateJwt(user.Id, user.UserName, user.Name, user.Email, + user.TenantId.ToString(), roles.ToList()); + var loginOutput = ObjectMapper.Map(user); + loginOutput.Token = token; + loginOutput.Roles = roles.ToList(); + return loginOutput; + } + + /// + /// 生成jwt token + /// + /// + private string GenerateJwt(Guid userId, string userName, string name, string email, + string tenantId, List roles) + { + var dateNow = DateTime.Now; + var expirationTime = dateNow + TimeSpan.FromHours(_jwtOptions.ExpirationTime); + var key = Encoding.ASCII.GetBytes(_jwtOptions.SecurityKey); + + var claims = new List + { + new Claim(JwtClaimTypes.Audience, _jwtOptions.Audience), + new Claim(JwtClaimTypes.Issuer, _jwtOptions.Issuer), + new Claim(AbpClaimTypes.UserId, userId.ToString()), + new Claim(AbpClaimTypes.Name, name), + new Claim(AbpClaimTypes.UserName, userName), + new Claim(AbpClaimTypes.Email, email), + new Claim(AbpClaimTypes.TenantId, tenantId) + }; + + foreach (var item in roles) + { + claims.Add(new Claim(JwtClaimTypes.Role, item)); + } + + var tokenDescriptor = new SecurityTokenDescriptor() + { + Subject = new ClaimsIdentity(claims), + Expires = expirationTime, + SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), + SecurityAlgorithms.HmacSha256Signature) + }; + var handler = new JwtSecurityTokenHandler(); + var token = handler.CreateToken(tokenDescriptor); + return handler.WriteToken(token); + } + + #endregion + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Users/UserAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Users/UserAppService.cs new file mode 100644 index 00000000..e1bc4e76 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Users/UserAppService.cs @@ -0,0 +1,154 @@ +using Lion.AbpPro.BasicManagement.Users.Dtos; +using Magicodes.ExporterAndImporter.Excel; +using Magicodes.ExporterAndImporter.Excel.AspNetCore; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.Account; + +namespace Lion.AbpPro.BasicManagement.Users +{ + [Authorize] + public class UserAppService : BasicManagementAppService, IUserAppService + { + private readonly IIdentityUserAppService _identityUserAppService; + private readonly IdentityUserManager _userManager; + private readonly IIdentityUserRepository _identityUserRepository; + private readonly IExcelExporter _excelExporter; + private readonly IOptions _options; + public UserAppService( + IIdentityUserAppService identityUserAppService, + IdentityUserManager userManager, + IIdentityUserRepository userRepository, + IExcelExporter excelExporter, + IOptions options) + { + _identityUserAppService = identityUserAppService; + _userManager = userManager; + _identityUserRepository = userRepository; + _excelExporter = excelExporter; + _options = options; + } + + /// + /// 分页查询用户 + /// + public async Task> ListAsync(PagingUserListInput input) + { + var request = new GetIdentityUsersInput + { + Filter = input.Filter?.Trim(), + MaxResultCount = input.PageSize, + SkipCount = input.SkipCount, + Sorting = " LastModificationTime desc" + }; + + var count = await _identityUserRepository.GetCountAsync(request.Filter); + var source = await _identityUserRepository + .GetListAsync(request.Sorting, request.MaxResultCount, request.SkipCount, request.Filter); + + return new PagedResultDto(count, + base.ObjectMapper.Map, List>(source)); + } + + /// + /// 用户导出列表 + /// + /// + [Authorize(BasicManagementPermissions.SystemManagement.UserExport)] + public async Task ExportAsync(PagingUserListInput input) + { + var request = new GetIdentityUsersInput + { + Filter = input.Filter?.Trim(), + MaxResultCount = input.PageSize, + SkipCount = input.SkipCount, + Sorting = " LastModificationTime desc" + }; + var source = await _identityUserRepository + .GetListAsync(request.Sorting, request.MaxResultCount, request.SkipCount, request.Filter); + var result = ObjectMapper.Map, List>(source); + var bytes = await _excelExporter.ExportAsByteArray(result); + return new XlsxFileResult(bytes: bytes, fileDownloadName: $"用户导出列表{DateTime.Now:yyyyMMdd}"); + } + + /// + /// 新增用户 + /// + /// + /// + [Authorize(IdentityPermissions.Users.Create)] + public async Task CreateAsync(IdentityUserCreateDto input) + { + // abp 5.0 之后新增字段,是否运行用户登录,默认设置为true + input.IsActive = true; + return await _identityUserAppService.CreateAsync(input); + } + + /// + /// 更新用户 + /// + /// + /// + [Authorize(IdentityPermissions.Users.Update)] + public virtual async Task UpdateAsync(UpdateUserInput input) + { + input.UserInfo.IsActive = true; + return await _identityUserAppService.UpdateAsync(input.UserId, input.UserInfo); + } + + /// + /// 删除用户 + /// + [Authorize(IdentityPermissions.Users.Delete)] + public virtual async Task DeleteAsync(IdInput input) + { + await _identityUserAppService.DeleteAsync(input.Id); + } + + /// + /// 获取用户角色信息 + /// + /// + public async Task> GetRoleByUserId(IdInput input) + { + return await _identityUserAppService.GetRolesAsync(input.Id); + } + + /// + /// 修改密码 + /// + /// + /// + public async Task ChangePasswordAsync(ChangePasswordInput input) + { + await _options.SetAsync(); + var identityUser = await _userManager.GetByIdAsync(base.CurrentUser.GetId()); + IdentityResult result; + if (identityUser.PasswordHash == null) + { + result = await _userManager.AddPasswordAsync(identityUser, input.NewPassword); + } + else + { + result = await _userManager.ChangePasswordAsync(identityUser, input.CurrentPassword, input.NewPassword); + } + + return !result.Succeeded + ? throw new UserFriendlyException(result?.Errors?.FirstOrDefault()?.Description) + : result.Succeeded; + } + + /// + /// 锁定用户 + /// + /// + /// + [Authorize(BasicManagementPermissions.SystemManagement.UserEnable)] + public async Task LockAsync(LockUserInput input) + { + var identityUser = await _userManager.GetByIdAsync(input.UserId); + identityUser.SetIsActive(input.Locked); + await _userManager.UpdateAsync(identityUser); + } + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/BasicManagementConsts.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/BasicManagementConsts.cs new file mode 100644 index 00000000..828a8822 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/BasicManagementConsts.cs @@ -0,0 +1,9 @@ +namespace Lion.AbpPro.BasicManagement; + +public static class BasicManagementConsts +{ + /// 名称空间 + public const string NameSpace = "Lion.AbpPro.BasicManagement"; + /// 默认语言 + public const string DefaultCultureName = "zh-Hans"; +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/BasicManagementDomainSharedModule.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/BasicManagementDomainSharedModule.cs new file mode 100644 index 00000000..bdab359d --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/BasicManagementDomainSharedModule.cs @@ -0,0 +1,39 @@ +namespace Lion.AbpPro.BasicManagement; + +[DependsOn( + typeof(AbpAuditLoggingDomainSharedModule), + typeof(AbpBackgroundJobsDomainSharedModule), + typeof(AbpFeatureManagementDomainSharedModule), + typeof(AbpIdentityDomainSharedModule), + typeof(AbpPermissionManagementDomainSharedModule), + typeof(AbpSettingManagementDomainSharedModule), + typeof(AbpTenantManagementDomainSharedModule) +)] +public class BasicManagementDomainSharedModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(BasicManagementConsts.NameSpace); + }); + + Configure(options => + { + options.Resources + .Add(BasicManagementConsts.DefaultCultureName) + .AddVirtualJson("/Localization/AbpPro") + .AddBaseTypes(typeof(IdentityResource)) + .AddBaseTypes(typeof(AbpValidationResource)) + .AddBaseTypes(typeof(AbpLocalizationResource)) + .AddBaseTypes(typeof(AbpSettingManagementResource)); + + options.DefaultResourceType = typeof(BasicManagementResource); + }); + + Configure(options => + { + options.MapCodeNamespace(BasicManagementConsts.NameSpace, typeof(BasicManagementResource)); + }); + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/BasicManagementErrorCodes.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/BasicManagementErrorCodes.cs new file mode 100644 index 00000000..0ad14787 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/BasicManagementErrorCodes.cs @@ -0,0 +1,8 @@ +namespace Lion.AbpPro.BasicManagement; + +public static class BasicManagementErrorCodes +{ + public const string OrganizationUnitNotExist =BasicManagementConsts.NameSpace+ ":100001"; + public const string UserLockedOut =BasicManagementConsts.NameSpace+ ":100002"; + public const string UserOrPasswordMismatch =BasicManagementConsts.NameSpace+ ":100003"; +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/FodyWeavers.xml b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/FodyWeavers.xml new file mode 100644 index 00000000..1715698c --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/FodyWeavers.xsd b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/FodyWeavers.xsd new file mode 100644 index 00000000..ffa6fc4b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/GlobalUsings.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/GlobalUsings.cs new file mode 100644 index 00000000..06880bc8 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/GlobalUsings.cs @@ -0,0 +1,19 @@ +// Global using directives + +global using Lion.AbpPro.BasicManagement.Localization; +global using Volo.Abp.AuditLogging; +global using Volo.Abp.BackgroundJobs; +global using Volo.Abp.FeatureManagement; +global using Volo.Abp.Identity; +global using Volo.Abp.Identity.Localization; +global using Volo.Abp.Localization; +global using Volo.Abp.Localization.ExceptionHandling; +global using Volo.Abp.Localization.Resources.AbpLocalization; +global using Volo.Abp.Modularity; +global using Volo.Abp.PermissionManagement; +global using Volo.Abp.SettingManagement; +global using Volo.Abp.SettingManagement.Localization; +global using Volo.Abp.TenantManagement; +global using Volo.Abp.Validation; +global using Volo.Abp.Validation.Localization; +global using Volo.Abp.VirtualFileSystem; \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Lion.AbpPro.BasicManagement.Domain.Shared.csproj b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Lion.AbpPro.BasicManagement.Domain.Shared.csproj new file mode 100644 index 00000000..5ab9be30 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Lion.AbpPro.BasicManagement.Domain.Shared.csproj @@ -0,0 +1,27 @@ + + + + net6.0 + Lion.AbpPro.BasicManagement + true + + + + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/ar.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/ar.json new file mode 100644 index 00000000..667c7e3a --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/ar.json @@ -0,0 +1,7 @@ +{ + "culture": "ar", + "texts": { + "MyAccount": "إدارة ملفى", + "SamplePageMessage": "صفحة نموذجية للوحدة النمطية BasicManagement" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/cs.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/cs.json new file mode 100644 index 00000000..ccc81a53 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/cs.json @@ -0,0 +1,7 @@ +{ + "culture": "cs", + "texts": { + "MyAccount": "Spravovat profil", + "SamplePageMessage": "Ukázková stránka pro modul BasicManagement" + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/de-DE.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/de-DE.json new file mode 100644 index 00000000..0b478c2e --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/de-DE.json @@ -0,0 +1,7 @@ +{ + "culture": "de-DE", + "texts": { + "MyAccount": "Mein Konto", + "SamplePageMessage": "Eine Beispielseite für das Modul BasicManagementModul" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/en-GB.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/en-GB.json new file mode 100644 index 00000000..399fd5a9 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/en-GB.json @@ -0,0 +1,7 @@ +{ + "culture": "en-GB", + "texts": { + "MyAccount": "My account", + "SamplePageMessage": "A sample page for the BasicManagement module" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/en.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/en.json new file mode 100644 index 00000000..0baa0236 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/en.json @@ -0,0 +1,21 @@ +{ + "culture": "en", + "texts": { + "MyAccount": "My account", + "SamplePageMessage": "A sample page for the BasicManagement module", + "Permission:Query": "Query", + "Permission:Create": "Create", + "Permission:Update": "Update", + "Permission:Delete": "Delete", + "Permission:Export": "Export", + "Permission:Enable": "Enable|Disable", + "Permission:SystemManagement": "SystemManagement", + "Permission:AuditLogManagement": "AuditLog", + "Permission:HangfireManagement": "BackgroundTask", + "Permission:CapManagement": "IntegratedEvent", + "Permission:ESManagement": "ESManagement", + "Permission:SettingManagement": "SettingManagement", + "Permission:OrganizationUnitManagement": "OrganizationUnitManagement", + "Setting.Group.System": "System", + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/es.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/es.json new file mode 100644 index 00000000..cd625dfa --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/es.json @@ -0,0 +1,7 @@ +{ + "culture": "es", + "texts": { + "MyAccount": "Mi cuenta", + "SamplePageMessage": "Una página de ejemplo para el módulo BasicManagement " + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/fi.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/fi.json new file mode 100644 index 00000000..312609b8 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/fi.json @@ -0,0 +1,7 @@ +{ + "culture": "fi", + "texts": { + "MyAccount": "Tilini", + "SamplePageMessage": "Esimerkkisivu BasicManagement-moduulille" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/fr.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/fr.json new file mode 100644 index 00000000..6efb62a9 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/fr.json @@ -0,0 +1,7 @@ +{ + "culture": "fr", + "texts": { + "MyAccount": "Mon compte", + "SamplePageMessage": "Exemple de page pour le module BasicManagement" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/hi.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/hi.json new file mode 100644 index 00000000..6ab98460 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/hi.json @@ -0,0 +1,7 @@ +{ + "culture": "hi", + "texts": { + "MyAccount": "मेरा खाता", + "SamplePageMessage": "BasicManagement मॉड्यूल के लिए एक नमूना पृष्ठ" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/hu.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/hu.json new file mode 100644 index 00000000..7ce80476 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/hu.json @@ -0,0 +1,7 @@ +{ + "culture": "hu", + "texts": { + "MyAccount": "A fiókom", + "SamplePageMessage": "Mintaoldal a BasicManagement modulhoz" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/is.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/is.json new file mode 100644 index 00000000..69cf06b6 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/is.json @@ -0,0 +1,7 @@ +{ + "culture": "is", + "texts": { + "MyAccount": "Minn aðgangur", + "SamplePageMessage": "Dæmi um síðu fyrir BasicManagement eininguna" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/it.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/it.json new file mode 100644 index 00000000..70712339 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/it.json @@ -0,0 +1,7 @@ +{ + "culture": "it", + "texts": { + "MyAccount": "Il mio conto", + "SamplePageMessage": "Una pagina di esempio per il modulo BasicManagement" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/nl.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/nl.json new file mode 100644 index 00000000..ad9e2fc9 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/nl.json @@ -0,0 +1,7 @@ +{ + "culture": "nl", + "texts": { + "MyAccount": "Mijn rekening", + "SamplePageMessage": "Een voorbeeldpagina voor de BasicManagement module" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/pl-PL.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/pl-PL.json new file mode 100644 index 00000000..89ef6dfe --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/pl-PL.json @@ -0,0 +1,7 @@ +{ + "culture": "pl-PL", + "texts": { + "MyAccount": "Moje konto", + "SamplePageMessage": "Przykładowa strona modułu BasicManagement" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/pt-BR.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/pt-BR.json new file mode 100644 index 00000000..20d7d54a --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/pt-BR.json @@ -0,0 +1,7 @@ +{ + "culture": "pt-BR", + "texts": { + "MyAccount": "Minha conta", + "SamplePageMessage": "Uma página de amostra para o módulo BasicManagement" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/ro-RO.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/ro-RO.json new file mode 100644 index 00000000..544bad91 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/ro-RO.json @@ -0,0 +1,7 @@ +{ + "culture": "ro-RO", + "texts": { + "MyAccount": "Contul meu", + "SamplePageMessage": "Un exemplu de pagină pentru modululul BasicManagement" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/ru.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/ru.json new file mode 100644 index 00000000..0656c980 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/ru.json @@ -0,0 +1,7 @@ +{ + "culture": "ru", + "texts": { + "MyAccount": "Мой аккаунт", + "SamplePageMessage": "Пример страницы для модуля BasicManagement" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/sk.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/sk.json new file mode 100644 index 00000000..76569eef --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/sk.json @@ -0,0 +1,7 @@ +{ + "culture": "sk", + "texts": { + "MyAccount": "Môj účet", + "SamplePageMessage": "Ukážka stránky pre modul BasicManagement" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/sl.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/sl.json new file mode 100644 index 00000000..3f393154 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/sl.json @@ -0,0 +1,7 @@ +{ + "culture": "sl", + "texts": { + "MyAccount": "Moj račun", + "SamplePageMessage": "Vzorčna stran za modul BasicManagement" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/tr.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/tr.json new file mode 100644 index 00000000..aff6b5a7 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/tr.json @@ -0,0 +1,7 @@ +{ + "culture": "tr", + "texts": { + "MyAccount": "Hesabım", + "SamplePageMessage": "BasicManagement modulünden örnek bir sayfa" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/vi.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/vi.json new file mode 100644 index 00000000..c134e293 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/vi.json @@ -0,0 +1,7 @@ +{ + "culture": "vi", + "texts": { + "MyAccount": "Tài khoản của tôi", + "SamplePageMessage": "Trang mẫu cho mô-đun BasicManagement" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/zh-Hans.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/zh-Hans.json new file mode 100644 index 00000000..f6f6276b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/zh-Hans.json @@ -0,0 +1,22 @@ +{ + "culture": "zh-Hans", + "texts": { + "MyAccount": "我的账户", + "SamplePageMessage": "BasicManagement模块的示例页面", + "Permission:Query": "查询", + "Permission:Create": "创建", + "Permission:Update": "编辑", + "Permission:Delete": "删除", + "Permission:Export": "导出", + "Permission:Enable": "启用|禁用", + "Permission:AuditLogManagement": "审计日志", + "Permission:SystemManagement": "系统管理", + "Permission:HangfireManagement": "后台任务", + "Permission:CapManagement": "集成事件", + "Permission:ESManagement": "ES日志", + "Permission:SettingManagement": "设置管理", + "Permission:OrganizationUnitManagement": "组织结构管理", + + "Setting.Group.System": "系统" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/zh-Hant.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/zh-Hant.json new file mode 100644 index 00000000..5eff348d --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/zh-Hant.json @@ -0,0 +1,7 @@ +{ + "culture": "zh-Hant", + "texts": { + "MyAccount": "我的賬戶", + "SamplePageMessage": "BasicManagement 模塊的示例頁面" + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagementResource.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagementResource.cs new file mode 100644 index 00000000..01125445 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagementResource.cs @@ -0,0 +1,7 @@ +namespace Lion.AbpPro.BasicManagement.Localization; + +[LocalizationResourceName("BasicManagement")] +public class BasicManagementResource +{ + +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/BasicManagementDbProperties.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/BasicManagementDbProperties.cs new file mode 100644 index 00000000..d6ce77d8 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/BasicManagementDbProperties.cs @@ -0,0 +1,10 @@ +namespace Lion.AbpPro.BasicManagement; + +public static class BasicManagementDbProperties +{ + public static string DbTablePrefix { get; set; } = "BasicManagement"; + + public static string DbSchema { get; set; } = null; + + public const string ConnectionStringName = "BasicManagement"; +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/BasicManagementDomainModule.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/BasicManagementDomainModule.cs new file mode 100644 index 00000000..43639958 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/BasicManagementDomainModule.cs @@ -0,0 +1,23 @@ +namespace Lion.AbpPro.BasicManagement; + +[DependsOn( + typeof(AbpDddDomainModule), + typeof(BasicManagementDomainSharedModule), + typeof(AbpAuditLoggingDomainModule), + typeof(AbpBackgroundJobsDomainModule), + typeof(AbpFeatureManagementDomainModule), + typeof(AbpIdentityDomainModule), + typeof(AbpPermissionManagementDomainIdentityModule), + typeof(AbpSettingManagementDomainModule), + typeof(AbpTenantManagementDomainModule) +)] +public class BasicManagementDomainModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.AddMaps(); + }); + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/AbpProDbMigrationService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/AbpProDbMigrationService.cs new file mode 100644 index 00000000..d7c9a81d --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/AbpProDbMigrationService.cs @@ -0,0 +1,213 @@ +using System.Diagnostics; +using System.Runtime.InteropServices; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.MultiTenancy; + +namespace Lion.AbpPro.BasicManagement.Data +{ + public class AbpProDbMigrationService : ITransientDependency + { + private ILogger Logger { get; set; } + + private readonly IDataSeeder _dataSeeder; + private readonly IEnumerable _dbSchemaMigrators; + private readonly ITenantRepository _tenantRepository; + private readonly ICurrentTenant _currentTenant; + + public AbpProDbMigrationService( + IDataSeeder dataSeeder, + IEnumerable dbSchemaMigrators, + ITenantRepository tenantRepository, + ICurrentTenant currentTenant) + { + _dataSeeder = dataSeeder; + _dbSchemaMigrators = dbSchemaMigrators; + _tenantRepository = tenantRepository; + _currentTenant = currentTenant; + + Logger = NullLogger.Instance; + } + + public async Task MigrateAsync() + { + var initialMigrationAdded = AddInitialMigrationIfNotExist(); + + if (initialMigrationAdded) + { + return; + } + + Logger.LogInformation("Started database migrations..."); + + await MigrateDatabaseSchemaAsync(); + await SeedDataAsync(); + + Logger.LogInformation($"Successfully completed host database migrations."); + + var tenants = await _tenantRepository.GetListAsync(includeDetails: true); + + var migratedDatabaseSchemas = new HashSet(); + foreach (var tenant in tenants) + { + using (_currentTenant.Change(tenant.Id)) + { + if (tenant.ConnectionStrings.Any()) + { + var tenantConnectionStrings = tenant.ConnectionStrings + .Select(x => x.Value) + .ToList(); + + if (!migratedDatabaseSchemas.IsSupersetOf(tenantConnectionStrings)) + { + await MigrateDatabaseSchemaAsync(tenant); + + migratedDatabaseSchemas.AddIfNotContains(tenantConnectionStrings); + } + } + + await SeedDataAsync(tenant); + } + + Logger.LogInformation($"Successfully completed {tenant.Name} tenant database migrations."); + } + + Logger.LogInformation("Successfully completed all database migrations."); + Logger.LogInformation("You can safely end this process..."); + } + + private async Task MigrateDatabaseSchemaAsync(Tenant tenant = null) + { + Logger.LogInformation( + $"Migrating schema for {(tenant == null ? "host" : tenant.Name + " tenant")} database..."); + + foreach (var migrator in _dbSchemaMigrators) + { + await migrator.MigrateAsync(); + } + } + + private async Task SeedDataAsync(Tenant tenant = null) + { + Logger.LogInformation($"Executing {(tenant == null ? "host" : tenant.Name + " tenant")} database seed..."); + + await _dataSeeder.SeedAsync(new DataSeedContext(tenant?.Id) + .WithProperty(IdentityDataSeedContributor.AdminEmailPropertyName, IdentityDataSeedContributor.AdminEmailDefaultValue) + .WithProperty(IdentityDataSeedContributor.AdminPasswordPropertyName, IdentityDataSeedContributor.AdminPasswordDefaultValue) + ); + } + + private bool AddInitialMigrationIfNotExist() + { + try + { + if (!DbMigrationsProjectExists()) + { + return false; + } + } + catch (Exception) + { + return false; + } + + try + { + if (!MigrationsFolderExists()) + { + AddInitialMigration(); + return true; + } + else + { + return false; + } + } + catch (Exception e) + { + Logger.LogWarning("Couldn't determinate if any migrations exist : " + e.Message); + return false; + } + } + + private bool DbMigrationsProjectExists() + { + var dbMigrationsProjectFolder = GetDbMigrationsProjectFolderPath(); + + return dbMigrationsProjectFolder != null; + } + + private bool MigrationsFolderExists() + { + var dbMigrationsProjectFolder = GetDbMigrationsProjectFolderPath(); + + return Directory.Exists(Path.Combine(dbMigrationsProjectFolder, "EntityFrameworkCore")); + } + + private void AddInitialMigration() + { + Logger.LogInformation("Creating initial migration..."); + + string argumentPrefix; + string fileName; + + if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) + { + argumentPrefix = "-c"; + fileName = "/bin/bash"; + } + else + { + argumentPrefix = "/C"; + fileName = "cmd.exe"; + } + + var procStartInfo = new ProcessStartInfo(fileName, + $"{argumentPrefix} \"abp create-migration-and-run-migrator \"{GetDbMigrationsProjectFolderPath()}\"\"" + ); + + try + { + Process.Start(procStartInfo); + } + catch (Exception) + { + throw new Exception("Couldn't run ABP CLI..."); + } + } + + private string GetDbMigrationsProjectFolderPath() + { + var slnDirectoryPath = GetSolutionDirectoryPath(); + + if (slnDirectoryPath == null) + { + throw new Exception("Solution folder not found!"); + } + + var srcDirectoryPath = Path.Combine(slnDirectoryPath, "src"); + + return Directory.GetDirectories(srcDirectoryPath) + .FirstOrDefault(d => d.EndsWith(".DbMigrations")); + } + + private string GetSolutionDirectoryPath() + { + var currentDirectory = new DirectoryInfo(Directory.GetCurrentDirectory()); + + while (Directory.GetParent(currentDirectory.FullName) != null) + { + currentDirectory = Directory.GetParent(currentDirectory.FullName); + + if (Directory.GetFiles(currentDirectory.FullName).FirstOrDefault(f => f.EndsWith(".sln")) != null) + { + return currentDirectory.FullName; + } + } + + return null; + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/IAbpProDbSchemaMigrator.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/IAbpProDbSchemaMigrator.cs new file mode 100644 index 00000000..f8a038ea --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/IAbpProDbSchemaMigrator.cs @@ -0,0 +1,7 @@ +namespace Lion.AbpPro.BasicManagement.Data +{ + public interface IAbpProDbSchemaMigrator + { + Task MigrateAsync(); + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/NullAbpProDbSchemaMigrator.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/NullAbpProDbSchemaMigrator.cs new file mode 100644 index 00000000..45984b83 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/NullAbpProDbSchemaMigrator.cs @@ -0,0 +1,15 @@ +using Volo.Abp.DependencyInjection; + +namespace Lion.AbpPro.BasicManagement.Data +{ + /* This is used if database provider does't define + * IAbpProDbSchemaMigrator implementation. + */ + public class NullAbpProDbSchemaMigrator : IAbpProDbSchemaMigrator, ITransientDependency + { + public Task MigrateAsync() + { + return Task.CompletedTask; + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/Seeds/AbpSettingDataSeedContributor.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/Seeds/AbpSettingDataSeedContributor.cs new file mode 100644 index 00000000..ce4fc26e --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/Seeds/AbpSettingDataSeedContributor.cs @@ -0,0 +1,22 @@ +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; + +namespace Lion.AbpPro.BasicManagement.Data.Seeds +{ + public class AbpSettingDataSeedContributor : IDataSeedContributor, ITransientDependency + { + private readonly ISettingManager _settingManager; + private const string DefaultLanguageKey = "Abp.Localization.DefaultLanguage"; + private const string DefaultLanguage = "zh-Hans"; + public AbpSettingDataSeedContributor(ISettingManager settingManager) + { + _settingManager = settingManager; + } + + public async Task SeedAsync(DataSeedContext context) + { + // 设置默认语言 + await _settingManager.SetGlobalAsync(DefaultLanguageKey, DefaultLanguage); + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/Seeds/UserDataSeedContributor.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/Seeds/UserDataSeedContributor.cs new file mode 100644 index 00000000..853048dc --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Data/Seeds/UserDataSeedContributor.cs @@ -0,0 +1,37 @@ +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; + +namespace Lion.AbpPro.BasicManagement.Data.Seeds +{ + public class UserDataSeedContributor : IDataSeedContributor, ITransientDependency + { + private readonly IdentityUserManager _userManager; + private readonly IdentityRoleManager _identityRoleManager; + + public UserDataSeedContributor( + IdentityUserManager userManager, + IdentityRoleManager identityRoleManager) + { + _userManager = userManager; + _identityRoleManager = identityRoleManager; + } + + public async Task SeedAsync(DataSeedContext context) + { + // abp 默认会锁定当前用户 + const string adminUserName = "admin"; + var adminUser = await _userManager.FindByNameAsync(adminUserName); + if (adminUser != null) + { + await _userManager.SetLockoutEnabledAsync(adminUser, false); + } + + var role = await _identityRoleManager.FindByNameAsync(adminUserName); + if (role != null) + { + role.IsDefault = true; + await _identityRoleManager.UpdateAsync(role); + } + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/FodyWeavers.xml b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/FodyWeavers.xml new file mode 100644 index 00000000..1715698c --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/FodyWeavers.xsd b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/FodyWeavers.xsd new file mode 100644 index 00000000..ffa6fc4b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/GlobalUsings.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/GlobalUsings.cs new file mode 100644 index 00000000..09653865 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/GlobalUsings.cs @@ -0,0 +1,12 @@ +// Global using directives + +global using Volo.Abp.AuditLogging; +global using Volo.Abp.AutoMapper; +global using Volo.Abp.BackgroundJobs; +global using Volo.Abp.Domain; +global using Volo.Abp.FeatureManagement; +global using Volo.Abp.Identity; +global using Volo.Abp.Modularity; +global using Volo.Abp.PermissionManagement.Identity; +global using Volo.Abp.SettingManagement; +global using Volo.Abp.TenantManagement; \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Lion.AbpPro.BasicManagement.Domain.csproj b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Lion.AbpPro.BasicManagement.Domain.csproj new file mode 100644 index 00000000..0cc0075d --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Lion.AbpPro.BasicManagement.Domain.csproj @@ -0,0 +1,22 @@ + + + + net6.0 + Lion.AbpPro.BasicManagement + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Settings/BasicManagementSettingDefinitionProvider.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Settings/BasicManagementSettingDefinitionProvider.cs new file mode 100644 index 00000000..01b87a48 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Settings/BasicManagementSettingDefinitionProvider.cs @@ -0,0 +1,62 @@ +using Lion.AbpPro.BasicManagement.Localization; +using Volo.Abp.Localization; +using Volo.Abp.Settings; + +namespace Lion.AbpPro.BasicManagement.Settings; + +public class BasicManagementSettingDefinitionProvider : SettingDefinitionProvider +{ + public override void Define(ISettingDefinitionContext context) + { + //Define your own settings here. Example: + //context.Add(new SettingDefinition(BasicManagementSettings.MySetting1)); + OverrideDefalutSettings(context); + } + + /// + /// 重写默认setting添加自定义属性 + /// + private static void OverrideDefalutSettings(ISettingDefinitionContext context) + { + context.GetOrNull("Abp.Identity.Password.RequiredLength") + .WithProperty(BasicManagementSettings.Group.Default, + BasicManagementSettings.Group.SystemManagement) + .WithProperty(BasicManagementSettings.ControlType.Default, + BasicManagementSettings.ControlType.Number); + + context.GetOrNull("Abp.Identity.Password.RequiredUniqueChars") + .WithProperty(BasicManagementSettings.Group.Default, + BasicManagementSettings.Group.SystemManagement) + .WithProperty(BasicManagementSettings.ControlType.Default, + BasicManagementSettings.ControlType.Number); + + context.GetOrNull("Abp.Identity.Password.RequireNonAlphanumeric") + .WithProperty(BasicManagementSettings.Group.Default, + BasicManagementSettings.Group.SystemManagement) + .WithProperty(BasicManagementSettings.ControlType.Default, + BasicManagementSettings.ControlType.TypeCheckBox); + + context.GetOrNull("Abp.Identity.Password.RequireLowercase") + .WithProperty(BasicManagementSettings.Group.Default, + BasicManagementSettings.Group.SystemManagement) + .WithProperty(BasicManagementSettings.ControlType.Default, + BasicManagementSettings.ControlType.TypeCheckBox); + + context.GetOrNull("Abp.Identity.Password.RequireUppercase") + .WithProperty(BasicManagementSettings.Group.Default, + BasicManagementSettings.Group.SystemManagement) + .WithProperty(BasicManagementSettings.ControlType.Default, + BasicManagementSettings.ControlType.TypeCheckBox); + + context.GetOrNull("Abp.Identity.Password.RequireDigit") + .WithProperty(BasicManagementSettings.Group.Default, + BasicManagementSettings.Group.SystemManagement) + .WithProperty(BasicManagementSettings.ControlType.Default, + BasicManagementSettings.ControlType.TypeCheckBox); + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Settings/BasicManagementSettings.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Settings/BasicManagementSettings.cs new file mode 100644 index 00000000..9b8bc947 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain/Settings/BasicManagementSettings.cs @@ -0,0 +1,26 @@ +namespace Lion.AbpPro.BasicManagement.Settings; + +public static class BasicManagementSettings +{ + public const string Prefix = "setting_"; + + /// + /// 前端控件类型 + /// + public static class ControlType + { + public const string Default = "Type"; + public const string TypeText = "Text"; + public const string TypeCheckBox = "CheckBox"; + public const string Number = "Number"; + } + + /// + /// 系统控制分组 + /// + public static class Group + { + public const string Default = "Setting.Group"; + public const string SystemManagement = Default + ".System"; + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/EntityFrameworkCore/BasicManagementDbContext.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/EntityFrameworkCore/BasicManagementDbContext.cs new file mode 100644 index 00000000..37b6c8d4 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/EntityFrameworkCore/BasicManagementDbContext.cs @@ -0,0 +1,33 @@ +namespace Lion.AbpPro.BasicManagement.EntityFrameworkCore; + +[ConnectionStringName(BasicManagementDbProperties.ConnectionStringName)] +public class BasicManagementDbContext : AbpDbContext, IBasicManagementDbContext +{ + + public DbSet FeatureValues { get; set; } + public DbSet Users { get; set; } + public DbSet Roles { get; set; } + public DbSet ClaimTypes { get; set; } + public DbSet OrganizationUnits { get; set; } + public DbSet SecurityLogs { get; set; } + public DbSet LinkUsers { get; set; } + public DbSet PermissionGrants { get; set; } + public DbSet Settings { get; set; } + public DbSet Tenants { get; set; } + public DbSet TenantConnectionStrings { get; set; } + public DbSet BackgroundJobs { get; set; } + public DbSet AuditLogs { get; set; } + public BasicManagementDbContext(DbContextOptions options) + : base(options) + { + + } + + protected override void OnModelCreating(ModelBuilder builder) + { + base.OnModelCreating(builder); + + builder.ConfigureBasicManagement(); + } + +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/EntityFrameworkCore/BasicManagementDbContextModelCreatingExtensions.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/EntityFrameworkCore/BasicManagementDbContextModelCreatingExtensions.cs new file mode 100644 index 00000000..b81f18e6 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/EntityFrameworkCore/BasicManagementDbContextModelCreatingExtensions.cs @@ -0,0 +1,18 @@ +namespace Lion.AbpPro.BasicManagement.EntityFrameworkCore; + +public static class BasicManagementDbContextModelCreatingExtensions +{ + public static void ConfigureBasicManagement( + this ModelBuilder builder) + { + Check.NotNull(builder, nameof(builder)); + + builder.ConfigurePermissionManagement(); + builder.ConfigureSettingManagement(); + builder.ConfigureBackgroundJobs(); + builder.ConfigureAuditLogging(); + builder.ConfigureIdentity(); + builder.ConfigureFeatureManagement(); + builder.ConfigureTenantManagement(); + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/EntityFrameworkCore/BasicManagementEntityFrameworkCoreModule.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/EntityFrameworkCore/BasicManagementEntityFrameworkCoreModule.cs new file mode 100644 index 00000000..e51b804e --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/EntityFrameworkCore/BasicManagementEntityFrameworkCoreModule.cs @@ -0,0 +1,25 @@ +namespace Lion.AbpPro.BasicManagement.EntityFrameworkCore; + +[DependsOn( + typeof(BasicManagementDomainModule), + typeof(AbpEntityFrameworkCoreModule), + typeof(AbpIdentityEntityFrameworkCoreModule), + typeof(AbpPermissionManagementEntityFrameworkCoreModule), + typeof(AbpSettingManagementEntityFrameworkCoreModule), + typeof(AbpBackgroundJobsEntityFrameworkCoreModule), + typeof(AbpAuditLoggingEntityFrameworkCoreModule), + typeof(AbpTenantManagementEntityFrameworkCoreModule), + typeof(AbpFeatureManagementEntityFrameworkCoreModule) +)] +public class BasicManagementEntityFrameworkCoreModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAbpDbContext(options => + { + /* Add custom repositories here. Example: + * options.AddRepository(); + */ + }); + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/EntityFrameworkCore/IBasicManagementDbContext.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/EntityFrameworkCore/IBasicManagementDbContext.cs new file mode 100644 index 00000000..b2527f78 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/EntityFrameworkCore/IBasicManagementDbContext.cs @@ -0,0 +1,15 @@ +namespace Lion.AbpPro.BasicManagement.EntityFrameworkCore; + +[ConnectionStringName(BasicManagementDbProperties.ConnectionStringName)] +public interface IBasicManagementDbContext : + IEfCoreDbContext, + IFeatureManagementDbContext, + IIdentityDbContext, + IPermissionManagementDbContext, + ISettingManagementDbContext, + ITenantManagementDbContext, + IBackgroundJobsDbContext, + IAuditLoggingDbContext +{ + +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/FodyWeavers.xml b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/FodyWeavers.xml new file mode 100644 index 00000000..1715698c --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/FodyWeavers.xsd b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/FodyWeavers.xsd new file mode 100644 index 00000000..ffa6fc4b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/GlobalUsings.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/GlobalUsings.cs new file mode 100644 index 00000000..82a4adde --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/GlobalUsings.cs @@ -0,0 +1,22 @@ +// Global using directives + +global using Microsoft.EntityFrameworkCore; +global using Microsoft.Extensions.DependencyInjection; +global using Volo.Abp; +global using Volo.Abp.AuditLogging; +global using Volo.Abp.AuditLogging.EntityFrameworkCore; +global using Volo.Abp.BackgroundJobs; +global using Volo.Abp.BackgroundJobs.EntityFrameworkCore; +global using Volo.Abp.Data; +global using Volo.Abp.EntityFrameworkCore; +global using Volo.Abp.FeatureManagement; +global using Volo.Abp.FeatureManagement.EntityFrameworkCore; +global using Volo.Abp.Identity; +global using Volo.Abp.Identity.EntityFrameworkCore; +global using Volo.Abp.Modularity; +global using Volo.Abp.PermissionManagement; +global using Volo.Abp.PermissionManagement.EntityFrameworkCore; +global using Volo.Abp.SettingManagement; +global using Volo.Abp.SettingManagement.EntityFrameworkCore; +global using Volo.Abp.TenantManagement; +global using Volo.Abp.TenantManagement.EntityFrameworkCore; \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/Lion.AbpPro.BasicManagement.EntityFrameworkCore.csproj b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/Lion.AbpPro.BasicManagement.EntityFrameworkCore.csproj new file mode 100644 index 00000000..1e9a6187 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.EntityFrameworkCore/Lion.AbpPro.BasicManagement.EntityFrameworkCore.csproj @@ -0,0 +1,20 @@ + + + + net6.0 + Lion.AbpPro.BasicManagement + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/BasicManagementHttpApiClientModule.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/BasicManagementHttpApiClientModule.cs new file mode 100644 index 00000000..4a05fe5b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/BasicManagementHttpApiClientModule.cs @@ -0,0 +1,26 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; + +namespace Lion.AbpPro.BasicManagement; + +[DependsOn( + typeof(BasicManagementApplicationContractsModule), + typeof(AbpHttpClientModule))] +public class BasicManagementHttpApiClientModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddHttpClientProxies( + typeof(BasicManagementApplicationContractsModule).Assembly, + BasicManagementRemoteServiceConsts.RemoteServiceName + ); + + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/FodyWeavers.xml b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/FodyWeavers.xml new file mode 100644 index 00000000..1715698c --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/FodyWeavers.xsd b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/FodyWeavers.xsd new file mode 100644 index 00000000..ffa6fc4b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/Lion.AbpPro.BasicManagement.HttpApi.Client.abppkg.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/Lion.AbpPro.BasicManagement.HttpApi.Client.abppkg.json new file mode 100644 index 00000000..7deef5e3 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/Lion.AbpPro.BasicManagement.HttpApi.Client.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.http-api-client" +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/Lion.AbpPro.BasicManagement.HttpApi.Client.csproj b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/Lion.AbpPro.BasicManagement.HttpApi.Client.csproj new file mode 100644 index 00000000..d6f31dad --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi.Client/Lion.AbpPro.BasicManagement.HttpApi.Client.csproj @@ -0,0 +1,18 @@ + + + + net6.0 + Lion.AbpPro.BasicManagement + + + + + + + + + + + + + diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/BasicManagementController.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/BasicManagementController.cs new file mode 100644 index 00000000..196af5b9 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/BasicManagementController.cs @@ -0,0 +1,12 @@ +using Lion.AbpPro.BasicManagement.Localization; +using Volo.Abp.AspNetCore.Mvc; + +namespace Lion.AbpPro.BasicManagement; + +public abstract class BasicManagementController : AbpControllerBase +{ + protected BasicManagementController() + { + LocalizationResource = typeof(BasicManagementResource); + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/BasicManagementHttpApiModule.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/BasicManagementHttpApiModule.cs new file mode 100644 index 00000000..70bd9da9 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/BasicManagementHttpApiModule.cs @@ -0,0 +1,32 @@ +using Localization.Resources.AbpUi; +using Lion.AbpPro.BasicManagement.Localization; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Microsoft.Extensions.DependencyInjection; + +namespace Lion.AbpPro.BasicManagement; + +[DependsOn( + typeof(BasicManagementApplicationContractsModule), + typeof(AbpAspNetCoreMvcModule))] +public class BasicManagementHttpApiModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(mvcBuilder => + { + mvcBuilder.AddApplicationPartIfNotExists(typeof(BasicManagementHttpApiModule).Assembly); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes(typeof(AbpUiResource)); + }); + } +} diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/FodyWeavers.xml b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/FodyWeavers.xml new file mode 100644 index 00000000..1715698c --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/FodyWeavers.xsd b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/FodyWeavers.xsd new file mode 100644 index 00000000..ffa6fc4b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/GlobalUsings.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/GlobalUsings.cs new file mode 100644 index 00000000..f6079937 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/GlobalUsings.cs @@ -0,0 +1,19 @@ +// Global using directives + +global using Lion.AbpPro.BasicManagement.AuditLogs; +global using Lion.AbpPro.BasicManagement.OrganizationUnits; +global using Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; +global using Lion.AbpPro.BasicManagement.Roles; +global using Lion.AbpPro.BasicManagement.Roles.Dtos; +global using Lion.AbpPro.BasicManagement.Settings; +global using Lion.AbpPro.BasicManagement.Settings.Dtos; +global using Lion.AbpPro.BasicManagement.Tenants.Dtos; +global using Lion.AbpPro.BasicManagement.Users; +global using Lion.AbpPro.BasicManagement.Users.Dtos; +global using Lion.AbpPro.Extension.Customs.Dtos; +global using Microsoft.AspNetCore.Mvc; +global using Swashbuckle.AspNetCore.Annotations; +global using Volo.Abp.Application.Dtos; +global using Volo.Abp.AspNetCore.Mvc.MultiTenancy; +global using Volo.Abp.Identity; +global using Volo.Abp.TenantManagement; \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Lion.AbpPro.BasicManagement.HttpApi.csproj b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Lion.AbpPro.BasicManagement.HttpApi.csproj new file mode 100644 index 00000000..578798d1 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Lion.AbpPro.BasicManagement.HttpApi.csproj @@ -0,0 +1,14 @@ + + + + net6.0 + Lion.AbpPro.BasicManagement + + + + + + + + + diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/AccountController.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/AccountController.cs new file mode 100644 index 00000000..ad7f6358 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/AccountController.cs @@ -0,0 +1,19 @@ +namespace Lion.AbpPro.BasicManagement.Systems +{ + public class AccountController : BasicManagementController, IAccountAppService + { + private readonly IAccountAppService _accountAppService; + + public AccountController(IAccountAppService accountAppService) + { + _accountAppService = accountAppService; + } + + + [SwaggerOperation(summary: "登录", Tags = new[] { "Account" })] + public Task LoginAsync(LoginInput input) + { + return _accountAppService.LoginAsync(input); + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/AuditLogController.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/AuditLogController.cs new file mode 100644 index 00000000..68e96a69 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/AuditLogController.cs @@ -0,0 +1,20 @@ +namespace Lion.AbpPro.BasicManagement.Systems +{ + [Route("AuditLogs")] + public class AuditLogController : BasicManagementController,IAuditLogAppService + { + private readonly IAuditLogAppService _auditLogAppService; + + public AuditLogController(IAuditLogAppService auditLogAppService) + { + _auditLogAppService = auditLogAppService; + } + + [HttpPost("page")] + [SwaggerOperation(summary: "分页获取审计日志信息", Tags = new[] {"AuditLogs"})] + public Task> GetListAsync(PagingAuditLogListInput input) + { + return _auditLogAppService.GetListAsync(input); + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/OrganizationUnitController.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/OrganizationUnitController.cs new file mode 100644 index 00000000..4d5f40eb --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/OrganizationUnitController.cs @@ -0,0 +1,96 @@ +namespace Lion.AbpPro.BasicManagement.Systems; + +[Route("OrganizationUnits")] +public class OrganizationUnitController : BasicManagementController, IOrganizationUnitAppService +{ + private readonly IOrganizationUnitAppService _organizationUnitAppService; + + public OrganizationUnitController(IOrganizationUnitAppService organizationUnitAppService) + { + _organizationUnitAppService = organizationUnitAppService; + } + + [HttpPost("tree")] + [SwaggerOperation(summary: "获取组织机构树", Tags = new[] { "OrganizationUnits" })] + public Task> GetTreeAsync() + { + return _organizationUnitAppService.GetTreeAsync(); + } + + [HttpPost("create")] + [SwaggerOperation(summary: "创建组织机构", Tags = new[] { "OrganizationUnits" })] + public Task CreateAsync(CreateOrganizationUnitInput input) + { + return _organizationUnitAppService.CreateAsync(input); + } + + [HttpPost("delete")] + [SwaggerOperation(summary: "删除组织机构", Tags = new[] { "OrganizationUnits" })] + public Task DeleteAsync(IdInput input) + { + return _organizationUnitAppService.DeleteAsync(input); + } + + [HttpPost("update")] + [SwaggerOperation(summary: "编辑组织机构", Tags = new[] { "OrganizationUnits" })] + public Task UpdateAsync(UpdateOrganizationUnitInput input) + { + return _organizationUnitAppService.UpdateAsync(input); + } + + [HttpPost("addRoleToOrganizationUnitAsync")] + [SwaggerOperation(summary: "向组织机构添加角色", Tags = new[] { "OrganizationUnits" })] + public Task AddRoleToOrganizationUnitAsync(AddRoleToOrganizationUnitInput input) + { + return _organizationUnitAppService.AddRoleToOrganizationUnitAsync(input); + } + + [HttpPost("removeRoleFromOrganizationUnitAsync")] + [SwaggerOperation(summary: "向组织机构删除角色", Tags = new[] { "OrganizationUnits" })] + public Task RemoveRoleFromOrganizationUnitAsync(RemoveRoleToOrganizationUnitInput input) + { + return _organizationUnitAppService.RemoveRoleFromOrganizationUnitAsync(input); + } + + [HttpPost("addUserToOrganizationUnit")] + [SwaggerOperation(summary: "向组织机构添加用户", Tags = new[] { "OrganizationUnits" })] + public Task AddUserToOrganizationUnitAsync(AddUserToOrganizationUnitInput input) + { + return _organizationUnitAppService.AddUserToOrganizationUnitAsync(input); + } + + [HttpPost("removeUserFromOrganizationUnit")] + [SwaggerOperation(summary: "向组织机构删除用户", Tags = new[] { "OrganizationUnits" })] + public Task RemoveUserFromOrganizationUnitAsync(RemoveUserToOrganizationUnitInput input) + { + return _organizationUnitAppService.RemoveUserFromOrganizationUnitAsync(input); + } + + [HttpPost("getUsers")] + [SwaggerOperation(summary: "分页获取组织机构下用户", Tags = new[] { "OrganizationUnits" })] + public Task> GetUsersAsync(GetOrganizationUnitUserInput input) + { + return _organizationUnitAppService.GetUsersAsync(input); + } + + [HttpPost("getRoles")] + [SwaggerOperation(summary: "分页获取组织机构下角色", Tags = new[] { "OrganizationUnits" })] + public Task> GetRolesAsync(GetOrganizationUnitRoleInput input) + { + return _organizationUnitAppService.GetRolesAsync(input); + } + + [HttpPost("getUnAddUsers")] + [SwaggerOperation(summary: "获取不在组织机构的用户", Tags = new[] { "OrganizationUnits" })] + public Task> GetUnAddUsersAsync(GetUnAddUserInput input) + { + return _organizationUnitAppService.GetUnAddUsersAsync(input); + } + + [HttpPost("getUnAddRoles")] + [SwaggerOperation(summary: "获取不在组织机构的角色", Tags = new[] { "OrganizationUnits" })] + public Task> GetUnAddRolessAsync(GetUnAddRoleInput input) + { + return _organizationUnitAppService.GetUnAddRolessAsync(input); + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/PermissionController.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/PermissionController.cs new file mode 100644 index 00000000..de1e7df0 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/PermissionController.cs @@ -0,0 +1,28 @@ +namespace Lion.AbpPro.BasicManagement.Systems +{ + [Route("Permissions")] + public class PermissionController : BasicManagementController,IRolePermissionAppService + { + private readonly IRolePermissionAppService _rolePermissionAppService; + + public PermissionController(IRolePermissionAppService rolePermissionAppService) + { + _rolePermissionAppService = rolePermissionAppService; + } + + + [HttpPost("tree")] + [SwaggerOperation(summary: "获取角色权限", Tags = new[] { "Permissions" })] + public Task GetPermissionAsync(GetPermissionInput input) + { + return _rolePermissionAppService.GetPermissionAsync(input); + } + + [HttpPost("update")] + [SwaggerOperation(summary: "更新角色", Tags = new[] { "Permissions" })] + public Task UpdatePermissionAsync(UpdateRolePermissionsInput input) + { + return _rolePermissionAppService.UpdatePermissionAsync(input); + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/RoleController.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/RoleController.cs new file mode 100644 index 00000000..21e9b997 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/RoleController.cs @@ -0,0 +1,49 @@ +namespace Lion.AbpPro.BasicManagement.Systems +{ + [Route("Roles")] + public class RoleController : BasicManagementController, IRoleAppService + { + private readonly IRoleAppService _roleAppService; + + public RoleController(IRoleAppService roleAppService) + { + _roleAppService = roleAppService; + } + + [HttpPost("all")] + [SwaggerOperation(summary: "获取所有角色", Tags = new[] { "Roles" })] + public Task> AllListAsync() + { + return _roleAppService.AllListAsync(); + } + + [HttpPost("page")] + [SwaggerOperation(summary: "分页获取角色", Tags = new[] { "Roles" })] + public Task> ListAsync(PagingRoleListInput input) + { + return _roleAppService.ListAsync(input); + } + + [HttpPost("create")] + [SwaggerOperation(summary: "创建角色", Tags = new[] { "Roles" })] + public Task CreateAsync(IdentityRoleCreateDto input) + { + return _roleAppService.CreateAsync(input); + } + + [HttpPost("update")] + [SwaggerOperation(summary: "更新角色", Tags = new[] { "Roles" })] + public Task UpdateAsync(UpdateRoleInput input) + { + return _roleAppService.UpdateAsync(input); + } + + + [HttpPost("delete")] + [SwaggerOperation(summary: "删除角色", Tags = new[] { "Roles" })] + public Task DeleteAsync(IdInput input) + { + return _roleAppService.DeleteAsync(input); + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/SettingController.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/SettingController.cs new file mode 100644 index 00000000..4aef1b1f --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/SettingController.cs @@ -0,0 +1,27 @@ +namespace Lion.AbpPro.BasicManagement.Systems +{ + [Route("Settings")] + public class SettingController : BasicManagementController,ISettingAppService + { + private readonly ISettingAppService _settingAppService; + + public SettingController(ISettingAppService settingAppService) + { + _settingAppService = settingAppService; + } + + [HttpPost("all")] + [SwaggerOperation(summary: "获取所有Setting", Tags = new[] { "Settings" })] + public async Task> GetAsync() + { + return await _settingAppService.GetAsync(); + } + + [HttpPost("update")] + [SwaggerOperation(summary: "更新Setting", Tags = new[] { "Settings" })] + public async Task UpdateAsync(UpdateSettingInput input) + { + await _settingAppService.UpdateAsync(input); + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/UserController.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/UserController.cs new file mode 100644 index 00000000..d0a8a817 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/UserController.cs @@ -0,0 +1,73 @@ +using System.Net; +using Volo.Abp.Account; + +namespace Lion.AbpPro.BasicManagement.Systems +{ + [Route("Users")] + public class UserController : BasicManagementController, IUserAppService + { + private readonly IUserAppService _userAppService; + + public UserController(IUserAppService userAppService) + { + _userAppService = userAppService; + } + + [HttpPost("page")] + [SwaggerOperation(summary: "分页获取用户信息", Tags = new[] { "Users" })] + public Task> ListAsync(PagingUserListInput input) + { + return _userAppService.ListAsync(input); + } + [HttpPost("export")] + [SwaggerOperation(summary: "导出用户列表", Tags = new[] { "Users" })] + [ProducesResponseType(typeof(FileContentResult), (int)HttpStatusCode.OK)] + public Task ExportAsync(PagingUserListInput input) + { + return _userAppService.ExportAsync(input); + } + + [HttpPost("create")] + [SwaggerOperation(summary: "创建用户", Tags = new[] { "Users" })] + public Task CreateAsync(IdentityUserCreateDto input) + { + return _userAppService.CreateAsync(input); + } + + [HttpPost("update")] + [SwaggerOperation(summary: "编辑用户", Tags = new[] { "Users" })] + public Task UpdateAsync(UpdateUserInput input) + { + return _userAppService.UpdateAsync(input); + } + + [HttpPost("delete")] + [SwaggerOperation(summary: "删除用户", Tags = new[] { "Users" })] + public Task DeleteAsync(IdInput input) + { + return _userAppService.DeleteAsync(input); + } + + + [HttpPost("role")] + [SwaggerOperation(summary: "获取用户角色信息", Tags = new[] { "Users" })] + public Task> GetRoleByUserId(IdInput input) + { + return _userAppService.GetRoleByUserId(input); + } + + [HttpPost("changePassword")] + [SwaggerOperation(summary: "修改当前用户密码", Tags = new[] { "Users" })] + public Task ChangePasswordAsync(ChangePasswordInput input) + { + return _userAppService.ChangePasswordAsync(input); + } + + [HttpPost("lock")] + [SwaggerOperation(summary: "锁定用户", Tags = new[] { "Users" })] + public Task LockAsync(LockUserInput input) + { + return _userAppService.LockAsync(input); + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Tenants/TenantController.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Tenants/TenantController.cs new file mode 100644 index 00000000..0dd84612 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Tenants/TenantController.cs @@ -0,0 +1,73 @@ +namespace Lion.AbpPro.BasicManagement.Tenants +{ + [Route("Tenants")] + public class TenantController : BasicManagementController, IVoloTenantAppService + { + private readonly IVoloTenantAppService _voloTenantAppService; + + public TenantController(IVoloTenantAppService voloTenantAppService) + { + _voloTenantAppService = voloTenantAppService; + } + + [HttpPost("find")] + [SwaggerOperation(summary: "通过名称获取租户信息", Tags = new[] { "Tenants" })] + public Task FindTenantByNameAsync(FindTenantByNameInput input) + { + return _voloTenantAppService.FindTenantByNameAsync(input); + } + + [HttpPost("page")] + [SwaggerOperation(summary: "分页获取租户信息", Tags = new[] { "Tenants" })] + public Task> ListAsync(PagingTenantInput input) + { + return _voloTenantAppService.ListAsync(input); + } + + [HttpPost("create")] + [SwaggerOperation(summary: "创建租户", Tags = new[] { "Tenants" })] + public Task CreateAsync(TenantCreateDto input) + { + return _voloTenantAppService.CreateAsync(input); + } + + [HttpPost("update")] + [SwaggerOperation(summary: "更新租户", Tags = new[] { "Tenants" })] + public Task UpdateAsync(UpdateTenantInput input) + { + var request = new TenantUpdateDto() + { + Name = input.Name.Trim() + }; + return _voloTenantAppService.UpdateAsync(input); + } + + [HttpPost("delete")] + [SwaggerOperation(summary: "删除租户", Tags = new[] { "Tenants" })] + public Task DeleteAsync(IdInput input) + { + return _voloTenantAppService.DeleteAsync(input); + } + + [HttpPost("getConnectionString")] + [SwaggerOperation(summary: "获取租户连接字符串", Tags = new[] { "Tenants" })] + public Task GetDefaultConnectionStringAsync(IdInput input) + { + return _voloTenantAppService.GetDefaultConnectionStringAsync(input); + } + + [HttpPost("updateConnectionString")] + [SwaggerOperation(summary: "更新租户连接字符串", Tags = new[] { "Tenants" })] + public Task UpdateDefaultConnectionStringAsync(UpdateConnectionStringInput input) + { + return _voloTenantAppService.UpdateDefaultConnectionStringAsync(input); + } + + [HttpPost("deleteConnectionString")] + [SwaggerOperation(summary: "删除租户连接字符串", Tags = new[] { "Tenants" })] + public Task DeleteDefaultConnectionStringAsync(IdInput input) + { + return _voloTenantAppService.DeleteDefaultConnectionStringAsync(input); + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/BasicManagementApplicationTestBase.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/BasicManagementApplicationTestBase.cs new file mode 100644 index 00000000..c80c9d7f --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/BasicManagementApplicationTestBase.cs @@ -0,0 +1,9 @@ +namespace Lion.AbpPro.BasicManagement; + +/* Inherit from this class for your application layer tests. + * See SampleAppService_Tests for example. + */ +public abstract class BasicManagementApplicationTestBase : BasicManagementTestBase +{ + +} diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/BasicManagementApplicationTestModule.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/BasicManagementApplicationTestModule.cs new file mode 100644 index 00000000..fb306b98 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/BasicManagementApplicationTestModule.cs @@ -0,0 +1,12 @@ +using Volo.Abp.Modularity; + +namespace Lion.AbpPro.BasicManagement; + +[DependsOn( + typeof(BasicManagementApplicationModule), + typeof(BasicManagementDomainTestModule) + )] +public class BasicManagementApplicationTestModule : AbpModule +{ + +} diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/FodyWeavers.xml b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/FodyWeavers.xml new file mode 100644 index 00000000..1715698c --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/FodyWeavers.xsd b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/FodyWeavers.xsd new file mode 100644 index 00000000..ffa6fc4b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/Lion.AbpPro.BasicManagement.Application.Tests.abppkg.json b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/Lion.AbpPro.BasicManagement.Application.Tests.abppkg.json new file mode 100644 index 00000000..a686451f --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/Lion.AbpPro.BasicManagement.Application.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/Lion.AbpPro.BasicManagement.Application.Tests.csproj b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/Lion.AbpPro.BasicManagement.Application.Tests.csproj new file mode 100644 index 00000000..4ef91a81 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Application.Tests/Lion.AbpPro.BasicManagement.Application.Tests.csproj @@ -0,0 +1,14 @@ + + + + net6.0 + Lion.AbpPro.BasicManagement + + + + + + + + + diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/BasicManagementDomainTestBase.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/BasicManagementDomainTestBase.cs new file mode 100644 index 00000000..71a6499d --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/BasicManagementDomainTestBase.cs @@ -0,0 +1,9 @@ +namespace Lion.AbpPro.BasicManagement; + +/* Inherit from this class for your domain layer tests. + * See SampleManager_Tests for example. + */ +public abstract class BasicManagementDomainTestBase : BasicManagementTestBase +{ + +} diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/BasicManagementDomainTestModule.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/BasicManagementDomainTestModule.cs new file mode 100644 index 00000000..04bab811 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/BasicManagementDomainTestModule.cs @@ -0,0 +1,16 @@ +using Lion.AbpPro.BasicManagement.EntityFrameworkCore; +using Volo.Abp.Modularity; + +namespace Lion.AbpPro.BasicManagement; + +/* Domain tests are configured to use the EF Core provider. + * You can switch to MongoDB, however your domain tests should be + * database independent anyway. + */ +[DependsOn( + typeof(BasicManagementEntityFrameworkCoreTestModule) + )] +public class BasicManagementDomainTestModule : AbpModule +{ + +} diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/FodyWeavers.xml b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/FodyWeavers.xml new file mode 100644 index 00000000..1715698c --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/FodyWeavers.xsd b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/FodyWeavers.xsd new file mode 100644 index 00000000..ffa6fc4b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/Lion.AbpPro.BasicManagement.Domain.Tests.csproj b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/Lion.AbpPro.BasicManagement.Domain.Tests.csproj new file mode 100644 index 00000000..c7b54f0d --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/Lion.AbpPro.BasicManagement.Domain.Tests.csproj @@ -0,0 +1,13 @@ + + + + net6.0 + Lion.AbpPro.BasicManagement + + + + + + + + diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/Samples/SampleManager_Tests.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/Samples/SampleManager_Tests.cs new file mode 100644 index 00000000..cb820a94 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.Domain.Tests/Samples/SampleManager_Tests.cs @@ -0,0 +1,20 @@ +using System.Threading.Tasks; +using Xunit; + +namespace Lion.AbpPro.BasicManagement.Samples; + +public class SampleManager_Tests : BasicManagementDomainTestBase +{ + //private readonly SampleManager _sampleManager; + + public SampleManager_Tests() + { + //_sampleManager = GetRequiredService(); + } + + [Fact] + public async Task Method1Async() + { + await Task.CompletedTask; + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/EntityFrameworkCore/BasicManagementEntityFrameworkCoreTestBase.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/EntityFrameworkCore/BasicManagementEntityFrameworkCoreTestBase.cs new file mode 100644 index 00000000..d4564221 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/EntityFrameworkCore/BasicManagementEntityFrameworkCoreTestBase.cs @@ -0,0 +1,9 @@ +namespace Lion.AbpPro.BasicManagement.EntityFrameworkCore; + +/* This class can be used as a base class for EF Core integration tests, + * while SampleRepository_Tests uses a different approach. + */ +public abstract class BasicManagementEntityFrameworkCoreTestBase : BasicManagementTestBase +{ + +} diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/EntityFrameworkCore/BasicManagementEntityFrameworkCoreTestModule.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/EntityFrameworkCore/BasicManagementEntityFrameworkCoreTestModule.cs new file mode 100644 index 00000000..21a9465f --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/EntityFrameworkCore/BasicManagementEntityFrameworkCoreTestModule.cs @@ -0,0 +1,42 @@ +using Microsoft.Data.Sqlite; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore.Sqlite; +using Volo.Abp.Modularity; + +namespace Lion.AbpPro.BasicManagement.EntityFrameworkCore; + +[DependsOn( + typeof(BasicManagementTestBaseModule), + typeof(BasicManagementEntityFrameworkCoreModule), + typeof(AbpEntityFrameworkCoreSqliteModule) + )] +public class BasicManagementEntityFrameworkCoreTestModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + var sqliteConnection = CreateDatabaseAndGetConnection(); + + Configure(options => + { + options.Configure(abpDbContextConfigurationContext => + { + abpDbContextConfigurationContext.DbContextOptions.UseSqlite(sqliteConnection); + }); + }); + } + + private static SqliteConnection CreateDatabaseAndGetConnection() + { + var connection = new SqliteConnection("Data Source=:memory:"); + connection.Open(); + + new BasicManagementDbContext( + new DbContextOptionsBuilder().UseSqlite(connection).Options + ).GetService().CreateTables(); + + return connection; + } +} diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs new file mode 100644 index 00000000..9ee2a47b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs @@ -0,0 +1,11 @@ +using Lion.AbpPro.BasicManagement.Samples; + +namespace Lion.AbpPro.BasicManagement.EntityFrameworkCore.Samples; + +public class SampleRepositoryTests : SampleRepository_Tests +{ + /* Don't write custom repository tests here, instead write to + * the base class. + * One exception can be some specific tests related to EF core. + */ +} diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/FodyWeavers.xml b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/FodyWeavers.xml new file mode 100644 index 00000000..1715698c --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/FodyWeavers.xsd b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/FodyWeavers.xsd new file mode 100644 index 00000000..ffa6fc4b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests.csproj b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests.csproj new file mode 100644 index 00000000..9c8dac5a --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests/Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests.csproj @@ -0,0 +1,16 @@ + + + + net6.0 + Lion.AbpPro.BasicManagement + + + + + + + + + + + diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/BasicManagementConsoleApiClientModule.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/BasicManagementConsoleApiClientModule.cs new file mode 100644 index 00000000..28e899f4 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/BasicManagementConsoleApiClientModule.cs @@ -0,0 +1,15 @@ +using Volo.Abp.Autofac; +using Volo.Abp.Http.Client.IdentityModel; +using Volo.Abp.Modularity; + +namespace Lion.AbpPro.BasicManagement; + +[DependsOn( + typeof(AbpAutofacModule), + typeof(BasicManagementHttpApiClientModule), + typeof(AbpHttpClientIdentityModelModule) + )] +public class BasicManagementConsoleApiClientModule : AbpModule +{ + +} diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs new file mode 100644 index 00000000..8a82d2d9 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs @@ -0,0 +1,24 @@ +using Microsoft.Extensions.Configuration; +using Volo.Abp.DependencyInjection; +using Volo.Abp.IdentityModel; + +namespace Lion.AbpPro.BasicManagement; + +public class ClientDemoService : ITransientDependency +{ + private readonly IIdentityModelAuthenticationService _authenticationService; + private readonly IConfiguration _configuration; + + public ClientDemoService( + IIdentityModelAuthenticationService authenticationService, + IConfiguration configuration) + { + _authenticationService = authenticationService; + _configuration = configuration; + } + + public async Task RunAsync() + { + await Task.CompletedTask; + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/ConsoleTestAppHostedService.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/ConsoleTestAppHostedService.cs new file mode 100644 index 00000000..24fe7a73 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/ConsoleTestAppHostedService.cs @@ -0,0 +1,40 @@ +using Microsoft.Extensions.Hosting; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; + +namespace Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp; + +public class ConsoleTestAppHostedService : IHostedService +{ + private readonly IConfiguration _configuration; + + public ConsoleTestAppHostedService(IConfiguration configuration) + { + _configuration = configuration; + } + + public async Task StartAsync(CancellationToken cancellationToken) + { + using (var application = await AbpApplicationFactory.CreateAsync(options => + { + options.Services.ReplaceConfiguration(_configuration); + options.UseAutofac(); + })) + { + await application.InitializeAsync(); + + var demo = application.ServiceProvider.GetRequiredService(); + await demo.RunAsync(); + + await application.ShutdownAsync(); + } + } + + public Task StopAsync(CancellationToken cancellationToken) + { + return Task.CompletedTask; + } +} diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp.abppkg.json b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp.abppkg.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp.csproj b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp.csproj new file mode 100644 index 00000000..019f66db --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp.csproj @@ -0,0 +1,32 @@ + + + + Exe + net6.0 + Lion.AbpPro.BasicManagement + + + + + + + + + + + + PreserveNewest + Always + + + + PreserveNewest + Always + + + + + + + + diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/Program.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/Program.cs new file mode 100644 index 00000000..aa51b4f8 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/Program.cs @@ -0,0 +1,22 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; + +namespace Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp; + +class Program +{ + static async Task Main(string[] args) + { + await CreateHostBuilder(args).RunConsoleAsync(); + } + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .AddAppSettingsSecretsJson() + .ConfigureServices((hostContext, services) => + { + services.AddHostedService(); + }); +} diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/appsettings.json b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/appsettings.json new file mode 100644 index 00000000..d5defdcb --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/appsettings.json @@ -0,0 +1,21 @@ +{ + "RemoteServices": { + "Default": { + "BaseUrl": "https://localhost:44342/" + }, + "BasicManagement": { + "BaseUrl": "https://localhost:44324/" + } + }, + "IdentityClients": { + "Default": { + "GrantType": "password", + "ClientId": "BasicManagement_App", + "ClientSecret": "1q2w3e*", + "UserName": "admin", + "UserPassword": "1q2w3E*", + "Authority": "https://localhost:44342/", + "Scope": "BasicManagement" + } + } +} diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/appsettings.secrets.json b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/appsettings.secrets.json new file mode 100644 index 00000000..7a73a41b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp/appsettings.secrets.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/BasicManagementDataSeedContributor.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/BasicManagementDataSeedContributor.cs new file mode 100644 index 00000000..f28222ea --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/BasicManagementDataSeedContributor.cs @@ -0,0 +1,32 @@ +using System.Threading.Tasks; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Guids; +using Volo.Abp.MultiTenancy; + +namespace Lion.AbpPro.BasicManagement; + +public class BasicManagementDataSeedContributor : IDataSeedContributor, ITransientDependency +{ + private readonly IGuidGenerator _guidGenerator; + private readonly ICurrentTenant _currentTenant; + + public BasicManagementDataSeedContributor( + IGuidGenerator guidGenerator, ICurrentTenant currentTenant) + { + _guidGenerator = guidGenerator; + _currentTenant = currentTenant; + } + + public Task SeedAsync(DataSeedContext context) + { + /* Instead of returning the Task.CompletedTask, you can insert your test data + * at this point! + */ + + using (_currentTenant.Change(context?.TenantId)) + { + return Task.CompletedTask; + } + } +} diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/BasicManagementTestBase.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/BasicManagementTestBase.cs new file mode 100644 index 00000000..9e48e7fb --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/BasicManagementTestBase.cs @@ -0,0 +1,59 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; +using Volo.Abp.Modularity; +using Volo.Abp.Uow; +using Volo.Abp.Testing; + +namespace Lion.AbpPro.BasicManagement; + +/* All test classes are derived from this class, directly or indirectly. */ +public abstract class BasicManagementTestBase : AbpIntegratedTest + where TStartupModule : IAbpModule +{ + protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) + { + options.UseAutofac(); + } + + protected virtual Task WithUnitOfWorkAsync(Func func) + { + return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func); + } + + protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func action) + { + using (var scope = ServiceProvider.CreateScope()) + { + var uowManager = scope.ServiceProvider.GetRequiredService(); + + using (var uow = uowManager.Begin(options)) + { + await action(); + + await uow.CompleteAsync(); + } + } + } + + protected virtual Task WithUnitOfWorkAsync(Func> func) + { + return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func); + } + + protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func> func) + { + using (var scope = ServiceProvider.CreateScope()) + { + var uowManager = scope.ServiceProvider.GetRequiredService(); + + using (var uow = uowManager.Begin(options)) + { + var result = await func(); + await uow.CompleteAsync(); + return result; + } + } + } +} diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/BasicManagementTestBaseModule.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/BasicManagementTestBaseModule.cs new file mode 100644 index 00000000..2a65c1ff --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/BasicManagementTestBaseModule.cs @@ -0,0 +1,41 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; +using Volo.Abp.Authorization; +using Volo.Abp.Autofac; +using Volo.Abp.Data; +using Volo.Abp.Modularity; +using Volo.Abp.Threading; + +namespace Lion.AbpPro.BasicManagement; + +[DependsOn( + typeof(AbpAutofacModule), + typeof(AbpTestBaseModule), + typeof(AbpAuthorizationModule), + typeof(BasicManagementDomainModule) + )] +public class BasicManagementTestBaseModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAlwaysAllowAuthorization(); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + SeedTestData(context); + } + + private static void SeedTestData(ApplicationInitializationContext context) + { + AsyncHelper.RunSync(async () => + { + using (var scope = context.ServiceProvider.CreateScope()) + { + await scope.ServiceProvider + .GetRequiredService() + .SeedAsync(); + } + }); + } +} diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/FodyWeavers.xml b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/FodyWeavers.xml new file mode 100644 index 00000000..1715698c --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/FodyWeavers.xsd b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/FodyWeavers.xsd new file mode 100644 index 00000000..ffa6fc4b --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/Lion.AbpPro.BasicManagement.TestBase.abppkg.json b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/Lion.AbpPro.BasicManagement.TestBase.abppkg.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/Lion.AbpPro.BasicManagement.TestBase.abppkg.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/Lion.AbpPro.BasicManagement.TestBase.csproj b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/Lion.AbpPro.BasicManagement.TestBase.csproj new file mode 100644 index 00000000..345cd965 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/Lion.AbpPro.BasicManagement.TestBase.csproj @@ -0,0 +1,21 @@ + + + + net6.0 + Lion.AbpPro.BasicManagement + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/Samples/SampleRepository_Tests.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/Samples/SampleRepository_Tests.cs new file mode 100644 index 00000000..6425b693 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/Samples/SampleRepository_Tests.cs @@ -0,0 +1,26 @@ +using System.Threading.Tasks; +using Volo.Abp.Modularity; +using Xunit; + +namespace Lion.AbpPro.BasicManagement.Samples; + +/* Write your custom repository tests like that, in this project, as abstract classes. + * Then inherit these abstract classes from EF Core & MongoDB test projects. + * In this way, both database providers are tests with the same set tests. + */ +public abstract class SampleRepository_Tests : BasicManagementTestBase + where TStartupModule : IAbpModule +{ + //private readonly ISampleRepository _sampleRepository; + + protected SampleRepository_Tests() + { + //_sampleRepository = GetRequiredService(); + } + + [Fact] + public async Task Method1Async() + { + await Task.CompletedTask; + } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/Security/FakeCurrentPrincipalAccessor.cs b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/Security/FakeCurrentPrincipalAccessor.cs new file mode 100644 index 00000000..b1c25751 --- /dev/null +++ b/aspnet-core/modules/BasicManagement/test/Lion.AbpPro.BasicManagement.TestBase/Security/FakeCurrentPrincipalAccessor.cs @@ -0,0 +1,42 @@ +using System.Collections.Generic; +using System.Security.Claims; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Security.Claims; + +namespace Lion.AbpPro.BasicManagement.Security; + +[Dependency(ReplaceServices = true)] +public class FakeCurrentPrincipalAccessor : ThreadCurrentPrincipalAccessor +{ + protected override ClaimsPrincipal GetClaimsPrincipal() + { + return GetPrincipal(); + } + + private ClaimsPrincipal _principal; + + private ClaimsPrincipal GetPrincipal() + { + if (_principal == null) + { + lock (this) + { + if (_principal == null) + { + _principal = new ClaimsPrincipal( + new ClaimsIdentity( + new List + { + new Claim(AbpClaimTypes.UserId,"2e701e62-0953-4dd3-910b-dc6cc93ccb0d"), + new Claim(AbpClaimTypes.UserName,"admin"), + new Claim(AbpClaimTypes.Email,"admin@abp.io") + } + ) + ); + } + } + } + + return _principal; + } +} diff --git a/aspnet-core/services/src/Lion.AbpPro.Application/HttpClientNameConsts.cs b/aspnet-core/services/src/Lion.AbpPro.Application/HttpClientNameConsts.cs deleted file mode 100644 index e9cd8d78..00000000 --- a/aspnet-core/services/src/Lion.AbpPro.Application/HttpClientNameConsts.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace Lion.AbpPro -{ - public static class HttpClientNameConsts - { - /// - /// 身份验证中心 - /// - public static string Sts = "Sts"; - /// - /// Github - /// - public static string Github = "Github"; - - public static string GithubApi = "GithubApi"; - } -}