Browse Source

Add the `Overview` property to the `Product` entity

pull/237/head
gdlcf88 4 years ago
parent
commit
ec29b295f9
  1. 3
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/CreateUpdateProductDto.cs
  2. 28
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/ProductDto.cs
  3. 6
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/ProductViewDto.cs
  4. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/Products/ProductAppService.cs
  5. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json
  6. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hans.json
  7. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hant.json
  8. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Products/IProduct.cs
  9. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Products/ProductEto.cs
  10. 10
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/Products/Product.cs
  11. 4
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/Products/ProductView.cs
  12. 18
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/CreateEditProductViewModel.cs
  13. 10
      modules/EasyAbp.EShop.Products/test/EasyAbp.EShop.Products.Domain.Tests/Products/ProductDomainTests.cs
  14. 11
      modules/EasyAbp.EShop.Products/test/EasyAbp.EShop.Products.TestBase/ProductsTestDataBuilder.cs
  15. 1
      samples/EShopSample/aspnet-core/src/EShopSample.Domain/Data/SampleDataSeedContributor.cs
  16. 6361
      samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore/Migrations/20230327075140_AddedProductOverview.Designer.cs
  17. 38
      samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore/Migrations/20230327075140_AddedProductOverview.cs
  18. 6
      samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore/Migrations/EShopSampleDbContextModelSnapshot.cs

3
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/CreateUpdateProductDto.cs

@ -30,6 +30,9 @@ namespace EasyAbp.EShop.Products.Products.Dtos
[DisplayName("ProductDisplayName")] [DisplayName("ProductDisplayName")]
public string DisplayName { get; set; } public string DisplayName { get; set; }
[DisplayName("ProductOverview")]
public string Overview { get; set; }
public ICollection<CreateUpdateProductAttributeDto> ProductAttributes { get; set; } public ICollection<CreateUpdateProductAttributeDto> ProductAttributes { get; set; }
[DisplayName("ProductInventoryStrategy")] [DisplayName("ProductInventoryStrategy")]

28
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/ProductDto.cs

