Browse Source

Added history application services

pull/49/head
gdlcf88 6 years ago
parent
commit
af143ef33f
  1. 10
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductDetailHistories/Dtos/GetProductDetailHistoryListDto.cs
  2. 14
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductDetailHistories/Dtos/ProductDetailHistoryDto.cs
  3. 19
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductDetailHistories/IProductDetailHistoryAppService.cs
  4. 10
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductHistories/Dtos/GetProductHistoryListDto.cs
  5. 14
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductHistories/Dtos/ProductHistoryDto.cs
  6. 18
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductHistories/IProductDetailHistoryAppService.cs
  7. 53
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductDetailHistories/ProductDetailHistoryAppService.cs
  8. 53
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductHistories/ProductHistoryAppService.cs
  9. 5
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductsApplicationAutoMapperProfile.cs
  10. 4
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductDetailHistories/IProductDetailHistoryRepository.cs
  11. 4
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductHistories/IProductHistoryRepository.cs
  12. 4
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/EntityFrameworkCore/ProductsDbContextModelCreatingExtensions.cs
  13. 19
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/ProductDetailHistories/ProductDetailHistoryRepository.cs
  14. 19
      modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/ProductHistories/ProductHistoryRepository.cs
  15. 2473
      samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/20200502095135_AddedHistoryEntityIndexes.Designer.cs
  16. 49
      samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/20200502095135_AddedHistoryEntityIndexes.cs
  17. 8
      samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/EasyMallMigrationsDbContextModelSnapshot.cs

10
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductDetailHistories/Dtos/GetProductDetailHistoryListDto.cs

@ -0,0 +1,10 @@
using System;
using Volo.Abp.Application.Dtos;
namespace EasyAbp.EShop.Products.ProductDetailHistories.Dtos
{
public class GetProductDetailHistoryListDto : PagedAndSortedResultRequestDto
{
public Guid ProductDetailId { get; set; }
}
}

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

@ -0,0 +1,14 @@
using System;
using Volo.Abp.Application.Dtos;
namespace EasyAbp.EShop.Products.ProductDetailHistories.Dtos
{
public class ProductDetailHistoryDto : EntityDto<Guid>
{
public Guid ProductDetailId { get; set; }
public DateTime ModificationTime { get; set; }
public string SerializedDto { get; set; }
}
}

19
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductDetailHistories/IProductDetailHistoryAppService.cs

@ -0,0 +1,19 @@
using System;
using System.Threading.Tasks;
using EasyAbp.EShop.Products.ProductDetailHistories.Dtos;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace EasyAbp.EShop.Products.ProductDetailHistories
{
public interface IProductDetailHistoryAppService :
ICrudAppService<
ProductDetailHistoryDto,
Guid,
GetProductDetailHistoryListDto,
object,
object>
{
Task<ProductDetailHistoryDto> GetByTimeAsync(Guid productId, DateTime modificationTime);
}
}

10
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductHistories/Dtos/GetProductHistoryListDto.cs

@ -0,0 +1,10 @@
using System;
using Volo.Abp.Application.Dtos;
namespace EasyAbp.EShop.Products.ProductHistories.Dtos
{
public class GetProductHistoryListDto : PagedAndSortedResultRequestDto
{
public Guid ProductId { get; set; }
}
}

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

@ -0,0 +1,14 @@
using System;
using Volo.Abp.Application.Dtos;
namespace EasyAbp.EShop.Products.ProductHistories.Dtos
{
public class ProductHistoryDto : EntityDto<Guid>
{
public Guid ProductId { get; set; }
public DateTime ModificationTime { get; set; }
public string SerializedDto { get; set; }
}
}

18
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductHistories/IProductDetailHistoryAppService.cs

@ -0,0 +1,18 @@
using System;
using System.Threading.Tasks;
using EasyAbp.EShop.Products.ProductHistories.Dtos;
using Volo.Abp.Application.Services;
namespace EasyAbp.EShop.Products.ProductHistories
{
public interface IProductHistoryAppService :
ICrudAppService<
ProductHistoryDto,
Guid,
GetProductHistoryListDto,
object,
object>
{
Task<ProductHistoryDto> GetByTimeAsync(Guid productId, DateTime modificationTime);
}
}

53
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductDetailHistories/ProductDetailHistoryAppService.cs

