Browse Source

Close #66: Replace SerializedAttributeOptionIds with AttributeOptionIds in sku DTOs.

pull/87/head v0.3.5
gdlcf88 6 years ago
parent
commit
dab0a4ca52
  1. 2
      integration/EasyAbp.EShop/common.props
  2. 2
      modules/EasyAbp.EShop.Baskets/common.props
  3. 2
      modules/EasyAbp.EShop.Orders/common.props
  4. 4
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application/EasyAbp/EShop/Orders/Orders/NewOrderGenerator.cs
  5. 2
      modules/EasyAbp.EShop.Payments/common.props
  6. 2
      modules/EasyAbp.EShop.Products/common.props
  7. 5
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/CreateUpdateProductSkuDto.cs
  8. 3
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/ProductSkuDto.cs
  9. 9
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/EShopProductsApplicationModule.cs
  10. 17
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/Products/ProductAppService.cs
  11. 21
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductsApplicationAutoMapperProfile.cs
  12. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/cs.json
  13. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json
  14. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pl.json
  15. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pt-BR.json
  16. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/sl.json
  17. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/tr.json
  18. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/vi.json
  19. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hans.json
  20. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hant.json
  21. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/CreateModal.cshtml.cs
  22. 5
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/index.js
  23. 4
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/ProductsWebAutoMapperProfile.cs
  24. 2
      modules/EasyAbp.EShop.Stores/common.props

2
integration/EasyAbp.EShop/common.props

@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>0.3.4</Version>
<Version>0.3.5</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>EasyAbp Team</Authors>

2
modules/EasyAbp.EShop.Baskets/common.props

@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>0.3.4</Version>
<Version>0.3.5</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>EasyAbp Team</Authors>

2
modules/EasyAbp.EShop.Orders/common.props

@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>0.3.4</Version>
<Version>0.3.5</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>EasyAbp Team</Authors>

4
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application/EasyAbp/EShop/Orders/Orders/NewOrderGenerator.cs

