Browse Source

Upgrade to ABP 5.0.1

Refactor DefaultUnpaidOrderAutoCancelProvider
Improve PaymentCanceledEventHandler to check paymentId
Remove StoreOwnerCacheItemInvalidator
Disassemble IUnpaidOrderAutoCancelProvider into OrderAutoCancelOnCreatedHandler and OrderAutoCancelOnUpdatedHandler
pull/122/head 2.4.0
gdlcf88 4 years ago
parent
commit
c342997423
  1. 3
      .github/workflows/publish-docs.yml
  2. 15
      .github/workflows/publish.yml
  3. 8
      Directory.Build.props
  4. 4
      azure-pipelines.yml
  5. 4
      common.props
  6. 1
      docs/README.md
  7. 8
      integration/EasyAbp.EShop/src/EasyAbp.EShop.Application.Contracts/EasyAbp/EShop/EShopRemoteServiceConsts.cs
  8. 2
      integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp.EShop.Domain.Shared.csproj
  9. 2
      integration/EasyAbp.EShop/src/EasyAbp.EShop.EntityFrameworkCore/EasyAbp.EShop.EntityFrameworkCore.csproj
  10. 5
      integration/EasyAbp.EShop/src/EasyAbp.EShop.HttpApi.Client/EasyAbp.EShop.HttpApi.Client.csproj
  11. 8
      integration/EasyAbp.EShop/src/EasyAbp.EShop.HttpApi.Client/EasyAbp/EShop/EShopHttpApiClientModule.cs
  12. 2
      integration/EasyAbp.EShop/src/EasyAbp.EShop.HttpApi/EasyAbp.EShop.HttpApi.csproj
  13. 4
      integration/EasyAbp.EShop/src/EasyAbp.EShop.HttpApi/EasyAbp/EShop/EShopController.cs
  14. 2
      integration/EasyAbp.EShop/src/EasyAbp.EShop.MongoDB/EasyAbp.EShop.MongoDB.csproj
  15. 2
      integration/EasyAbp.EShop/src/EasyAbp.EShop.Web/EShopWebModule.cs
  16. 6
      integration/EasyAbp.EShop/src/EasyAbp.EShop.Web/EasyAbp.EShop.Web.csproj
  17. 6
      integration/EasyAbp.EShop/test/EasyAbp.EShop.Application.Tests/EasyAbp.EShop.Application.Tests.csproj
  18. 6
      integration/EasyAbp.EShop/test/EasyAbp.EShop.Domain.Tests/EasyAbp.EShop.Domain.Tests.csproj
  19. 12
      integration/EasyAbp.EShop/test/EasyAbp.EShop.EntityFrameworkCore.Tests/EasyAbp.EShop.EntityFrameworkCore.Tests.csproj
  20. 4
      integration/EasyAbp.EShop/test/EasyAbp.EShop.HttpApi.Client.ConsoleTestApp/EasyAbp.EShop.HttpApi.Client.ConsoleTestApp.csproj
  21. 8
      integration/EasyAbp.EShop/test/EasyAbp.EShop.MongoDB.Tests/EasyAbp.EShop.MongoDB.Tests.csproj
  22. 6
      integration/EasyAbp.EShop/test/EasyAbp.EShop.TestBase/EasyAbp.EShop.TestBase.csproj
  23. 8
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application.Contracts/EasyAbp/EShop/Orders/EShopOrdersRemoteServiceConsts.cs
  24. 2
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application/EasyAbp/EShop/Orders/Orders/OrderAppService.cs
  25. 3
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp.EShop.Orders.Domain.Shared.csproj
  26. 2
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/EShopOrdersDomainSharedModule.cs
  27. 16
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Orders/OrderEto.cs
  28. 66
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/DefaultUnpaidOrderAutoCancelProvider.cs
  29. 7
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/IUnpaidOrderAutoCancelProvider.cs
  30. 2
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/Order.cs
  31. 40
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/OrderAutoCancelOnCreatedHandler.cs
  32. 39
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/OrderAutoCancelOnUpdatedHandler.cs
  33. 30
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/OrderManager.cs
  34. 25
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/OrderPaymentIdChangedEto.cs
  35. 5
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/PaymentCanceledEventHandler.cs
  36. 13
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/PaymentCompletedEventHandler.cs
  37. 14
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/RefundCompletedEventHandler.cs
  38. 4
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/UnpaidOrderAutoCancelJob.cs
  39. 2
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.EntityFrameworkCore/EasyAbp.EShop.Orders.EntityFrameworkCore.csproj
  40. 5
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.HttpApi.Client/EasyAbp.EShop.Orders.HttpApi.Client.csproj
  41. 8
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.HttpApi.Client/EasyAbp/EShop/Orders/EShopOrdersHttpApiClientModule.cs
  42. 2
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.HttpApi/EasyAbp.EShop.Orders.HttpApi.csproj
  43. 2
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.HttpApi/EasyAbp/EShop/Orders/Orders/OrderController.cs
  44. 4
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.HttpApi/EasyAbp/EShop/Orders/OrdersController.cs
  45. 2
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.MongoDB/EasyAbp.EShop.Orders.MongoDB.csproj
  46. 2
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Web/EShopOrdersWebModule.cs
  47. 6
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Web/EasyAbp.EShop.Orders.Web.csproj
  48. 6
      modules/EasyAbp.EShop.Orders/test/EasyAbp.EShop.Orders.Application.Tests/EasyAbp.EShop.Orders.Application.Tests.csproj
  49. 6
      modules/EasyAbp.EShop.Orders/test/EasyAbp.EShop.Orders.Domain.Tests/EasyAbp.EShop.Orders.Domain.Tests.csproj
  50. 12
      modules/EasyAbp.EShop.Orders/test/EasyAbp.EShop.Orders.EntityFrameworkCore.Tests/EasyAbp.EShop.Orders.EntityFrameworkCore.Tests.csproj
  51. 4
      modules/EasyAbp.EShop.Orders/test/EasyAbp.EShop.Orders.HttpApi.Client.ConsoleTestApp/EasyAbp.EShop.Orders.HttpApi.Client.ConsoleTestApp.csproj
  52. 8
      modules/EasyAbp.EShop.Orders/test/EasyAbp.EShop.Orders.MongoDB.Tests/EasyAbp.EShop.Orders.MongoDB.Tests.csproj
  53. 6
      modules/EasyAbp.EShop.Orders/test/EasyAbp.EShop.Orders.TestBase/EasyAbp.EShop.Orders.TestBase.csproj
  54. 8
      modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Application.Contracts/EasyAbp/EShop/Payments/EShopPaymentsRemoteServiceConsts.cs
  55. 2
      modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Application/EasyAbp/EShop/Payments/Refunds/RefundAppService.cs
  56. 2
      modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp.EShop.Payments.Domain.Shared.csproj
  57. 66
      modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain/EasyAbp/EShop/Payments/Payments/PaymentSynchronizer.cs
  58. 31
      modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain/EasyAbp/EShop/Payments/Refunds/RefundSynchronizer.cs
  59. 6
      modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.EntityFrameworkCore/EasyAbp.EShop.Payments.EntityFrameworkCore.csproj
  60. 5
      modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.HttpApi.Client/EasyAbp.EShop.Payments.HttpApi.Client.csproj
  61. 8
      modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.HttpApi.Client/EasyAbp/EShop/Payments/EShopPaymentsHttpApiClientModule.cs
  62. 2
      modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.HttpApi/EasyAbp.EShop.Payments.HttpApi.csproj
  63. 2
      modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.HttpApi/EasyAbp/EShop/Payments/Payments/PaymentController.cs
  64. 4
      modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.HttpApi/EasyAbp/EShop/Payments/PaymentsController.cs
  65. 2
      modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.HttpApi/EasyAbp/EShop/Payments/Refunds/RefundController.cs
  66. 2
      modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.MongoDB/EasyAbp.EShop.Payments.MongoDB.csproj
  67. 2
      modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Web/EShopPaymentsWebModule.cs
  68. 6
      modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Web/EasyAbp.EShop.Payments.Web.csproj
  69. 8
      modules/EasyAbp.EShop.Payments/test/EasyAbp.EShop.Payments.Application.Tests/EasyAbp.EShop.Payments.Application.Tests.csproj
  70. 2
      modules/EasyAbp.EShop.Payments/test/EasyAbp.EShop.Payments.Application.Tests/Refunds/TestRefundPaymentEventHandler.cs
  71. 8
      modules/EasyAbp.EShop.Payments/test/EasyAbp.EShop.Payments.Domain.Tests/EasyAbp.EShop.Payments.Domain.Tests.csproj
  72. 14
      modules/EasyAbp.EShop.Payments/test/EasyAbp.EShop.Payments.EntityFrameworkCore.Tests/EasyAbp.EShop.Payments.EntityFrameworkCore.Tests.csproj
  73. 6
      modules/EasyAbp.EShop.Payments/test/EasyAbp.EShop.Payments.HttpApi.Client.ConsoleTestApp/EasyAbp.EShop.Payments.HttpApi.Client.ConsoleTestApp.csproj
  74. 10
      modules/EasyAbp.EShop.Payments/test/EasyAbp.EShop.Payments.MongoDB.Tests/EasyAbp.EShop.Payments.MongoDB.Tests.csproj
  75. 8
      modules/EasyAbp.EShop.Payments/test/EasyAbp.EShop.Payments.TestBase/EasyAbp.EShop.Payments.TestBase.csproj
  76. 2
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application.Contracts/EasyAbp.EShop.Plugins.Application.Contracts.csproj
  77. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application.Contracts/EasyAbp/EShop/Plugins/Authorization/PluginsPermissionDefinitionProvider.cs
  78. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application.Contracts/EasyAbp/EShop/Plugins/Authorization/PluginsPermissions.cs
  79. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application.Contracts/EasyAbp/EShop/Plugins/EShopPluginsApplicationContractsModule.cs
  80. 8
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application.Contracts/EasyAbp/EShop/Plugins/EShopPluginsRemoteServiceConsts.cs
  81. 2
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application/EasyAbp.EShop.Plugins.Application.csproj
  82. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application/EasyAbp/EShop/Plugins/EShopPluginsApplicationModule.cs
  83. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application/EasyAbp/EShop/Plugins/PluginsAppService.cs
  84. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application/EasyAbp/EShop/Plugins/PluginsApplicationAutoMapperProfile.cs
  85. 13
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp.EShop.Plugins.Domain.Shared.csproj
  86. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/EShopPluginsDomainSharedModule.cs
  87. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/cs.json
  88. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/en.json
  89. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/pl.json
  90. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/pt-BR.json
  91. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/sl.json
  92. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/tr.json
  93. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/vi.json
  94. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/zh-Hans.json
  95. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/zh-Hant.json
  96. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/PluginsResource.cs
  97. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/PluginsErrorCodes.cs
  98. 2
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain/EasyAbp.EShop.Plugins.Domain.csproj
  99. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain/EasyAbp/EShop/Plugins/EShopPluginsDomainModule.cs
  100. 0
      modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain/EasyAbp/EShop/Plugins/PluginsDbProperties.cs

