Browse Source

Close #38: Use serialized product entity instead of serialized product DTO in ProductHistory/ProductDetailHistory

pull/49/head v0.1.20
gdlcf88 6 years ago
parent
commit
be3a709bc7
  1. 2
      modules/EasyAbp.EShop.Baskets/common.props
  2. 2
      modules/EasyAbp.EShop.Orders/common.props
  3. 2
      modules/EasyAbp.EShop.Payments/common.props
  4. 2
      modules/EasyAbp.EShop.Products/common.props
  5. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductDetailHistories/Dtos/ProductDetailHistoryDto.cs
  6. 2
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductHistories/Dtos/ProductHistoryDto.cs
  7. 11
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductDetailHistories/IProductDetailHistoryRecorder.cs
  8. 6
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductDetailHistories/ProductDetailHistory.cs
  9. 14
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductDetailHistories/ProductDetailHistoryRecorder.cs
  10. 11
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductHistories/IProductHistoryRecorder.cs
  11. 6
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductHistories/ProductHistory.cs
  12. 12
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductHistories/ProductHistoryRecorder.cs
  13. 2
      modules/EasyAbp.EShop.Stores/common.props
  14. 3123
      samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/20200527083620_ChangedToSerializedEntityData.Designer.cs
  15. 51
      samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/20200527083620_ChangedToSerializedEntityData.cs
  16. 4
      samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/EasyMallMigrationsDbContextModelSnapshot.cs

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

@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>0.1.19</Version>
<Version>0.1.20</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.1.19</Version>
<Version>0.1.20</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>EasyAbp Team</Authors>

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

@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>0.1.19</Version>
<Version>0.1.20</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.1.19</Version>
<Version>0.1.20</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>EasyAbp Team</Authors>

2
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductDetailHistories/Dtos/ProductDetailHistoryDto.cs

@ -9,6 +9,6 @@ namespace EasyAbp.EShop.Products.ProductDetailHistories.Dtos
public DateTime ModificationTime { get; set; }
public string SerializedDto { get; set; }
public string SerializedEntityData { get; set; }
}
}

2
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductHistories/Dtos/ProductHistoryDto.cs

@ -9,6 +9,6 @@ namespace EasyAbp.EShop.Products.ProductHistories.Dtos
public DateTime ModificationTime { get; set; }
public string SerializedDto { get; set; }
public string SerializedEntityData { get; set; }
}
}

11
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductDetailHistories/IProductDetailHistoryRecorder.cs

@ -0,0 +1,11 @@
using EasyAbp.EShop.Products.ProductDetails;
using Volo.Abp.Domain.Entities.Events;
using Volo.Abp.EventBus;
namespace EasyAbp.EShop.Products.ProductDetailHistories
{
public interface IProductDetailHistoryRecorder : ILocalEventHandler<EntityChangedEventData<ProductDetail>>
{
}
}

6
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductDetailHistories/ProductDetailHistory.cs

@ -11,7 +11,7 @@ namespace EasyAbp.EShop.Products.ProductDetailHistories
public virtual DateTime ModificationTime { get; protected set; }
[NotNull]
public virtual string SerializedDto { get; protected set; }
public virtual string SerializedEntityData { get; protected set; }
protected ProductDetailHistory() {}
@ -19,11 +19,11 @@ namespace EasyAbp.EShop.Products.ProductDetailHistories
Guid id,
Guid productDetailId,
DateTime modificationTime,
[NotNull] string serializedDto) : base(id)
[NotNull] string serializedEntityData) : base(id)
{
ProductDetailId = productDetailId;
ModificationTime = modificationTime;
SerializedDto = serializedDto;
SerializedEntityData = serializedEntityData;
}
}
}

14
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductDetailHistories/ProductDetailHistoryRecorder.cs → modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductDetailHistories/ProductDetailHistoryRecorder.cs

@ -1,32 +1,25 @@
using System.Threading.Tasks;
using EasyAbp.EShop.Products.ProductDetails;
using EasyAbp.EShop.Products.ProductDetails.Dtos;
using EasyAbp.EShop.Products.ProductHistories;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Entities.Events;
using Volo.Abp.EventBus;
using Volo.Abp.Guids;
using Volo.Abp.Json;
using Volo.Abp.ObjectMapping;
using Volo.Abp.Uow;
namespace EasyAbp.EShop.Products.ProductDetailHistories
{
public class ProductDetailHistoryRecorder : ILocalEventHandler<EntityChangedEventData<ProductDetail>>, ITransientDependency
public class ProductDetailHistoryRecorder : IProductDetailHistoryRecorder, ITransientDependency
{
private readonly IGuidGenerator _guidGenerator;
private readonly IObjectMapper _objectMapper;
private readonly IJsonSerializer _jsonSerializer;
private readonly IProductDetailHistoryRepository _productDetailHistoryRepository;
public ProductDetailHistoryRecorder(
IGuidGenerator guidGenerator,
IObjectMapper objectMapper,
IJsonSerializer jsonSerializer,
IProductDetailHistoryRepository productDetailHistoryRepository)
{
_guidGenerator = guidGenerator;
_objectMapper = objectMapper;
_jsonSerializer = jsonSerializer;
_productDetailHistoryRepository = productDetailHistoryRepository;
}
@ -36,11 +29,10 @@ namespace EasyAbp.EShop.Products.ProductDetailHistories
{
var modificationTime = eventData.Entity.LastModificationTime ?? eventData.Entity.CreationTime;
var serializedDto =
_jsonSerializer.Serialize(_objectMapper.Map<ProductDetail, ProductDetailDto>(eventData.Entity));
var serializeEntityData = _jsonSerializer.Serialize(eventData.Entity);
await _productDetailHistoryRepository.InsertAsync(new ProductDetailHistory(_guidGenerator.Create(),
eventData.Entity.Id, modificationTime, serializedDto));
eventData.Entity.Id, modificationTime, serializeEntityData));
}
}
}

