Browse Source

Merge branch 'WangJunZzz:main' into main

pull/27/head
初十 4 years ago
committed by GitHub
parent
commit
7443e0e6b7
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      aspnet-core/Directory.Build.props
  2. 103
      aspnet-core/Lion.AbpPro.sln
  3. 118
      aspnet-core/modules/FileManagement/Lion.AbpPro.FileManagement.sln
  4. 12
      aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/Controllers/HomeController.cs
  5. 20
      aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/EntityFrameworkCore/FileManagementHttpApiHostMigrationsDbContext.cs
  6. 27
      aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/EntityFrameworkCore/FileManagementHttpApiHostMigrationsDbContextFactory.cs
  7. 202
      aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/FileManagementHttpApiHostModule.cs
  8. 3
      aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/FodyWeavers.xml
  9. 30
      aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/FodyWeavers.xsd
  10. 47
      aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/Lion.AbpPro.FileManagement.HttpApi.Host.csproj
  11. 93
      aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/Migrations/20220119101622_Init.Designer.cs
  12. 60
      aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/Migrations/20220119101622_Init.cs
  13. 91
      aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/Migrations/FileManagementHttpApiHostMigrationsDbContextModelSnapshot.cs
  14. 24
      aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/Program.cs
  15. 12
      aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/Properties/launchSettings.json
  16. 19
      aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/Startup.cs
  17. 26
      aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/appsettings.json
  18. 14
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/FileManagementApplicationContractsModule.cs
  19. 8
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/FileManagementRemoteServiceConsts.cs
  20. 10
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Files/Dto/CreateFileInput.cs
  21. 19
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Files/Dto/FileTokenOutput.cs
  22. 16
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Files/Dto/PagingFileOutput.cs
  23. 8
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Files/Dto/PagingInput.cs
  24. 15
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Files/IFileAppService.cs
  25. 3
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/FodyWeavers.xml
  26. 30
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/FodyWeavers.xsd
  27. 3
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Lion.AbpPro.FileManagement.Application.Contracts.abppkg.json
  28. 17
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Lion.AbpPro.FileManagement.Application.Contracts.csproj
  29. 24
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Permissions/FileManagementPermissionDefinitionProvider.cs
  30. 19
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Permissions/FileManagementPermissions.cs
  31. 11
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Samples/ISampleAppService.cs
  32. 6
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Samples/SampleDto.cs
  33. 13
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/FileManagementAppService.cs
  34. 13
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/FileManagementApplicationAutoMapperProfile.cs
  35. 49
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/FileManagementApplicationModule.cs
  36. 70
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/Files/FileAppService.cs
  37. 3
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/FodyWeavers.xml
  38. 30
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/FodyWeavers.xsd
  39. 3
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/Lion.AbpPro.FileManagement.Application.abppkg.json
  40. 18
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/Lion.AbpPro.FileManagement.Application.csproj
  41. 28
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/Samples/SampleAppService.cs
  42. 30
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/FileManagementDomainSharedModule.cs
  43. 6
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/FileManagementErrorCodes.cs
  44. 3
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/FodyWeavers.xml
  45. 30
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/FodyWeavers.xsd
  46. 3
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Lion.AbpPro.FileManagement.Domain.Shared.abppkg.json
  47. 24
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Lion.AbpPro.FileManagement.Domain.Shared.csproj
  48. 7
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/ar.json
  49. 7
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/cs.json
  50. 7
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/de-DE.json
  51. 7
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/en-GB.json
  52. 10
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/en.json
  53. 7
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/es.json
  54. 7
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/fi.json
  55. 7
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/fr.json
  56. 7
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/hi.json
  57. 7
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/hu.json
  58. 7
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/is.json
  59. 7
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/it.json
  60. 7
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/nl.json
  61. 5
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/pl-PL.json
  62. 5
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/pt-BR.json
  63. 7
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/ro-RO.json
  64. 6
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/sk.json
  65. 6
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/sl.json
  66. 7
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/tr.json
  67. 5
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/vi.json
  68. 10
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/zh-Hans.json
  69. 6
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/zh-Hant.json
  70. 8
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagementResource.cs
  71. 170
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Data/FileManagementDbMigrationService.cs
  72. 8
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Data/IFileManagementDbSchemaMigrator.cs
  73. 12
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Data/NullFileManagementDbSchemaMigrator.cs
  74. 9
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/FileManagementDbProperties.cs
  75. 12
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/FileManagementDomainModule.cs
  76. 26
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Files/Aggregates/File.cs
  77. 38
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Files/FileManager.cs
  78. 19
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Files/IFileRepository.cs
  79. 3
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/FodyWeavers.xml
  80. 30
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/FodyWeavers.xsd
  81. 3
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Lion.AbpPro.FileManagement.Domain.abppkg.json
  82. 15
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Lion.AbpPro.FileManagement.Domain.csproj
  83. 13
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Settings/FileManagementSettingDefinitionProvider.cs
  84. 10
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Settings/FileManagementSettings.cs
  85. 28
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/EntityFrameworkCore/FileManagementDbContext.cs
  86. 24
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/EntityFrameworkCore/FileManagementDbContextModelCreatingExtensions.cs
  87. 31
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/EntityFrameworkCore/FileManagementEntityFrameworkCoreModule.cs
  88. 41
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/EntityFrameworkCore/Files/EfCoreFileRepository.cs
  89. 15
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/EntityFrameworkCore/IFileManagementDbContext.cs
  90. 3
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/FodyWeavers.xml
  91. 30
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/FodyWeavers.xsd
  92. 3
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/Lion.AbpPro.FileManagement.EntityFrameworkCore.abppkg.json
  93. 21
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/Lion.AbpPro.FileManagement.EntityFrameworkCore.csproj
  94. 22
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.HttpApi.Client/FileManagementHttpApiClientModule.cs
  95. 3
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.HttpApi.Client/FodyWeavers.xml
  96. 30
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.HttpApi.Client/FodyWeavers.xsd
  97. 3
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.HttpApi.Client/Lion.AbpPro.FileManagement.HttpApi.Client.abppkg.json
  98. 20
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.HttpApi.Client/Lion.AbpPro.FileManagement.HttpApi.Client.csproj
  99. 12
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.HttpApi/FileManagementController.cs
  100. 29
      aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.HttpApi/FileManagementHttpApiModule.cs

3
aspnet-core/Directory.Build.props

@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<AbpPackageVersion>5.1.1</AbpPackageVersion>
<AbpPackageVersion>5.1.3</AbpPackageVersion>
<DotNetCoreCAPVersion>6.0.0</DotNetCoreCAPVersion>
<MicrosoftVersion>6.0.0</MicrosoftVersion>
<SystemComponentModelAnnotationsVersion>6.0.0-preview.4.21253.7</SystemComponentModelAnnotationsVersion>
@ -19,7 +19,6 @@
<SerilogAspNetCoreVersion>4.1.0</SerilogAspNetCoreVersion>
<SerilogExceptionsVersion>7.0.0</SerilogExceptionsVersion>
<SerilogSettingsConfigurationVersion>3.3.0</SerilogSettingsConfigurationVersion>
<SerilogSinksRollingFileVersion>3.3.0</SerilogSinksRollingFileVersion>
<SerilogSinksElasticsearchVersion>8.4.1</SerilogSinksElasticsearchVersion>
<NewtonsoftJsonVersion>13.0.1</NewtonsoftJsonVersion>
<NESTVersion>7.15.1</NESTVersion>

103
aspnet-core/Lion.AbpPro.sln

