From bb6f421e4cf49497068ab7633b08b3b2fff17bcd Mon Sep 17 00:00:00 2001 From: gdlcf88 Date: Sat, 11 Jun 2022 16:00:07 +0800 Subject: [PATCH] Introduce IInventoryActorProvider --- .../DaprActorsProductInventoryProvider.cs | 17 ++++++++++------- .../IInventoryActorProvider.cs | 11 +++++++++++ .../InventoryActorProvider.cs | 15 +++++++++++++++ 3 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/IInventoryActorProvider.cs create mode 100644 plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/InventoryActorProvider.cs diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/DaprActorsProductInventoryProvider.cs b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/DaprActorsProductInventoryProvider.cs index cdb0e46d..5c2561c4 100644 --- a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/DaprActorsProductInventoryProvider.cs +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/DaprActorsProductInventoryProvider.cs @@ -2,7 +2,6 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; using Dapr.Actors; -using Dapr.Actors.Client; using EasyAbp.EShop.Plugins.Inventories.DaprActors; using EasyAbp.EShop.Products.ProductInventories; using Microsoft.Extensions.Logging; @@ -21,15 +20,19 @@ public class DaprActorsProductInventoryProvider : IProductInventoryProvider, ITr public static string ActorType { get; set; } = "InventoryActor"; private readonly ILogger _logger; + protected IInventoryActorProvider InventoryActorProvider { get; } - public DaprActorsProductInventoryProvider(ILogger logger) + public DaprActorsProductInventoryProvider( + IInventoryActorProvider inventoryActorProvider, + ILogger logger) { + InventoryActorProvider = inventoryActorProvider; _logger = logger; } public virtual async Task GetInventoryDataAsync(InventoryQueryModel model) { - var actor = GetActor(model); + var actor = await GetActorAsync(model); var stateModel = await actor.GetInventoryStateAsync(); @@ -56,7 +59,7 @@ public class DaprActorsProductInventoryProvider : IProductInventoryProvider, ITr public virtual async Task TryIncreaseInventoryAsync(InventoryQueryModel model, int quantity, bool decreaseSold) { - var actor = GetActor(model); + var actor = await GetActorAsync(model); try { @@ -74,7 +77,7 @@ public class DaprActorsProductInventoryProvider : IProductInventoryProvider, ITr public virtual async Task TryReduceInventoryAsync(InventoryQueryModel model, int quantity, bool increaseSold) { - var actor = GetActor(model); + var actor = await GetActorAsync(model); var stateModel = await actor.GetInventoryStateAsync(); @@ -97,9 +100,9 @@ public class DaprActorsProductInventoryProvider : IProductInventoryProvider, ITr return true; } - protected virtual IInventoryActor GetActor(InventoryQueryModel model) + protected virtual async Task GetActorAsync(InventoryQueryModel model) { - return ActorProxy.Create(GetActorId(model), ActorType); + return await InventoryActorProvider.GetAsync(GetActorId(model), ActorType); } protected virtual ActorId GetActorId(InventoryQueryModel model) diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/IInventoryActorProvider.cs b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/IInventoryActorProvider.cs new file mode 100644 index 00000000..8c0791fd --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/IInventoryActorProvider.cs @@ -0,0 +1,11 @@ +using System.Threading.Tasks; +using Dapr.Actors; +using EasyAbp.EShop.Plugins.Inventories.DaprActors; +using JetBrains.Annotations; + +namespace EasyAbp.EShop.Products.DaprActorsInventory; + +public interface IInventoryActorProvider +{ + Task GetAsync(ActorId actorId, [NotNull] string actorType); +} \ No newline at end of file diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/InventoryActorProvider.cs b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/InventoryActorProvider.cs new file mode 100644 index 00000000..11d016ae --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/InventoryActorProvider.cs @@ -0,0 +1,15 @@ +using System.Threading.Tasks; +using Dapr.Actors; +using Dapr.Actors.Client; +using EasyAbp.EShop.Plugins.Inventories.DaprActors; +using Volo.Abp.DependencyInjection; + +namespace EasyAbp.EShop.Products.DaprActorsInventory; + +public class InventoryActorProvider : IInventoryActorProvider, ITransientDependency +{ + public virtual Task GetAsync(ActorId actorId, string actorType) + { + return Task.FromResult(ActorProxy.Create(actorId, actorType)); + } +} \ No newline at end of file