@ -9,48 +9,50 @@ namespace EasyAbp.EShop.Products.Products.Dtos
public class ProductDto : ExtensibleFullAuditedEntityDto<Guid> public class ProductDto : ExtensibleFullAuditedEntityDto<Guid>
{ {
public Guid StoreId { get; set; } public Guid StoreId { get; set; }
public string ProductGroupName { get; set; } public string ProductGroupName { get; set; }
public string ProductGroupDisplayName { get; set; } public string ProductGroupDisplayName { get; set; }
public Guid? ProductDetailId { get; set; } public Guid? ProductDetailId { get; set; }
public string UniqueName { get; set; } public string UniqueName { get; set; }
public string DisplayName { get; set; } public string DisplayName { get; set; }
public string Overview { get; set; }
public InventoryStrategy InventoryStrategy { get; set; } public InventoryStrategy InventoryStrategy { get; set; }
public string InventoryProviderName { get; set; } public string InventoryProviderName { get; set; }
public string MediaResources { get; set; } public string MediaResources { get; set; }
public int DisplayOrder { get; set; } public int DisplayOrder { get; set; }
public bool IsPublished { get; set; } public bool IsPublished { get; set; }
public bool IsStatic { get; set; } public bool IsStatic { get; set; }
public bool IsHidden { get; set; } public bool IsHidden { get; set; }
public TimeSpan? PaymentExpireIn { get; set; } public TimeSpan? PaymentExpireIn { get; set; }
public long Sold { get; set; } public long Sold { get; set; }
public decimal? MinimumPrice { get; set; } public decimal? MinimumPrice { get; set; }
public decimal? MaximumPrice { get; set; } public decimal? MaximumPrice { get; set; }
public List<ProductAttributeDto> ProductAttributes { get; set; } public List<ProductAttributeDto> ProductAttributes { get; set; }
public List<ProductSkuDto> ProductSkus { get; set; } public List<ProductSkuDto> ProductSkus { get; set; }
public ProductSkuDto GetSkuById(Guid skuId) public ProductSkuDto GetSkuById(Guid skuId)
{ {
return ProductSkus.Single(x => x.Id == skuId); return ProductSkus.Single(x => x.Id == skuId);
} }
public ProductSkuDto FindSkuById(Guid skuId) public ProductSkuDto FindSkuById(Guid skuId)
{ {
return ProductSkus.FirstOrDefault(x => x.Id == skuId); return ProductSkus.FirstOrDefault(x => x.Id == skuId);

6
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/ProductViewDto.cs

@ -17,6 +17,8 @@ namespace EasyAbp.EShop.Products.Products.Dtos
public string DisplayName { get; set; } public string DisplayName { get; set; }
public string Overview { get; set; }
public InventoryStrategy InventoryStrategy { get; set; } public InventoryStrategy InventoryStrategy { get; set; }
public string InventoryProviderName { get; set; } public string InventoryProviderName { get; set; }
@ -32,9 +34,9 @@ namespace EasyAbp.EShop.Products.Products.Dtos
public bool IsHidden { get; set; } public bool IsHidden { get; set; }
public decimal? MinimumPrice { get; set; } public decimal? MinimumPrice { get; set; }
public decimal? MaximumPrice { get; set; } public decimal? MaximumPrice { get; set; }
public long Sold { get; set; } public long Sold { get; set; }
public string ProductGroupDisplayName { get; set; } public string ProductGroupDisplayName { get; set; }

2
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/Products/ProductAppService.cs

@ -490,6 +490,7 @@ namespace EasyAbp.EShop.Products.Products
createInput.ProductDetailId, createInput.ProductDetailId,
createInput.UniqueName, createInput.UniqueName,
createInput.DisplayName, createInput.DisplayName,
createInput.Overview,
createInput.InventoryStrategy, createInput.InventoryStrategy,
createInput.InventoryProviderName, createInput.InventoryProviderName,
createInput.IsPublished, createInput.IsPublished,
@ -512,6 +513,7 @@ namespace EasyAbp.EShop.Products.Products
updateInput.ProductDetailId, updateInput.ProductDetailId,
updateInput.UniqueName, updateInput.UniqueName,
updateInput.DisplayName, updateInput.DisplayName,
updateInput.Overview,
updateInput.InventoryStrategy, updateInput.InventoryStrategy,
updateInput.InventoryProviderName, updateInput.InventoryProviderName,
updateInput.IsPublished, updateInput.IsPublished,

2
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json

@ -12,6 +12,8 @@
"ProductDetailId": "Product detail ID", "ProductDetailId": "Product detail ID",
"ProductUniqueName": "Unique name", "ProductUniqueName": "Unique name",
"ProductDisplayName": "Display name", "ProductDisplayName": "Display name",
"ProductOverview": "Overview text",
"ProductOverviewPlaceholder": "A one-sentence description of this product, usually displayed in the product list.",
"ProductDisplayOrder": "Display order", "ProductDisplayOrder": "Display order",
"ProductSold": "Sold", "ProductSold": "Sold",
"ProductDetailDescription": "Description", "ProductDetailDescription": "Description",

2
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hans.json

@ -12,6 +12,8 @@
"ProductDetailId": "商品详情 ID", "ProductDetailId": "商品详情 ID",
"ProductUniqueName": "商品编号", "ProductUniqueName": "商品编号",
"ProductDisplayName": "商品名称", "ProductDisplayName": "商品名称",
"ProductOverview": "商品文本概述",
"ProductOverviewPlaceholder": "用一句话描述此商品,通常显示于商品列表",
"ProductDisplayOrder": "展示顺序", "ProductDisplayOrder": "展示顺序",
"ProductSold": "已售", "ProductSold": "已售",
"ProductDetailDescription": "详情介绍", "ProductDetailDescription": "详情介绍",

2
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hant.json

@ -12,6 +12,8 @@
"ProductDetailId": "商品詳情 ID", "ProductDetailId": "商品詳情 ID",
"ProductUniqueName": "商品編號", "ProductUniqueName": "商品編號",
"ProductDisplayName": "商品名稱", "ProductDisplayName": "商品名稱",
"ProductOverview": "商品文本概述",
"ProductOverviewPlaceholder": "用一句话描述此商品,通常显示于商品列表",
"ProductDisplayOrder": "展示順序", "ProductDisplayOrder": "展示順序",
"ProductSold": "已售", "ProductSold": "已售",
"ProductDetailDescription": "詳情介紹", "ProductDetailDescription": "詳情介紹",

2
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Products/IProduct.cs

@ -15,6 +15,8 @@ namespace EasyAbp.EShop.Products.Products
string DisplayName { get; } string DisplayName { get; }
string Overview { get; }
InventoryStrategy InventoryStrategy { get; } InventoryStrategy InventoryStrategy { get; }
[CanBeNull] string InventoryProviderName { get; } [CanBeNull] string InventoryProviderName { get; }

2
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Products/ProductEto.cs

@ -21,6 +21,8 @@ namespace EasyAbp.EShop.Products.Products
public string DisplayName { get; set; } public string DisplayName { get; set; }
public string Overview { get; set; }
public InventoryStrategy InventoryStrategy { get; set; } public InventoryStrategy InventoryStrategy { get; set; }
public string InventoryProviderName { get; set; } public string InventoryProviderName { get; set; }

10
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/Products/Product.cs

@ -25,6 +25,12 @@ namespace EasyAbp.EShop.Products.Products
[NotNull] [NotNull]
public virtual string DisplayName { get; protected set; } public virtual string DisplayName { get; protected set; }
/// <summary>
/// Tell your customer what the product is. It is usually shown in the product list.
/// </summary>
[CanBeNull]
public virtual string Overview { get; protected set; }
public virtual InventoryStrategy InventoryStrategy { get; protected set; } public virtual InventoryStrategy InventoryStrategy { get; protected set; }
/// <summary> /// <summary>
@ -62,6 +68,7 @@ namespace EasyAbp.EShop.Products.Products
Guid? productDetailId, Guid? productDetailId,
[CanBeNull] string uniqueName, [CanBeNull] string uniqueName,
[NotNull] string displayName, [NotNull] string displayName,
[CanBeNull] string overview,
InventoryStrategy inventoryStrategy, InventoryStrategy inventoryStrategy,
[CanBeNull] string inventoryProviderName, [CanBeNull] string inventoryProviderName,
bool isPublished, bool isPublished,
@ -76,6 +83,7 @@ namespace EasyAbp.EShop.Products.Products
StoreId = storeId; StoreId = storeId;
ProductGroupName = Check.NotNullOrWhiteSpace(productGroupName, nameof(productGroupName)); ProductGroupName = Check.NotNullOrWhiteSpace(productGroupName, nameof(productGroupName));
ProductDetailId = productDetailId; ProductDetailId = productDetailId;
Overview = overview;
UniqueName = uniqueName?.Trim(); UniqueName = uniqueName?.Trim();
DisplayName = Check.NotNullOrWhiteSpace(displayName, nameof(displayName)); DisplayName = Check.NotNullOrWhiteSpace(displayName, nameof(displayName));
InventoryStrategy = inventoryStrategy; InventoryStrategy = inventoryStrategy;
@ -97,6 +105,7 @@ namespace EasyAbp.EShop.Products.Products
Guid? productDetailId, Guid? productDetailId,
[CanBeNull] string uniqueName, [CanBeNull] string uniqueName,
[NotNull] string displayName, [NotNull] string displayName,
[CanBeNull] string overview,
InventoryStrategy inventoryStrategy, InventoryStrategy inventoryStrategy,
[CanBeNull] string inventoryProviderName, [CanBeNull] string inventoryProviderName,
bool isPublished, bool isPublished,
@ -111,6 +120,7 @@ namespace EasyAbp.EShop.Products.Products
ProductDetailId = productDetailId; ProductDetailId = productDetailId;
UniqueName = uniqueName?.Trim(); UniqueName = uniqueName?.Trim();
DisplayName = Check.NotNullOrWhiteSpace(displayName, nameof(displayName)); DisplayName = Check.NotNullOrWhiteSpace(displayName, nameof(displayName));
Overview = overview;
InventoryStrategy = inventoryStrategy; InventoryStrategy = inventoryStrategy;
InventoryProviderName = inventoryProviderName; InventoryProviderName = inventoryProviderName;
IsPublished = isPublished; IsPublished = isPublished;

4
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/Products/ProductView.cs

@ -20,6 +20,8 @@ namespace EasyAbp.EShop.Products.Products
public virtual string DisplayName { get; protected set; } public virtual string DisplayName { get; protected set; }
public virtual string Overview { get; protected set; }
public virtual InventoryStrategy InventoryStrategy { get; protected set; } public virtual InventoryStrategy InventoryStrategy { get; protected set; }
public string InventoryProviderName { get; protected set; } public string InventoryProviderName { get; protected set; }
@ -56,6 +58,7 @@ namespace EasyAbp.EShop.Products.Products
Guid? productDetailId, Guid? productDetailId,
string uniqueName, string uniqueName,
string displayName, string displayName,
string overview,
InventoryStrategy inventoryStrategy, InventoryStrategy inventoryStrategy,
string inventoryProviderName, string inventoryProviderName,
bool isPublished, bool isPublished,
@ -75,6 +78,7 @@ namespace EasyAbp.EShop.Products.Products
ProductDetailId = productDetailId; ProductDetailId = productDetailId;
UniqueName = uniqueName?.Trim(); UniqueName = uniqueName?.Trim();
DisplayName = displayName; DisplayName = displayName;
Overview = overview;
InventoryStrategy = inventoryStrategy; InventoryStrategy = inventoryStrategy;
InventoryProviderName = inventoryProviderName; InventoryProviderName = inventoryProviderName;
IsPublished = isPublished; IsPublished = isPublished;

18
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/CreateEditProductViewModel.cs

@ -13,7 +13,7 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewM
[HiddenInput] [HiddenInput]
[Display(Name = "ProductStoreId")] [Display(Name = "ProductStoreId")]
public Guid StoreId { get; set; } public Guid StoreId { get; set; }
[Required] [Required]
[SelectItems("ProductGroups")] [SelectItems("ProductGroups")]
[Display(Name = "ProductProductGroupName")] [Display(Name = "ProductProductGroupName")]
@ -30,18 +30,22 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewM
[Display(Name = "ProductUniqueName")] [Display(Name = "ProductUniqueName")]
public string UniqueName { get; set; } public string UniqueName { get; set; }
[Required] [Required]
[Display(Name = "ProductDisplayName")] [Display(Name = "ProductDisplayName")]
public string DisplayName { get; set; } public string DisplayName { get; set; }
[Placeholder("ProductOverviewPlaceholder")]
[Display(Name = "ProductOverview")]
public string Overview { get; set; }
public CreateEditProductDetailViewModel ProductDetail { get; set; } = new(); public CreateEditProductDetailViewModel ProductDetail { get; set; } = new();
[Required] [Required]
[Placeholder("ProductAttributeNamesPlaceholder")] [Placeholder("ProductAttributeNamesPlaceholder")]
[Display(Name = "ProductAttributeNames")] [Display(Name = "ProductAttributeNames")]
public string ProductAttributeNames { get; set; } public string ProductAttributeNames { get; set; }
[Required] [Required]
[TextArea(Rows = 4)] [TextArea(Rows = 4)]
[Placeholder("ProductAttributeOptionNamesPlaceholder")] [Placeholder("ProductAttributeOptionNamesPlaceholder")]
@ -60,13 +64,13 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewM
[Display(Name = "ProductMediaResources")] [Display(Name = "ProductMediaResources")]
public string MediaResources { get; set; } public string MediaResources { get; set; }
[Display(Name = "ProductIsPublished")] [Display(Name = "ProductIsPublished")]
public bool IsPublished { get; set; } public bool IsPublished { get; set; }
[Display(Name = "ProductIsHidden")] [Display(Name = "ProductIsHidden")]
public bool IsHidden { get; set; } public bool IsHidden { get; set; }
[Display(Name = "ProductPaymentExpireIn")] [Display(Name = "ProductPaymentExpireIn")]
public TimeSpan? PaymentExpireIn { get; set; } public TimeSpan? PaymentExpireIn { get; set; }
@ -76,7 +80,7 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewM
{ {
yield return new ValidationResult( yield return new ValidationResult(
"The StoreId should be same as the ProductDetail.StoreId.", "The StoreId should be same as the ProductDetail.StoreId.",
new[] {"StoreId"} new[] { "StoreId" }
); );
} }
} }

10
modules/EasyAbp.EShop.Products/test/EasyAbp.EShop.Products.Domain.Tests/Products/ProductDomainTests.cs

@ -25,8 +25,8 @@ namespace EasyAbp.EShop.Products.Products
public async Task Should_Set_ProductDetailId() public async Task Should_Set_ProductDetailId()
{ {
var product2 = new Product(ProductsTestData.Product2Id, null, ProductsTestData.Store1Id, "Default", var product2 = new Product(ProductsTestData.Product2Id, null, ProductsTestData.Store1Id, "Default",
ProductsTestData.ProductDetails2Id, "Ball", "Ball", InventoryStrategy.NoNeed, null, true, false, false, ProductsTestData.ProductDetails2Id, "Ball", "Ball", null, InventoryStrategy.NoNeed, null, true, false,
null, null, 0); false, null, null, 0);
await ProductManager.CreateAsync(product2); await ProductManager.CreateAsync(product2);
product2 = await ProductRepository.GetAsync(product2.Id); product2 = await ProductRepository.GetAsync(product2.Id);
@ -64,8 +64,8 @@ namespace EasyAbp.EShop.Products.Products
product1.ProductDetailId.ShouldBe(ProductsTestData.ProductDetails1Id); product1.ProductDetailId.ShouldBe(ProductsTestData.ProductDetails1Id);
var product2 = new Product(ProductsTestData.Product2Id, null, ProductsTestData.Store1Id, "Default", var product2 = new Product(ProductsTestData.Product2Id, null, ProductsTestData.Store1Id, "Default",
ProductsTestData.ProductDetails2Id, "Ball", "Ball", InventoryStrategy.NoNeed, null, true, false, false, ProductsTestData.ProductDetails2Id, "Ball", "Ball", null, InventoryStrategy.NoNeed, null, true, false,
null, null, 0); false, null, null, 0);
await ProductManager.CreateAsync(product2); await ProductManager.CreateAsync(product2);
@ -181,7 +181,7 @@ namespace EasyAbp.EShop.Products.Products
public async Task Should_Use_Fake_Inventory_Provider() public async Task Should_Use_Fake_Inventory_Provider()
{ {
var product2 = new Product(ProductsTestData.Product2Id, null, ProductsTestData.Store1Id, "Default", var product2 = new Product(ProductsTestData.Product2Id, null, ProductsTestData.Store1Id, "Default",
ProductsTestData.ProductDetails2Id, "Ball", "Ball", InventoryStrategy.NoNeed, "Fake", true, false, ProductsTestData.ProductDetails2Id, "Ball", "Ball", null, InventoryStrategy.NoNeed, "Fake", true, false,
false, null, null, 0); false, null, null, 0);
await ProductManager.CreateAsync(product2); await ProductManager.CreateAsync(product2);

11
modules/EasyAbp.EShop.Products/test/EasyAbp.EShop.Products.TestBase/ProductsTestDataBuilder.cs

@ -35,17 +35,18 @@ namespace EasyAbp.EShop.Products
public async Task BuildAsync() public async Task BuildAsync()
{ {
using var uow = _unitOfWorkManager.Begin(); using var uow = _unitOfWorkManager.Begin();
var productDetail1 = await _productDetailRepository.InsertAsync( var productDetail1 = await _productDetailRepository.InsertAsync(
new ProductDetail(ProductsTestData.ProductDetails1Id, null, ProductsTestData.Store1Id, new ProductDetail(ProductsTestData.ProductDetails1Id, null, ProductsTestData.Store1Id,
"Product details for store 1"), true); "Product details for store 1"), true);
var productDetail2 = await _productDetailRepository.InsertAsync( var productDetail2 = await _productDetailRepository.InsertAsync(
new ProductDetail(ProductsTestData.ProductDetails2Id, null, ProductsTestData.Store1Id, new ProductDetail(ProductsTestData.ProductDetails2Id, null, ProductsTestData.Store1Id,
"Product details for store 1"), true); "Product details for store 1"), true);
var product = new Product(ProductsTestData.Product1Id, null, ProductsTestData.Store1Id, "Default", var product = new Product(ProductsTestData.Product1Id, null, ProductsTestData.Store1Id, "Default",
productDetail1.Id, "Cake", "Cake", InventoryStrategy.NoNeed, null, true, false, false, null, null, 0); productDetail1.Id, "Cake", "Cake", "Delicious cakes", InventoryStrategy.NoNeed, null, true, false,
false, null, null, 0);
var attribute1 = new ProductAttribute(ProductsTestData.Product1Attribute1Id, "Size", null, 1); var attribute1 = new ProductAttribute(ProductsTestData.Product1Attribute1Id, "Size", null, 1);
var attribute2 = new ProductAttribute(ProductsTestData.Product1Attribute2Id, "Color", null, 2); var attribute2 = new ProductAttribute(ProductsTestData.Product1Attribute2Id, "Color", null, 2);
@ -57,7 +58,7 @@ namespace EasyAbp.EShop.Products
new ProductAttributeOption(ProductsTestData.Product1Attribute1Option1Id, "S", null, 1), new ProductAttributeOption(ProductsTestData.Product1Attribute1Option1Id, "S", null, 1),
new ProductAttributeOption(ProductsTestData.Product1Attribute1Option3Id, "L", null, 3), new ProductAttributeOption(ProductsTestData.Product1Attribute1Option3Id, "L", null, 3),
}); });
attribute2.ProductAttributeOptions.AddRange(new[] attribute2.ProductAttributeOptions.AddRange(new[]
{ {
new ProductAttributeOption(ProductsTestData.Product1Attribute2Option2Id, "Green", null, 2), new ProductAttributeOption(ProductsTestData.Product1Attribute2Option2Id, "Green", null, 2),
@ -83,7 +84,7 @@ namespace EasyAbp.EShop.Products
await _attributeOptionIdsSerializer.SerializeAsync(new[] await _attributeOptionIdsSerializer.SerializeAsync(new[]
{ ProductsTestData.Product1Attribute1Option3Id, ProductsTestData.Product1Attribute2Option2Id }), { ProductsTestData.Product1Attribute1Option3Id, ProductsTestData.Product1Attribute2Option2Id }),
null, "USD", null, 3m, 1, 10, null, null, null); null, "USD", null, 3m, 1, 10, null, null, null);
await _productManager.CreateSkuAsync(product, productSku1); await _productManager.CreateSkuAsync(product, productSku1);
await _productManager.CreateSkuAsync(product, productSku2); await _productManager.CreateSkuAsync(product, productSku2);
await _productManager.CreateSkuAsync(product, productSku3); await _productManager.CreateSkuAsync(product, productSku3);

1
samples/EShopSample/aspnet-core/src/EShopSample.Domain/Data/SampleDataSeedContributor.cs

@ -123,6 +123,7 @@ public class SampleDataSeedContributor : IDataSeedContributor, ITransientDepende
null, null,
SampleDataConsts.CakeProductUniqueName, SampleDataConsts.CakeProductUniqueName,
"Cake", "Cake",
"Delicious cakes",
InventoryStrategy.NoNeed, InventoryStrategy.NoNeed,
null, null,
true, true,

6361
samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore/Migrations/20230327075140_AddedProductOverview.Designer.cs

File diff suppressed because it is too large

38
samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore/Migrations/20230327075140_AddedProductOverview.cs

@ -0,0 +1,38 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace EShopSample.Migrations
{
/// <inheritdoc />
public partial class AddedProductOverview : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "Overview",
table: "EasyAbpEShopProductsProductViews",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Overview",
table: "EasyAbpEShopProductsProducts",
type: "nvarchar(max)",
nullable: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "Overview",
table: "EasyAbpEShopProductsProductViews");
migrationBuilder.DropColumn(
name: "Overview",
table: "EasyAbpEShopProductsProducts");
}
}
}

6
samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore/Migrations/EShopSampleDbContextModelSnapshot.cs

@ -2284,6 +2284,9 @@ namespace EShopSample.Migrations
b.Property<string>("MediaResources") b.Property<string>("MediaResources")
.HasColumnType("nvarchar(max)"); .HasColumnType("nvarchar(max)");
b.Property<string>("Overview")
.HasColumnType("nvarchar(max)");
b.Property<TimeSpan?>("PaymentExpireIn") b.Property<TimeSpan?>("PaymentExpireIn")
.HasColumnType("time"); .HasColumnType("time");
@ -2562,6 +2565,9 @@ namespace EShopSample.Migrations
b.Property<decimal?>("MinimumPrice") b.Property<decimal?>("MinimumPrice")
.HasColumnType("decimal(20,8)"); .HasColumnType("decimal(20,8)");
b.Property<string>("Overview")
.HasColumnType("nvarchar(max)");
b.Property<Guid?>("ProductDetailId") b.Property<Guid?>("ProductDetailId")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");

Loading…
Cancel
Save