@ -135,6 +135,40 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.Extension", "fr
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.CAP", "frameworks\CAP\src\Lion.AbpPro.CAP\Lion.AbpPro.CAP.csproj", "{3C3FF821-E43D-4D58-8B3C-1E97F4518EF7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "FileManagement", "FileManagement", "{F604F9BE-CAAB-4D94-8989-22DE4D966C7A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{C188A1F4-9601-42E5-9A0A-B282E13EAC41}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{2CC8E555-AA80-4D7A-B606-0821E6754187}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{40BF21CB-4520-45A6-A588-5FFB95BAC87C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.FileManagement.Domain.Shared", "modules\FileManagement\src\Lion.AbpPro.FileManagement.Domain.Shared\Lion.AbpPro.FileManagement.Domain.Shared.csproj", "{866B0894-2B50-484E-BE7E-F221956557F3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.FileManagement.Application", "modules\FileManagement\src\Lion.AbpPro.FileManagement.Application\Lion.AbpPro.FileManagement.Application.csproj", "{E7B2B79A-09D3-4B7D-83A1-F6DE57E8584B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.FileManagement.Application.Contracts", "modules\FileManagement\src\Lion.AbpPro.FileManagement.Application.Contracts\Lion.AbpPro.FileManagement.Application.Contracts.csproj", "{3B5E4384-9E08-46A6-B526-DF198823D7C8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.FileManagement.Domain", "modules\FileManagement\src\Lion.AbpPro.FileManagement.Domain\Lion.AbpPro.FileManagement.Domain.csproj", "{23BCC55E-3D30-4E4E-8489-15A5894EE480}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.FileManagement.EntityFrameworkCore", "modules\FileManagement\src\Lion.AbpPro.FileManagement.EntityFrameworkCore\Lion.AbpPro.FileManagement.EntityFrameworkCore.csproj", "{81B29ECF-F004-4DC6-9126-2E45B02C2DFE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.FileManagement.HttpApi", "modules\FileManagement\src\Lion.AbpPro.FileManagement.HttpApi\Lion.AbpPro.FileManagement.HttpApi.csproj", "{65270240-0157-423A-9115-EAE2992E2FE7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.FileManagement.HttpApi.Client", "modules\FileManagement\src\Lion.AbpPro.FileManagement.HttpApi.Client\Lion.AbpPro.FileManagement.HttpApi.Client.csproj", "{72C8D8FA-9B61-415F-8FAF-08BC7BD13E9C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.FileManagement.Application.Tests", "modules\FileManagement\test\Lion.AbpPro.FileManagement.Application.Tests\Lion.AbpPro.FileManagement.Application.Tests.csproj", "{E6D3F0F8-0683-4A00-8459-C9C4C65D825D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.FileManagement.Domain.Tests", "modules\FileManagement\test\Lion.AbpPro.FileManagement.Domain.Tests\Lion.AbpPro.FileManagement.Domain.Tests.csproj", "{C912E1E7-4F8F-4ADB-BB27-D40B1903FED0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.FileManagement.EntityFrameworkCore.Tests", "modules\FileManagement\test\Lion.AbpPro.FileManagement.EntityFrameworkCore.Tests\Lion.AbpPro.FileManagement.EntityFrameworkCore.Tests.csproj", "{80E12564-E2B3-4307-B40E-20E24BF02916}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.FileManagement.HttpApi.Client.ConsoleTestApp", "modules\FileManagement\test\Lion.AbpPro.FileManagement.HttpApi.Client.ConsoleTestApp\Lion.AbpPro.FileManagement.HttpApi.Client.ConsoleTestApp.csproj", "{9201AEE4-2E6D-4A48-805F-3F3C6878BC0B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.FileManagement.TestBase", "modules\FileManagement\test\Lion.AbpPro.FileManagement.TestBase\Lion.AbpPro.FileManagement.TestBase.csproj", "{78589964-923E-4803-9B74-183487C3ED0F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lion.AbpPro.FileManagement.HttpApi.Host", "modules\FileManagement\host\Lion.AbpPro.FileManagement.HttpApi.Host\Lion.AbpPro.FileManagement.HttpApi.Host.csproj", "{831CD22A-AC6E-4515-AB24-8C96B34C717F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -313,6 +347,58 @@ Global
{3C3FF821-E43D-4D58-8B3C-1E97F4518EF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3C3FF821-E43D-4D58-8B3C-1E97F4518EF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3C3FF821-E43D-4D58-8B3C-1E97F4518EF7}.Release|Any CPU.Build.0 = Release|Any CPU
{866B0894-2B50-484E-BE7E-F221956557F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{866B0894-2B50-484E-BE7E-F221956557F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{866B0894-2B50-484E-BE7E-F221956557F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{866B0894-2B50-484E-BE7E-F221956557F3}.Release|Any CPU.Build.0 = Release|Any CPU
{E7B2B79A-09D3-4B7D-83A1-F6DE57E8584B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E7B2B79A-09D3-4B7D-83A1-F6DE57E8584B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E7B2B79A-09D3-4B7D-83A1-F6DE57E8584B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E7B2B79A-09D3-4B7D-83A1-F6DE57E8584B}.Release|Any CPU.Build.0 = Release|Any CPU
{3B5E4384-9E08-46A6-B526-DF198823D7C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B5E4384-9E08-46A6-B526-DF198823D7C8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B5E4384-9E08-46A6-B526-DF198823D7C8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3B5E4384-9E08-46A6-B526-DF198823D7C8}.Release|Any CPU.Build.0 = Release|Any CPU
{23BCC55E-3D30-4E4E-8489-15A5894EE480}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{23BCC55E-3D30-4E4E-8489-15A5894EE480}.Debug|Any CPU.Build.0 = Debug|Any CPU
{23BCC55E-3D30-4E4E-8489-15A5894EE480}.Release|Any CPU.ActiveCfg = Release|Any CPU
{23BCC55E-3D30-4E4E-8489-15A5894EE480}.Release|Any CPU.Build.0 = Release|Any CPU
{81B29ECF-F004-4DC6-9126-2E45B02C2DFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{81B29ECF-F004-4DC6-9126-2E45B02C2DFE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{81B29ECF-F004-4DC6-9126-2E45B02C2DFE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{81B29ECF-F004-4DC6-9126-2E45B02C2DFE}.Release|Any CPU.Build.0 = Release|Any CPU
{65270240-0157-423A-9115-EAE2992E2FE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{65270240-0157-423A-9115-EAE2992E2FE7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{65270240-0157-423A-9115-EAE2992E2FE7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{65270240-0157-423A-9115-EAE2992E2FE7}.Release|Any CPU.Build.0 = Release|Any CPU
{72C8D8FA-9B61-415F-8FAF-08BC7BD13E9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{72C8D8FA-9B61-415F-8FAF-08BC7BD13E9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{72C8D8FA-9B61-415F-8FAF-08BC7BD13E9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{72C8D8FA-9B61-415F-8FAF-08BC7BD13E9C}.Release|Any CPU.Build.0 = Release|Any CPU
{E6D3F0F8-0683-4A00-8459-C9C4C65D825D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E6D3F0F8-0683-4A00-8459-C9C4C65D825D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E6D3F0F8-0683-4A00-8459-C9C4C65D825D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E6D3F0F8-0683-4A00-8459-C9C4C65D825D}.Release|Any CPU.Build.0 = Release|Any CPU
{C912E1E7-4F8F-4ADB-BB27-D40B1903FED0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C912E1E7-4F8F-4ADB-BB27-D40B1903FED0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C912E1E7-4F8F-4ADB-BB27-D40B1903FED0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C912E1E7-4F8F-4ADB-BB27-D40B1903FED0}.Release|Any CPU.Build.0 = Release|Any CPU
{80E12564-E2B3-4307-B40E-20E24BF02916}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{80E12564-E2B3-4307-B40E-20E24BF02916}.Debug|Any CPU.Build.0 = Debug|Any CPU
{80E12564-E2B3-4307-B40E-20E24BF02916}.Release|Any CPU.ActiveCfg = Release|Any CPU
{80E12564-E2B3-4307-B40E-20E24BF02916}.Release|Any CPU.Build.0 = Release|Any CPU
{9201AEE4-2E6D-4A48-805F-3F3C6878BC0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9201AEE4-2E6D-4A48-805F-3F3C6878BC0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9201AEE4-2E6D-4A48-805F-3F3C6878BC0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9201AEE4-2E6D-4A48-805F-3F3C6878BC0B}.Release|Any CPU.Build.0 = Release|Any CPU
{78589964-923E-4803-9B74-183487C3ED0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{78589964-923E-4803-9B74-183487C3ED0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{78589964-923E-4803-9B74-183487C3ED0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{78589964-923E-4803-9B74-183487C3ED0F}.Release|Any CPU.Build.0 = Release|Any CPU
{831CD22A-AC6E-4515-AB24-8C96B34C717F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{831CD22A-AC6E-4515-AB24-8C96B34C717F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{831CD22A-AC6E-4515-AB24-8C96B34C717F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{831CD22A-AC6E-4515-AB24-8C96B34C717F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -375,6 +461,23 @@ Global
{D9108313-8D05-4F5F-9AA0-B443EC3374B6} = {5C304CBC-F30D-413C-A0AF-8B6814A2D4A3}
{4C65690E-2C17-46A1-BB35-A51BAB2EA3B7} = {C4AC9352-C9F5-4096-8D73-13638232CFB9}
{3C3FF821-E43D-4D58-8B3C-1E97F4518EF7} = {11ED8435-B5AE-4BF3-9D4B-51FA1E4A18A6}
{F604F9BE-CAAB-4D94-8989-22DE4D966C7A} = {F8A8EB2A-2D4B-464F-9A13-F8F7B6A8FAA3}
{C188A1F4-9601-42E5-9A0A-B282E13EAC41} = {F604F9BE-CAAB-4D94-8989-22DE4D966C7A}
{2CC8E555-AA80-4D7A-B606-0821E6754187} = {F604F9BE-CAAB-4D94-8989-22DE4D966C7A}
{40BF21CB-4520-45A6-A588-5FFB95BAC87C} = {F604F9BE-CAAB-4D94-8989-22DE4D966C7A}
{866B0894-2B50-484E-BE7E-F221956557F3} = {2CC8E555-AA80-4D7A-B606-0821E6754187}
{E7B2B79A-09D3-4B7D-83A1-F6DE57E8584B} = {2CC8E555-AA80-4D7A-B606-0821E6754187}
{3B5E4384-9E08-46A6-B526-DF198823D7C8} = {2CC8E555-AA80-4D7A-B606-0821E6754187}
{23BCC55E-3D30-4E4E-8489-15A5894EE480} = {2CC8E555-AA80-4D7A-B606-0821E6754187}
{81B29ECF-F004-4DC6-9126-2E45B02C2DFE} = {2CC8E555-AA80-4D7A-B606-0821E6754187}
{65270240-0157-423A-9115-EAE2992E2FE7} = {2CC8E555-AA80-4D7A-B606-0821E6754187}
{72C8D8FA-9B61-415F-8FAF-08BC7BD13E9C} = {2CC8E555-AA80-4D7A-B606-0821E6754187}
{E6D3F0F8-0683-4A00-8459-C9C4C65D825D} = {40BF21CB-4520-45A6-A588-5FFB95BAC87C}
{C912E1E7-4F8F-4ADB-BB27-D40B1903FED0} = {40BF21CB-4520-45A6-A588-5FFB95BAC87C}
{80E12564-E2B3-4307-B40E-20E24BF02916} = {40BF21CB-4520-45A6-A588-5FFB95BAC87C}
{9201AEE4-2E6D-4A48-805F-3F3C6878BC0B} = {40BF21CB-4520-45A6-A588-5FFB95BAC87C}
{78589964-923E-4803-9B74-183487C3ED0F} = {40BF21CB-4520-45A6-A588-5FFB95BAC87C}
{831CD22A-AC6E-4515-AB24-8C96B34C717F} = {C188A1F4-9601-42E5-9A0A-B282E13EAC41}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F}

118
aspnet-core/modules/FileManagement/Lion.AbpPro.FileManagement.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.FileManagement.Domain.Shared", "src\Lion.AbpPro.FileManagement.Domain.Shared\Lion.AbpPro.FileManagement.Domain.Shared.csproj", "{D64C1577-4929-4B60-939E-96DE1534891A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.FileManagement.Domain", "src\Lion.AbpPro.FileManagement.Domain\Lion.AbpPro.FileManagement.Domain.csproj", "{F2840BC7-0188-4606-9126-DADD0F5ABF7A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.FileManagement.Application.Contracts", "src\Lion.AbpPro.FileManagement.Application.Contracts\Lion.AbpPro.FileManagement.Application.Contracts.csproj", "{BD65D04F-08D5-40C1-8C24-77CA0BACB877}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.FileManagement.Application", "src\Lion.AbpPro.FileManagement.Application\Lion.AbpPro.FileManagement.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.FileManagement.EntityFrameworkCore", "src\Lion.AbpPro.FileManagement.EntityFrameworkCore\Lion.AbpPro.FileManagement.EntityFrameworkCore.csproj", "{0CE86223-D31D-4315-A1F5-87BA3EE1B844}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.FileManagement.HttpApi", "src\Lion.AbpPro.FileManagement.HttpApi\Lion.AbpPro.FileManagement.HttpApi.csproj", "{077AA5F8-8B61-420C-A6B5-0150A66FDB34}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.FileManagement.HttpApi.Client", "src\Lion.AbpPro.FileManagement.HttpApi.Client\Lion.AbpPro.FileManagement.HttpApi.Client.csproj", "{36E2735F-CEAB-44C8-A6D1-2CDAFF399751}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.FileManagement.TestBase", "test\Lion.AbpPro.FileManagement.TestBase\Lion.AbpPro.FileManagement.TestBase.csproj", "{C5BB573D-3030-4BCB-88B7-F6A85C32766C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.FileManagement.EntityFrameworkCore.Tests", "test\Lion.AbpPro.FileManagement.EntityFrameworkCore.Tests\Lion.AbpPro.FileManagement.EntityFrameworkCore.Tests.csproj", "{527F645C-C1FC-406E-8479-81386C8ECF13}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.FileManagement.Domain.Tests", "test\Lion.AbpPro.FileManagement.Domain.Tests\Lion.AbpPro.FileManagement.Domain.Tests.csproj", "{E60895E5-79C4-447D-88B7-85CB5BA336A4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.FileManagement.Application.Tests", "test\Lion.AbpPro.FileManagement.Application.Tests\Lion.AbpPro.FileManagement.Application.Tests.csproj", "{90CB5DC4-C040-45C7-8900-9688B26405BC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.FileManagement.HttpApi.Host", "host\Lion.AbpPro.FileManagement.HttpApi.Host\Lion.AbpPro.FileManagement.HttpApi.Host.csproj", "{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "0.solutions", "0.solutions", "{FE2B9575-E00E-4409-B3E0-C7204F38A611}"
ProjectSection(SolutionItems) = preProject
..\..\common.props = ..\..\common.props
..\..\Directory.Build.props = ..\..\Directory.Build.props
..\..\global.json = ..\..\global.json
EndProjectSection
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
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}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD}
EndGlobalSection
EndGlobal

12
aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/Controllers/HomeController.cs

@ -0,0 +1,12 @@
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
namespace Lion.AbpPro.FileManagement.Controllers;
public class HomeController : AbpController
{
public ActionResult Index()
{
return Redirect("~/swagger");
}
}

20
aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/EntityFrameworkCore/FileManagementHttpApiHostMigrationsDbContext.cs

@ -0,0 +1,20 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
namespace Lion.AbpPro.FileManagement.EntityFrameworkCore;
public class FileManagementHttpApiHostMigrationsDbContext : AbpDbContext<FileManagementHttpApiHostMigrationsDbContext>
{
public FileManagementHttpApiHostMigrationsDbContext(DbContextOptions<FileManagementHttpApiHostMigrationsDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ConfigureFileManagement();
}
}

27
aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/EntityFrameworkCore/FileManagementHttpApiHostMigrationsDbContextFactory.cs

@ -0,0 +1,27 @@
using System.IO;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
namespace Lion.AbpPro.FileManagement.EntityFrameworkCore;
public class FileManagementHttpApiHostMigrationsDbContextFactory : IDesignTimeDbContextFactory<FileManagementHttpApiHostMigrationsDbContext>
{
public FileManagementHttpApiHostMigrationsDbContext CreateDbContext(string[] args)
{
var configuration = BuildConfiguration();
var builder = new DbContextOptionsBuilder<FileManagementHttpApiHostMigrationsDbContext>()
.UseMySql(configuration.GetConnectionString(FileManagementDbProperties.ConnectionStringName), MySqlServerVersion.LatestSupportedServerVersion);
return new FileManagementHttpApiHostMigrationsDbContext(builder.Options);
}
private static IConfigurationRoot BuildConfiguration()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false);
return builder.Build();
}
}

202
aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/FileManagementHttpApiHostModule.cs

@ -0,0 +1,202 @@
using System;
using System.Linq;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.OpenApi.Models;
using Lion.AbpPro.FileManagement.EntityFrameworkCore;
using StackExchange.Redis;
using Swashbuckle.AspNetCore.SwaggerUI;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc.AntiForgery;
using Volo.Abp.AspNetCore.Serilog;
using Volo.Abp.Autofac;
using Volo.Abp.Caching;
using Volo.Abp.Caching.StackExchangeRedis;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.Swashbuckle;
using Volo.Abp.VirtualFileSystem;
namespace Lion.AbpPro.FileManagement;
[DependsOn(
typeof(FileManagementApplicationModule),
typeof(FileManagementEntityFrameworkCoreModule),
typeof(FileManagementHttpApiModule),
typeof(AbpAutofacModule),
typeof(AbpCachingStackExchangeRedisModule),
typeof(AbpAspNetCoreSerilogModule),
typeof(AbpSwashbuckleModule)
)]
public class FileManagementHttpApiHostModule : AbpModule
{
private const string DefaultCorsPolicyName = "Default";
public override void ConfigureServices(ServiceConfigurationContext context)
{
ConfigureVirtualFileSystem();
ConfigureSwaggerServices(context);
ConfigAntiForgery();
ConfigureLocalization();
ConfigureCache(context);
ConfigureCors(context);
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
var app = context.GetApplicationBuilder();
var env = context.GetEnvironment();
app.UseHttpsRedirection();
app.UseCorrelationId();
app.UseStaticFiles();
app.UseRouting();
app.UseCors(DefaultCorsPolicyName);
app.UseAuthentication();
app.UseAbpRequestLocalization();
app.UseAuthorization();
app.UseSwagger();
app.UseAbpSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/v1/swagger.json", "FileManagement API");
options.DocExpansion(DocExpansion.None);
options.DefaultModelExpandDepth(-2);
});
app.UseAuditing();
app.UseAbpSerilogEnrichers();
app.UseConfiguredEndpoints();
}
/// <summary>
/// 配置虚拟文件系统
/// </summary>
private void ConfigureVirtualFileSystem()
{
Configure<AbpVirtualFileSystemOptions>(options => { options.FileSets.AddEmbedded<FileManagementHttpApiHostModule>(); });
}
/// <summary>
/// 配置SwaggerUI
/// </summary>
/// <param name="context"></param>
private static void ConfigureSwaggerServices(ServiceConfigurationContext context)
{
context.Services.AddSwaggerGen(
options =>
{
options.SwaggerDoc("v1", new OpenApiInfo { Title = "FileManagement API", Version = "v1" });
options.DocInclusionPredicate((docName, description) => true);
#region 多语言
options.AddSecurityDefinition("ApiKey", new OpenApiSecurityScheme
{
Type = SecuritySchemeType.ApiKey,
In = ParameterLocation.Header,
Name = "Accept-Language",
Description = "多语言"
});
options.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "ApiKey" }
},
new string[] { }
}
});
#endregion
});
}
private void ConfigAntiForgery()
{
Configure<AbpAntiForgeryOptions>(options => { options.AutoValidate = false; });
}
/// <summary>
/// 配置本地化
/// </summary>
private void ConfigureLocalization()
{
Configure<AbpLocalizationOptions>(options =>
{
options.Languages.Add(new LanguageInfo("ar", "ar", "العربية"));
options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština"));
options.Languages.Add(new LanguageInfo("en", "en", "English"));
options.Languages.Add(new LanguageInfo("en-GB", "en-GB", "English (UK)"));
options.Languages.Add(new LanguageInfo("fi", "fi", "Finnish"));
options.Languages.Add(new LanguageInfo("fr", "fr", "Français"));
options.Languages.Add(new LanguageInfo("hi", "hi", "Hindi", "in"));
options.Languages.Add(new LanguageInfo("is", "is", "Icelandic", "is"));
options.Languages.Add(new LanguageInfo("it", "it", "Italiano", "it"));
options.Languages.Add(new LanguageInfo("hu", "hu", "Magyar"));
options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português"));
options.Languages.Add(new LanguageInfo("ro-RO", "ro-RO", "Română"));
options.Languages.Add(new LanguageInfo("ru", "ru", "Русский"));
options.Languages.Add(new LanguageInfo("sk", "sk", "Slovak"));
options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe"));
options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文"));
options.Languages.Add(new LanguageInfo("zh-Hant", "zh-Hant", "繁體中文"));
options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsch"));
options.Languages.Add(new LanguageInfo("es", "es", "Español"));
});
}
/// <summary>
/// Redis缓存
/// </summary>
/// <param name="context"></param>
private void ConfigureCache(ServiceConfigurationContext context)
{
Configure<AbpDistributedCacheOptions>(options =>
{
options.KeyPrefix = "FileManagement:";
options.GlobalCacheEntryOptions = new DistributedCacheEntryOptions
{
// 全局缓存有效时间
AbsoluteExpiration = DateTimeOffset.UtcNow.AddHours(2)
};
});
var configuration = context.Services.GetConfiguration();
var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]);
context.Services
.AddDataProtection()
.PersistKeysToStackExchangeRedis(redis, "YH.Wms.Operations-Keys");
}
/// <summary>
/// 配置跨域
/// </summary>
private void ConfigureCors(ServiceConfigurationContext context)
{
var configuration = context.Services.GetConfiguration();
context.Services.AddCors(options =>
{
options.AddPolicy(DefaultCorsPolicyName, builder =>
{
builder
.WithOrigins(
configuration["App:CorsOrigins"]
.Split(",", StringSplitOptions.RemoveEmptyEntries)
.Select(o => o.RemovePostFix("/"))
.ToArray()
)
.WithAbpExposedHeaders()
.SetIsOriginAllowedToAllowWildcardSubdomains()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
}
}

3
aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false"/>
</Weavers>

30
aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

47
aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/Lion.AbpPro.FileManagement.HttpApi.Host.csproj

@ -0,0 +1,47 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Import Project="../../../../common.props" />
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Lion.AbpPro.FileManagement</RootNamespace>
<PreserveCompilationReferences>true</PreserveCompilationReferences>
<UserSecretsId>Lion.AbpPro.FileManagement-c2d31439-b723-48e2-b061-5ebd7aeb6010</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Serilog" Version="$(SerilogVersion)" />
<PackageReference Include="Serilog.AspNetCore" Version="$(SerilogAspNetCoreVersion)" />
<PackageReference Include="Serilog.Exceptions" Version="$(SerilogExceptionsVersion)" />
<PackageReference Include="Serilog.Extensions.Logging" Version="$(SerilogExtensionsLoggingVersion)" />
<PackageReference Include="Serilog.Settings.Configuration" Version="$(SerilogSettingsConfigurationVersion)" />
<PackageReference Include="Serilog.Sinks.Console" Version="$(SerilogSinksConsoleVersion)" />
<PackageReference Include="Serilog.Sinks.Elasticsearch" Version="$(SerilogSinksElasticsearchVersion)" />
<PackageReference Include="Serilog.Sinks.File" Version="$(SerilogSinksFileVersion)" />
<PackageReference Include="IdentityModel" Version="5.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="$(MicrosoftVersion)" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="$(MicrosoftVersion)" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="$(MicrosoftVersion)" />
<PackageReference Include="Volo.Abp.Autofac" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.Caching.StackExchangeRedis" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.AspNetCore.Serilog" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.Swashbuckle" Version="$(AbpPackageVersion)" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="$(SwashbuckleVersion)" />
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="$(SwashbuckleVersion)" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Lion.AbpPro.FileManagement.HttpApi\Lion.AbpPro.FileManagement.HttpApi.csproj" />
<ProjectReference Include="..\..\src\Lion.AbpPro.FileManagement.Application\Lion.AbpPro.FileManagement.Application.csproj" />
<ProjectReference Include="..\..\src\Lion.AbpPro.FileManagement.EntityFrameworkCore\Lion.AbpPro.FileManagement.EntityFrameworkCore.csproj" />
</ItemGroup>
<ItemGroup>
<Compile Remove="Logs\**" />
<Content Remove="Logs\**" />
<EmbeddedResource Remove="Logs\**" />
<None Remove="Logs\**" />
</ItemGroup>
</Project>

93
aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/Migrations/20220119101622_Init.Designer.cs

@ -0,0 +1,93 @@
// <auto-generated />
using System;
using Lion.AbpPro.FileManagement.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.FileManagement.Migrations
{
[DbContext(typeof(FileManagementHttpApiHostMigrationsDbContext))]
[Migration("20220119101622_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.0")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
modelBuilder.Entity("Lion.AbpPro.FileManagement.Files.File", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("char(36)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.HasMaxLength(40)
.HasColumnType("varchar(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime(6)")
.HasColumnName("CreationTime");
b.Property<Guid?>("CreatorId")
.HasColumnType("char(36)")
.HasColumnName("CreatorId");
b.Property<Guid?>("DeleterId")
.HasColumnType("char(36)")
.HasColumnName("DeleterId");
b.Property<DateTime?>("DeletionTime")
.HasColumnType("datetime(6)")
.HasColumnName("DeletionTime");
b.Property<string>("ExtraProperties")
.HasColumnType("longtext")
.HasColumnName("ExtraProperties");
b.Property<string>("FileName")
.HasColumnType("varchar(255)");
b.Property<string>("FilePath")
.HasColumnType("longtext");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("tinyint(1)")
.HasDefaultValue(false)
.HasColumnName("IsDeleted");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime(6)")
.HasColumnName("LastModificationTime");
b.Property<Guid?>("LastModifierId")
.HasColumnType("char(36)")
.HasColumnName("LastModifierId");
b.Property<Guid?>("TenantId")
.HasColumnType("char(36)")
.HasColumnName("TenantId");
b.HasKey("Id");
b.HasIndex("CreationTime");
b.HasIndex("FileName");
b.ToTable("File", (string)null);
});
#pragma warning restore 612, 618
}
}
}

60
aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/Migrations/20220119101622_Init.cs

@ -0,0 +1,60 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Lion.AbpPro.FileManagement.Migrations
{
public partial class Init : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterDatabase()
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "File",
columns: table => new
{
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
FileName = table.Column<string>(type: "varchar(255)", nullable: true)
.Annotation("MySql:CharSet", "utf8mb4"),
FilePath = table.Column<string>(type: "longtext", nullable: true)
.Annotation("MySql:CharSet", "utf8mb4"),
ExtraProperties = table.Column<string>(type: "longtext", nullable: true)
.Annotation("MySql:CharSet", "utf8mb4"),
ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true)
.Annotation("MySql:CharSet", "utf8mb4"),
CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false),
CreatorId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true),
LastModifierId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_File", x => x.Id);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateIndex(
name: "IX_File_CreationTime",
table: "File",
column: "CreationTime");
migrationBuilder.CreateIndex(
name: "IX_File_FileName",
table: "File",
column: "FileName");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "File");
}
}
}

91
aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/Migrations/FileManagementHttpApiHostMigrationsDbContextModelSnapshot.cs

@ -0,0 +1,91 @@
// <auto-generated />
using System;
using Lion.AbpPro.FileManagement.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Volo.Abp.EntityFrameworkCore;
#nullable disable
namespace Lion.AbpPro.FileManagement.Migrations
{
[DbContext(typeof(FileManagementHttpApiHostMigrationsDbContext))]
partial class FileManagementHttpApiHostMigrationsDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql)
.HasAnnotation("ProductVersion", "6.0.0")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
modelBuilder.Entity("Lion.AbpPro.FileManagement.Files.File", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("char(36)");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.HasMaxLength(40)
.HasColumnType("varchar(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime(6)")
.HasColumnName("CreationTime");
b.Property<Guid?>("CreatorId")
.HasColumnType("char(36)")
.HasColumnName("CreatorId");
b.Property<Guid?>("DeleterId")
.HasColumnType("char(36)")
.HasColumnName("DeleterId");
b.Property<DateTime?>("DeletionTime")
.HasColumnType("datetime(6)")
.HasColumnName("DeletionTime");
b.Property<string>("ExtraProperties")
.HasColumnType("longtext")
.HasColumnName("ExtraProperties");
b.Property<string>("FileName")
.HasColumnType("varchar(255)");
b.Property<string>("FilePath")
.HasColumnType("longtext");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("tinyint(1)")
.HasDefaultValue(false)
.HasColumnName("IsDeleted");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime(6)")
.HasColumnName("LastModificationTime");
b.Property<Guid?>("LastModifierId")
.HasColumnType("char(36)")
.HasColumnName("LastModifierId");
b.Property<Guid?>("TenantId")
.HasColumnType("char(36)")
.HasColumnName("TenantId");
b.HasKey("Id");
b.HasIndex("CreationTime");
b.HasIndex("FileName");
b.ToTable("File", (string)null);
});
#pragma warning restore 612, 618
}
}
}

24
aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/Program.cs

@ -0,0 +1,24 @@
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Serilog;
namespace Lion.AbpPro.FileManagement;
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureKestrel((context, options) => { options.Limits.MaxRequestBodySize = 1024 * 50; });
webBuilder.UseStartup<Startup>();
})
.UseSerilog().UseAutofac();
}
}

12
aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/Properties/launchSettings.json

@ -0,0 +1,12 @@
{
"profiles": {
"Lion.AbpPro.FileManagement.HttpApi.Host": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "http://localhost:5001",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

19
aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/Startup.cs

@ -0,0 +1,19 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace Lion.AbpPro.FileManagement;
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddApplication<FileManagementHttpApiHostModule>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
app.InitializeApplication();
}
}

26
aspnet-core/modules/FileManagement/host/Lion.AbpPro.FileManagement.HttpApi.Host/appsettings.json

@ -0,0 +1,26 @@
{
"App": {
"CorsOrigins": "https://*.FileManagement.com,http://localhost:4200,http://localhost:44307,https://localhost:44307"
},
"ConnectionStrings": {
"FileManagement":"Data Source=localhost;Database=FileManagement;uid=root;pwd=1q2w3E*;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true",
},
"Redis": {
"Configuration": "localhost,password=mypassword,defaultdatabase=1"
},
"AliYun": {
"OSS": {
"AccessKeyId": "LTAI5tLkt3vvScGPVZ5qKJDc",
"AccessKeySecret": "BixV8vP5uPrbsdwjYzzsEXOPjkxPST",
"Endpoint": "oss-cn-shenzhen.aliyuncs.com",
"ContainerName": "lion-abp-pro",
"RegionId": "oss-cn-shenzhen",
"RoleArn": "acs:ram::1846393972471789:role/ramosstest"
}
}
}
// lion.abp@1846393972471789.onaliyun.com
//AccessKey ID LTAI5tLkt3vvScGPVZ5qKJDc
//AccessKey Secret BixV8vP5uPrbsdwjYzzsEXOPjkxPST
//acs:ram::1846393972471789:role/ramosstest

14
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/FileManagementApplicationContractsModule.cs

@ -0,0 +1,14 @@
using Volo.Abp.Application;
using Volo.Abp.Authorization;
using Volo.Abp.Modularity;
namespace Lion.AbpPro.FileManagement;
[DependsOn(
typeof(FileManagementDomainSharedModule),
typeof(AbpDddApplicationContractsModule),
typeof(AbpAuthorizationModule)
)]
public class FileManagementApplicationContractsModule : AbpModule
{
}

8
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/FileManagementRemoteServiceConsts.cs

@ -0,0 +1,8 @@
namespace Lion.AbpPro.FileManagement;
public class FileManagementRemoteServiceConsts
{
public const string RemoteServiceName = "FileManagement";
public const string ModuleName = "fileManagement";
}

10
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Files/Dto/CreateFileInput.cs

@ -0,0 +1,10 @@
using System.ComponentModel.DataAnnotations;
namespace Lion.AbpPro.FileManagement.Files.Dto;
public class CreateFileInput
{
[Required(ErrorMessage = "文件名不能为空")] public string FileName { get; set; }
[Required(ErrorMessage = "文件地址不能为空")] public string FilePath { get; set; }
}

19
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Files/Dto/FileTokenOutput.cs

@ -0,0 +1,19 @@
namespace Lion.AbpPro.FileManagement.Files.Dto;
public class FileTokenOutput
{
public string AccessKeyId { get; set; }
public string AccessKeySecret { get; set; }
public string Token { get; set; }
/// <summary>
/// 过期时间
/// </summary>
public string Expiration { get; set; }
public string Bucket { get; set; }
public string Region { get; set; }
}

16
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Files/Dto/PagingFileOutput.cs

@ -0,0 +1,16 @@
using System;
namespace Lion.AbpPro.FileManagement.Files.Dto;
public class PagingFileOutput
{
public Guid Id { get; set; }
public Guid? TenantId { get; set; }
public string FileName { get; set; }
public string FilePath { get; set; }
public DateTime CreationTime { get; set; }
}

8
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Files/Dto/PagingInput.cs

@ -0,0 +1,8 @@
using Lion.AbpPro.Extension.Customs.Dtos;
namespace Lion.AbpPro.FileManagement.Files.Dto;
public class PagingFileInput : PagingBase
{
public string Filter { get; set; }
}

15
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Files/IFileAppService.cs

@ -0,0 +1,15 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Lion.AbpPro.FileManagement.Files.Dto;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace Lion.AbpPro.FileManagement.Files;
public interface IFileAppService : IApplicationService
{
Task<FileTokenOutput> GetFileTokenAsync();
Task CreateAsync(CreateFileInput input);
Task<PagedResultDto<PagingFileOutput>> PagingAsync(PagingFileInput input);
}

3
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false"/>
</Weavers>

30
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

3
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Lion.AbpPro.FileManagement.Application.Contracts.abppkg.json

@ -0,0 +1,3 @@
{
"role": "lib.application-contracts"
}

17
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Lion.AbpPro.FileManagement.Application.Contracts.csproj

@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="../../../../common.props" />
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Lion.AbpPro.FileManagement</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Ddd.Application.Contracts" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.Authorization" Version="$(AbpPackageVersion)" />
<ProjectReference Include="..\..\..\..\frameworks\Extensions\src\Lion.AbpPro.Extension\Lion.AbpPro.Extension.csproj" />
<ProjectReference Include="..\Lion.AbpPro.FileManagement.Domain.Shared\Lion.AbpPro.FileManagement.Domain.Shared.csproj" />
</ItemGroup>
</Project>

24
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Permissions/FileManagementPermissionDefinitionProvider.cs

@ -0,0 +1,24 @@
using Lion.AbpPro.FileManagement.Localization;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Localization;
namespace Lion.AbpPro.FileManagement.Permissions;
public class FileManagementPermissionDefinitionProvider : PermissionDefinitionProvider
{
public override void Define(IPermissionDefinitionContext context)
{
var abpIdentityGroup = context.GetGroup("AbpIdentity");
var dataDictionaryManagement = abpIdentityGroup.AddPermission(FileManagementPermissions.FileManagement.Default,
L("Permission:FileManagement"));
dataDictionaryManagement.AddChild(FileManagementPermissions.FileManagement.Upload, L("Permission:Upload"));
//dataDictionaryManagement.AddChild(FileManagementPermissions.FileManagement.Down, L("Permission:Down"));
}
private static LocalizableString L(string name)
{
return LocalizableString.Create<FileManagementResource>(name);
}
}

19
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Permissions/FileManagementPermissions.cs

@ -0,0 +1,19 @@
using Volo.Abp.Reflection;
namespace Lion.AbpPro.FileManagement.Permissions;
public class FileManagementPermissions
{
public const string GroupName = "System";
public static class FileManagement
{
public const string Default = GroupName + ".FileManagement";
public const string Upload = Default + ".Upload";
public const string Down = Default + ".Down";
}
public static string[] GetAll()
{
return ReflectionHelper.GetPublicConstantsRecursively(typeof(FileManagementPermissions));
}
}

11
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Samples/ISampleAppService.cs

@ -0,0 +1,11 @@
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
namespace Lion.AbpPro.FileManagement.Samples;
public interface ISampleAppService : IApplicationService
{
Task<SampleDto> GetAsync();
Task<SampleDto> GetAuthorizedAsync();
}

6
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application.Contracts/Samples/SampleDto.cs

@ -0,0 +1,6 @@
namespace Lion.AbpPro.FileManagement.Samples;
public class SampleDto
{
public int Value { get; set; }
}

13
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/FileManagementAppService.cs

@ -0,0 +1,13 @@
using Lion.AbpPro.FileManagement.Localization;
using Volo.Abp.Application.Services;
namespace Lion.AbpPro.FileManagement;
public abstract class FileManagementAppService : ApplicationService
{
protected FileManagementAppService()
{
LocalizationResource = typeof(FileManagementResource);
ObjectMapperContext = typeof(FileManagementApplicationModule);
}
}

13
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/FileManagementApplicationAutoMapperProfile.cs

@ -0,0 +1,13 @@
using AutoMapper;
using Lion.AbpPro.FileManagement.Files;
using Lion.AbpPro.FileManagement.Files.Dto;
namespace Lion.AbpPro.FileManagement;
public class FileManagementApplicationAutoMapperProfile : Profile
{
public FileManagementApplicationAutoMapperProfile()
{
CreateMap<File, PagingFileOutput>();
}
}

49
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/FileManagementApplicationModule.cs

@ -0,0 +1,49 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Application;
using Volo.Abp.AutoMapper;
using Volo.Abp.BlobStoring;
using Volo.Abp.BlobStoring.Aliyun;
using Volo.Abp.Modularity;
namespace Lion.AbpPro.FileManagement;
[DependsOn(
typeof(FileManagementDomainModule),
typeof(FileManagementApplicationContractsModule),
typeof(AbpDddApplicationModule),
typeof(AbpAutoMapperModule),
typeof(AbpBlobStoringAliyunModule)
)]
public class FileManagementApplicationModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddAutoMapperObjectMapper<FileManagementApplicationModule>();
ConfigureBlobStoringAliyun(context);
Configure<AbpAutoMapperOptions>(options => { options.AddMaps<FileManagementApplicationModule>(true); });
}
private void ConfigureBlobStoringAliyun(ServiceConfigurationContext context)
{
var configuration = context.Services.GetConfiguration();
Configure<AbpBlobStoringOptions>(options =>
{
options.Containers.ConfigureDefault(container =>
{
container.UseAliyun(aliyun =>
{
aliyun.AccessKeyId =
configuration.GetValue<string>("AliYun:OSS:AccessKeyId");
aliyun.AccessKeySecret =
configuration.GetValue<string>("AliYun:OSS:AccessKeySecret");
aliyun.Endpoint = configuration.GetValue<string>("AliYun:OSS:Endpoint");
aliyun.RegionId = configuration.GetValue<string>("AliYun:OSS:RegionId");
aliyun.ContainerName =
configuration.GetValue<string>("AliYun:OSS:ContainerName");
});
});
});
}
}