3
.github/workflows/publish-docs.yml

@ -3,7 +3,6 @@ on:
push:
branches:
- master
- main
jobs:
publish:
runs-on: ubuntu-latest
@ -33,7 +32,6 @@ jobs:
cp -rf ../docs/ docs/.vuepress/public/modules/${{ github.event.repository.name }}
git add --all
echo "##[set-output name=diff;]$(git diff --staged)"
- name: Commit files
if: steps.change.outputs.diff
run: |
@ -42,7 +40,6 @@ jobs:
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git commit -m "Update the docs of ${{ github.event.repository.name }}" -a
- name: Push changes
if: steps.change.outputs.diff
uses: ad-m/github-push-action@master

15
.github/workflows/publish.yml

@ -10,6 +10,9 @@ jobs:
steps:
- uses: actions/checkout@v2
- uses: NuGet/setup-nuget@v1.0.5
- uses: actions/setup-dotnet@v1
with:
dotnet-version: '6.0.x'
- name: read common.props
id: commonProps
@ -39,8 +42,16 @@ jobs:
cd dest
del * -Exclude EasyAbp.*
del * -Exclude *.${{ steps.getVersion.outputs.first_match }}.nupkg
del *.HttpApi.Client.ConsoleTestApp*
del *.Host.Shared*
del *.Blazor.Host.*
del *.Blazor.Server.Host.*
del *.Host.Shared.*
del *.HttpApi.Host.*
del *.IdentityServer.*
del *.Web.Host.*
del *.Web.Unified.*
del *.HttpApi.Client.ConsoleTestApp.*
del *.Tests.*
del *.TestBase.*
dir -name
- name: dotnet nuget push to GitHub

8
Directory.Build.props

@ -1,10 +1,10 @@
<Project>
<PropertyGroup>
<AbpVersion>4.4.0</AbpVersion>
<EasyAbpAbpTreesModuleVersion>2.4.0</EasyAbpAbpTreesModuleVersion>
<EasyAbpPaymentServiceModuleVersion>1.10.3</EasyAbpPaymentServiceModuleVersion>
<EasyAbpAbpTagHelperPlusModuleVersion>0.7.1</EasyAbpAbpTagHelperPlusModuleVersion>
<AbpVersion>5.0.1</AbpVersion>
<EasyAbpAbpTreesModuleVersion>2.5.1</EasyAbpAbpTreesModuleVersion>
<EasyAbpPaymentServiceModuleVersion>2.0.1</EasyAbpPaymentServiceModuleVersion>
<EasyAbpAbpTagHelperPlusModuleVersion>0.8.1</EasyAbpAbpTagHelperPlusModuleVersion>
</PropertyGroup>
</Project>

4
azure-pipelines.yml

@ -26,7 +26,7 @@ stages:
- task: UseDotNet@2
inputs:
packageType: 'sdk'
version: '5.0.102'
version: '6.x'
- task: DotNetCoreCLI@2
displayName: 'restore'
@ -94,7 +94,7 @@ stages:
- task: UseDotNet@2
inputs:
packageType: 'sdk'
version: '5.x'
version: '6.x'
- task: CmdLine@2
displayName: 'install dotnet-ef'

4
common.props

@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>2.3.2</Version>
<Version>2.4.0</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>EasyAbp Team</Authors>
@ -20,7 +20,7 @@
<ItemGroup>
<PackageReference Include="ConfigureAwait.Fody" Version="3.3.1" PrivateAssets="All" />
<PackageReference Include="Fody" Version="6.2.4">
<PackageReference Include="Fody" Version="6.5.3">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>

1
docs/README.md