@ -94,11 +94,9 @@ namespace EasyAbp.EShop.Orders.Orders
protected virtual Task<string> GenerateSkuDescriptionAsync(ProductDto product, ProductSkuDto productSku)
{
var attributeOptionIds = _jsonSerializer.Deserialize<Guid[]>(productSku.SerializedAttributeOptionIds);
var names = new Collection<string[]>();
foreach (var attributeOptionId in attributeOptionIds)
foreach (var attributeOptionId in productSku.AttributeOptionIds)
{
names.Add(product.ProductAttributes.SelectMany(
attribute => attribute.ProductAttributeOptions.Where(option => option.Id == attributeOptionId),

2
modules/EasyAbp.EShop.Payments/common.props

@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>0.3.4</Version>
<Version>0.3.5</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>EasyAbp Team</Authors>

2
modules/EasyAbp.EShop.Products/common.props

@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>0.3.4</Version>
<Version>0.3.5</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>EasyAbp Team</Authors>

5
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/CreateUpdateProductSkuDto.cs

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
@ -37,7 +38,7 @@ namespace EasyAbp.EShop.Products.Products.Dtos
public class CreateProductSkuDto : UpdateProductSkuDto
{
[Required]
[DisplayName("ProductSkuSerializedAttributeOptionIds")]
public string SerializedAttributeOptionIds { get; set; }
[DisplayName("ProductSkuAttributeOptionIds")]
public List<Guid> AttributeOptionIds { get; set; }
}
}

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

@ -1,11 +1,12 @@
using System;
using System.Collections.Generic;
using Volo.Abp.Application.Dtos;
namespace EasyAbp.EShop.Products.Products.Dtos
{
public class ProductSkuDto : FullAuditedEntityDto<Guid>
{
public string SerializedAttributeOptionIds { get; set; }
public List<Guid> AttributeOptionIds { get; set; }
public string Code { get; set; }

9
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/EShopProductsApplicationModule.cs

@ -17,10 +17,15 @@ namespace EasyAbp.EShop.Products
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddAutoMapperObjectMapper<EShopProductsApplicationModule>();
Configure<AbpAutoMapperOptions>(options =>
{
options.AddMaps<EShopProductsApplicationModule>(validate: true);
options.Configurators.Add(abpAutoMapperConfigurationContext =>
{
var profile = abpAutoMapperConfigurationContext.ServiceProvider
.GetRequiredService<ProductsApplicationAutoMapperProfile>();
abpAutoMapperConfigurationContext.MapperConfiguration.AddProfile(profile);
});
});
}
}

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

@ -4,7 +4,6 @@ using System.Linq;
using System.Threading.Tasks;
using EasyAbp.EShop.Products.Authorization;
using EasyAbp.EShop.Products.ProductCategories;
using EasyAbp.EShop.Products.ProductDetails;
using EasyAbp.EShop.Products.Products.Dtos;
using EasyAbp.EShop.Products.ProductStores;
using Microsoft.AspNetCore.Authorization;
@ -200,13 +199,13 @@ namespace EasyAbp.EShop.Products.Products
var product = await GetEntityByIdAsync(id);
var dto = MapToGetOutputDto(product);
if (!dto.IsPublished)
if (!product.IsPublished)
{
await CheckStoreIsProductOwnerAsync(dto.Id, storeId);
await CheckStoreIsProductOwnerAsync(product.Id, storeId);
}
var dto = MapToGetOutputDto(product);
await LoadRealInventoriesAsync(product, dto, storeId);
await LoadPricesAsync(product, dto, storeId);
@ -219,13 +218,13 @@ namespace EasyAbp.EShop.Products.Products
var product = await _repository.GetAsync(x => x.Code == code);
var dto = MapToGetOutputDto(product);
if (!dto.IsPublished)
if (!product.IsPublished)
{
await CheckStoreIsProductOwnerAsync(dto.Id, storeId);
await CheckStoreIsProductOwnerAsync(product.Id, storeId);
}
var dto = MapToGetOutputDto(product);
await LoadRealInventoriesAsync(product, dto, storeId);
return dto;

21
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductsApplicationAutoMapperProfile.cs

@ -1,5 +1,4 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using EasyAbp.EShop.Products.Products;
using EasyAbp.EShop.Products.Products.Dtos;
using EasyAbp.EShop.Products.Categories;
@ -16,12 +15,13 @@ using EasyAbp.EShop.Products.ProductDetailHistories.Dtos;
using EasyAbp.EShop.Products.ProductHistories;
using EasyAbp.EShop.Products.ProductHistories.Dtos;
using Volo.Abp.AutoMapper;
using Volo.Abp.DependencyInjection;
namespace EasyAbp.EShop.Products
{
public class ProductsApplicationAutoMapperProfile : Profile
public class ProductsApplicationAutoMapperProfile : Profile, ISingletonDependency
{
public ProductsApplicationAutoMapperProfile()
public ProductsApplicationAutoMapperProfile(IAttributeOptionIdsSerializer attributeOptionIdsSerializer)
{
/* You can configure your AutoMapper mapping configuration here.
* Alternatively, you can split your mapping configurations
@ -33,8 +33,12 @@ namespace EasyAbp.EShop.Products
CreateMap<ProductAttribute, ProductAttributeDto>();
CreateMap<ProductAttributeOption, ProductAttributeOptionDto>();
CreateMap<ProductSku, ProductSkuDto>()
.ForSourceMember(entity => entity.SerializedAttributeOptionIds, opt => opt.DoNotValidate())
.Ignore(dto => dto.AttributeOptionIds)
.Ignore(dto => dto.DiscountedPrice)
.Ignore(dto => dto.RealInventory);
.Ignore(dto => dto.RealInventory)
.AfterMap(async (src, dest) => dest.AttributeOptionIds =
(await attributeOptionIdsSerializer.DeserializeAsync(src.SerializedAttributeOptionIds)).ToList());
CreateMap<CreateUpdateProductDto, Product>(MemberList.Source)
.ForSourceMember(dto => dto.StoreId, opt => opt.DoNotValidate())
.ForSourceMember(dto => dto.CategoryIds, opt => opt.DoNotValidate())
@ -45,7 +49,12 @@ namespace EasyAbp.EShop.Products
.ForSourceMember(dto => dto.StoreId, opt => opt.DoNotValidate());
CreateMap<CreateUpdateProductAttributeDto, ProductAttribute>(MemberList.Source);
CreateMap<CreateUpdateProductAttributeOptionDto, ProductAttributeOption>(MemberList.Source);
CreateMap<CreateProductSkuDto, ProductSku>(MemberList.Source);
CreateMap<CreateProductSkuDto, ProductSku>(MemberList.Source)
.ForSourceMember(dto => dto.AttributeOptionIds, opt => opt.DoNotValidate())
.Ignore(entity => entity.SerializedAttributeOptionIds)
.AfterMap(async (src, dest) =>
dest.SetSerializedAttributeOptionIds(
await attributeOptionIdsSerializer.SerializeAsync(src.AttributeOptionIds)));
CreateMap<UpdateProductSkuDto, ProductSku>(MemberList.Source);
CreateMap<Category, CategoryDto>();
CreateMap<CreateUpdateCategoryDto, Category>(MemberList.Source);

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

@ -20,7 +20,7 @@
"ProductAttributeOptionNames": "ProductAttributeOptionNames",
"ProductAttributeOptionNamesPlaceholder": "ProductAttributeOptionNamesPlaceholder",
"ProductSku": "ProductSku",
"ProductSkuSerializedAttributeOptionIds": "ProductSkuSerializedAttributeOptionIds",
"ProductSkuAttributeOptionIds": "ProductSkuAttributeOptionIds",
"ProductSkuCode": "ProductSkuCode",
"ProductSkuCurrency": "ProductSkuCurrency",
"ProductSkuOriginalPrice": "ProductSkuOriginalPrice",

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

@ -21,7 +21,7 @@
"ProductAttributeOptionNames": "ProductAttributeOptionNames",
"ProductAttributeOptionNamesPlaceholder": "ProductAttributeOptionNamesPlaceholder",
"ProductSku": "ProductSku",
"ProductSkuSerializedAttributeOptionIds": "ProductSkuSerializedAttributeOptionIds",
"ProductSkuAttributeOptionIds": "ProductSkuAttributeOptionIds",
"ProductSkuCode": "ProductSkuCode",
"ProductSkuCurrency": "ProductSkuCurrency",
"ProductSkuOriginalPrice": "ProductSkuOriginalPrice",

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

@ -20,7 +20,7 @@
"ProductAttributeOptionNames": "ProductAttributeOptionNames",
"ProductAttributeOptionNamesPlaceholder": "ProductAttributeOptionNamesPlaceholder",
"ProductSku": "ProductSku",
"ProductSkuSerializedAttributeOptionIds": "ProductSkuSerializedAttributeOptionIds",
"ProductSkuAttributeOptionIds": "ProductSkuAttributeOptionIds",
"ProductSkuCode": "ProductSkuCode",
"ProductSkuCurrency": "ProductSkuCurrency",
"ProductSkuOriginalPrice": "ProductSkuOriginalPrice",

2
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pt-BR.json

@ -20,7 +20,7 @@
"ProductAttributeOptionNames": "ProductAttributeOptionNames",
"ProductAttributeOptionNamesPlaceholder": "ProductAttributeOptionNamesPlaceholder",
"ProductSku": "ProductSku",
"ProductSkuSerializedAttributeOptionIds": "ProductSkuSerializedAttributeOptionIds",
"ProductSkuAttributeOptionIds": "ProductSkuAttributeOptionIds",
"ProductSkuCode": "ProductSkuCode",
"ProductSkuCurrency": "ProductSkuCurrency",
"ProductSkuOriginalPrice": "ProductSkuOriginalPrice",

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

@ -21,7 +21,7 @@
"ProductAttributeOptionNames": "ProductAttributeOptionNames",
"ProductAttributeOptionNamesPlaceholder": "ProductAttributeOptionNamesPlaceholder",
"ProductSku": "ProductSku",
"ProductSkuSerializedAttributeOptionIds": "ProductSkuSerializedAttributeOptionIds",
"ProductSkuAttributeOptionIds": "ProductSkuAttributeOptionIds",
"ProductSkuCode": "ProductSkuCode",
"ProductSkuCurrency": "ProductSkuCurrency",
"ProductSkuOriginalPrice": "ProductSkuOriginalPrice",

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

@ -21,7 +21,7 @@
"ProductAttributeOptionNames": "ProductAttributeOptionNames",
"ProductAttributeOptionNamesPlaceholder": "ProductAttributeOptionNamesPlaceholder",
"ProductSku": "ProductSku",
"ProductSkuSerializedAttributeOptionIds": "ProductSkuSerializedAttributeOptionIds",
"ProductSkuAttributeOptionIds": "ProductSkuAttributeOptionIds",
"ProductSkuCode": "ProductSkuCode",
"ProductSkuCurrency": "ProductSkuCurrency",
"ProductSkuOriginalPrice": "ProductSkuOriginalPrice",

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

@ -20,7 +20,7 @@
"ProductAttributeOptionNames": "ProductAttributeOptionNames",
"ProductAttributeOptionNamesPlaceholder": "ProductAttributeOptionNamesPlaceholder",
"ProductSku": "ProductSku",
"ProductSkuSerializedAttributeOptionIds": "ProductSkuSerializedAttributeOptionIds",
"ProductSkuAttributeOptionIds": "ProductSkuAttributeOptionIds",
"ProductSkuCode": "ProductSkuCode",
"ProductSkuCurrency": "ProductSkuCurrency",
"ProductSkuOriginalPrice": "ProductSkuOriginalPrice",

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

@ -21,7 +21,7 @@
"ProductAttributeOptionNames": "ProductAttributeOptionNames",
"ProductAttributeOptionNamesPlaceholder": "ProductAttributeOptionNamesPlaceholder",
"ProductSku": "ProductSku",
"ProductSkuSerializedAttributeOptionIds": "ProductSkuSerializedAttributeOptionIds",
"ProductSkuAttributeOptionIds": "ProductSkuAttributeOptionIds",
"ProductSkuCode": "ProductSkuCode",
"ProductSkuCurrency": "ProductSkuCurrency",
"ProductSkuOriginalPrice": "ProductSkuOriginalPrice",

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

@ -21,7 +21,7 @@
"ProductAttributeOptionNames": "ProductAttributeOptionNames",
"ProductAttributeOptionNamesPlaceholder": "ProductAttributeOptionNamesPlaceholder",
"ProductSku": "ProductSku",
"ProductSkuSerializedAttributeOptionIds": "ProductSkuSerializedAttributeOptionIds",
"ProductSkuAttributeOptionIds": "ProductSkuAttributeOptionIds",
"ProductSkuCode": "ProductSkuCode",
"ProductSkuCurrency": "ProductSkuCurrency",
"ProductSkuOriginalPrice": "ProductSkuOriginalPrice",

2
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/CreateModal.cshtml.cs

@ -58,7 +58,7 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.ProductSku
{
var createDto = ObjectMapper.Map<CreateEditProductSkuViewModel, CreateProductSkuDto>(ProductSku);
createDto.SerializedAttributeOptionIds = _jsonSerializer.Serialize(SelectedAttributeOptionIdDict.Values);
createDto.AttributeOptionIds = SelectedAttributeOptionIdDict.Values.ToList();
await _productAppService.CreateSkuAsync(ProductId, StoreId, createDto);

5
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/index.js

@ -81,9 +81,8 @@ $(function () {
for (let i in product.productSkus) {
let sku = product.productSkus[i];
let options = [];
let attributeOptionIds = JSON.parse(sku.serializedAttributeOptionIds);
for (let j in attributeOptionIds) {
let optionId = attributeOptionIds[j];
for (let j in sku.attributeOptionIds) {
let optionId = sku.attributeOptionIds[j];
options.push(attributeOptionNames[optionId]);
}
sku.contentDescription = options.join(',');

4
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/ProductsWebAutoMapperProfile.cs

@ -53,10 +53,10 @@ namespace EasyAbp.EShop.Products.Web
CreateMap<ProductAttributeDto, CreateEditProductAttributeViewModel>();
CreateMap<CreateEditProductAttributeViewModel, CreateUpdateProductAttributeDto>();
CreateMap<CreateEditProductSkuViewModel, CreateProductSkuDto>()
.Ignore(dto => dto.SerializedAttributeOptionIds);
.Ignore(dto => dto.AttributeOptionIds);
CreateMap<CreateEditProductSkuViewModel, UpdateProductSkuDto>();
CreateMap<ProductSkuDto, CreateEditProductSkuViewModel>()
.ForSourceMember(dto => dto.SerializedAttributeOptionIds, opt => opt.DoNotValidate());
.ForSourceMember(dto => dto.AttributeOptionIds, opt => opt.DoNotValidate());
CreateMap<ProductAttributeOptionDto, CreateEditProductAttributeOptionViewModel>();
CreateMap<CreateEditProductAttributeOptionViewModel, CreateUpdateProductAttributeOptionDto>();
CreateMap<CategoryDto, CreateUpdateCategoryDto>();

2
modules/EasyAbp.EShop.Stores/common.props

@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>0.3.4</Version>
<Version>0.3.5</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>EasyAbp Team</Authors>

Loading…
Cancel
Save