70
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/Files/FileAppService.cs

@ -0,0 +1,70 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Auth.Sts;
using Aliyun.Acs.Core.Profile;
using Lion.AbpPro.FileManagement.Files.Dto;
using Lion.AbpPro.FileManagement.Permissions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.Configuration;
using Volo.Abp.Application.Dtos;
namespace Lion.AbpPro.FileManagement.Files;
[Authorize(FileManagementPermissions.FileManagement.Default)]
public class FileAppService : FileManagementAppService, IFileAppService
{
private readonly FileManager _fileManager;
private readonly IConfiguration _configuration;
public FileAppService(FileManager fileManager, IConfiguration configuration)
{
_fileManager = fileManager;
_configuration = configuration;
}
public async Task<FileTokenOutput> GetFileTokenAsync()
{
// 如何设置 sts https://help.aliyun.com/document_detail/100624.html
var regionId = _configuration.GetValue<string>("AliYun:OSS:RegionId");
var accessKeyId = _configuration.GetValue<string>("AliYun:OSS:AccessKeyId");
var accessKeySecret = _configuration.GetValue<string>("AliYun:OSS:AccessKeySecret");
var profile = DefaultProfile.GetProfile(regionId, accessKeyId, accessKeySecret);
var client = new DefaultAcsClient(profile);
var request = new AssumeRoleRequest()
{
RoleArn = _configuration.GetValue<string>("AliYun:OSS:RoleArn"),
RoleSessionName = "YH.Wms"
};
var response = client.GetAcsResponse(request);
var result = new FileTokenOutput()
{
AccessKeyId = response.Credentials.AccessKeyId,
AccessKeySecret = response.Credentials.AccessKeySecret,
Token = response.Credentials.SecurityToken,
Expiration = response.Credentials.Expiration,
Region = _configuration.GetValue<string>("AliYun:OSS:RegionId"),
Bucket = _configuration.GetValue<string>("AliYun:OSS:ContainerName"),
};
return await Task.FromResult(result);
}
[Authorize(FileManagementPermissions.FileManagement.Upload)]
public async Task CreateAsync(CreateFileInput input)
{
await _fileManager.CreateAsync(input.FileName, input.FilePath);
}
public async Task<PagedResultDto<PagingFileOutput>> PagingAsync(PagingFileInput input)
{
var result = new PagedResultDto<PagingFileOutput>();
var totalCount = await _fileManager.CountAsync(input.Filter);
result.TotalCount = totalCount;
if (totalCount <= 0) return result;
var entities = await _fileManager.PagingAsync(input.Filter, input.PageSize,
input.SkipCount);
result.Items = ObjectMapper.Map<List<File>, List<PagingFileOutput>>(entities);
return result;
}
}