@ -0,0 +1,53 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using EasyAbp.EShop.Products.Authorization;
using EasyAbp.EShop.Products.ProductDetailHistories.Dtos;
using Volo.Abp;
using Volo.Abp.Application.Services;
namespace EasyAbp.EShop.Products.ProductDetailHistories
{
public class ProductDetailHistoryAppService : CrudAppService<ProductDetailHistory, ProductDetailHistoryDto, Guid, GetProductDetailHistoryListDto, object, object>,
IProductDetailHistoryAppService
{
protected override string GetListPolicyName { get; set; } = ProductsPermissions.Products.Default;
private readonly IProductDetailHistoryRepository _repository;
public ProductDetailHistoryAppService(IProductDetailHistoryRepository repository) : base(repository)
{
_repository = repository;
}
protected override IQueryable<ProductDetailHistory> CreateFilteredQuery(GetProductDetailHistoryListDto input)
{
return base.CreateFilteredQuery(input).Where(x => x.ProductDetailId == input.ProductDetailId);
}
public async Task<ProductDetailHistoryDto> GetByTimeAsync(Guid productId, DateTime modificationTime)
{
await CheckGetPolicyAsync();
return MapToGetOutputDto(await _repository.GetAsync(productId, modificationTime));
}
[RemoteService(false)]
public override Task<ProductDetailHistoryDto> CreateAsync(object input)
{
throw new NotImplementedException();
}
[RemoteService(false)]
public override Task<ProductDetailHistoryDto> UpdateAsync(Guid id, object input)
{
throw new NotImplementedException();
}
[RemoteService(false)]
public override Task DeleteAsync(Guid id)
{
throw new NotImplementedException();
}
}
}

53
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductHistories/ProductHistoryAppService.cs

@ -0,0 +1,53 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using EasyAbp.EShop.Products.Authorization;
using EasyAbp.EShop.Products.ProductHistories.Dtos;
using Volo.Abp;
using Volo.Abp.Application.Services;
namespace EasyAbp.EShop.Products.ProductHistories
{
public class ProductHistoryAppService : CrudAppService<ProductHistory, ProductHistoryDto, Guid, GetProductHistoryListDto, object, object>,
IProductHistoryAppService
{
protected override string GetListPolicyName { get; set; } = ProductsPermissions.Products.Default;
private readonly IProductHistoryRepository _repository;
public ProductHistoryAppService(IProductHistoryRepository repository) : base(repository)
{
_repository = repository;
}
protected override IQueryable<ProductHistory> CreateFilteredQuery(GetProductHistoryListDto input)
{
return base.CreateFilteredQuery(input).Where(x => x.ProductId == input.ProductId);
}
public async Task<ProductHistoryDto> GetByTimeAsync(Guid productId, DateTime modificationTime)
{
await CheckGetPolicyAsync();
return MapToGetOutputDto(await _repository.GetAsync(productId, modificationTime));
}
[RemoteService(false)]
public override Task<ProductHistoryDto> CreateAsync(object input)
{
throw new NotImplementedException();
}
[RemoteService(false)]
public override Task<ProductHistoryDto> UpdateAsync(Guid id, object input)
{
throw new NotImplementedException();
}
[RemoteService(false)]
public override Task DeleteAsync(Guid id)
{
throw new NotImplementedException();
}
}
}

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

@ -10,6 +10,9 @@ using AutoMapper;
using EasyAbp.EShop.Products.ProductDetails;
using EasyAbp.EShop.Products.ProductDetails.Dtos;
using EasyAbp.EShop.Products.ProductDetailHistories;
using EasyAbp.EShop.Products.ProductDetailHistories.Dtos;
using EasyAbp.EShop.Products.ProductHistories;
using EasyAbp.EShop.Products.ProductHistories.Dtos;
using Volo.Abp.AutoMapper;
namespace EasyAbp.EShop.Products
@ -44,6 +47,8 @@ namespace EasyAbp.EShop.Products
CreateMap<CreateUpdateProductTypeDto, ProductType>(MemberList.Source);
CreateMap<ProductCategory, ProductCategoryDto>();
CreateMap<CreateUpdateProductCategoryDto, ProductCategory>(MemberList.Source);
CreateMap<ProductHistory, ProductHistoryDto>();
CreateMap<ProductDetailHistory, ProductDetailHistoryDto>();
}
}
}

4
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductDetailHistories/IProductDetailHistoryRepository.cs

@ -1,9 +1,13 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
namespace EasyAbp.EShop.Products.ProductDetailHistories
{
public interface IProductDetailHistoryRepository : IRepository<ProductDetailHistory, Guid>
{
Task<ProductDetailHistory> GetAsync(Guid productDetailId, DateTime modificationTime,
CancellationToken cancellationToken = default);
}
}

4
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductHistories/IProductHistoryRepository.cs

@ -1,9 +1,13 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
namespace EasyAbp.EShop.Products.ProductHistories
{
public interface IProductHistoryRepository : IRepository<ProductHistory, Guid>
{
Task<ProductHistory> GetAsync(Guid productId, DateTime modificationTime,
CancellationToken cancellationToken = default);
}
}