@ -3,6 +3,7 @@
[![ABP version](https://img.shields.io/badge/dynamic/xml?style=flat-square&color=yellow&label=abp&query=%2F%2FProject%2FPropertyGroup%2FAbpVersion&url=https%3A%2F%2Fraw.githubusercontent.com%2FEasyAbp%2FEShop%2Fmaster%2FDirectory.Build.props)](https://abp.io)
[![NuGet](https://img.shields.io/nuget/v/EasyAbp.EShop.Domain.Shared.svg?style=flat-square)](https://www.nuget.org/packages/EasyAbp.EShop.Domain.Shared)
[![NuGet Download](https://img.shields.io/nuget/dt/EasyAbp.EShop.Domain.Shared.svg?style=flat-square)](https://www.nuget.org/packages/EasyAbp.EShop.Domain.Shared)
[![Discord online](https://badgen.net/discord/online-members/S6QaezrCRq?label=Discord)](https://discord.gg/S6QaezrCRq)
[![GitHub stars](https://img.shields.io/github/stars/EasyAbp/EShop?style=social)](https://www.github.com/EasyAbp/EShop)
An abp application module group that provides basic e-shop service.

8
integration/EasyAbp.EShop/src/EasyAbp.EShop.Application.Contracts/EasyAbp/EShop/EShopRemoteServiceConsts.cs

@ -0,0 +1,8 @@
namespace EasyAbp.EShop;
public class EShopRemoteServiceConsts
{
public const string RemoteServiceName = "EasyAbpEShop";
public const string ModuleName = "easyAbpEShop";
}

2
integration/EasyAbp.EShop/src/EasyAbp.EShop.Domain.Shared/EasyAbp.EShop.Domain.Shared.csproj

@ -23,7 +23,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.*" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="6.0.*" />
</ItemGroup>
</Project>

2
integration/EasyAbp.EShop/src/EasyAbp.EShop.EntityFrameworkCore/EasyAbp.EShop.EntityFrameworkCore.csproj

@ -3,7 +3,7 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>

5
integration/EasyAbp.EShop/src/EasyAbp.EShop.HttpApi.Client/EasyAbp.EShop.HttpApi.Client.csproj

@ -17,4 +17,9 @@
<ProjectReference Include="..\EasyAbp.EShop.Application.Contracts\EasyAbp.EShop.Application.Contracts.csproj" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="**\*generate-proxy.json" />
<Content Remove="**\*generate-proxy.json" />
</ItemGroup>
</Project>

8
integration/EasyAbp.EShop/src/EasyAbp.EShop.HttpApi.Client/EasyAbp/EShop/EShopHttpApiClientModule.cs

@ -6,6 +6,7 @@ using EasyAbp.EShop.Stores;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
namespace EasyAbp.EShop
{
@ -20,7 +21,7 @@ namespace EasyAbp.EShop
)]
public class EShopHttpApiClientModule : AbpModule
{
public const string RemoteServiceName = "EShop";
public const string RemoteServiceName = EShopRemoteServiceConsts.RemoteServiceName;
public override void ConfigureServices(ServiceConfigurationContext context)
{
@ -28,6 +29,11 @@ namespace EasyAbp.EShop
typeof(EShopApplicationContractsModule).Assembly,
RemoteServiceName
);
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<EShopApplicationContractsModule>();
});
}
}
}

2
integration/EasyAbp.EShop/src/EasyAbp.EShop.HttpApi/EasyAbp.EShop.HttpApi.csproj

@ -3,7 +3,7 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>

4
integration/EasyAbp.EShop/src/EasyAbp.EShop.HttpApi/EasyAbp/EShop/EShopController.cs

@ -1,9 +1,11 @@
using EasyAbp.EShop.Localization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
namespace EasyAbp.EShop
{
public abstract class EShopController : AbpController
[Area(EShopRemoteServiceConsts.ModuleName)]
public abstract class EShopController : AbpControllerBase
{
protected EShopController()
{

2
integration/EasyAbp.EShop/src/EasyAbp.EShop.MongoDB/EasyAbp.EShop.MongoDB.csproj

@ -3,7 +3,7 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>

2
integration/EasyAbp.EShop/src/EasyAbp.EShop.Web/EShopWebModule.cs

@ -17,7 +17,7 @@ using Volo.Abp.VirtualFileSystem;
namespace EasyAbp.EShop.Web
{
[DependsOn(
typeof(EShopHttpApiModule),
typeof(EShopApplicationContractsModule),
typeof(AbpAspNetCoreMvcUiThemeSharedModule),
typeof(AbpAutoMapperModule),
typeof(EShopOrdersWebModule),

6
integration/EasyAbp.EShop/src/EasyAbp.EShop.Web/EasyAbp.EShop.Web.csproj

@ -3,7 +3,7 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<IsPackable>true</IsPackable>
<OutputType>Library</OutputType>
@ -22,11 +22,11 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EasyAbp.EShop.HttpApi\EasyAbp.EShop.HttpApi.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.Application.Contracts\EasyAbp.EShop.Application.Contracts.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.*" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="6.0.*" />
</ItemGroup>
<ItemGroup>

6
integration/EasyAbp.EShop/test/EasyAbp.EShop.Application.Tests/EasyAbp.EShop.Application.Tests.csproj

@ -1,16 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\EasyAbp.EShop.Application\EasyAbp.EShop.Application.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.Domain.Tests\EasyAbp.EShop.Domain.Tests.csproj" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
</ItemGroup>
</Project>

6
integration/EasyAbp.EShop/test/EasyAbp.EShop.Domain.Tests/EasyAbp.EShop.Domain.Tests.csproj

@ -1,14 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<ProjectReference Include="..\EasyAbp.EShop.EntityFrameworkCore.Tests\EasyAbp.EShop.EntityFrameworkCore.Tests.csproj" />
</ItemGroup>

12
integration/EasyAbp.EShop/test/EasyAbp.EShop.EntityFrameworkCore.Tests/EasyAbp.EShop.EntityFrameworkCore.Tests.csproj

@ -1,17 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="5.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="5.0.*" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="6.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="6.0.*" />
<ProjectReference Include="..\..\src\EasyAbp.EShop.EntityFrameworkCore\EasyAbp.EShop.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.TestBase\EasyAbp.EShop.TestBase.csproj" />
</ItemGroup>

4
integration/EasyAbp.EShop/test/EasyAbp.EShop.HttpApi.Client.ConsoleTestApp/EasyAbp.EShop.HttpApi.Client.ConsoleTestApp.csproj

@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>
@ -20,7 +20,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="5.0.*" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.*" />
</ItemGroup>
</Project>

8
integration/EasyAbp.EShop/test/EasyAbp.EShop.MongoDB.Tests/EasyAbp.EShop.MongoDB.Tests.csproj

@ -1,15 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Mongo2Go" Version="2.2.14" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="Mongo2Go" Version="3.1.3" />
<ProjectReference Include="..\..\src\EasyAbp.EShop.MongoDB\EasyAbp.EShop.MongoDB.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.TestBase\EasyAbp.EShop.TestBase.csproj" />
</ItemGroup>

6
integration/EasyAbp.EShop/test/EasyAbp.EShop.TestBase/EasyAbp.EShop.TestBase.csproj

@ -1,14 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="NSubstitute" Version="4.2.2" />
<PackageReference Include="Shouldly" Version="4.0.1" />
<PackageReference Include="xunit" Version="2.4.1" />

8
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application.Contracts/EasyAbp/EShop/Orders/EShopOrdersRemoteServiceConsts.cs

@ -0,0 +1,8 @@
namespace EasyAbp.EShop.Orders;
public class EShopOrdersRemoteServiceConsts
{
public const string RemoteServiceName = "EasyAbpEShopOrders";
public const string ModuleName = "easyAbpEShopOrders";
}

2
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application/EasyAbp/EShop/Orders/Orders/OrderAppService.cs

@ -106,7 +106,7 @@ namespace EasyAbp.EShop.Orders.Orders
protected virtual async Task DiscountOrderAsync(Order order, Dictionary<Guid, ProductDto> productDict)
{
foreach (var provider in ServiceProvider.GetServices<IOrderDiscountProvider>())
foreach (var provider in LazyServiceProvider.LazyGetService<IEnumerable<IOrderDiscountProvider>>())
{
await provider.DiscountAsync(order, productDict);
}

3
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp.EShop.Orders.Domain.Shared.csproj

@ -10,6 +10,7 @@
<ItemGroup>
<PackageReference Include="Volo.Abp.Validation" Version="$(AbpVersion)" />
<PackageReference Include="Volo.Abp.Auditing.Contracts" Version="$(AbpVersion)" />
<ProjectReference Include="..\..\..\EasyAbp.EShop.Payments\src\EasyAbp.EShop.Payments.Domain.Shared\EasyAbp.EShop.Payments.Domain.Shared.csproj" />
<ProjectReference Include="..\..\..\EasyAbp.EShop.Stores\src\EasyAbp.EShop.Stores.Domain.Shared\EasyAbp.EShop.Stores.Domain.Shared.csproj" />
</ItemGroup>
@ -20,7 +21,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.*" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="6.0.*" />
</ItemGroup>
</Project>

2
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/EShopOrdersDomainSharedModule.cs

@ -3,6 +3,7 @@ using Volo.Abp.Localization;
using EasyAbp.EShop.Orders.Localization;
using EasyAbp.EShop.Payments;
using EasyAbp.EShop.Stores;
using Volo.Abp.Auditing;
using Volo.Abp.Localization.ExceptionHandling;
using Volo.Abp.Validation;
using Volo.Abp.Validation.Localization;
@ -12,6 +13,7 @@ namespace EasyAbp.EShop.Orders
{
[DependsOn(
typeof(AbpValidationModule),
typeof(AbpAuditingContractsModule),
typeof(EShopStoresDomainSharedModule),
typeof(EShopPaymentsDomainSharedModule)
)]

16
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Orders/OrderEto.cs

@ -1,12 +1,13 @@
using System;
using System.Collections.Generic;
using Volo.Abp.Auditing;
using Volo.Abp.Data;
using Volo.Abp.MultiTenancy;
namespace EasyAbp.EShop.Orders.Orders
{
[Serializable]
public class OrderEto : IOrder, IMultiTenant
public class OrderEto : IOrder, IFullAuditedObject, IMultiTenant
{
public Guid Id { get; set; }
@ -55,5 +56,18 @@ namespace EasyAbp.EShop.Orders.Orders
public List<OrderLineEto> OrderLines { get; set; }
public ExtraPropertyDictionary ExtraProperties { get; set; }
public DateTime CreationTime { get; set; }
public Guid? CreatorId { get; set; }
public DateTime? LastModificationTime { get; set; }
public Guid? LastModifierId { get; set; }
public bool IsDeleted { get; set; }
public DateTime? DeletionTime { get; set; }
public Guid? DeleterId { get; set; }
}
}

66
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/DefaultUnpaidOrderAutoCancelProvider.cs

@ -1,66 +0,0 @@
using System.Threading.Tasks;
using Volo.Abp.BackgroundJobs;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Entities.Events;
using Volo.Abp.EventBus;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.Timing;
using Volo.Abp.Uow;
namespace EasyAbp.EShop.Orders.Orders
{
[Dependency(TryRegister = true)]
[UnitOfWork]
public class DefaultUnpaidOrderAutoCancelProvider :
IUnpaidOrderAutoCancelProvider,
ILocalEventHandler<EntityCreatedEventData<Order>>,
ILocalEventHandler<OrderPaymentIdChangedEto>,
ITransientDependency
{
private readonly IClock _clock;
private readonly IOrderManager _orderManager;
private readonly IBackgroundJobManager _backgroundJobManager;
public DefaultUnpaidOrderAutoCancelProvider(
IClock clock,
IOrderManager orderManager,
IBackgroundJobManager backgroundJobManager)
{
_clock = clock;
_orderManager = orderManager;
_backgroundJobManager = backgroundJobManager;
}
public virtual async Task HandleEventAsync(EntityCreatedEventData<Order> eventData)
{
if (!eventData.Entity.PaymentExpiration.HasValue)
{
return;
}
var args = new UnpaidOrderAutoCancelArgs
{
TenantId = eventData.Entity.TenantId,
OrderId = eventData.Entity.Id
};
await _backgroundJobManager.EnqueueAsync(
args: args,
delay: eventData.Entity.PaymentExpiration.Value.Subtract(_clock.Now) // Todo: use a absolute time.
);
}
public virtual async Task HandleEventAsync(OrderPaymentIdChangedEto eventData)
{
if (!eventData.Order.PaymentExpiration.HasValue || eventData.ToPaymentId.HasValue)
{
return;
}
if (_clock.Now > eventData.Order.PaymentExpiration.Value && !eventData.Order.CanceledTime.HasValue)
{
await _orderManager.CancelAsync(eventData.Order, OrdersConsts.CancellationReason);
}
}
}
}

7
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/IUnpaidOrderAutoCancelProvider.cs

@ -1,7 +0,0 @@
namespace EasyAbp.EShop.Orders.Orders
{
public interface IUnpaidOrderAutoCancelProvider
{
}
}

2
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/Order.cs

@ -127,8 +127,6 @@ namespace EasyAbp.EShop.Orders.Orders
public void SetPaymentId(Guid? paymentId)
{
AddLocalEvent(new OrderPaymentIdChangedEto(TenantId, this, PaymentId, paymentId));
PaymentId = paymentId;
}

40
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/OrderAutoCancelOnCreatedHandler.cs

@ -0,0 +1,40 @@
using System.Threading.Tasks;
using Volo.Abp.BackgroundJobs;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Entities.Events.Distributed;
using Volo.Abp.EventBus.Distributed;
namespace EasyAbp.EShop.Orders.Orders
{
public class OrderAutoCancelOnCreatedHandler :
IDistributedEventHandler<EntityCreatedEto<OrderEto>>,
ITransientDependency
{
private readonly IBackgroundJobManager _backgroundJobManager;
public OrderAutoCancelOnCreatedHandler(
IBackgroundJobManager backgroundJobManager)
{
_backgroundJobManager = backgroundJobManager;
}
public virtual async Task HandleEventAsync(EntityCreatedEto<OrderEto> eventData)
{
if (!eventData.Entity.PaymentExpiration.HasValue)
{
return;
}
var args = new UnpaidOrderAutoCancelArgs
{
TenantId = eventData.Entity.TenantId,
OrderId = eventData.Entity.Id
};
await _backgroundJobManager.EnqueueAsync(
args: args,
delay: eventData.Entity.PaymentExpiration.Value.Subtract(eventData.Entity.CreationTime) // Todo: use a absolute time.
);
}
}
}

39
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/OrderAutoCancelOnUpdatedHandler.cs

@ -0,0 +1,39 @@
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Entities.Events;
using Volo.Abp.EventBus;
using Volo.Abp.Timing;
using Volo.Abp.Uow;
namespace EasyAbp.EShop.Orders.Orders
{
public class OrderAutoCancelOnUpdatedHandler :
ILocalEventHandler<EntityUpdatedEventData<Order>>,
ITransientDependency
{
private readonly IClock _clock;
private readonly IOrderManager _orderManager;
public OrderAutoCancelOnUpdatedHandler(
IClock clock,
IOrderManager orderManager)
{
_clock = clock;
_orderManager = orderManager;
}
[UnitOfWork(true)]
public virtual async Task HandleEventAsync(EntityUpdatedEventData<Order> eventData)
{
if (!eventData.Entity.PaymentExpiration.HasValue || eventData.Entity.PaymentId.HasValue)
{
return;
}
if (_clock.Now > eventData.Entity.PaymentExpiration.Value && !eventData.Entity.CanceledTime.HasValue)
{
await _orderManager.CancelAsync(eventData.Entity, OrdersConsts.CancellationReason);
}
}
}
}

30
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/OrderManager.cs

@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Domain.Services;
using Volo.Abp.EventBus.Distributed;
@ -30,6 +31,7 @@ namespace EasyAbp.EShop.Orders.Orders
_orderRepository = orderRepository;
}
[UnitOfWork]
public virtual async Task<Order> CompleteAsync(Order order)
{
if (order.CompletionTime.HasValue || !order.ReducedInventoryAfterPaymentTime.HasValue)
@ -37,10 +39,8 @@ namespace EasyAbp.EShop.Orders.Orders
throw new OrderIsInWrongStageException(order.Id);
}
var providers = ServiceProvider.GetServices<IOrderCompletableCheckProvider>();
var providers = LazyServiceProvider.LazyGetService<IEnumerable<IOrderCompletableCheckProvider>>();
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
foreach (var provider in providers)
{
await provider.CheckAsync(order);
@ -49,17 +49,15 @@ namespace EasyAbp.EShop.Orders.Orders
order.SetCompletionTime(_clock.Now);
order.SetOrderStatus(OrderStatus.Completed);
uow.OnCompleted(async () =>
await _distributedEventBus.PublishAsync(
new OrderCompletedEto(_objectMapper.Map<Order, OrderEto>(order))));
await _orderRepository.UpdateAsync(order, true);
await uow.CompleteAsync();
await _distributedEventBus.PublishAsync(new OrderCompletedEto(_objectMapper.Map<Order, OrderEto>(order)));
return order;
}
// Todo: should handler the inventory rollback.
[UnitOfWork]
public virtual async Task<Order> CancelAsync(Order order, string cancellationReason)
{
if (order.CanceledTime.HasValue)
@ -72,18 +70,12 @@ namespace EasyAbp.EShop.Orders.Orders
throw new OrderIsInWrongStageException(order.Id);
}
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
order.SetCanceled(_clock.Now, cancellationReason);
order.SetOrderStatus(OrderStatus.Canceled);
uow.OnCompleted(async () =>
await _distributedEventBus.PublishAsync(
new OrderCanceledEto(_objectMapper.Map<Order, OrderEto>(order))));
await _orderRepository.UpdateAsync(order, true);
await uow.CompleteAsync();
await _distributedEventBus.PublishAsync(new OrderCanceledEto(_objectMapper.Map<Order, OrderEto>(order)));
return order;
}

25
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/OrderPaymentIdChangedEto.cs

@ -1,25 +0,0 @@
using System;
using Volo.Abp.MultiTenancy;
namespace EasyAbp.EShop.Orders.Orders
{
[Serializable]
public class OrderPaymentIdChangedEto : IMultiTenant
{
public Guid? TenantId { get; set; }
public Order Order { get; set; }
public Guid? FromPaymentId { get; set; }
public Guid? ToPaymentId { get; set; }
public OrderPaymentIdChangedEto(Guid? tenantId, Order order, Guid? fromPaymentId, Guid? toPaymentId)
{
TenantId = tenantId;
Order = order;
FromPaymentId = fromPaymentId;
ToPaymentId = toPaymentId;
}
}
}

5
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/PaymentCanceledEventHandler.cs

@ -33,6 +33,11 @@ namespace EasyAbp.EShop.Orders.Orders
{
var order = await _orderRepository.GetAsync(Guid.Parse(paymentItem.ItemKey));
if (order.PaymentId != eventData.Payment.Id)
{
continue;
}
order.SetPaymentId(null);
await _orderRepository.UpdateAsync(order, true);

13
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/PaymentCompletedEventHandler.cs

@ -17,7 +17,6 @@ namespace EasyAbp.EShop.Orders.Orders
private readonly IClock _clock;
private readonly ICurrentTenant _currentTenant;
private readonly IObjectMapper _objectMapper;
private readonly IUnitOfWorkManager _unitOfWorkManager;
private readonly IOrderPaymentChecker _orderPaymentChecker;
private readonly IDistributedEventBus _distributedEventBus;
private readonly IOrderRepository _orderRepository;
@ -26,7 +25,6 @@ namespace EasyAbp.EShop.Orders.Orders
IClock clock,
ICurrentTenant currentTenant,
IObjectMapper objectMapper,
IUnitOfWorkManager unitOfWorkManager,
IOrderPaymentChecker orderPaymentChecker,
IDistributedEventBus distributedEventBus,
IOrderRepository orderRepository)
@ -34,12 +32,12 @@ namespace EasyAbp.EShop.Orders.Orders
_clock = clock;
_currentTenant = currentTenant;
_objectMapper = objectMapper;
_unitOfWorkManager = unitOfWorkManager;
_orderPaymentChecker = orderPaymentChecker;
_distributedEventBus = distributedEventBus;
_orderRepository = orderRepository;
}
[UnitOfWork(true)]
public virtual async Task HandleEventAsync(EShopPaymentCompletedEto eventData)
{
var payment = eventData.Payment;
@ -49,8 +47,6 @@ namespace EasyAbp.EShop.Orders.Orders
return;
}
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
using var currentTenant = _currentTenant.Change(payment.TenantId);
foreach (var item in payment.PaymentItems.Where(item => item.ItemType == PaymentsConsts.PaymentItemType))
@ -75,12 +71,9 @@ namespace EasyAbp.EShop.Orders.Orders
await _orderRepository.UpdateAsync(order, true);
uow.OnCompleted(async () =>
await _distributedEventBus.PublishAsync(new OrderPaidEto(_objectMapper.Map<Order, OrderEto>(order),
payment.Id, item.Id)));
await _distributedEventBus.PublishAsync(new OrderPaidEto(_objectMapper.Map<Order, OrderEto>(order),
payment.Id, item.Id));
}
await uow.CompleteAsync();
}
}
}

14
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/RefundCompletedEventHandler.cs

@ -13,32 +13,29 @@ namespace EasyAbp.EShop.Orders.Orders
{
private readonly ICurrentTenant _currentTenant;
private readonly IObjectMapper _objectMapper;
private readonly IUnitOfWorkManager _unitOfWorkManager;
private readonly IDistributedEventBus _distributedEventBus;
private readonly IOrderRepository _orderRepository;
public RefundCompletedEventHandler(
ICurrentTenant currentTenant,
IObjectMapper objectMapper,
IUnitOfWorkManager unitOfWorkManager,
IDistributedEventBus distributedEventBus,
IOrderRepository orderRepository)
{
_currentTenant = currentTenant;
_objectMapper = objectMapper;
_unitOfWorkManager = unitOfWorkManager;
_distributedEventBus = distributedEventBus;
_orderRepository = orderRepository;
}
[UnitOfWork(true)]
public virtual async Task HandleEventAsync(EShopRefundCompletedEto eventData)
{
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
using var changeTenant = _currentTenant.Change(eventData.Refund.TenantId);
foreach (var refundItem in eventData.Refund.RefundItems)
{
// Todo: what if Order.PaymentId != eventData.Refund.PaymentId?
var order = await _orderRepository.GetAsync(refundItem.OrderId);
foreach (var eto in refundItem.RefundItemOrderLines)
@ -48,12 +45,9 @@ namespace EasyAbp.EShop.Orders.Orders
await _orderRepository.UpdateAsync(order, true);
uow.OnCompleted(async () => await _distributedEventBus.PublishAsync(
new OrderRefundedEto(_objectMapper.Map<Order, OrderEto>(order), eventData.Refund))
);
await _distributedEventBus.PublishAsync(
new OrderRefundedEto(_objectMapper.Map<Order, OrderEto>(order), eventData.Refund));
}
await uow.CompleteAsync();
}
}
}

4
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/UnpaidOrderAutoCancelJob.cs

@ -27,7 +27,7 @@ namespace EasyAbp.EShop.Orders.Orders
_distributedEventBus = distributedEventBus;
}
[UnitOfWork]
[UnitOfWork(true)]
public override async Task ExecuteAsync(UnpaidOrderAutoCancelArgs args)
{
using var changeTenant = _currentTenant.Change(args.TenantId);
@ -41,7 +41,7 @@ namespace EasyAbp.EShop.Orders.Orders
if (order.IsInPayment())
{
// Cancel the payment and cancel the order in EasyAbp.EShop.Orders.Orders.PaymentCanceledEventHandler
// Cancel the payment and then cancel the order in EasyAbp.EShop.Orders.Orders.PaymentCanceledEventHandler
await _distributedEventBus.PublishAsync(new CancelPaymentEto(args.TenantId, order.PaymentId!.Value));
}
else

2
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.EntityFrameworkCore/EasyAbp.EShop.Orders.EntityFrameworkCore.csproj

@ -3,7 +3,7 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>

5
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.HttpApi.Client/EasyAbp.EShop.Orders.HttpApi.Client.csproj

@ -12,4 +12,9 @@
<ProjectReference Include="..\EasyAbp.EShop.Orders.Application.Contracts\EasyAbp.EShop.Orders.Application.Contracts.csproj" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="**\*generate-proxy.json" />
<Content Remove="**\*generate-proxy.json" />
</ItemGroup>
</Project>

8
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.HttpApi.Client/EasyAbp/EShop/Orders/EShopOrdersHttpApiClientModule.cs

@ -1,6 +1,7 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
namespace EasyAbp.EShop.Orders
{
@ -9,7 +10,7 @@ namespace EasyAbp.EShop.Orders
typeof(AbpHttpClientModule))]
public class EShopOrdersHttpApiClientModule : AbpModule
{
public const string RemoteServiceName = "EShopOrders";
public const string RemoteServiceName = EShopOrdersRemoteServiceConsts.RemoteServiceName;
public override void ConfigureServices(ServiceConfigurationContext context)
{
@ -17,6 +18,11 @@ namespace EasyAbp.EShop.Orders
typeof(EShopOrdersApplicationContractsModule).Assembly,
RemoteServiceName
);
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<EShopOrdersApplicationContractsModule>();
});
}
}
}