3
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false"/>
</Weavers>

30
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

3
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/Lion.AbpPro.FileManagement.Application.abppkg.json

@ -0,0 +1,3 @@
{
"role": "lib.application"
}

18
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/Lion.AbpPro.FileManagement.Application.csproj

@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="../../../../common.props" />
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Lion.AbpPro.FileManagement</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.AutoMapper" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.Ddd.Application" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.BlobStoring.Aliyun" Version="$(AbpPackageVersion)" />
<ProjectReference Include="..\Lion.AbpPro.FileManagement.Application.Contracts\Lion.AbpPro.FileManagement.Application.Contracts.csproj" />
<ProjectReference Include="..\Lion.AbpPro.FileManagement.Domain\Lion.AbpPro.FileManagement.Domain.csproj" />
</ItemGroup>
</Project>

28
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Application/Samples/SampleAppService.cs

@ -0,0 +1,28 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
namespace Lion.AbpPro.FileManagement.Samples;
public class SampleAppService : FileManagementAppService, ISampleAppService
{
public Task<SampleDto> GetAsync()
{
return Task.FromResult(
new SampleDto
{
Value = 42
}
);
}
[Authorize]
public Task<SampleDto> GetAuthorizedAsync()
{
return Task.FromResult(
new SampleDto
{
Value = 42
}
);
}
}

