diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/cs.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/cs.json index 72c5e05c..ad98a603 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/cs.json +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/cs.json @@ -14,7 +14,6 @@ "ProductDisplayName": "Display name", "ProductDisplayOrder": "Display order", "ProductSold": "Sold", - "ProductDetailStoreId": "Store ID", "ProductDetailDescription": "Description", "ProductCategory": "Categories", "ProductAttribute": "Attribute", @@ -35,8 +34,8 @@ "ProductSkuOrderMaxQuantity": "Maximum quantity per purchase", "ProductSkuPaymentExpireIn": "Payment expire in", "ProductSkuMediaResources": "Media resources", - "ProductSkuProductDetailId": "Product detail ID", "ProductSkuContentDescription": "SKU content", + "ProductSkuProductDetailDescriptionPlaceholder": "Fallback to details of the product if you keep null here.", "CreateProductSku": "New", "EditProductSku": "Edit", "ProductSkuDeletionConfirmationMessage": "Are you sure to delete the product SKU {0}?", diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json index 1adb709e..ba76dd82 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json @@ -15,7 +15,6 @@ "ProductDisplayName": "Display name", "ProductDisplayOrder": "Display order", "ProductSold": "Sold", - "ProductDetailStoreId": "Store ID", "ProductDetailDescription": "Description", "ProductCategory": "Categories", "ProductAttribute": "Attribute", @@ -36,8 +35,8 @@ "ProductSkuOrderMaxQuantity": "Maximum quantity per purchase", "ProductSkuPaymentExpireIn": "Payment expire in", "ProductSkuMediaResources": "Media resources", - "ProductSkuProductDetailId": "Product detail ID", "ProductSkuContentDescription": "SKU content", + "ProductSkuProductDetailDescriptionPlaceholder": "Fallback to details of the product if you keep null here.", "CreateProductSku": "New", "EditProductSku": "Edit", "ProductSkuDeletionConfirmationMessage": "Are you sure to delete the product SKU {0}?", diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pl.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pl.json index f02e2f40..badd1818 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pl.json +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pl.json @@ -14,7 +14,6 @@ "ProductDisplayName": "Display name", "ProductDisplayOrder": "Display order", "ProductSold": "Sold", - "ProductDetailStoreId": "Store ID", "ProductDetailDescription": "Description", "ProductCategory": "Categories", "ProductAttribute": "Attribute", @@ -35,8 +34,8 @@ "ProductSkuOrderMaxQuantity": "Maximum quantity per purchase", "ProductSkuPaymentExpireIn": "Payment expire in", "ProductSkuMediaResources": "Media resources", - "ProductSkuProductDetailId": "Product detail ID", "ProductSkuContentDescription": "SKU content", + "ProductSkuProductDetailDescriptionPlaceholder": "Fallback to details of the product if you keep null here.", "CreateProductSku": "New", "EditProductSku": "Edit", "ProductSkuDeletionConfirmationMessage": "Are you sure to delete the product SKU {0}?", diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pt-BR.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pt-BR.json index f587b61e..291a7302 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pt-BR.json +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pt-BR.json @@ -14,7 +14,6 @@ "ProductDisplayName": "Display name", "ProductDisplayOrder": "Display order", "ProductSold": "Sold", - "ProductDetailStoreId": "Store ID", "ProductDetailDescription": "Description", "ProductCategory": "Categories", "ProductAttribute": "Attribute", @@ -35,8 +34,8 @@ "ProductSkuOrderMaxQuantity": "Maximum quantity per purchase", "ProductSkuPaymentExpireIn": "Payment expire in", "ProductSkuMediaResources": "Media resources", - "ProductSkuProductDetailId": "Product detail ID", "ProductSkuContentDescription": "SKU content", + "ProductSkuProductDetailDescriptionPlaceholder": "Fallback to details of the product if you keep null here.", "CreateProductSku": "New", "EditProductSku": "Edit", "ProductSkuDeletionConfirmationMessage": "Are you sure to delete the product SKU {0}?", diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/sl.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/sl.json index a7732d20..2d1aee3e 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/sl.json +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/sl.json @@ -15,7 +15,6 @@ "ProductDisplayName": "Display name", "ProductDisplayOrder": "Display order", "ProductSold": "Sold", - "ProductDetailStoreId": "Store ID", "ProductDetailDescription": "Description", "ProductCategory": "Categories", "ProductAttribute": "Attribute", @@ -36,8 +35,8 @@ "ProductSkuOrderMaxQuantity": "Maximum quantity per purchase", "ProductSkuPaymentExpireIn": "Payment expire in", "ProductSkuMediaResources": "Media resources", - "ProductSkuProductDetailId": "Product detail ID", "ProductSkuContentDescription": "SKU content", + "ProductSkuProductDetailDescriptionPlaceholder": "Fallback to details of the product if you keep null here.", "CreateProductSku": "New", "EditProductSku": "Edit", "ProductSkuDeletionConfirmationMessage": "Are you sure to delete the product SKU {0}?", diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/tr.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/tr.json index 6fb1f0e3..79fb806d 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/tr.json +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/tr.json @@ -15,7 +15,6 @@ "ProductDisplayName": "Display name", "ProductDisplayOrder": "Display order", "ProductSold": "Sold", - "ProductDetailStoreId": "Store ID", "ProductDetailDescription": "Description", "ProductCategory": "Categories", "ProductAttribute": "Attribute", @@ -36,8 +35,8 @@ "ProductSkuOrderMaxQuantity": "Maximum quantity per purchase", "ProductSkuPaymentExpireIn": "Payment expire in", "ProductSkuMediaResources": "Media resources", - "ProductSkuProductDetailId": "Product detail ID", "ProductSkuContentDescription": "SKU content", + "ProductSkuProductDetailDescriptionPlaceholder": "Fallback to details of the product if you keep null here.", "CreateProductSku": "New", "EditProductSku": "Edit", "ProductSkuDeletionConfirmationMessage": "Are you sure to delete the product SKU {0}?", diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/vi.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/vi.json index c495337c..576ab78a 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/vi.json +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/vi.json @@ -14,7 +14,6 @@ "ProductDisplayName": "Display name", "ProductDisplayOrder": "Display order", "ProductSold": "Sold", - "ProductDetailStoreId": "Store ID", "ProductDetailDescription": "Description", "ProductCategory": "Categories", "ProductAttribute": "Attribute", @@ -35,8 +34,8 @@ "ProductSkuOrderMaxQuantity": "Maximum quantity per purchase", "ProductSkuPaymentExpireIn": "Payment expire in", "ProductSkuMediaResources": "Media resources", - "ProductSkuProductDetailId": "Product detail ID", "ProductSkuContentDescription": "SKU content", + "ProductSkuProductDetailDescriptionPlaceholder": "Fallback to details of the product if you keep null here.", "CreateProductSku": "New", "EditProductSku": "Edit", "ProductSkuDeletionConfirmationMessage": "Are you sure to delete the product SKU {0}?", diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hans.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hans.json index 7a7a1d5e..86c70b67 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hans.json +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hans.json @@ -15,8 +15,7 @@ "ProductDisplayName": "商品名称", "ProductDisplayOrder": "展示顺序", "ProductSold": "已售", - "ProductDetailStoreId": "店铺 ID", - "ProductDetailDescription": "内容", + "ProductDetailDescription": "详情介绍", "ProductCategory": "所属类目", "ProductAttribute": "商品属性", "ProductAttributeNames": "商品属性", @@ -36,8 +35,8 @@ "ProductSkuOrderMaxQuantity": "单次最大购买数量", "ProductSkuPaymentExpireIn": "支付限时", "ProductSkuMediaResources": "多媒体资源", - "ProductSkuProductDetailId": "商品详情 ID", "ProductSkuContentDescription": "SKU 描述", + "ProductSkuProductDetailDescriptionPlaceholder": "如果此处不填,将使用商品自身的详情介绍。", "CreateProductSku": "新建", "EditProductSku": "编辑", "ProductSkuDeletionConfirmationMessage": "确认删除 SKU {0}?", diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hant.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hant.json index ed9a51f6..af0fa81e 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hant.json +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hant.json @@ -15,8 +15,7 @@ "ProductDisplayName": "商品名稱", "ProductDisplayOrder": "展示順序", "ProductSold": "已售", - "ProductDetailStoreId": "店铺 ID", - "ProductDetailDescription": "內容", + "ProductDetailDescription": "詳情介紹", "ProductCategory": "所屬類目", "ProductAttribute": "商品屬性", "ProductAttributeNames": "商品屬性", @@ -36,8 +35,8 @@ "ProductSkuOrderMaxQuantity": "單次最大購買數量", "ProductSkuPaymentExpireIn": "支付限時", "ProductSkuMediaResources": "多媒體資源", - "ProductSkuProductDetailId": "商品詳情 ID", "ProductSkuContentDescription": "SKU 描述", + "ProductSkuProductDetailDescriptionPlaceholder": "如果此處不填,將使用商品自身的詳情介紹。", "CreateProductSku": "新建", "EditProductSku": "編輯", "ProductSkuDeletionConfirmationMessage": "確認刪除 SKU {0}?", diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/CreateEditProductDetailViewModel.cs b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/CreateEditProductDetailViewModel.cs index f948700a..a56bd74b 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/CreateEditProductDetailViewModel.cs +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/CreateEditProductDetailViewModel.cs @@ -12,7 +12,6 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewM public class CreateEditProductDetailViewModel { [HiddenInput] - [Display(Name = "ProductDetailStoreId")] public Guid? StoreId { get; set; } [TextArea(Rows = 4)] diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/CreateEditProductViewModel.cs b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/CreateEditProductViewModel.cs index db6d9d35..3c2c4ea8 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/CreateEditProductViewModel.cs +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/CreateEditProductViewModel.cs @@ -34,8 +34,8 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewM [Required] [Display(Name = "ProductDisplayName")] public string DisplayName { get; set; } - - public CreateEditProductDetailViewModel ProductDetail { get; set; } + + public CreateEditProductDetailViewModel ProductDetail { get; set; } = new(); [Required] [Placeholder("ProductAttributeNamesPlaceholder")] 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 6559d5d2..27131c88 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 @@ -2,6 +2,8 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using EasyAbp.EShop.Products.ProductDetails; +using EasyAbp.EShop.Products.ProductDetails.Dtos; using EasyAbp.EShop.Products.ProductInventories; using EasyAbp.EShop.Products.ProductInventories.Dtos; using EasyAbp.EShop.Products.Products; @@ -27,13 +29,16 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.ProductSku public Dictionary> Attributes { get; set; } private readonly IProductInventoryAppService _productInventoryAppService; + private readonly IProductDetailAppService _productDetailAppService; private readonly IProductAppService _productAppService; public CreateModalModel( IProductInventoryAppService productInventoryAppService, + IProductDetailAppService productDetailAppService, IProductAppService productAppService) { _productInventoryAppService = productInventoryAppService; + _productDetailAppService = productDetailAppService; _productAppService = productAppService; } @@ -57,6 +62,15 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.ProductSku createDto.AttributeOptionIds = SelectedAttributeOptionIdDict.Values.ToList(); + if (ProductSku.ProductDetail.HasContent()) + { + var detail = await _productDetailAppService.CreateAsync( + ObjectMapper.Map(ProductSku + .ProductDetail)); + + createDto.ProductDetailId = detail.Id; + } + var skuDto = await _productAppService.CreateSkuAsync(ProductId, createDto); await _productInventoryAppService.UpdateAsync(new UpdateProductInventoryDto diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/EditModal.cshtml.cs b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/EditModal.cshtml.cs index 8493e6f5..0d1444c9 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/EditModal.cshtml.cs +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/EditModal.cshtml.cs @@ -1,12 +1,12 @@ using System; -using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using EasyAbp.EShop.Products.ProductDetails; +using EasyAbp.EShop.Products.ProductDetails.Dtos; using EasyAbp.EShop.Products.Products; using EasyAbp.EShop.Products.Products.Dtos; using EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.ProductSku.ViewModels; using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Rendering; namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.ProductSku { @@ -24,25 +24,71 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.ProductSku public EditProductSkuViewModel ProductSku { get; set; } private readonly IProductAppService _productAppService; + private readonly IProductDetailAppService _productDetailAppService; - public EditModalModel(IProductAppService productAppService) + public EditModalModel( + IProductAppService productAppService, + IProductDetailAppService productDetailAppService) { _productAppService = productAppService; + _productDetailAppService = productDetailAppService; } public virtual async Task OnGetAsync() { var product = await _productAppService.GetAsync(ProductId); + var sku = product.ProductSkus.Single(x => x.Id == ProductSkuId); - ProductSku = - ObjectMapper.Map( - product.ProductSkus.Single(x => x.Id == ProductSkuId)); + ProductSku = ObjectMapper.Map(sku); + + if (sku.ProductDetailId.HasValue) + { + var detailDto = await _productDetailAppService.GetAsync(sku.ProductDetailId.Value); + + ProductSku.ProductDetail = new CreateEditSkuProductDetailViewModel + { + StoreId = detailDto.StoreId, + Description = detailDto.Description + }; + } } public virtual async Task OnPostAsync() { - await _productAppService.UpdateSkuAsync(ProductId, ProductSkuId, - ObjectMapper.Map(ProductSku)); + var originalProduct = await _productAppService.GetAsync(ProductId); + var originalSku = originalProduct.ProductSkus.Single(x => x.Id == ProductSkuId); + + var updateProductSkuDto = ObjectMapper.Map(ProductSku); + + if (ProductSku.ProductDetail.HasContent()) + { + if (originalSku.ProductDetailId.HasValue) + { + var detail = await _productDetailAppService.GetAsync(originalSku.ProductDetailId.Value); + + await _productDetailAppService.UpdateAsync(detail.Id, + ObjectMapper.Map( + ProductSku.ProductDetail)); + + updateProductSkuDto.ProductDetailId = detail.Id; + } + else + { + var detail = await _productDetailAppService.CreateAsync( + ObjectMapper.Map( + ProductSku.ProductDetail)); + + updateProductSkuDto.ProductDetailId = detail.Id; + } + } + else if (originalSku.ProductDetailId.HasValue) + { + await _productDetailAppService.DeleteAsync(originalSku.ProductDetailId.Value); + + updateProductSkuDto.ProductDetailId = null; + } + + await _productAppService.UpdateSkuAsync(ProductId, ProductSkuId, updateProductSkuDto); return NoContent(); } diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/ViewModels/CreateEditSkuProductDetailViewModel.cs b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/ViewModels/CreateEditSkuProductDetailViewModel.cs new file mode 100644 index 00000000..460445b4 --- /dev/null +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/ViewModels/CreateEditSkuProductDetailViewModel.cs @@ -0,0 +1,23 @@ +using System; +using System.ComponentModel.DataAnnotations; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; + +namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.ProductSku.ViewModels +{ + public class CreateEditSkuProductDetailViewModel + { + [HiddenInput] + public Guid? StoreId { get; set; } + + [TextArea(Rows = 4)] + [Display(Name = "ProductDetailDescription")] + [Placeholder("ProductSkuProductDetailDescriptionPlaceholder")] + public string Description { get; set; } + + public bool HasContent() + { + return !Description.IsNullOrEmpty(); + } + } +} \ No newline at end of file diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/ViewModels/EditProductSkuViewModel.cs b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/ViewModels/EditProductSkuViewModel.cs index 1deaad9a..5395a6b2 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/ViewModels/EditProductSkuViewModel.cs +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/ViewModels/EditProductSkuViewModel.cs @@ -42,9 +42,7 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.ProductSku.Vi [Display(Name = "ProductSkuMediaResources")] public string MediaResources { get; set; } - - [HiddenInput] - [Display(Name = "ProductSkuProductDetailId")] - public Guid? ProductDetailId { get; set; } + + public CreateEditSkuProductDetailViewModel ProductDetail { get; set; } = new(); } } \ No newline at end of file diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/ProductsWebAutoMapperProfile.cs b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/ProductsWebAutoMapperProfile.cs index 3204de3e..aa3ab14e 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/ProductsWebAutoMapperProfile.cs +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/ProductsWebAutoMapperProfile.cs @@ -51,16 +51,23 @@ namespace EasyAbp.EShop.Products.Web CreateMap(); CreateMap() .Ignore(dto => dto.ExtraProperties); + CreateMap() + .Ignore(dto => dto.ExtraProperties); CreateMap(); CreateMap() .Ignore(dto => dto.ExtraProperties); CreateMap() .Ignore(dto => dto.ExtraProperties) + .Ignore(dto => dto.ProductDetailId) + .ForSourceMember(model => model.ProductDetail, opt => opt.DoNotValidate()) .ForSourceMember(model => model.Inventory, opt => opt.DoNotValidate()) .Ignore(dto => dto.AttributeOptionIds); CreateMap() + .Ignore(dto => dto.ProductDetailId) + .ForSourceMember(model => model.ProductDetail, opt => opt.DoNotValidate()) .Ignore(dto => dto.ExtraProperties); CreateMap() + .Ignore(x => x.ProductDetail) .ForSourceMember(dto => dto.AttributeOptionIds, opt => opt.DoNotValidate()) .ForSourceMember(dto => dto.Inventory, opt => opt.DoNotValidate()) .ForSourceMember(dto => dto.Sold, opt => opt.DoNotValidate());