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

15
.github/workflows/publish.yml

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

8
Directory.Build.props

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

4
azure-pipelines.yml

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

4
common.props

@ -1,7 +1,7 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<Version>2.3.2</Version> <Version>2.4.0</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn> <NoWarn>$(NoWarn);CS1591</NoWarn>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>EasyAbp Team</Authors> <Authors>EasyAbp Team</Authors>
@ -20,7 +20,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="ConfigureAwait.Fody" Version="3.3.1" PrivateAssets="All" /> <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> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference> </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) [![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](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) [![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) [![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. 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>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.*" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="6.0.*" />
</ItemGroup> </ItemGroup>
</Project> </Project>

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

@ -3,7 +3,7 @@
<Import Project="..\..\..\..\common.props" /> <Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </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" /> <ProjectReference Include="..\EasyAbp.EShop.Application.Contracts\EasyAbp.EShop.Application.Contracts.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Include="**\*generate-proxy.json" />
<Content Remove="**\*generate-proxy.json" />
</ItemGroup>
</Project> </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 Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Http.Client; using Volo.Abp.Http.Client;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
namespace EasyAbp.EShop namespace EasyAbp.EShop
{ {
@ -20,7 +21,7 @@ namespace EasyAbp.EShop
)] )]
public class EShopHttpApiClientModule : AbpModule public class EShopHttpApiClientModule : AbpModule
{ {
public const string RemoteServiceName = "EShop"; public const string RemoteServiceName = EShopRemoteServiceConsts.RemoteServiceName;
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)
{ {
@ -28,6 +29,11 @@ namespace EasyAbp.EShop
typeof(EShopApplicationContractsModule).Assembly, typeof(EShopApplicationContractsModule).Assembly,
RemoteServiceName 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" /> <Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

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

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

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

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

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

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

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

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

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

@ -1,14 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>
<ItemGroup> <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" /> <ProjectReference Include="..\EasyAbp.EShop.EntityFrameworkCore.Tests\EasyAbp.EShop.EntityFrameworkCore.Tests.csproj" />
</ItemGroup> </ItemGroup>

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

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

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

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

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

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

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

@ -1,14 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>
<ItemGroup> <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="NSubstitute" Version="4.2.2" />
<PackageReference Include="Shouldly" Version="4.0.1" /> <PackageReference Include="Shouldly" Version="4.0.1" />
<PackageReference Include="xunit" Version="2.4.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) 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); 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> <ItemGroup>
<PackageReference Include="Volo.Abp.Validation" Version="$(AbpVersion)" /> <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.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" /> <ProjectReference Include="..\..\..\EasyAbp.EShop.Stores\src\EasyAbp.EShop.Stores.Domain.Shared\EasyAbp.EShop.Stores.Domain.Shared.csproj" />
</ItemGroup> </ItemGroup>
@ -20,7 +21,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.*" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="6.0.*" />
</ItemGroup> </ItemGroup>
</Project> </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.Orders.Localization;
using EasyAbp.EShop.Payments; using EasyAbp.EShop.Payments;
using EasyAbp.EShop.Stores; using EasyAbp.EShop.Stores;
using Volo.Abp.Auditing;
using Volo.Abp.Localization.ExceptionHandling; using Volo.Abp.Localization.ExceptionHandling;
using Volo.Abp.Validation; using Volo.Abp.Validation;
using Volo.Abp.Validation.Localization; using Volo.Abp.Validation.Localization;
@ -12,6 +13,7 @@ namespace EasyAbp.EShop.Orders
{ {
[DependsOn( [DependsOn(
typeof(AbpValidationModule), typeof(AbpValidationModule),
typeof(AbpAuditingContractsModule),
typeof(EShopStoresDomainSharedModule), typeof(EShopStoresDomainSharedModule),
typeof(EShopPaymentsDomainSharedModule) 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;
using System.Collections.Generic; using System.Collections.Generic;
using Volo.Abp.Auditing;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.MultiTenancy; using Volo.Abp.MultiTenancy;
namespace EasyAbp.EShop.Orders.Orders namespace EasyAbp.EShop.Orders.Orders
{ {
[Serializable] [Serializable]
public class OrderEto : IOrder, IMultiTenant public class OrderEto : IOrder, IFullAuditedObject, IMultiTenant
{ {
public Guid Id { get; set; } public Guid Id { get; set; }
@ -55,5 +56,18 @@ namespace EasyAbp.EShop.Orders.Orders
public List<OrderLineEto> OrderLines { get; set; } public List<OrderLineEto> OrderLines { get; set; }
public ExtraPropertyDictionary ExtraProperties { 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) public void SetPaymentId(Guid? paymentId)
{ {
AddLocalEvent(new OrderPaymentIdChangedEto(TenantId, this, PaymentId, paymentId));
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 Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Domain.Services; using Volo.Abp.Domain.Services;
using Volo.Abp.EventBus.Distributed; using Volo.Abp.EventBus.Distributed;
@ -30,6 +31,7 @@ namespace EasyAbp.EShop.Orders.Orders
_orderRepository = orderRepository; _orderRepository = orderRepository;
} }
[UnitOfWork]
public virtual async Task<Order> CompleteAsync(Order order) public virtual async Task<Order> CompleteAsync(Order order)
{ {
if (order.CompletionTime.HasValue || !order.ReducedInventoryAfterPaymentTime.HasValue) if (order.CompletionTime.HasValue || !order.ReducedInventoryAfterPaymentTime.HasValue)
@ -37,10 +39,8 @@ namespace EasyAbp.EShop.Orders.Orders
throw new OrderIsInWrongStageException(order.Id); 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) foreach (var provider in providers)
{ {
await provider.CheckAsync(order); await provider.CheckAsync(order);
@ -49,17 +49,15 @@ namespace EasyAbp.EShop.Orders.Orders
order.SetCompletionTime(_clock.Now); order.SetCompletionTime(_clock.Now);
order.SetOrderStatus(OrderStatus.Completed); order.SetOrderStatus(OrderStatus.Completed);
uow.OnCompleted(async () =>
await _distributedEventBus.PublishAsync(
new OrderCompletedEto(_objectMapper.Map<Order, OrderEto>(order))));
await _orderRepository.UpdateAsync(order, true); await _orderRepository.UpdateAsync(order, true);
await uow.CompleteAsync(); await _distributedEventBus.PublishAsync(new OrderCompletedEto(_objectMapper.Map<Order, OrderEto>(order)));
return order; return order;
} }
// Todo: should handler the inventory rollback.
[UnitOfWork]
public virtual async Task<Order> CancelAsync(Order order, string cancellationReason) public virtual async Task<Order> CancelAsync(Order order, string cancellationReason)
{ {
if (order.CanceledTime.HasValue) if (order.CanceledTime.HasValue)
@ -72,18 +70,12 @@ namespace EasyAbp.EShop.Orders.Orders
throw new OrderIsInWrongStageException(order.Id); throw new OrderIsInWrongStageException(order.Id);
} }
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
order.SetCanceled(_clock.Now, cancellationReason); order.SetCanceled(_clock.Now, cancellationReason);
order.SetOrderStatus(OrderStatus.Canceled); order.SetOrderStatus(OrderStatus.Canceled);
uow.OnCompleted(async () =>
await _distributedEventBus.PublishAsync(
new OrderCanceledEto(_objectMapper.Map<Order, OrderEto>(order))));
await _orderRepository.UpdateAsync(order, true); await _orderRepository.UpdateAsync(order, true);
await uow.CompleteAsync(); await _distributedEventBus.PublishAsync(new OrderCanceledEto(_objectMapper.Map<Order, OrderEto>(order)));
return 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)); var order = await _orderRepository.GetAsync(Guid.Parse(paymentItem.ItemKey));
if (order.PaymentId != eventData.Payment.Id)
{
continue;
}
order.SetPaymentId(null); order.SetPaymentId(null);
await _orderRepository.UpdateAsync(order, true); 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 IClock _clock;
private readonly ICurrentTenant _currentTenant; private readonly ICurrentTenant _currentTenant;
private readonly IObjectMapper _objectMapper; private readonly IObjectMapper _objectMapper;
private readonly IUnitOfWorkManager _unitOfWorkManager;
private readonly IOrderPaymentChecker _orderPaymentChecker; private readonly IOrderPaymentChecker _orderPaymentChecker;
private readonly IDistributedEventBus _distributedEventBus; private readonly IDistributedEventBus _distributedEventBus;
private readonly IOrderRepository _orderRepository; private readonly IOrderRepository _orderRepository;
@ -26,7 +25,6 @@ namespace EasyAbp.EShop.Orders.Orders
IClock clock, IClock clock,
ICurrentTenant currentTenant, ICurrentTenant currentTenant,
IObjectMapper objectMapper, IObjectMapper objectMapper,
IUnitOfWorkManager unitOfWorkManager,
IOrderPaymentChecker orderPaymentChecker, IOrderPaymentChecker orderPaymentChecker,
IDistributedEventBus distributedEventBus, IDistributedEventBus distributedEventBus,
IOrderRepository orderRepository) IOrderRepository orderRepository)
@ -34,12 +32,12 @@ namespace EasyAbp.EShop.Orders.Orders
_clock = clock; _clock = clock;
_currentTenant = currentTenant; _currentTenant = currentTenant;
_objectMapper = objectMapper; _objectMapper = objectMapper;
_unitOfWorkManager = unitOfWorkManager;
_orderPaymentChecker = orderPaymentChecker; _orderPaymentChecker = orderPaymentChecker;
_distributedEventBus = distributedEventBus; _distributedEventBus = distributedEventBus;
_orderRepository = orderRepository; _orderRepository = orderRepository;
} }
[UnitOfWork(true)]
public virtual async Task HandleEventAsync(EShopPaymentCompletedEto eventData) public virtual async Task HandleEventAsync(EShopPaymentCompletedEto eventData)
{ {
var payment = eventData.Payment; var payment = eventData.Payment;
@ -49,8 +47,6 @@ namespace EasyAbp.EShop.Orders.Orders
return; return;
} }
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
using var currentTenant = _currentTenant.Change(payment.TenantId); using var currentTenant = _currentTenant.Change(payment.TenantId);
foreach (var item in payment.PaymentItems.Where(item => item.ItemType == PaymentsConsts.PaymentItemType)) 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); await _orderRepository.UpdateAsync(order, true);
uow.OnCompleted(async () => await _distributedEventBus.PublishAsync(new OrderPaidEto(_objectMapper.Map<Order, OrderEto>(order),
await _distributedEventBus.PublishAsync(new OrderPaidEto(_objectMapper.Map<Order, OrderEto>(order), payment.Id, item.Id));
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 ICurrentTenant _currentTenant;
private readonly IObjectMapper _objectMapper; private readonly IObjectMapper _objectMapper;
private readonly IUnitOfWorkManager _unitOfWorkManager;
private readonly IDistributedEventBus _distributedEventBus; private readonly IDistributedEventBus _distributedEventBus;
private readonly IOrderRepository _orderRepository; private readonly IOrderRepository _orderRepository;
public RefundCompletedEventHandler( public RefundCompletedEventHandler(
ICurrentTenant currentTenant, ICurrentTenant currentTenant,
IObjectMapper objectMapper, IObjectMapper objectMapper,
IUnitOfWorkManager unitOfWorkManager,
IDistributedEventBus distributedEventBus, IDistributedEventBus distributedEventBus,
IOrderRepository orderRepository) IOrderRepository orderRepository)
{ {
_currentTenant = currentTenant; _currentTenant = currentTenant;
_objectMapper = objectMapper; _objectMapper = objectMapper;
_unitOfWorkManager = unitOfWorkManager;
_distributedEventBus = distributedEventBus; _distributedEventBus = distributedEventBus;
_orderRepository = orderRepository; _orderRepository = orderRepository;
} }
[UnitOfWork(true)]
public virtual async Task HandleEventAsync(EShopRefundCompletedEto eventData) public virtual async Task HandleEventAsync(EShopRefundCompletedEto eventData)
{ {
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
using var changeTenant = _currentTenant.Change(eventData.Refund.TenantId); using var changeTenant = _currentTenant.Change(eventData.Refund.TenantId);
foreach (var refundItem in eventData.Refund.RefundItems) foreach (var refundItem in eventData.Refund.RefundItems)
{ {
// Todo: what if Order.PaymentId != eventData.Refund.PaymentId?
var order = await _orderRepository.GetAsync(refundItem.OrderId); var order = await _orderRepository.GetAsync(refundItem.OrderId);
foreach (var eto in refundItem.RefundItemOrderLines) foreach (var eto in refundItem.RefundItemOrderLines)
@ -48,12 +45,9 @@ namespace EasyAbp.EShop.Orders.Orders
await _orderRepository.UpdateAsync(order, true); await _orderRepository.UpdateAsync(order, true);
uow.OnCompleted(async () => await _distributedEventBus.PublishAsync( await _distributedEventBus.PublishAsync(
new OrderRefundedEto(_objectMapper.Map<Order, OrderEto>(order), eventData.Refund)) 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; _distributedEventBus = distributedEventBus;
} }
[UnitOfWork] [UnitOfWork(true)]
public override async Task ExecuteAsync(UnpaidOrderAutoCancelArgs args) public override async Task ExecuteAsync(UnpaidOrderAutoCancelArgs args)
{ {
using var changeTenant = _currentTenant.Change(args.TenantId); using var changeTenant = _currentTenant.Change(args.TenantId);
@ -41,7 +41,7 @@ namespace EasyAbp.EShop.Orders.Orders
if (order.IsInPayment()) 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)); await _distributedEventBus.PublishAsync(new CancelPaymentEto(args.TenantId, order.PaymentId!.Value));
} }
else else

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

@ -3,7 +3,7 @@
<Import Project="..\..\..\..\common.props" /> <Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </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" /> <ProjectReference Include="..\EasyAbp.EShop.Orders.Application.Contracts\EasyAbp.EShop.Orders.Application.Contracts.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Include="**\*generate-proxy.json" />
<Content Remove="**\*generate-proxy.json" />
</ItemGroup>
</Project> </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 Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Http.Client; using Volo.Abp.Http.Client;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
namespace EasyAbp.EShop.Orders namespace EasyAbp.EShop.Orders
{ {
@ -9,7 +10,7 @@ namespace EasyAbp.EShop.Orders
typeof(AbpHttpClientModule))] typeof(AbpHttpClientModule))]
public class EShopOrdersHttpApiClientModule : AbpModule public class EShopOrdersHttpApiClientModule : AbpModule
{ {
public const string RemoteServiceName = "EShopOrders"; public const string RemoteServiceName = EShopOrdersRemoteServiceConsts.RemoteServiceName;
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)
{ {
@ -17,6 +18,11 @@ namespace EasyAbp.EShop.Orders
typeof(EShopOrdersApplicationContractsModule).Assembly, typeof(EShopOrdersApplicationContractsModule).Assembly,
RemoteServiceName 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" /> <Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </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 namespace EasyAbp.EShop.Orders.Orders
{ {
[RemoteService(Name = "EasyAbpEShopOrders")] [RemoteService(Name = EShopOrdersRemoteServiceConsts.RemoteServiceName)]
[Route("/api/e-shop/orders/order")] [Route("/api/e-shop/orders/order")]
public class OrderController : OrdersController, IOrderAppService 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 EasyAbp.EShop.Orders.Localization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc;
namespace EasyAbp.EShop.Orders namespace EasyAbp.EShop.Orders
{ {
public abstract class OrdersController : AbpController [Area(EShopOrdersRemoteServiceConsts.ModuleName)]
public abstract class OrdersController : AbpControllerBase
{ {
protected OrdersController() 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" /> <Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </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 namespace EasyAbp.EShop.Orders.Web
{ {
[DependsOn( [DependsOn(
typeof(EShopOrdersHttpApiModule), typeof(EShopOrdersApplicationContractsModule),
typeof(AbpAspNetCoreMvcUiThemeSharedModule), typeof(AbpAspNetCoreMvcUiThemeSharedModule),
typeof(AbpAutoMapperModule) 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" /> <Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<IsPackable>true</IsPackable> <IsPackable>true</IsPackable>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
@ -17,12 +17,12 @@
</ItemGroup> </ItemGroup>
<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" /> <ProjectReference Include="..\..\..\EasyAbp.EShop.Stores\src\EasyAbp.EShop.Stores.Application.Contracts\EasyAbp.EShop.Stores.Application.Contracts.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.*" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="6.0.*" />
</ItemGroup> </ItemGroup>
<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"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\src\EasyAbp.EShop.Orders.Application\EasyAbp.EShop.Orders.Application.csproj" /> <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" /> <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> </ItemGroup>
</Project> </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"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>
<ItemGroup> <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" /> <ProjectReference Include="..\EasyAbp.EShop.Orders.EntityFrameworkCore.Tests\EasyAbp.EShop.Orders.EntityFrameworkCore.Tests.csproj" />
</ItemGroup> </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"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="5.0.*" /> <PackageReference Include="Microsoft.Data.Sqlite" Version="6.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.*" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="5.0.*" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="6.0.*" />
<ProjectReference Include="..\..\src\EasyAbp.EShop.Orders.EntityFrameworkCore\EasyAbp.EShop.Orders.EntityFrameworkCore.csproj" /> <ProjectReference Include="..\..\src\EasyAbp.EShop.Orders.EntityFrameworkCore\EasyAbp.EShop.Orders.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.Orders.TestBase\EasyAbp.EShop.Orders.TestBase.csproj" /> <ProjectReference Include="..\EasyAbp.EShop.Orders.TestBase\EasyAbp.EShop.Orders.TestBase.csproj" />
</ItemGroup> </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> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>
@ -20,7 +20,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="5.0.*" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.*" />
</ItemGroup> </ItemGroup>
</Project> </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"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="Mongo2Go" Version="2.2.14" /> <PackageReference Include="Mongo2Go" Version="3.1.3" />
<ProjectReference Include="..\..\src\EasyAbp.EShop.Orders.MongoDB\EasyAbp.EShop.Orders.MongoDB.csproj" /> <ProjectReference Include="..\..\src\EasyAbp.EShop.Orders.MongoDB\EasyAbp.EShop.Orders.MongoDB.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.Orders.TestBase\EasyAbp.EShop.Orders.TestBase.csproj" /> <ProjectReference Include="..\EasyAbp.EShop.Orders.TestBase\EasyAbp.EShop.Orders.TestBase.csproj" />
</ItemGroup> </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"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>
<ItemGroup> <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="NSubstitute" Version="4.2.2" />
<PackageReference Include="Shouldly" Version="4.0.1" /> <PackageReference Include="Shouldly" Version="4.0.1" />
<PackageReference Include="xunit" Version="2.4.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 return input.UserId.HasValue
? await _repository.GetQueryableByUserIdAsync(input.UserId.Value) ? 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? // 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>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.*" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="6.0.*" />
</ItemGroup> </ItemGroup>
</Project> </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 IObjectMapper _objectMapper;
private readonly ICurrentTenant _currentTenant; private readonly ICurrentTenant _currentTenant;
private readonly IUnitOfWorkManager _unitOfWorkManager;
private readonly IPaymentRepository _paymentRepository; private readonly IPaymentRepository _paymentRepository;
private readonly IDistributedEventBus _distributedEventBus; private readonly IDistributedEventBus _distributedEventBus;
public PaymentSynchronizer( public PaymentSynchronizer(
IObjectMapper objectMapper, IObjectMapper objectMapper,
ICurrentTenant currentTenant, ICurrentTenant currentTenant,
IUnitOfWorkManager unitOfWorkManager,
IPaymentRepository paymentRepository, IPaymentRepository paymentRepository,
IDistributedEventBus distributedEventBus) IDistributedEventBus distributedEventBus)
{ {
_objectMapper = objectMapper; _objectMapper = objectMapper;
_currentTenant = currentTenant; _currentTenant = currentTenant;
_unitOfWorkManager = unitOfWorkManager;
_paymentRepository = paymentRepository; _paymentRepository = paymentRepository;
_distributedEventBus = distributedEventBus; _distributedEventBus = distributedEventBus;
} }
[UnitOfWork(true)]
public virtual async Task HandleEventAsync(EntityCreatedEto<PaymentEto> eventData) public virtual async Task HandleEventAsync(EntityCreatedEto<PaymentEto> eventData)
{ {
if (eventData.Entity.PaymentItems.All(item => item.ItemType != PaymentsConsts.PaymentItemType)) if (eventData.Entity.PaymentItems.All(item => item.ItemType != PaymentsConsts.PaymentItemType))
@ -47,8 +45,6 @@ namespace EasyAbp.EShop.Payments.Payments
return; return;
} }
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
using var changeTenant = _currentTenant.Change(eventData.Entity.TenantId); using var changeTenant = _currentTenant.Change(eventData.Entity.TenantId);
var payment = await _paymentRepository.FindAsync(eventData.Entity.Id); var payment = await _paymentRepository.FindAsync(eventData.Entity.Id);
@ -69,35 +65,28 @@ namespace EasyAbp.EShop.Payments.Payments
if (payment.CompletionTime.HasValue) if (payment.CompletionTime.HasValue)
{ {
PublishPaymentCompletedEventOnUowCompleted(uow, payment); await PublishPaymentCompletedEventAsync(payment);
} }
if (payment.CanceledTime.HasValue) 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) public virtual async Task HandleEventAsync(EntityUpdatedEto<PaymentEto> eventData)
{ {
if (eventData.Entity.PaymentItems.All(item => item.ItemType != PaymentsConsts.PaymentItemType)) if (eventData.Entity.PaymentItems.All(item => item.ItemType != PaymentsConsts.PaymentItemType))
@ -105,8 +94,6 @@ namespace EasyAbp.EShop.Payments.Payments
return; return;
} }
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
using var changeTenant = _currentTenant.Change(eventData.Entity.TenantId); using var changeTenant = _currentTenant.Change(eventData.Entity.TenantId);
var payment = await _paymentRepository.FindAsync(eventData.Entity.Id); var payment = await _paymentRepository.FindAsync(eventData.Entity.Id);
@ -115,17 +102,11 @@ namespace EasyAbp.EShop.Payments.Payments
{ {
return; return;
} }
if (eventData.Entity.CompletionTime.HasValue && !payment.CompletionTime.HasValue) var publishCompletedEvent = eventData.Entity.CompletionTime.HasValue && !payment.CompletionTime.HasValue;
{
PublishPaymentCompletedEventOnUowCompleted(uow, payment); var publishCanceledEvent = eventData.Entity.CanceledTime.HasValue && !payment.CanceledTime.HasValue;
}
if (eventData.Entity.CanceledTime.HasValue && !payment.CanceledTime.HasValue)
{
PublishPaymentCanceledEventOnUowCompleted(uow, payment);
}
_objectMapper.Map(eventData.Entity, payment); _objectMapper.Map(eventData.Entity, payment);
foreach (var etoItem in eventData.Entity.PaymentItems) foreach (var etoItem in eventData.Entity.PaymentItems)
@ -151,8 +132,16 @@ namespace EasyAbp.EShop.Payments.Payments
payment.PaymentItems.RemoveAll(i => !etoPaymentItemIds.Contains(i.Id)); payment.PaymentItems.RemoveAll(i => !etoPaymentItemIds.Contains(i.Id));
await _paymentRepository.UpdateAsync(payment, true); await _paymentRepository.UpdateAsync(payment, true);
await uow.CompleteAsync(); if (publishCompletedEvent)
{
await PublishPaymentCompletedEventAsync(payment);
}
if (publishCanceledEvent)
{
await PublishPaymentCanceledEventAsync(payment);
}
} }
protected virtual void FillPaymentItemStoreId(PaymentItem item) protected virtual void FillPaymentItemStoreId(PaymentItem item)
@ -165,10 +154,9 @@ namespace EasyAbp.EShop.Payments.Payments
item.SetStoreId(storeId); item.SetStoreId(storeId);
} }
[UnitOfWork(true)]
public virtual async Task HandleEventAsync(EntityDeletedEto<PaymentEto> eventData) public virtual async Task HandleEventAsync(EntityDeletedEto<PaymentEto> eventData)
{ {
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
using var changeTenant = _currentTenant.Change(eventData.Entity.TenantId); using var changeTenant = _currentTenant.Change(eventData.Entity.TenantId);
var payment = await _paymentRepository.FindAsync(eventData.Entity.Id); var payment = await _paymentRepository.FindAsync(eventData.Entity.Id);
@ -179,8 +167,6 @@ namespace EasyAbp.EShop.Payments.Payments
} }
await _paymentRepository.DeleteAsync(payment, true); 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 ICurrentTenant _currentTenant;
private readonly IGuidGenerator _guidGenerator; private readonly IGuidGenerator _guidGenerator;
private readonly IJsonSerializer _jsonSerializer; private readonly IJsonSerializer _jsonSerializer;
private readonly IUnitOfWorkManager _unitOfWorkManager;
private readonly IDistributedEventBus _distributedEventBus; private readonly IDistributedEventBus _distributedEventBus;
private readonly IPaymentRepository _paymentRepository; private readonly IPaymentRepository _paymentRepository;
private readonly IRefundRepository _refundRepository; private readonly IRefundRepository _refundRepository;
@ -37,7 +36,6 @@ namespace EasyAbp.EShop.Payments.Refunds
ICurrentTenant currentTenant, ICurrentTenant currentTenant,
IGuidGenerator guidGenerator, IGuidGenerator guidGenerator,
IJsonSerializer jsonSerializer, IJsonSerializer jsonSerializer,
IUnitOfWorkManager unitOfWorkManager,
IDistributedEventBus distributedEventBus, IDistributedEventBus distributedEventBus,
IPaymentRepository paymentRepository, IPaymentRepository paymentRepository,
IRefundRepository refundRepository) IRefundRepository refundRepository)
@ -46,16 +44,14 @@ namespace EasyAbp.EShop.Payments.Refunds
_currentTenant = currentTenant; _currentTenant = currentTenant;
_guidGenerator = guidGenerator; _guidGenerator = guidGenerator;
_jsonSerializer = jsonSerializer; _jsonSerializer = jsonSerializer;
_unitOfWorkManager = unitOfWorkManager;
_distributedEventBus = distributedEventBus; _distributedEventBus = distributedEventBus;
_paymentRepository = paymentRepository; _paymentRepository = paymentRepository;
_refundRepository = refundRepository; _refundRepository = refundRepository;
} }
[UnitOfWork(true)]
public virtual async Task HandleEventAsync(EntityCreatedEto<RefundEto> eventData) public virtual async Task HandleEventAsync(EntityCreatedEto<RefundEto> eventData)
{ {
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
using var changeTenant = _currentTenant.Change(eventData.Entity.TenantId); using var changeTenant = _currentTenant.Change(eventData.Entity.TenantId);
var refund = await _refundRepository.FindAsync(eventData.Entity.Id); var refund = await _refundRepository.FindAsync(eventData.Entity.Id);
@ -89,19 +85,16 @@ namespace EasyAbp.EShop.Payments.Refunds
if (refund.CompletedTime.HasValue) if (refund.CompletedTime.HasValue)
{ {
uow.OnCompleted(async () => await _distributedEventBus.PublishAsync(new EShopRefundCompletedEto await _distributedEventBus.PublishAsync(new EShopRefundCompletedEto
{ {
Refund = _objectMapper.Map<Refund, EShopRefundEto>(refund) Refund = _objectMapper.Map<Refund, EShopRefundEto>(refund)
})); });
} }
await uow.CompleteAsync();
} }
[UnitOfWork(true)]
public virtual async Task HandleEventAsync(EntityUpdatedEto<RefundEto> eventData) public virtual async Task HandleEventAsync(EntityUpdatedEto<RefundEto> eventData)
{ {
using var uow = _unitOfWorkManager.Begin(isTransactional: true);
using var changeTenant = _currentTenant.Change(eventData.Entity.TenantId); using var changeTenant = _currentTenant.Change(eventData.Entity.TenantId);
var refund = await _refundRepository.FindAsync(eventData.Entity.Id); var refund = await _refundRepository.FindAsync(eventData.Entity.Id);
@ -111,13 +104,7 @@ namespace EasyAbp.EShop.Payments.Refunds
return; return;
} }
if (eventData.Entity.CompletedTime.HasValue && !refund.CompletedTime.HasValue) var publishRefundCompleted = eventData.Entity.CompletedTime.HasValue && !refund.CompletedTime.HasValue;
{
uow.OnCompleted(async () => await _distributedEventBus.PublishAsync(new EShopRefundCompletedEto
{
Refund = _objectMapper.Map<Refund, EShopRefundEto>(refund)
}));
}
_objectMapper.Map(eventData.Entity, refund); _objectMapper.Map(eventData.Entity, refund);
@ -148,7 +135,13 @@ namespace EasyAbp.EShop.Payments.Refunds
await _refundRepository.UpdateAsync(refund, true); 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) 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" /> <Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>
@ -12,8 +12,4 @@
<ProjectReference Include="..\EasyAbp.EShop.Payments.Domain\EasyAbp.EShop.Payments.Domain.csproj" /> <ProjectReference Include="..\EasyAbp.EShop.Payments.Domain\EasyAbp.EShop.Payments.Domain.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="EasyAbp\EShop\Payments" />
</ItemGroup>
</Project> </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" /> <ProjectReference Include="..\EasyAbp.EShop.Payments.Application.Contracts\EasyAbp.EShop.Payments.Application.Contracts.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Include="**\*generate-proxy.json" />
<Content Remove="**\*generate-proxy.json" />
</ItemGroup>
</Project> </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 Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Http.Client; using Volo.Abp.Http.Client;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
namespace EasyAbp.EShop.Payments namespace EasyAbp.EShop.Payments
{ {
@ -10,7 +11,7 @@ namespace EasyAbp.EShop.Payments
)] )]
public class EShopPaymentsHttpApiClientModule : AbpModule public class EShopPaymentsHttpApiClientModule : AbpModule
{ {
public const string RemoteServiceName = "EShopPayments"; public const string RemoteServiceName = EShopPaymentsRemoteServiceConsts.RemoteServiceName;
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)
{ {
@ -18,6 +19,11 @@ namespace EasyAbp.EShop.Payments
typeof(EShopPaymentsApplicationContractsModule).Assembly, typeof(EShopPaymentsApplicationContractsModule).Assembly,
RemoteServiceName 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" /> <Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </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 namespace EasyAbp.EShop.Payments.Payments
{ {
[RemoteService(Name = "EasyAbpEShopPayments")] [RemoteService(Name = EShopPaymentsRemoteServiceConsts.RemoteServiceName)]
[Route("/api/e-shop/payments/payment")] [Route("/api/e-shop/payments/payment")]
public class PaymentController : PaymentsController, IPaymentAppService 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 EasyAbp.EShop.Payments.Localization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc;
namespace EasyAbp.EShop.Payments namespace EasyAbp.EShop.Payments
{ {
public abstract class PaymentsController : AbpController [Area(EShopPaymentsRemoteServiceConsts.ModuleName)]
public abstract class PaymentsController : AbpControllerBase
{ {
protected PaymentsController() 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 namespace EasyAbp.EShop.Payments.Refunds
{ {
[RemoteService(Name = "EasyAbpEShopPayments")] [RemoteService(Name = EShopPaymentsRemoteServiceConsts.RemoteServiceName)]
[Route("/api/e-shop/payments/refund")] [Route("/api/e-shop/payments/refund")]
public class RefundController : PaymentsController, IRefundAppService 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" /> <Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </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 namespace EasyAbp.EShop.Payments.Web
{ {
[DependsOn( [DependsOn(
typeof(EShopPaymentsHttpApiModule), typeof(EShopPaymentsApplicationContractsModule),
typeof(AbpAspNetCoreMvcUiThemeSharedModule), typeof(AbpAspNetCoreMvcUiThemeSharedModule),
typeof(AbpAutoMapperModule) 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" /> <Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<IsPackable>true</IsPackable> <IsPackable>true</IsPackable>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
@ -18,11 +18,11 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\EasyAbp.EShop.Stores\src\EasyAbp.EShop.Stores.Application.Contracts\EasyAbp.EShop.Stores.Application.Contracts.csproj" /> <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>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.*" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="6.0.*" />
</ItemGroup> </ItemGroup>
<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"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace>EasyAbp.EShop.Payments</RootNamespace>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\src\EasyAbp.EShop.Payments.Application\EasyAbp.EShop.Payments.Application.csproj" /> <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" /> <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> </ItemGroup>
</Project> </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.DependencyInjection;
using Volo.Abp.EventBus.Distributed; using Volo.Abp.EventBus.Distributed;
namespace EasyAbp.EShop.Payments.Payments namespace EasyAbp.EShop.Payments.Refunds
{ {
public class TestRefundPaymentEventHandler : IDistributedEventHandler<RefundPaymentEto>, ISingletonDependency 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"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace>EasyAbp.EShop.Payments</RootNamespace>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <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" /> <ProjectReference Include="..\EasyAbp.EShop.Payments.EntityFrameworkCore.Tests\EasyAbp.EShop.Payments.EntityFrameworkCore.Tests.csproj" />
</ItemGroup> </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"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace>EasyAbp.EShop.Payments</RootNamespace>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="5.0.*" /> <PackageReference Include="Microsoft.Data.Sqlite" Version="6.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.*" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.*" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="5.0.*" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="6.0.*" />
<ProjectReference Include="..\..\src\EasyAbp.EShop.Payments.EntityFrameworkCore\EasyAbp.EShop.Payments.EntityFrameworkCore.csproj" /> <ProjectReference Include="..\..\src\EasyAbp.EShop.Payments.EntityFrameworkCore\EasyAbp.EShop.Payments.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.Payments.TestBase\EasyAbp.EShop.Payments.TestBase.csproj" /> <ProjectReference Include="..\EasyAbp.EShop.Payments.TestBase\EasyAbp.EShop.Payments.TestBase.csproj" />
</ItemGroup> </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> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace>EasyAbp.EShop.Payments</RootNamespace>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
@ -20,7 +20,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="5.0.*" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.*" />
</ItemGroup> </ItemGroup>
</Project> </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"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace>EasyAbp.EShop.Payments</RootNamespace>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="Mongo2Go" Version="2.2.14" /> <PackageReference Include="Mongo2Go" Version="3.1.3" />
<ProjectReference Include="..\..\src\EasyAbp.EShop.Payments.MongoDB\EasyAbp.EShop.Payments.MongoDB.csproj" /> <ProjectReference Include="..\..\src\EasyAbp.EShop.Payments.MongoDB\EasyAbp.EShop.Payments.MongoDB.csproj" />
<ProjectReference Include="..\EasyAbp.EShop.Payments.TestBase\EasyAbp.EShop.Payments.TestBase.csproj" /> <ProjectReference Include="..\EasyAbp.EShop.Payments.TestBase\EasyAbp.EShop.Payments.TestBase.csproj" />
</ItemGroup> </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"> <Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RootNamespace /> <RootNamespace>EasyAbp.EShop.Payments</RootNamespace>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <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="NSubstitute" Version="4.2.2" />
<PackageReference Include="Shouldly" Version="4.0.1" /> <PackageReference Include="Shouldly" Version="4.0.1" />
<PackageReference Include="xunit" Version="2.4.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> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>EasyAbp.EShop.Plugins</RootNamespace> <RootNamespace />
</PropertyGroup> </PropertyGroup>
<ItemGroup> <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> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>EasyAbp.EShop.Plugins</RootNamespace> <RootNamespace />
</PropertyGroup> </PropertyGroup>
<ItemGroup> <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> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>EasyAbp.EShop.Plugins</RootNamespace> <RootNamespace />
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest> <GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
</PropertyGroup> </PropertyGroup>
@ -13,12 +13,21 @@
</ItemGroup> </ItemGroup>
<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" /> <EmbeddedResource Include="Localization\Plugins\*.json" />
<Content Remove="Localization\Plugins\*.json" /> <Content Remove="Localization\Plugins\*.json" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.*" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="6.0.*" />
</ItemGroup> </ItemGroup>
</Project> </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> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>EasyAbp.EShop.Plugins</RootNamespace> <RootNamespace />
</PropertyGroup> </PropertyGroup>
<ItemGroup> <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