30
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/FileManagementDomainSharedModule.cs

@ -0,0 +1,30 @@
using Lion.AbpPro.FileManagement.Localization;
using Volo.Abp.Localization;
using Volo.Abp.Localization.ExceptionHandling;
using Volo.Abp.Modularity;
using Volo.Abp.Validation;
using Volo.Abp.Validation.Localization;
using Volo.Abp.VirtualFileSystem;
namespace Lion.AbpPro.FileManagement;
[DependsOn(
typeof(AbpValidationModule)
)]
public class FileManagementDomainSharedModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpVirtualFileSystemOptions>(options => { options.FileSets.AddEmbedded<FileManagementDomainSharedModule>(); });
Configure<AbpLocalizationOptions>(options =>
{
options.Resources
.Add<FileManagementResource>("en")
.AddBaseTypes(typeof(AbpValidationResource))
.AddVirtualJson("/Localization/FileManagement");
});
Configure<AbpExceptionLocalizationOptions>(options => { options.MapCodeNamespace("FileManagement", typeof(FileManagementResource)); });
}
}

6
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/FileManagementErrorCodes.cs

@ -0,0 +1,6 @@
namespace Lion.AbpPro.FileManagement;
public static class FileManagementErrorCodes
{
//Add your business exception error codes here...
}