4
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/EntityFrameworkCore/ProductsDbContextModelCreatingExtensions.cs

@ -118,6 +118,8 @@ namespace EasyAbp.EShop.Products.EntityFrameworkCore
b.ToTable(options.TablePrefix + "ProductHistories", options.Schema);
b.ConfigureByConvention();
/* Configure more properties here */
b.HasIndex(x => x.ProductId);
b.HasIndex(x => x.ModificationTime);
});
builder.Entity<ProductDetailHistory>(b =>
@ -125,6 +127,8 @@ namespace EasyAbp.EShop.Products.EntityFrameworkCore
b.ToTable(options.TablePrefix + "ProductDetailHistories", options.Schema);
b.ConfigureByConvention();
/* Configure more properties here */
b.HasIndex(x => x.ProductDetailId);
b.HasIndex(x => x.ModificationTime);
});
}
}

19
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/ProductDetailHistories/ProductDetailHistoryRepository.cs

@ -1,5 +1,10 @@
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using EasyAbp.EShop.Products.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
@ -10,5 +15,19 @@ namespace EasyAbp.EShop.Products.ProductDetailHistories
public ProductDetailHistoryRepository(IDbContextProvider<ProductsDbContext> dbContextProvider) : base(dbContextProvider)
{
}
public async Task<ProductDetailHistory> GetAsync(Guid productDetailId, DateTime modificationTime, CancellationToken cancellationToken = default)
{
var entity = await GetQueryable()
.Where(x => x.ModificationTime == modificationTime && x.ProductDetailId == productDetailId)
.FirstOrDefaultAsync(cancellationToken);
if (entity == null)
{
throw new EntityNotFoundException(typeof(ProductDetailHistory), new {productDetailId, modificationTime});
}
return entity;
}
}
}

19
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/ProductHistories/ProductHistoryRepository.cs

@ -1,5 +1,10 @@
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using EasyAbp.EShop.Products.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
@ -10,5 +15,19 @@ namespace EasyAbp.EShop.Products.ProductHistories
public ProductHistoryRepository(IDbContextProvider<ProductsDbContext> dbContextProvider) : base(dbContextProvider)
{
}
public async Task<ProductHistory> GetAsync(Guid productId, DateTime modificationTime, CancellationToken cancellationToken = default)
{
var entity = await GetQueryable()
.Where(x => x.ModificationTime == modificationTime && x.ProductId == productId)
.FirstOrDefaultAsync(cancellationToken);
if (entity == null)
{
throw new EntityNotFoundException(typeof(ProductHistory), new {productId, modificationTime});
}
return entity;
}
}
}

2473
samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/20200502095135_AddedHistoryEntityIndexes.Designer.cs

File diff suppressed because it is too large

49
samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/20200502095135_AddedHistoryEntityIndexes.cs

@ -0,0 +1,49 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace EasyMall.Migrations
{
public partial class AddedHistoryEntityIndexes : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateIndex(
name: "IX_ProductsProductHistories_ModificationTime",
table: "ProductsProductHistories",
column: "ModificationTime");
migrationBuilder.CreateIndex(
name: "IX_ProductsProductHistories_ProductId",
table: "ProductsProductHistories",
column: "ProductId");
migrationBuilder.CreateIndex(
name: "IX_ProductsProductDetailHistories_ModificationTime",
table: "ProductsProductDetailHistories",
column: "ModificationTime");
migrationBuilder.CreateIndex(
name: "IX_ProductsProductDetailHistories_ProductDetailId",
table: "ProductsProductDetailHistories",
column: "ProductDetailId");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(
name: "IX_ProductsProductHistories_ModificationTime",
table: "ProductsProductHistories");
migrationBuilder.DropIndex(
name: "IX_ProductsProductHistories_ProductId",
table: "ProductsProductHistories");
migrationBuilder.DropIndex(
name: "IX_ProductsProductDetailHistories_ModificationTime",
table: "ProductsProductDetailHistories");
migrationBuilder.DropIndex(
name: "IX_ProductsProductDetailHistories_ProductDetailId",
table: "ProductsProductDetailHistories");
}
}
}

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

@ -163,6 +163,10 @@ namespace EasyMall.Migrations
b.HasKey("Id");
b.HasIndex("ModificationTime");
b.HasIndex("ProductDetailId");
b.ToTable("ProductsProductDetailHistories");
});
@ -245,6 +249,10 @@ namespace EasyMall.Migrations
b.HasKey("Id");
b.HasIndex("ModificationTime");
b.HasIndex("ProductId");
b.ToTable("ProductsProductHistories");
});

Loading…
Cancel
Save