2
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.HttpApi/EasyAbp.EShop.Orders.HttpApi.csproj

@ -3,7 +3,7 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>

2
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.HttpApi/EasyAbp/EShop/Orders/Orders/OrderController.cs

@ -7,7 +7,7 @@ using Volo.Abp.Application.Dtos;
namespace EasyAbp.EShop.Orders.Orders
{
[RemoteService(Name = "EasyAbpEShopOrders")]
[RemoteService(Name = EShopOrdersRemoteServiceConsts.RemoteServiceName)]
[Route("/api/e-shop/orders/order")]
public class OrderController : OrdersController, IOrderAppService
{

4
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.HttpApi/EasyAbp/EShop/Orders/OrdersController.cs

@ -1,9 +1,11 @@
using EasyAbp.EShop.Orders.Localization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
namespace EasyAbp.EShop.Orders
{
public abstract class OrdersController : AbpController
[Area(EShopOrdersRemoteServiceConsts.ModuleName)]
public abstract class OrdersController : AbpControllerBase
{
protected OrdersController()
{

2
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.MongoDB/EasyAbp.EShop.Orders.MongoDB.csproj

@ -3,7 +3,7 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>

2
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Web/EShopOrdersWebModule.cs

@ -12,7 +12,7 @@ using Volo.Abp.VirtualFileSystem;
namespace EasyAbp.EShop.Orders.Web
{
[DependsOn(
typeof(EShopOrdersHttpApiModule),
typeof(EShopOrdersApplicationContractsModule),
typeof(AbpAspNetCoreMvcUiThemeSharedModule),
typeof(AbpAutoMapperModule)
)]

6
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Web/EasyAbp.EShop.Orders.Web.csproj

@ -3,7 +3,7 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<IsPackable>true</IsPackable>
<OutputType>Library</OutputType>
@ -17,12 +17,12 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EasyAbp.EShop.Orders.HttpApi\EasyAbp.EShop.Orders.HttpApi.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.Orders.Application.Contracts\EasyAbp.EShop.Orders.Application.Contracts.csproj" />
<ProjectReference Include="..\..\..\EasyAbp.EShop.Stores\src\EasyAbp.EShop.Stores.Application.Contracts\EasyAbp.EShop.Stores.Application.Contracts.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.*" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="6.0.*" />
</ItemGroup>
<ItemGroup>

6
modules/EasyAbp.EShop.Orders/test/EasyAbp.EShop.Orders.Application.Tests/EasyAbp.EShop.Orders.Application.Tests.csproj

@ -1,16 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\EasyAbp.EShop.Orders.Application\EasyAbp.EShop.Orders.Application.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.Orders.Domain.Tests\EasyAbp.EShop.Orders.Domain.Tests.csproj" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
</ItemGroup>
</Project>

6
modules/EasyAbp.EShop.Orders/test/EasyAbp.EShop.Orders.Domain.Tests/EasyAbp.EShop.Orders.Domain.Tests.csproj

@ -1,14 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<ProjectReference Include="..\EasyAbp.EShop.Orders.EntityFrameworkCore.Tests\EasyAbp.EShop.Orders.EntityFrameworkCore.Tests.csproj" />
</ItemGroup>

12
modules/EasyAbp.EShop.Orders/test/EasyAbp.EShop.Orders.EntityFrameworkCore.Tests/EasyAbp.EShop.Orders.EntityFrameworkCore.Tests.csproj

@ -1,17 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="5.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="5.0.*" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="6.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="6.0.*" />
<ProjectReference Include="..\..\src\EasyAbp.EShop.Orders.EntityFrameworkCore\EasyAbp.EShop.Orders.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.Orders.TestBase\EasyAbp.EShop.Orders.TestBase.csproj" />
</ItemGroup>

4
modules/EasyAbp.EShop.Orders/test/EasyAbp.EShop.Orders.HttpApi.Client.ConsoleTestApp/EasyAbp.EShop.Orders.HttpApi.Client.ConsoleTestApp.csproj

@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>
@ -20,7 +20,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="5.0.*" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.*" />
</ItemGroup>
</Project>

8
modules/EasyAbp.EShop.Orders/test/EasyAbp.EShop.Orders.MongoDB.Tests/EasyAbp.EShop.Orders.MongoDB.Tests.csproj

@ -1,15 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Mongo2Go" Version="2.2.14" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="Mongo2Go" Version="3.1.3" />
<ProjectReference Include="..\..\src\EasyAbp.EShop.Orders.MongoDB\EasyAbp.EShop.Orders.MongoDB.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.Orders.TestBase\EasyAbp.EShop.Orders.TestBase.csproj" />
</ItemGroup>

6
modules/EasyAbp.EShop.Orders/test/EasyAbp.EShop.Orders.TestBase/EasyAbp.EShop.Orders.TestBase.csproj

@ -1,14 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="NSubstitute" Version="4.2.2" />
<PackageReference Include="Shouldly" Version="4.0.1" />
<PackageReference Include="xunit" Version="2.4.1" />

8
modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Application.Contracts/EasyAbp/EShop/Payments/EShopPaymentsRemoteServiceConsts.cs

@ -0,0 +1,8 @@
namespace EasyAbp.EShop.Payments;
public class EShopPaymentsRemoteServiceConsts
{
public const string RemoteServiceName = "EasyAbpEShopPayments";
public const string ModuleName = "easyAbpEShopPayments";
}

2
modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Application/EasyAbp/EShop/Payments/Refunds/RefundAppService.cs

@ -65,7 +65,7 @@ namespace EasyAbp.EShop.Payments.Refunds
{
return input.UserId.HasValue
? await _repository.GetQueryableByUserIdAsync(input.UserId.Value)
: _repository;
: await _repository.GetQueryableAsync();
}
// Todo: should a store owner user see orders of other stores in the same payment/refund?

2
modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain.Shared/EasyAbp.EShop.Payments.Domain.Shared.csproj

@ -19,7 +19,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.*" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="6.0.*" />
</ItemGroup>
</Project>

66
modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain/EasyAbp/EShop/Payments/Payments/PaymentSynchronizer.cs

@ -22,24 +22,22 @@ namespace EasyAbp.EShop.Payments.Payments
{
private readonly IObjectMapper _objectMapper;
private readonly ICurrentTenant _currentTenant;
private readonly IUnitOfWorkManager _unitOfWorkManager;
private readonly IPaymentRepository _paymentRepository;
private readonly IDistributedEventBus _distributedEventBus;
public PaymentSynchronizer(
IObjectMapper objectMapper,
ICurrentTenant currentTenant,
IUnitOfWorkManager unitOfWorkManager,
IPaymentRepository paymentRepository,
IDistributedEventBus distributedEventBus)
{
_objectMapper = objectMapper;
_currentTenant = currentTenant;
_unitOfWorkManager = unitOfWorkManager;
_paymentRepository = paymentRepository;
_distributedEventBus = distributedEventBus;
}
[UnitOfWork(true)]
public virtual async Task HandleEventAsync(EntityCreatedEto<PaymentEto> eventData)
{
if (eventData.Entity.PaymentItems.All(item => item.ItemType != PaymentsConsts.PaymentItemType))
@ -47,8 +45,6 @@ namespace EasyAbp.EShop.Payments.Payments
return;
}
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
using var changeTenant = _currentTenant.Change(eventData.Entity.TenantId);
var payment = await _paymentRepository.FindAsync(eventData.Entity.Id);
@ -69,35 +65,28 @@ namespace EasyAbp.EShop.Payments.Payments
if (payment.CompletionTime.HasValue)
{
PublishPaymentCompletedEventOnUowCompleted(uow, payment);
await PublishPaymentCompletedEventAsync(payment);
}
if (payment.CanceledTime.HasValue)
{
PublishPaymentCanceledEventOnUowCompleted(uow, payment);
await PublishPaymentCanceledEventAsync(payment);
}
await uow.CompleteAsync();
}
protected virtual void PublishPaymentCanceledEventOnUowCompleted(IUnitOfWork uow, Payment payment)
protected virtual async Task PublishPaymentCanceledEventAsync(Payment payment)
{
uow.OnCompleted(async () =>
{
await _distributedEventBus.PublishAsync(
new EShopPaymentCanceledEto(_objectMapper.Map<Payment, EShopPaymentEto>(payment)));
});
await _distributedEventBus.PublishAsync(
new EShopPaymentCanceledEto(_objectMapper.Map<Payment, EShopPaymentEto>(payment)));
}
protected virtual void PublishPaymentCompletedEventOnUowCompleted(IUnitOfWork uow, Payment payment)
protected virtual async Task PublishPaymentCompletedEventAsync(Payment payment)
{
uow.OnCompleted(async () =>
{
await _distributedEventBus.PublishAsync(
new EShopPaymentCompletedEto(_objectMapper.Map<Payment, EShopPaymentEto>(payment)));
});
await _distributedEventBus.PublishAsync(
new EShopPaymentCompletedEto(_objectMapper.Map<Payment, EShopPaymentEto>(payment)));
}
[UnitOfWork(true)]
public virtual async Task HandleEventAsync(EntityUpdatedEto<PaymentEto> eventData)
{
if (eventData.Entity.PaymentItems.All(item => item.ItemType != PaymentsConsts.PaymentItemType))
@ -105,8 +94,6 @@ namespace EasyAbp.EShop.Payments.Payments
return;
}
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
using var changeTenant = _currentTenant.Change(eventData.Entity.TenantId);
var payment = await _paymentRepository.FindAsync(eventData.Entity.Id);
@ -115,17 +102,11 @@ namespace EasyAbp.EShop.Payments.Payments
{
return;
}
if (eventData.Entity.CompletionTime.HasValue && !payment.CompletionTime.HasValue)
{
PublishPaymentCompletedEventOnUowCompleted(uow, payment);
}
if (eventData.Entity.CanceledTime.HasValue && !payment.CanceledTime.HasValue)
{
PublishPaymentCanceledEventOnUowCompleted(uow, payment);
}
var publishCompletedEvent = eventData.Entity.CompletionTime.HasValue && !payment.CompletionTime.HasValue;
var publishCanceledEvent = eventData.Entity.CanceledTime.HasValue && !payment.CanceledTime.HasValue;
_objectMapper.Map(eventData.Entity, payment);
foreach (var etoItem in eventData.Entity.PaymentItems)
@ -151,8 +132,16 @@ namespace EasyAbp.EShop.Payments.Payments
payment.PaymentItems.RemoveAll(i => !etoPaymentItemIds.Contains(i.Id));
await _paymentRepository.UpdateAsync(payment, true);
await uow.CompleteAsync();
if (publishCompletedEvent)
{
await PublishPaymentCompletedEventAsync(payment);
}
if (publishCanceledEvent)
{
await PublishPaymentCanceledEventAsync(payment);
}
}
protected virtual void FillPaymentItemStoreId(PaymentItem item)
@ -165,10 +154,9 @@ namespace EasyAbp.EShop.Payments.Payments
item.SetStoreId(storeId);
}
[UnitOfWork(true)]
public virtual async Task HandleEventAsync(EntityDeletedEto<PaymentEto> eventData)
{
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
using var changeTenant = _currentTenant.Change(eventData.Entity.TenantId);
var payment = await _paymentRepository.FindAsync(eventData.Entity.Id);
@ -179,8 +167,6 @@ namespace EasyAbp.EShop.Payments.Payments
}
await _paymentRepository.DeleteAsync(payment, true);
await uow.CompleteAsync();
}
}
}

31
modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Domain/EasyAbp/EShop/Payments/Refunds/RefundSynchronizer.cs

@ -27,7 +27,6 @@ namespace EasyAbp.EShop.Payments.Refunds
private readonly ICurrentTenant _currentTenant;
private readonly IGuidGenerator _guidGenerator;
private readonly IJsonSerializer _jsonSerializer;
private readonly IUnitOfWorkManager _unitOfWorkManager;
private readonly IDistributedEventBus _distributedEventBus;
private readonly IPaymentRepository _paymentRepository;
private readonly IRefundRepository _refundRepository;
@ -37,7 +36,6 @@ namespace EasyAbp.EShop.Payments.Refunds
ICurrentTenant currentTenant,
IGuidGenerator guidGenerator,
IJsonSerializer jsonSerializer,
IUnitOfWorkManager unitOfWorkManager,
IDistributedEventBus distributedEventBus,
IPaymentRepository paymentRepository,
IRefundRepository refundRepository)
@ -46,16 +44,14 @@ namespace EasyAbp.EShop.Payments.Refunds
_currentTenant = currentTenant;
_guidGenerator = guidGenerator;
_jsonSerializer = jsonSerializer;
_unitOfWorkManager = unitOfWorkManager;
_distributedEventBus = distributedEventBus;
_paymentRepository = paymentRepository;
_refundRepository = refundRepository;
}
[UnitOfWork(true)]
public virtual async Task HandleEventAsync(EntityCreatedEto<RefundEto> eventData)
{
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
using var changeTenant = _currentTenant.Change(eventData.Entity.TenantId);
var refund = await _refundRepository.FindAsync(eventData.Entity.Id);
@ -89,19 +85,16 @@ namespace EasyAbp.EShop.Payments.Refunds
if (refund.CompletedTime.HasValue)
{
uow.OnCompleted(async () => await _distributedEventBus.PublishAsync(new EShopRefundCompletedEto
await _distributedEventBus.PublishAsync(new EShopRefundCompletedEto
{
Refund = _objectMapper.Map<Refund, EShopRefundEto>(refund)
}));
});
}
await uow.CompleteAsync();
}
[UnitOfWork(true)]
public virtual async Task HandleEventAsync(EntityUpdatedEto<RefundEto> eventData)
{
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
using var changeTenant = _currentTenant.Change(eventData.Entity.TenantId);
var refund = await _refundRepository.FindAsync(eventData.Entity.Id);
@ -111,13 +104,7 @@ namespace EasyAbp.EShop.Payments.Refunds
return;
}
if (eventData.Entity.CompletedTime.HasValue && !refund.CompletedTime.HasValue)
{
uow.OnCompleted(async () => await _distributedEventBus.PublishAsync(new EShopRefundCompletedEto
{
Refund = _objectMapper.Map<Refund, EShopRefundEto>(refund)
}));
}
var publishRefundCompleted = eventData.Entity.CompletedTime.HasValue && !refund.CompletedTime.HasValue;
_objectMapper.Map(eventData.Entity, refund);
@ -148,7 +135,13 @@ namespace EasyAbp.EShop.Payments.Refunds
await _refundRepository.UpdateAsync(refund, true);
await uow.CompleteAsync();
if (publishRefundCompleted)
{
await _distributedEventBus.PublishAsync(new EShopRefundCompletedEto
{
Refund = _objectMapper.Map<Refund, EShopRefundEto>(refund)
});
}
}
protected virtual void FillRefundItemOrderLines(Refund refund)