3
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false"/>
</Weavers>

30
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

3
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Lion.AbpPro.FileManagement.Domain.Shared.abppkg.json

@ -0,0 +1,3 @@
{
"role": "lib.domain-shared"
}

24
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Lion.AbpPro.FileManagement.Domain.Shared.csproj

@ -0,0 +1,24 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="../../../../common.props" />
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Lion.AbpPro.FileManagement</RootNamespace>
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Validation" Version="$(AbpPackageVersion)"/>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="$(MicrosoftVersion)"/>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Localization\FileManagement\*.json"/>
<Content Remove="Localization\FileManagement\*.json"/>
</ItemGroup>
</Project>

7
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/ar.json

@ -0,0 +1,7 @@
{
"culture": "ar",
"texts": {
"MyAccount": "إدارة ملفى",
"SamplePageMessage": "صفحة نموذجية للوحدة النمطية FileManagement"
}
}

7
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/cs.json

@ -0,0 +1,7 @@
{
"culture": "cs",
"texts": {
"MyAccount": "Spravovat profil",
"SamplePageMessage": "Ukázková stránka pro modul FileManagement"
}
}

7
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/de-DE.json

@ -0,0 +1,7 @@
{
"culture": "de-DE",
"texts": {
"MyAccount": "Mein Konto",
"SamplePageMessage": "Eine Beispielseite für das Modul FileManagementModul"
}
}

7
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/en-GB.json

@ -0,0 +1,7 @@
{
"culture": "en-GB",
"texts": {
"MyAccount": "My account",
"SamplePageMessage": "A sample page for the FileManagement module"
}
}

10
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/en.json

@ -0,0 +1,10 @@
{
"culture": "en",
"texts": {
"MyAccount": "My account",
"SamplePageMessage": "A sample page for the FileManagement module",
"Permission:FileManagement": "FileManagement",
"Permission:Upload": "Upload",
"Permission:Down": "Down"
}
}

7
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/es.json