11
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductHistories/IProductHistoryRecorder.cs

@ -0,0 +1,11 @@
using EasyAbp.EShop.Products.Products;
using Volo.Abp.Domain.Entities.Events;
using Volo.Abp.EventBus;
namespace EasyAbp.EShop.Products.ProductHistories
{
public interface IProductHistoryRecorder : ILocalEventHandler<EntityChangedEventData<Product>>
{
}
}

6
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductHistories/ProductHistory.cs

@ -11,7 +11,7 @@ namespace EasyAbp.EShop.Products.ProductHistories
public virtual DateTime ModificationTime { get; protected set; }
[NotNull]
public virtual string SerializedDto { get; protected set; }
public virtual string SerializedEntityData { get; protected set; }
protected ProductHistory() {}
@ -19,11 +19,11 @@ namespace EasyAbp.EShop.Products.ProductHistories
Guid id,
Guid productId,
DateTime modificationTime,
[NotNull] string serializedDto) : base(id)
[NotNull] string serializedEntityData) : base(id)
{
ProductId = productId;
ModificationTime = modificationTime;
SerializedDto = serializedDto;
SerializedEntityData = serializedEntityData;
}
}
}

12
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductHistories/ProductHistoryRecorder.cs → modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductHistories/ProductHistoryRecorder.cs

@ -1,31 +1,25 @@
using System.Threading.Tasks;
using EasyAbp.EShop.Products.Products;
using EasyAbp.EShop.Products.Products.Dtos;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Entities.Events;
using Volo.Abp.EventBus;
using Volo.Abp.Guids;
using Volo.Abp.Json;
using Volo.Abp.ObjectMapping;
using Volo.Abp.Uow;
namespace EasyAbp.EShop.Products.ProductHistories
{
public class ProductHistoryRecorder : ILocalEventHandler<EntityChangedEventData<Product>>, ITransientDependency
public class ProductHistoryRecorder : IProductHistoryRecorder, ITransientDependency
{
private readonly IGuidGenerator _guidGenerator;
private readonly IObjectMapper _objectMapper;
private readonly IJsonSerializer _jsonSerializer;
private readonly IProductHistoryRepository _productHistoryRepository;
public ProductHistoryRecorder(
IGuidGenerator guidGenerator,
IObjectMapper objectMapper,
IJsonSerializer jsonSerializer,
IProductHistoryRepository productHistoryRepository)
{
_guidGenerator = guidGenerator;
_objectMapper = objectMapper;
_jsonSerializer = jsonSerializer;
_productHistoryRepository = productHistoryRepository;
}
@ -35,10 +29,10 @@ namespace EasyAbp.EShop.Products.ProductHistories
{
var modificationTime = eventData.Entity.LastModificationTime ?? eventData.Entity.CreationTime;
var serializedDto = _jsonSerializer.Serialize(_objectMapper.Map<Product, ProductDto>(eventData.Entity));
var serializedEntityData = _jsonSerializer.Serialize(eventData.Entity);
await _productHistoryRepository.InsertAsync(new ProductHistory(_guidGenerator.Create(), eventData.Entity.Id,
modificationTime, serializedDto));
modificationTime, serializedEntityData));
}
}
}

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

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

3123
samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/20200527083620_ChangedToSerializedEntityData.Designer.cs

File diff suppressed because it is too large

51
samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/20200527083620_ChangedToSerializedEntityData.cs

@ -0,0 +1,51 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace EasyMall.Migrations
{
public partial class ChangedToSerializedEntityData : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "SerializedDto",
table: "EShopProductsProductHistories");
migrationBuilder.DropColumn(
name: "SerializedDto",
table: "EShopProductsProductDetailHistories");
migrationBuilder.AddColumn<string>(
name: "SerializedEntityData",
table: "EShopProductsProductHistories",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "SerializedEntityData",
table: "EShopProductsProductDetailHistories",
nullable: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "SerializedEntityData",
table: "EShopProductsProductHistories");
migrationBuilder.DropColumn(
name: "SerializedEntityData",
table: "EShopProductsProductDetailHistories");
migrationBuilder.AddColumn<string>(
name: "SerializedDto",
table: "EShopProductsProductHistories",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "SerializedDto",
table: "EShopProductsProductDetailHistories",
type: "nvarchar(max)",
nullable: true);
}
}
}

4
samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/EasyMallMigrationsDbContextModelSnapshot.cs

@ -342,7 +342,7 @@ namespace EasyMall.Migrations
b.Property<Guid>("ProductDetailId")
.HasColumnType("uniqueidentifier");
b.Property<string>("SerializedDto")
b.Property<string>("SerializedEntityData")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
@ -428,7 +428,7 @@ namespace EasyMall.Migrations
b.Property<Guid>("ProductId")
.HasColumnType("uniqueidentifier");
b.Property<string>("SerializedDto")
b.Property<string>("SerializedEntityData")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");

Loading…
Cancel
Save