6
modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.EntityFrameworkCore/EasyAbp.EShop.Payments.EntityFrameworkCore.csproj

@ -3,7 +3,7 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>
@ -12,8 +12,4 @@
<ProjectReference Include="..\EasyAbp.EShop.Payments.Domain\EasyAbp.EShop.Payments.Domain.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="EasyAbp\EShop\Payments" />
</ItemGroup>
</Project>

5
modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.HttpApi.Client/EasyAbp.EShop.Payments.HttpApi.Client.csproj

@ -12,4 +12,9 @@
<ProjectReference Include="..\EasyAbp.EShop.Payments.Application.Contracts\EasyAbp.EShop.Payments.Application.Contracts.csproj" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="**\*generate-proxy.json" />
<Content Remove="**\*generate-proxy.json" />
</ItemGroup>
</Project>

8
modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.HttpApi.Client/EasyAbp/EShop/Payments/EShopPaymentsHttpApiClientModule.cs

@ -1,6 +1,7 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
namespace EasyAbp.EShop.Payments
{
@ -10,7 +11,7 @@ namespace EasyAbp.EShop.Payments
)]
public class EShopPaymentsHttpApiClientModule : AbpModule
{
public const string RemoteServiceName = "EShopPayments";
public const string RemoteServiceName = EShopPaymentsRemoteServiceConsts.RemoteServiceName;
public override void ConfigureServices(ServiceConfigurationContext context)
{
@ -18,6 +19,11 @@ namespace EasyAbp.EShop.Payments
typeof(EShopPaymentsApplicationContractsModule).Assembly,
RemoteServiceName
);
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<EShopPaymentsApplicationContractsModule>();
});
}
}
}