@ -0,0 +1,7 @@
{
"culture": "es",
"texts": {
"MyAccount": "Mi cuenta",
"SamplePageMessage": "Una página de ejemplo para el módulo FileManagement "
}
}

7
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/fi.json

@ -0,0 +1,7 @@
{
"culture": "fi",
"texts": {
"MyAccount": "Tilini",
"SamplePageMessage": "Esimerkkisivu FileManagement-moduulille"
}
}

7
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/fr.json

@ -0,0 +1,7 @@
{
"culture": "fr",
"texts": {
"MyAccount": "Mon compte",
"SamplePageMessage": "Exemple de page pour le module FileManagement"
}
}

7
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/hi.json

@ -0,0 +1,7 @@
{
"culture": "hi",
"texts": {
"MyAccount": "मेरा खाता",
"SamplePageMessage": "FileManagement मॉड्यूल के लिए एक नमूना पृष्ठ"
}
}

7
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/hu.json

@ -0,0 +1,7 @@
{
"culture": "hu",
"texts": {
"MyAccount": "A fiókom",
"SamplePageMessage": "Mintaoldal a FileManagement modulhoz"
}
}

7
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/is.json

@ -0,0 +1,7 @@
{
"culture": "is",
"texts": {
"MyAccount": "Minn aðgangur",
"SamplePageMessage": "Dæmi um síðu fyrir FileManagement eininguna"
}
}

7
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/it.json

@ -0,0 +1,7 @@
{
"culture": "it",
"texts": {
"MyAccount": "Il mio conto",
"SamplePageMessage": "Una pagina di esempio per il modulo FileManagement"
}
}

7
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/nl.json

@ -0,0 +1,7 @@
{
"culture": "nl",
"texts": {
"MyAccount": "Mijn rekening",
"SamplePageMessage": "Een voorbeeldpagina voor de FileManagement module"
}
}

5
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/pl-PL.json

@ -0,0 +1,5 @@
{
"culture": "pl-PL",
"texts": {
}
}

5
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/pt-BR.json

@ -0,0 +1,5 @@
{
"culture": "pt-BR",
"texts": {
}
}

7
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/ro-RO.json

@ -0,0 +1,7 @@
{
"culture": "ro-RO",
"texts": {
"MyAccount": "Contul meu",
"SamplePageMessage": "Un exemplu de pagină pentru modululul FileManagement"
}
}

6
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/sk.json

@ -0,0 +1,6 @@
{
"culture": "sk",
"texts": {
"SamplePageMessage": "Ukážka stránky pre modul FileManagement"
}
}

6
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/sl.json

@ -0,0 +1,6 @@
{
"culture": "sl",
"texts": {
"MyAccount": "Moj račun"
}
}

7
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/tr.json

@ -0,0 +1,7 @@
{
"culture": "tr",
"texts": {
"MyAccount": "Hesabım",
"SamplePageMessage": "FileManagement modulünden örnek bir sayfa"
}
}

5
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/vi.json

@ -0,0 +1,5 @@
{
"culture": "vi",
"texts": {
}
}

10
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/zh-Hans.json

@ -0,0 +1,10 @@
{
"culture": "zh-Hans",
"texts": {
"MyAccount": "我的账户",
"SamplePageMessage": "FileManagement模块的示例页面",
"Permission:FileManagement": "文件管理",
"Permission:Upload": "上传",
"Permission:Down": "下载"
}
}

6
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagement/zh-Hant.json

@ -0,0 +1,6 @@
{
"culture": "zh-Hant",
"texts": {
"MyAccount": "我的賬戶"
}
}

8
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain.Shared/Localization/FileManagementResource.cs

@ -0,0 +1,8 @@
using Volo.Abp.Localization;
namespace Lion.AbpPro.FileManagement.Localization;
[LocalizationResourceName("FileManagement")]
public class FileManagementResource
{
}

170
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Data/FileManagementDbMigrationService.cs

@ -0,0 +1,170 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection;
namespace Lion.AbpPro.FileManagement.Data;
public class FileManagementDbMigrationService : ITransientDependency
{
private readonly IDataSeeder _dataSeeder;
private readonly IEnumerable<IFileManagementDbSchemaMigrator> _dbSchemaMigrators;
public FileManagementDbMigrationService(
IDataSeeder dataSeeder,
IEnumerable<IFileManagementDbSchemaMigrator> dbSchemaMigrators)
{
_dataSeeder = dataSeeder;
_dbSchemaMigrators = dbSchemaMigrators;
Logger = NullLogger<FileManagementDbMigrationService>.Instance;
}
public ILogger<FileManagementDbMigrationService> Logger { get; set; }
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.");
Logger.LogInformation("You can safely end this process...");
}
private async Task MigrateDatabaseSchemaAsync()
{
foreach (var migrator in _dbSchemaMigrators)
{
await migrator.MigrateAsync();
}
}
private async Task SeedDataAsync()
{
await _dataSeeder.SeedAsync(new DataSeedContext());
}
private bool AddInitialMigrationIfNotExist()
{
try
{
if (!DbMigrationsProjectExists())
{
return false;
}
}
catch (Exception)
{
return false;
}
try
{
if (!MigrationsFolderExists())
{
AddInitialMigration();
return true;
}
return false;
}
catch (Exception e)
{
Logger.LogWarning("Couldn't determinate if any migrations exist : " + e.Message);
return false;
}
}
private bool DbMigrationsProjectExists()
{
var dbMigrationsProjectFolder = GetEntityFrameworkCoreProjectFolderPath();
return dbMigrationsProjectFolder != null;
}
private bool MigrationsFolderExists()
{
var dbMigrationsProjectFolder = GetEntityFrameworkCoreProjectFolderPath();
return Directory.Exists(Path.Combine(dbMigrationsProjectFolder, "Migrations"));
}
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 \"{GetEntityFrameworkCoreProjectFolderPath()}\"\""
);
try
{
Process.Start(procStartInfo);
}
catch (Exception)
{
throw new Exception("Couldn't run ABP CLI...");
}
}
private string GetEntityFrameworkCoreProjectFolderPath()
{
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(".EntityFrameworkCore"));
}
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;
}
}

8
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Data/IFileManagementDbSchemaMigrator.cs

@ -0,0 +1,8 @@
using System.Threading.Tasks;
namespace Lion.AbpPro.FileManagement.Data;
public interface IFileManagementDbSchemaMigrator
{
Task MigrateAsync();
}

12
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Data/NullFileManagementDbSchemaMigrator.cs

@ -0,0 +1,12 @@
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Lion.AbpPro.FileManagement.Data;
public class NullFileManagementDbSchemaMigrator : IFileManagementDbSchemaMigrator, ITransientDependency
{
public Task MigrateAsync()
{
return Task.CompletedTask;
}
}

9
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/FileManagementDbProperties.cs

@ -0,0 +1,9 @@
namespace Lion.AbpPro.FileManagement;
public static class FileManagementDbProperties
{
public const string ConnectionStringName = "FileManagement";
public static string DbTablePrefix { get; set; } = "";
public static string DbSchema { get; set; } = null;
}

12
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/FileManagementDomainModule.cs

@ -0,0 +1,12 @@
using Volo.Abp.Domain;
using Volo.Abp.Modularity;
namespace Lion.AbpPro.FileManagement;
[DependsOn(
typeof(AbpDddDomainModule),
typeof(FileManagementDomainSharedModule)
)]
public class FileManagementDomainModule : AbpModule
{
}

26
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Files/Aggregates/File.cs

@ -0,0 +1,26 @@
using System;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.MultiTenancy;
namespace Lion.AbpPro.FileManagement.Files;
public class File: FullAuditedAggregateRoot<Guid>, IMultiTenant
{
public Guid? TenantId { get; private set; }
public string FileName { get; private set; }
public string FilePath { get; private set; }
private File()
{
}
public File(Guid id, Guid? tenantId, string fileName, string filePath) : base(id)
{
TenantId = tenantId;
FileName = fileName;
FilePath = filePath;
}
}

38
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Files/FileManager.cs

@ -0,0 +1,38 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Domain.Services;
namespace Lion.AbpPro.FileManagement.Files;
public class FileManager : DomainService
{
private readonly IFileRepository _fileRepository;
public FileManager(IFileRepository fileRepository)
{
_fileRepository = fileRepository;
}
public async Task CreateAsync(string fileName, string filePath)
{
Check.NotNullOrWhiteSpace(fileName, nameof(fileName));
Check.NotNullOrWhiteSpace(filePath, nameof(filePath));
var entity = new File(GuidGenerator.Create(), CurrentTenant.Id, fileName, filePath);
await _fileRepository.InsertAsync(entity);
}
public async Task<List<File>> PagingAsync(
string filter = null,
int maxResultCount = 10,
int skipCount = 0)
{
return await _fileRepository.GetPagingListAsync(filter, maxResultCount, skipCount);
}
public async Task<long> CountAsync(string filter = null)
{
return await _fileRepository.GetPagingCountAsync(filter);
}
}

19
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Files/IFileRepository.cs

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
namespace Lion.AbpPro.FileManagement.Files;
public interface IFileRepository: IRepository<File, Guid>
{
Task<List<File>> GetPagingListAsync(
string filter = null,
int maxResultCount = 10,
int skipCount = 0,
CancellationToken cancellationToken = default);
Task<long> GetPagingCountAsync(string filter = null,
CancellationToken cancellationToken = default);
}

