diff --git a/Directory.Build.props b/Directory.Build.props index 83a0f05a..99c2facf 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -5,6 +5,7 @@ 2.5.3 2.0.11 0.8.2 + 1.7.0 \ No newline at end of file diff --git a/EShop.sln b/EShop.sln index f003f77d..3542d607 100644 --- a/EShop.sln +++ b/EShop.sln @@ -341,6 +341,20 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyAbp.EShop.Plugins.Coupo EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyAbp.EShop.Orders.Plugins.Coupons", "plugins\Coupons\src\EasyAbp.EShop.Orders.Plugins.Coupons\EasyAbp.EShop.Orders.Plugins.Coupons.csproj", "{3C385657-8365-470F-9F4F-30F31F9FCA42}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Inventories", "Inventories", "{9AC27747-E175-487F-92C9-434DEE543273}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DaprActors", "DaprActors", "{6E6FE4B9-4117-4F57-B219-EE47E4046096}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyAbp.EShop.Products.DaprActorsInventory.Domain", "plugins\Inventories\DaprActors\src\EasyAbp.EShop.Products.DaprActorsInventory.Domain\EasyAbp.EShop.Products.DaprActorsInventory.Domain.csproj", "{6CD1A8B5-8AB7-4A31-8333-024A7FB602D1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions", "plugins\Inventories\DaprActors\src\EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions\EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions.csproj", "{CF4DE32D-9629-4C48-9BE8-5B83A1C27291}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyAbp.EShop.Plugins.Inventories.DaprActors", "plugins\Inventories\DaprActors\src\EasyAbp.EShop.Plugins.Inventories.DaprActors\EasyAbp.EShop.Plugins.Inventories.DaprActors.csproj", "{B6F3ACD5-463E-4455-A094-057A82941A94}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{F468A386-5660-4888-981A-6ECF15182D32}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{485204B1-7603-4EA0-B3A4-73CB89B0D5BC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -895,6 +909,18 @@ Global {3C385657-8365-470F-9F4F-30F31F9FCA42}.Debug|Any CPU.Build.0 = Debug|Any CPU {3C385657-8365-470F-9F4F-30F31F9FCA42}.Release|Any CPU.ActiveCfg = Release|Any CPU {3C385657-8365-470F-9F4F-30F31F9FCA42}.Release|Any CPU.Build.0 = Release|Any CPU + {6CD1A8B5-8AB7-4A31-8333-024A7FB602D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6CD1A8B5-8AB7-4A31-8333-024A7FB602D1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6CD1A8B5-8AB7-4A31-8333-024A7FB602D1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6CD1A8B5-8AB7-4A31-8333-024A7FB602D1}.Release|Any CPU.Build.0 = Release|Any CPU + {CF4DE32D-9629-4C48-9BE8-5B83A1C27291}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CF4DE32D-9629-4C48-9BE8-5B83A1C27291}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CF4DE32D-9629-4C48-9BE8-5B83A1C27291}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CF4DE32D-9629-4C48-9BE8-5B83A1C27291}.Release|Any CPU.Build.0 = Release|Any CPU + {B6F3ACD5-463E-4455-A094-057A82941A94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B6F3ACD5-463E-4455-A094-057A82941A94}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B6F3ACD5-463E-4455-A094-057A82941A94}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B6F3ACD5-463E-4455-A094-057A82941A94}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1065,6 +1091,13 @@ Global {86CAD303-A0E5-42C9-89A5-61D9AAA4AD8F} = {4001814E-A67B-490D-9E13-2FB9A34B0A0B} {B076C103-DF0B-464B-A9CB-4BE5CAFEE067} = {4001814E-A67B-490D-9E13-2FB9A34B0A0B} {3C385657-8365-470F-9F4F-30F31F9FCA42} = {72F34527-9295-4F29-923E-4B075A4F31A2} + {9AC27747-E175-487F-92C9-434DEE543273} = {94CC5A11-DA0F-413C-96CA-01DB0FC426E0} + {6E6FE4B9-4117-4F57-B219-EE47E4046096} = {9AC27747-E175-487F-92C9-434DEE543273} + {F468A386-5660-4888-981A-6ECF15182D32} = {6E6FE4B9-4117-4F57-B219-EE47E4046096} + {B6F3ACD5-463E-4455-A094-057A82941A94} = {F468A386-5660-4888-981A-6ECF15182D32} + {CF4DE32D-9629-4C48-9BE8-5B83A1C27291} = {F468A386-5660-4888-981A-6ECF15182D32} + {6CD1A8B5-8AB7-4A31-8333-024A7FB602D1} = {F468A386-5660-4888-981A-6ECF15182D32} + {485204B1-7603-4EA0-B3A4-73CB89B0D5BC} = {6E6FE4B9-4117-4F57-B219-EE47E4046096} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F} diff --git a/EShop.sln.DotSettings b/EShop.sln.DotSettings index a1a9e93c..7b7d4176 100644 --- a/EShop.sln.DotSettings +++ b/EShop.sln.DotSettings @@ -21,4 +21,5 @@ False SQL True + True True \ No newline at end of file diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions.csproj b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions.csproj new file mode 100644 index 00000000..f5d2ebb7 --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions.csproj @@ -0,0 +1,18 @@ + + + + + + net6.0 + + + + + + + + + + + + diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/EasyAbp/EShop/Plugins/Inventories/DaprActors/EShopPluginsInventoriesDaprActorsAbstractionsModule.cs b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/EasyAbp/EShop/Plugins/Inventories/DaprActors/EShopPluginsInventoriesDaprActorsAbstractionsModule.cs new file mode 100644 index 00000000..37b93cf2 --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/EasyAbp/EShop/Plugins/Inventories/DaprActors/EShopPluginsInventoriesDaprActorsAbstractionsModule.cs @@ -0,0 +1,11 @@ +using EasyAbp.EShop.Products; +using Volo.Abp.Modularity; + +namespace EasyAbp.EShop.Plugins.Inventories.DaprActors; + +[DependsOn( + typeof(EShopProductsDomainSharedModule) +)] +public class EShopPluginsInventoriesDaprActorsAbstractionsModule : AbpModule +{ +} \ No newline at end of file diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/EasyAbp/EShop/Plugins/Inventories/DaprActors/IInventoryActor.cs b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/EasyAbp/EShop/Plugins/Inventories/DaprActors/IInventoryActor.cs new file mode 100644 index 00000000..714904b5 --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/EasyAbp/EShop/Plugins/Inventories/DaprActors/IInventoryActor.cs @@ -0,0 +1,13 @@ +using System.Threading.Tasks; +using Dapr.Actors; + +namespace EasyAbp.EShop.Plugins.Inventories.DaprActors; + +public interface IInventoryActor : IActor +{ + Task GetInventoryStateAsync(); + + Task IncreaseInventoryAsync(int quantity, bool decreaseSold); + + Task ReduceInventoryAsync(int quantity, bool increaseSold); +} \ No newline at end of file diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/EasyAbp/EShop/Plugins/Inventories/DaprActors/InventoryStateModel.cs b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/EasyAbp/EShop/Plugins/Inventories/DaprActors/InventoryStateModel.cs new file mode 100644 index 00000000..96f0ef28 --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/EasyAbp/EShop/Plugins/Inventories/DaprActors/InventoryStateModel.cs @@ -0,0 +1,8 @@ +namespace EasyAbp.EShop.Plugins.Inventories.DaprActors; + +public class InventoryStateModel +{ + public int Inventory { get; set; } + + public long Sold { get; set; } +} \ No newline at end of file diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/FodyWeavers.xml b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/FodyWeavers.xml new file mode 100644 index 00000000..1715698c --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/FodyWeavers.xsd b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/FodyWeavers.xsd new file mode 100644 index 00000000..ffa6fc4b --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors.Abstractions/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors/EasyAbp.EShop.Plugins.Inventories.DaprActors.csproj b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors/EasyAbp.EShop.Plugins.Inventories.DaprActors.csproj new file mode 100644 index 00000000..cc8c0afd --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors/EasyAbp.EShop.Plugins.Inventories.DaprActors.csproj @@ -0,0 +1,18 @@ + + + + + + net6.0 + + + + + + + + + + + + diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors/EasyAbp/EShop/Plugins/Inventories/DaprActors/EShopPluginsInventoriesDaprActorsModule.cs b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors/EasyAbp/EShop/Plugins/Inventories/DaprActors/EShopPluginsInventoriesDaprActorsModule.cs new file mode 100644 index 00000000..a1d4f2c2 --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors/EasyAbp/EShop/Plugins/Inventories/DaprActors/EShopPluginsInventoriesDaprActorsModule.cs @@ -0,0 +1,15 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Modularity; + +namespace EasyAbp.EShop.Plugins.Inventories.DaprActors; + +[DependsOn( + typeof(EShopPluginsInventoriesDaprActorsAbstractionsModule) +)] +public class EShopPluginsInventoriesDaprActorsModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddActors(options => { options.Actors.RegisterActor(); }); + } +} \ No newline at end of file diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors/EasyAbp/EShop/Plugins/Inventories/DaprActors/InventoryActor.cs b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors/EasyAbp/EShop/Plugins/Inventories/DaprActors/InventoryActor.cs new file mode 100644 index 00000000..a53e7c53 --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors/EasyAbp/EShop/Plugins/Inventories/DaprActors/InventoryActor.cs @@ -0,0 +1,76 @@ +using System.Threading.Tasks; +using Dapr; +using Dapr.Actors.Runtime; + +namespace EasyAbp.EShop.Plugins.Inventories.DaprActors; + +public class InventoryActor : Actor, IInventoryActor +{ + public InventoryActor(ActorHost host) : base(host) + { + } + + protected override async Task OnActivateAsync() + { + await StateManager.TryAddStateAsync(Id.GetId(), new InventoryStateModel()); + } + + public virtual async Task GetInventoryStateAsync() + { + return await StateManager.GetStateAsync(Id.GetId()); + } + + public virtual async Task IncreaseInventoryAsync(int quantity, bool decreaseSold) + { + var state = await GetInventoryStateAsync(); + + InternalIncreaseInventory(state, quantity, decreaseSold); + } + + public async Task ReduceInventoryAsync(int quantity, bool increaseSold) + { + var state = await GetInventoryStateAsync(); + + InternalReduceInventory(state, quantity, increaseSold); + } + + protected virtual void InternalIncreaseInventory(InventoryStateModel stateModel, int quantity, bool decreaseSold) + { + if (quantity < 0) + { + throw new DaprException("Quantity should not be less than 0."); + } + + if (decreaseSold && stateModel.Sold - quantity < 0) + { + throw new DaprException("Target Sold cannot be less than 0."); + } + + stateModel.Inventory = checked(stateModel.Inventory + quantity); + + if (decreaseSold) + { + stateModel.Sold -= quantity; + } + } + + protected virtual void InternalReduceInventory(InventoryStateModel stateModel, int quantity, bool increaseSold) + { + if (quantity < 0) + { + throw new DaprException("Quantity should not be less than 0."); + } + + if (quantity > stateModel.Inventory) + { + throw new DaprException("Insufficient inventory."); + } + + if (increaseSold) + { + stateModel.Sold = checked(stateModel.Sold + quantity); + } + + stateModel.Inventory -= quantity; + } +} \ No newline at end of file diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors/FodyWeavers.xml b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors/FodyWeavers.xml new file mode 100644 index 00000000..1715698c --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors/FodyWeavers.xsd b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors/FodyWeavers.xsd new file mode 100644 index 00000000..ffa6fc4b --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Plugins.Inventories.DaprActors/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp.EShop.Products.DaprActorsInventory.Domain.csproj b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp.EShop.Products.DaprActorsInventory.Domain.csproj new file mode 100644 index 00000000..93c911a8 --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp.EShop.Products.DaprActorsInventory.Domain.csproj @@ -0,0 +1,15 @@ + + + + + + net6.0 + + + + + + + + + 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 new file mode 100644 index 00000000..cdb0e46d --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/DaprActorsProductInventoryProvider.cs @@ -0,0 +1,110 @@ +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; +using Volo.Abp.DependencyInjection; + +namespace EasyAbp.EShop.Products.DaprActorsInventory; + +public class DaprActorsProductInventoryProvider : IProductInventoryProvider, ITransientDependency +{ + public static string DaprActorsProductInventoryProviderName { get; set; } = "DaprActors"; + public static string DaprActorsProductInventoryProviderDisplayName { get; set; } = "DaprActors"; + public static string DaprActorsProductInventoryProviderDescription { get; set; } = "DaprActors"; + + public string InventoryProviderName { get; } = DaprActorsProductInventoryProviderName; + + public static string ActorType { get; set; } = "InventoryActor"; + + private readonly ILogger _logger; + + public DaprActorsProductInventoryProvider(ILogger logger) + { + _logger = logger; + } + + public virtual async Task GetInventoryDataAsync(InventoryQueryModel model) + { + var actor = GetActor(model); + + var stateModel = await actor.GetInventoryStateAsync(); + + return new InventoryDataModel + { + Inventory = stateModel.Inventory, + Sold = stateModel.Sold + }; + } + + public virtual async Task> GetSkuIdInventoryDataMappingAsync( + IList models) + { + var result = new Dictionary(); + + foreach (var model in models) + { + result.Add(model.ProductSkuId, await GetInventoryDataAsync(model)); + } + + return result; + } + + public virtual async Task TryIncreaseInventoryAsync(InventoryQueryModel model, int quantity, + bool decreaseSold) + { + var actor = GetActor(model); + + try + { + await actor.IncreaseInventoryAsync(quantity, decreaseSold); + } + catch (Exception e) + { + _logger.LogError("Actor threw: {Message}", e.Message); + + return false; + } + + return true; + } + + public virtual async Task TryReduceInventoryAsync(InventoryQueryModel model, int quantity, bool increaseSold) + { + var actor = GetActor(model); + + var stateModel = await actor.GetInventoryStateAsync(); + + if (stateModel.Inventory < quantity) + { + return false; + } + + try + { + await actor.ReduceInventoryAsync(quantity, increaseSold); + } + catch (Exception e) + { + _logger.LogError("Actor threw: {Message}", e.Message); + + return false; + } + + return true; + } + + protected virtual IInventoryActor GetActor(InventoryQueryModel model) + { + return ActorProxy.Create(GetActorId(model), ActorType); + } + + protected virtual ActorId GetActorId(InventoryQueryModel model) + { + return new ActorId( + $"eshop_inventory_{(model.TenantId.HasValue ? model.TenantId.Value : "host")}_{model.ProductSkuId}"); + } +} \ No newline at end of file diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/EShopProductsDaprActorsInventoryDomainModule.cs b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/EShopProductsDaprActorsInventoryDomainModule.cs new file mode 100644 index 00000000..3c9dc09a --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/EasyAbp/EShop/Products/DaprActorsInventory/EShopProductsDaprActorsInventoryDomainModule.cs @@ -0,0 +1,28 @@ +using EasyAbp.EShop.Plugins.Inventories.DaprActors; +using EasyAbp.EShop.Products.Options; +using Volo.Abp.Modularity; + +namespace EasyAbp.EShop.Products.DaprActorsInventory; + +[DependsOn( + typeof(EShopProductsDomainModule), + typeof(EShopPluginsInventoriesDaprActorsAbstractionsModule) +)] +public class EShopProductsDaprActorsInventoryDomainModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.InventoryProviders.Configure( + DaprActorsProductInventoryProvider.DaprActorsProductInventoryProviderName, provider => + { + provider.DisplayName = + DaprActorsProductInventoryProvider.DaprActorsProductInventoryProviderDisplayName; + provider.Description = DaprActorsProductInventoryProvider + .DaprActorsProductInventoryProviderDescription; + provider.ProviderType = typeof(DaprActorsProductInventoryProvider); + }); + }); + } +} \ No newline at end of file diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/FodyWeavers.xml b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/FodyWeavers.xml new file mode 100644 index 00000000..1715698c --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/FodyWeavers.xsd b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/FodyWeavers.xsd new file mode 100644 index 00000000..ffa6fc4b --- /dev/null +++ b/plugins/Inventories/DaprActors/src/EasyAbp.EShop.Products.DaprActorsInventory.Domain/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file