2
modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.HttpApi/EasyAbp.EShop.Payments.HttpApi.csproj

@ -3,7 +3,7 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>

2
modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.HttpApi/EasyAbp/EShop/Payments/Payments/PaymentController.cs

@ -7,7 +7,7 @@ using Volo.Abp.Application.Dtos;
namespace EasyAbp.EShop.Payments.Payments
{
[RemoteService(Name = "EasyAbpEShopPayments")]
[RemoteService(Name = EShopPaymentsRemoteServiceConsts.RemoteServiceName)]
[Route("/api/e-shop/payments/payment")]
public class PaymentController : PaymentsController, IPaymentAppService
{

4
modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.HttpApi/EasyAbp/EShop/Payments/PaymentsController.cs

@ -1,9 +1,11 @@
using EasyAbp.EShop.Payments.Localization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
namespace EasyAbp.EShop.Payments
{
public abstract class PaymentsController : AbpController
[Area(EShopPaymentsRemoteServiceConsts.ModuleName)]
public abstract class PaymentsController : AbpControllerBase
{
protected PaymentsController()
{

2
modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.HttpApi/EasyAbp/EShop/Payments/Refunds/RefundController.cs

@ -7,7 +7,7 @@ using Volo.Abp.Application.Dtos;
namespace EasyAbp.EShop.Payments.Refunds
{
[RemoteService(Name = "EasyAbpEShopPayments")]
[RemoteService(Name = EShopPaymentsRemoteServiceConsts.RemoteServiceName)]
[Route("/api/e-shop/payments/refund")]
public class RefundController : PaymentsController, IRefundAppService
{

2
modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.MongoDB/EasyAbp.EShop.Payments.MongoDB.csproj

@ -3,7 +3,7 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>

2
modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Web/EShopPaymentsWebModule.cs

@ -12,7 +12,7 @@ using Volo.Abp.VirtualFileSystem;
namespace EasyAbp.EShop.Payments.Web
{
[DependsOn(
typeof(EShopPaymentsHttpApiModule),
typeof(EShopPaymentsApplicationContractsModule),
typeof(AbpAspNetCoreMvcUiThemeSharedModule),
typeof(AbpAutoMapperModule)
)]

6
modules/EasyAbp.EShop.Payments/src/EasyAbp.EShop.Payments.Web/EasyAbp.EShop.Payments.Web.csproj

@ -3,7 +3,7 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<IsPackable>true</IsPackable>
<OutputType>Library</OutputType>
@ -18,11 +18,11 @@
<ItemGroup>
<ProjectReference Include="..\..\..\EasyAbp.EShop.Stores\src\EasyAbp.EShop.Stores.Application.Contracts\EasyAbp.EShop.Stores.Application.Contracts.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.Payments.HttpApi\EasyAbp.EShop.Payments.HttpApi.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.Payments.Application.Contracts\EasyAbp.EShop.Payments.Application.Contracts.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.*" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="6.0.*" />
</ItemGroup>
<ItemGroup>

8
modules/EasyAbp.EShop.Payments/test/EasyAbp.EShop.Payments.Application.Tests/EasyAbp.EShop.Payments.Application.Tests.csproj

@ -1,16 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<RootNamespace />
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>EasyAbp.EShop.Payments</RootNamespace>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\EasyAbp.EShop.Payments.Application\EasyAbp.EShop.Payments.Application.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.Payments.Domain.Tests\EasyAbp.EShop.Payments.Domain.Tests.csproj" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
</ItemGroup>
</Project>

2
modules/EasyAbp.EShop.Payments/test/EasyAbp.EShop.Payments.Application.Tests/Refunds/TestRefundPaymentEventHandler.cs

@ -3,7 +3,7 @@ using EasyAbp.PaymentService.Payments;
using Volo.Abp.DependencyInjection;
using Volo.Abp.EventBus.Distributed;
namespace EasyAbp.EShop.Payments.Payments
namespace EasyAbp.EShop.Payments.Refunds
{
public class TestRefundPaymentEventHandler : IDistributedEventHandler<RefundPaymentEto>, ISingletonDependency
{

8
modules/EasyAbp.EShop.Payments/test/EasyAbp.EShop.Payments.Domain.Tests/EasyAbp.EShop.Payments.Domain.Tests.csproj

@ -1,14 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<RootNamespace />
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>EasyAbp.EShop.Payments</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<ProjectReference Include="..\EasyAbp.EShop.Payments.EntityFrameworkCore.Tests\EasyAbp.EShop.Payments.EntityFrameworkCore.Tests.csproj" />
</ItemGroup>

14
modules/EasyAbp.EShop.Payments/test/EasyAbp.EShop.Payments.EntityFrameworkCore.Tests/EasyAbp.EShop.Payments.EntityFrameworkCore.Tests.csproj

@ -1,17 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<RootNamespace />
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>EasyAbp.EShop.Payments</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="5.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="5.0.*" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="6.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="6.0.*" />
<ProjectReference Include="..\..\src\EasyAbp.EShop.Payments.EntityFrameworkCore\EasyAbp.EShop.Payments.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.Payments.TestBase\EasyAbp.EShop.Payments.TestBase.csproj" />
</ItemGroup>

6
modules/EasyAbp.EShop.Payments/test/EasyAbp.EShop.Payments.HttpApi.Client.ConsoleTestApp/EasyAbp.EShop.Payments.HttpApi.Client.ConsoleTestApp.csproj

@ -2,8 +2,8 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<RootNamespace />
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>EasyAbp.EShop.Payments</RootNamespace>
</PropertyGroup>
<ItemGroup>
@ -20,7 +20,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="5.0.*" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.*" />
</ItemGroup>
</Project>

10
modules/EasyAbp.EShop.Payments/test/EasyAbp.EShop.Payments.MongoDB.Tests/EasyAbp.EShop.Payments.MongoDB.Tests.csproj

@ -1,15 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<RootNamespace />
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>EasyAbp.EShop.Payments</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Mongo2Go" Version="2.2.14" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="Mongo2Go" Version="3.1.3" />
<ProjectReference Include="..\..\src\EasyAbp.EShop.Payments.MongoDB\EasyAbp.EShop.Payments.MongoDB.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.Payments.TestBase\EasyAbp.EShop.Payments.TestBase.csproj" />
</ItemGroup>

8
modules/EasyAbp.EShop.Payments/test/EasyAbp.EShop.Payments.TestBase/EasyAbp.EShop.Payments.TestBase.csproj

@ -1,14 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<RootNamespace />
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>EasyAbp.EShop.Payments</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="NSubstitute" Version="4.2.2" />
<PackageReference Include="Shouldly" Version="4.0.1" />
<PackageReference Include="xunit" Version="2.4.1" />

2
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application.Contracts/EasyAbp.EShop.Plugins.Application.Contracts.csproj

@ -4,7 +4,7 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>EasyAbp.EShop.Plugins</RootNamespace>
<RootNamespace />
</PropertyGroup>
<ItemGroup>

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application.Contracts/Authorization/PluginsPermissionDefinitionProvider.cs → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application.Contracts/EasyAbp/EShop/Plugins/Authorization/PluginsPermissionDefinitionProvider.cs

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application.Contracts/Authorization/PluginsPermissions.cs → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application.Contracts/EasyAbp/EShop/Plugins/Authorization/PluginsPermissions.cs

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application.Contracts/EShopPluginsApplicationContractsModule.cs → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application.Contracts/EasyAbp/EShop/Plugins/EShopPluginsApplicationContractsModule.cs

8
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application.Contracts/EasyAbp/EShop/Plugins/EShopPluginsRemoteServiceConsts.cs

@ -0,0 +1,8 @@
namespace EasyAbp.EShop.Plugins;
public class EShopPluginsRemoteServiceConsts
{
public const string RemoteServiceName = "EasyAbpEShopPlugins";
public const string ModuleName = "easyAbpEShopPlugins";
}

2
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application/EasyAbp.EShop.Plugins.Application.csproj

@ -4,7 +4,7 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>EasyAbp.EShop.Plugins</RootNamespace>
<RootNamespace />
</PropertyGroup>
<ItemGroup>

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application/EShopPluginsApplicationModule.cs → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application/EasyAbp/EShop/Plugins/EShopPluginsApplicationModule.cs

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application/PluginsAppService.cs → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application/EasyAbp/EShop/Plugins/PluginsAppService.cs

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application/PluginsApplicationAutoMapperProfile.cs → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Application/EasyAbp/EShop/Plugins/PluginsApplicationAutoMapperProfile.cs

13
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp.EShop.Plugins.Domain.Shared.csproj

@ -4,7 +4,7 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>EasyAbp.EShop.Plugins</RootNamespace>
<RootNamespace />
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
</PropertyGroup>
@ -13,12 +13,21 @@
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="EasyAbp\EShop\Plugins\Localization\Plugins\cs.json" />
<EmbeddedResource Include="EasyAbp\EShop\Plugins\Localization\Plugins\en.json" />
<EmbeddedResource Include="EasyAbp\EShop\Plugins\Localization\Plugins\pl.json" />
<EmbeddedResource Include="EasyAbp\EShop\Plugins\Localization\Plugins\pt-BR.json" />
<EmbeddedResource Include="EasyAbp\EShop\Plugins\Localization\Plugins\sl.json" />
<EmbeddedResource Include="EasyAbp\EShop\Plugins\Localization\Plugins\tr.json" />
<EmbeddedResource Include="EasyAbp\EShop\Plugins\Localization\Plugins\vi.json" />
<EmbeddedResource Include="EasyAbp\EShop\Plugins\Localization\Plugins\zh-Hans.json" />
<EmbeddedResource Include="EasyAbp\EShop\Plugins\Localization\Plugins\zh-Hant.json" />
<EmbeddedResource Include="Localization\Plugins\*.json" />
<Content Remove="Localization\Plugins\*.json" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.*" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="6.0.*" />
</ItemGroup>
</Project>

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EShopPluginsDomainSharedModule.cs → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/EShopPluginsDomainSharedModule.cs

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/Localization/Plugins/cs.json → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/cs.json

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/Localization/Plugins/en.json → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/en.json

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/Localization/Plugins/pl.json → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/pl.json

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/Localization/Plugins/pt-BR.json → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/pt-BR.json

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/Localization/Plugins/sl.json → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/sl.json

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/Localization/Plugins/tr.json → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/tr.json

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/Localization/Plugins/vi.json → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/vi.json

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/Localization/Plugins/zh-Hans.json → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/zh-Hans.json

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/Localization/Plugins/zh-Hant.json → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/Plugins/zh-Hant.json

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/Localization/PluginsResource.cs → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/Localization/PluginsResource.cs

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/PluginsErrorCodes.cs → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain.Shared/EasyAbp/EShop/Plugins/PluginsErrorCodes.cs

2
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain/EasyAbp.EShop.Plugins.Domain.csproj

@ -4,7 +4,7 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>EasyAbp.EShop.Plugins</RootNamespace>
<RootNamespace />
</PropertyGroup>
<ItemGroup>

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain/EShopPluginsDomainModule.cs → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain/EasyAbp/EShop/Plugins/EShopPluginsDomainModule.cs

0
modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain/PluginsDbProperties.cs → modules/EasyAbp.EShop.Plugins/src/EasyAbp.EShop.Plugins.Domain/EasyAbp/EShop/Plugins/PluginsDbProperties.cs

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

Loading…
Cancel
Save