3
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false"/>
</Weavers>

30
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

3
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Lion.AbpPro.FileManagement.Domain.abppkg.json

@ -0,0 +1,3 @@
{
"role": "lib.domain"
}

15
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Lion.AbpPro.FileManagement.Domain.csproj

@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="../../../../common.props" />
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Lion.AbpPro.FileManagement</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Ddd.Domain" Version="$(AbpPackageVersion)" />
<ProjectReference Include="..\Lion.AbpPro.FileManagement.Domain.Shared\Lion.AbpPro.FileManagement.Domain.Shared.csproj" />
</ItemGroup>
</Project>

13
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Settings/FileManagementSettingDefinitionProvider.cs

@ -0,0 +1,13 @@
using Volo.Abp.Settings;
namespace Lion.AbpPro.FileManagement.Settings;
public class FileManagementSettingDefinitionProvider : SettingDefinitionProvider
{
public override void Define(ISettingDefinitionContext context)
{
/* Define module settings here.
* Use names from FileManagementSettings class.
*/
}
}

10
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.Domain/Settings/FileManagementSettings.cs

@ -0,0 +1,10 @@
namespace Lion.AbpPro.FileManagement.Settings;
public static class FileManagementSettings
{
public const string GroupName = "FileManagement";
/* Add constants for setting names. Example:
* public const string MySettingName = GroupName + ".MySettingName";
*/
}

28
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/EntityFrameworkCore/FileManagementDbContext.cs

@ -0,0 +1,28 @@
using Lion.AbpPro.FileManagement.Files;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
namespace Lion.AbpPro.FileManagement.EntityFrameworkCore;
[ConnectionStringName(FileManagementDbProperties.ConnectionStringName)]
public class FileManagementDbContext : AbpDbContext<FileManagementDbContext>, IFileManagementDbContext
{
/* Add DbSet for each Aggregate Root here. Example:
* public DbSet<Question> Questions { get; set; }
*/
public FileManagementDbContext(DbContextOptions<FileManagementDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.ConfigureFileManagement();
}
public DbSet<File> Files { get; }
}

24
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/EntityFrameworkCore/FileManagementDbContextModelCreatingExtensions.cs

@ -0,0 +1,24 @@
using Lion.AbpPro.FileManagement.Files;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.EntityFrameworkCore.Modeling;
namespace Lion.AbpPro.FileManagement.EntityFrameworkCore;
public static class FileManagementDbContextModelCreatingExtensions
{
public static void ConfigureFileManagement(
this ModelBuilder builder)
{
Check.NotNull(builder, nameof(builder));
builder.Entity<File>(b =>
{
b.ToTable(FileManagementDbProperties.DbTablePrefix + nameof(File), FileManagementDbProperties.DbSchema);
b.HasIndex(q => q.FileName);
b.HasIndex(q => q.CreationTime);
b.ConfigureByConvention();
});
}
}

31
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/EntityFrameworkCore/FileManagementEntityFrameworkCoreModule.cs

@ -0,0 +1,31 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.MySQL;
using Volo.Abp.Modularity;
namespace Lion.AbpPro.FileManagement.EntityFrameworkCore;
[DependsOn(
typeof(FileManagementDomainModule),
typeof(AbpEntityFrameworkCoreMySQLModule)
)]
public class FileManagementEntityFrameworkCoreModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddAbpDbContext<FileManagementDbContext>(options =>
{
/* Add custom repositories here. Example:
* options.AddRepository<Question, EfCoreQuestionRepository>();
*/
options.AddDefaultRepositories(true);
});
Configure<AbpDbContextOptions>(options =>
{
/* The main point to change your DBMS.
* See also OperationsMigrationsDbContextFactory for EF Core tooling. */
options.UseMySQL();
});
}
}

41
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/EntityFrameworkCore/Files/EfCoreFileRepository.cs

@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Lion.AbpPro.FileManagement.Files;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
namespace Lion.AbpPro.FileManagement.EntityFrameworkCore.Files;
public class EfCoreFileRepository: EfCoreRepository<IFileManagementDbContext, File, Guid>, IFileRepository
{
public EfCoreFileRepository(IDbContextProvider<IFileManagementDbContext> dbContextProvider) : base(dbContextProvider)
{
}
public async Task<List<File>> GetPagingListAsync(
string filter = null,
int maxResultCount = 10,
int skipCount = 0,
CancellationToken cancellationToken = default)
{
return await (await GetDbSetAsync())
.WhereIf(!filter.IsNullOrWhiteSpace(),
e => (e.FileName.Contains(filter)))
.OrderByDescending(e => e.CreationTime)
.PageBy(skipCount, maxResultCount)
.ToListAsync(GetCancellationToken(cancellationToken));
}
public async Task<long> GetPagingCountAsync(string filter = null,
CancellationToken cancellationToken = default)
{
return await (await GetDbSetAsync())
.WhereIf(!filter.IsNullOrWhiteSpace(),
e => (e.FileName.Contains(filter)))
.CountAsync(cancellationToken: cancellationToken);
}
}

15
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/EntityFrameworkCore/IFileManagementDbContext.cs

@ -0,0 +1,15 @@
using Lion.AbpPro.FileManagement.Files;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
namespace Lion.AbpPro.FileManagement.EntityFrameworkCore;
[ConnectionStringName(FileManagementDbProperties.ConnectionStringName)]
public interface IFileManagementDbContext : IEfCoreDbContext
{
/* Add DbSet for each Aggregate Root here. Example:
* DbSet<Question> Questions { get; }
*/
DbSet<File> Files { get; }
}

3
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false"/>
</Weavers>

30
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

3
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/Lion.AbpPro.FileManagement.EntityFrameworkCore.abppkg.json

@ -0,0 +1,3 @@
{
"role": "lib.ef"
}

21
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.EntityFrameworkCore/Lion.AbpPro.FileManagement.EntityFrameworkCore.csproj

@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="../../../../common.props" />
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Lion.AbpPro.FileManagement</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.EntityFrameworkCore.MySQL" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.EntityFrameworkCore" Version="$(AbpPackageVersion)" />
<ProjectReference Include="..\Lion.AbpPro.FileManagement.Domain\Lion.AbpPro.FileManagement.Domain.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="$(MicrosoftVersion)">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
<PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>

22
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.HttpApi.Client/FileManagementHttpApiClientModule.cs

@ -0,0 +1,22 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
namespace Lion.AbpPro.FileManagement;
[DependsOn(
typeof(FileManagementApplicationContractsModule),
typeof(AbpHttpClientModule))]
public class FileManagementHttpApiClientModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddHttpClientProxies(
typeof(FileManagementApplicationContractsModule).Assembly,
FileManagementRemoteServiceConsts.RemoteServiceName
);
Configure<AbpVirtualFileSystemOptions>(options => { options.FileSets.AddEmbedded<FileManagementHttpApiClientModule>(); });
}
}

3
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.HttpApi.Client/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false"/>
</Weavers>

30
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.HttpApi.Client/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

3
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.HttpApi.Client/Lion.AbpPro.FileManagement.HttpApi.Client.abppkg.json

@ -0,0 +1,3 @@
{
"role": "lib.http-api-client"
}

20
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.HttpApi.Client/Lion.AbpPro.FileManagement.HttpApi.Client.csproj

@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="../../../../common.props" />
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>Lion.AbpPro.FileManagement</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Http.Client" Version="$(AbpPackageVersion)"/>
<ProjectReference Include="..\Lion.AbpPro.FileManagement.Application.Contracts\Lion.AbpPro.FileManagement.Application.Contracts.csproj"/>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="**\*generate-proxy.json"/>
<Content Remove="**\*generate-proxy.json"/>
</ItemGroup>
</Project>

12
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.HttpApi/FileManagementController.cs

@ -0,0 +1,12 @@
using Lion.AbpPro.FileManagement.Localization;
using Volo.Abp.AspNetCore.Mvc;
namespace Lion.AbpPro.FileManagement;
public abstract class FileManagementController : AbpControllerBase
{
protected FileManagementController()
{
LocalizationResource = typeof(FileManagementResource);
}
}

29
aspnet-core/modules/FileManagement/src/Lion.AbpPro.FileManagement.HttpApi/FileManagementHttpApiModule.cs

@ -0,0 +1,29 @@
using Localization.Resources.AbpUi;
using Microsoft.Extensions.DependencyInjection;
using Lion.AbpPro.FileManagement.Localization;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
namespace Lion.AbpPro.FileManagement;
[DependsOn(
typeof(FileManagementApplicationContractsModule),
typeof(AbpAspNetCoreMvcModule))]
public class FileManagementHttpApiModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
PreConfigure<IMvcBuilder>(mvcBuilder => { mvcBuilder.AddApplicationPartIfNotExists(typeof(FileManagementHttpApiModule).Assembly); });
}
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpLocalizationOptions>(options =>
{
options.Resources
.Get<FileManagementResource>()
.AddBaseTypes(typeof(AbpUiResource));
});
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save