diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductInventories/ProductInventoryAppService.cs b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductInventories/ProductInventoryAppService.cs index 3b63397f..3d595c87 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductInventories/ProductInventoryAppService.cs +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductInventories/ProductInventoryAppService.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Authorization; using System; using System.Threading.Tasks; using Volo.Abp.Application.Services; +using Volo.Abp.Domain.Entities; namespace EasyAbp.EShop.Products.ProductInventories { @@ -32,6 +33,13 @@ namespace EasyAbp.EShop.Products.ProductInventories if (productInventory == null) { + var product = await _productRepository.GetAsync(productId); + + if (!product.ProductSkus.Exists(x => x.Id == productSkuId)) + { + throw new EntityNotFoundException(typeof(ProductSku), productSkuId); + } + productInventory = new ProductInventory(GuidGenerator.Create(), CurrentTenant.Id, productId, productSkuId, 0, 0); @@ -45,6 +53,11 @@ namespace EasyAbp.EShop.Products.ProductInventories { var product = await _productRepository.GetAsync(input.ProductId); + if (!product.ProductSkus.Exists(x => x.Id == input.ProductSkuId)) + { + throw new EntityNotFoundException(typeof(ProductSku), input.ProductSkuId); + } + await AuthorizationService.CheckMultiStorePolicyAsync(product.StoreId, ProductsPermissions.ProductInventory.Update, ProductsPermissions.ProductInventory.CrossStore); diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/CreateModal.cshtml.cs b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/CreateModal.cshtml.cs index 3cd33fca..667e0cb2 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/CreateModal.cshtml.cs +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/CreateModal.cshtml.cs @@ -71,12 +71,14 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.ProductSku createDto.ProductDetailId = detail.Id; } - var skuDto = await _productAppService.CreateSkuAsync(ProductId, createDto); + var product = await _productAppService.CreateSkuAsync(ProductId, createDto); + var productSku = product.ProductSkus + .Single(x => !x.AttributeOptionIds.Except(createDto.AttributeOptionIds).Any()); await _productInventoryAppService.UpdateAsync(new UpdateProductInventoryDto { - ProductId = ProductId, - ProductSkuId = skuDto.Id, + ProductId = product.Id, + ProductSkuId = productSku.Id, ChangedInventory = ProductSku.Inventory });