Browse Source

Close #43: Add OrderNumber property to Order entity

pull/49/head
gdlcf88 6 years ago
parent
commit
6929ff7b0b
  1. 2
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application.Contracts/EasyAbp/EShop/Orders/Orders/Dtos/OrderDto.cs
  2. 3
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application.Contracts/EasyAbp/EShop/Orders/Orders/IOrderAppService.cs
  3. 7
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application/EasyAbp/EShop/Orders/Orders/NewOrderGenerator.cs
  4. 16
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application/EasyAbp/EShop/Orders/Orders/OrderAppService.cs
  5. 1
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/cs.json
  6. 1
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/en.json
  7. 1
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/pl.json
  8. 1
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/pt-BR.json
  9. 1
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/sl.json
  10. 1
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/tr.json
  11. 1
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/vi.json
  12. 1
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/zh-Hans.json
  13. 1
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/zh-Hant.json
  14. 2
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Orders/OrderEto.cs
  15. 9
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/IOrderNumberGenerator.cs
  16. 8
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/Order.cs
  17. 22
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/OrderNumberGenerator.cs
  18. 1
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.EntityFrameworkCore/EasyAbp/EShop/Orders/EntityFrameworkCore/OrdersDbContextModelCreatingExtensions.cs
  19. 17
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.EntityFrameworkCore/EasyAbp/EShop/Orders/Orders/OrderRepository.cs
  20. 1
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Web/Pages/EShop/Orders/Orders/Order/Index.cshtml
  21. 1
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Web/Pages/EShop/Orders/Orders/Order/index.js
  22. 3540
      samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/20200612085218_AddedOrderNumberProperty.Designer.cs
  23. 33
      samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/20200612085218_AddedOrderNumberProperty.cs
  24. 7
      samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/EShopSampleMigrationsDbContextModelSnapshot.cs

2
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application.Contracts/EasyAbp/EShop/Orders/Orders/Dtos/OrderDto.cs

@ -7,6 +7,8 @@ namespace EasyAbp.EShop.Orders.Orders.Dtos
public class OrderDto : ExtensibleFullAuditedEntityDto<Guid>
{
public Guid StoreId { get; set; }
public string OrderNumber { get; set; }
public Guid CustomerUserId { get; set; }

3
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application.Contracts/EasyAbp/EShop/Orders/Orders/IOrderAppService.cs

@ -1,4 +1,5 @@
using System;
using System.Threading.Tasks;
using EasyAbp.EShop.Orders.Orders.Dtos;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
@ -13,6 +14,6 @@ namespace EasyAbp.EShop.Orders.Orders
CreateOrderDto,
CreateOrderDto>
{
Task<OrderDto> GetByOrderNumberAsync(string orderNumber);
}
}

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

@ -19,17 +19,20 @@ namespace EasyAbp.EShop.Orders.Orders
private readonly ICurrentTenant _currentTenant;
private readonly ICurrentUser _currentUser;
private readonly IJsonSerializer _jsonSerializer;
private readonly IOrderNumberGenerator _orderNumberGenerator;
public NewOrderGenerator(
IGuidGenerator guidGenerator,
ICurrentTenant currentTenant,
ICurrentUser currentUser,
IJsonSerializer jsonSerializer)
IJsonSerializer jsonSerializer,
IOrderNumberGenerator orderNumberGenerator)
{
_guidGenerator = guidGenerator;
_currentTenant = currentTenant;
_currentUser = currentUser;
_jsonSerializer = jsonSerializer;
_orderNumberGenerator = orderNumberGenerator;
}
public virtual async Task<Order> GenerateAsync(CreateOrderDto input, Dictionary<Guid, ProductDto> productDict)
@ -57,6 +60,8 @@ namespace EasyAbp.EShop.Orders.Orders
order.SetOrderLines(orderLines);
order.SetOrderNumber(await _orderNumberGenerator.CreateAsync(order));
return order;
}

16
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Application/EasyAbp/EShop/Orders/Orders/OrderAppService.cs

@ -138,5 +138,21 @@ namespace EasyAbp.EShop.Orders.Orders
{
throw new NotSupportedException();
}
public virtual async Task<OrderDto> GetByOrderNumberAsync(string orderNumber)
{
await CheckGetPolicyAsync();
var order = await _repository.GetAsync(x => x.OrderNumber == orderNumber);
if (order.CustomerUserId != CurrentUser.GetId())
{
await AuthorizationService.CheckAsync(OrdersPermissions.Orders.Manage);
// Todo: Check if current user is an admin of the store.
}
return MapToGetOutputDto(order);
}
}
}

1
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/cs.json

@ -4,6 +4,7 @@
"Menu:Order": "MenuOrder",
"Order": "Order",
"OrderStoreId": "OrderStoreId",
"OrderOrderNumber": "OrderOrderNumber",
"OrderCustomerUserId": "OrderCustomerUserId",
"OrderOrderStatus": "OrderOrderStatus",
"OrderCurrency": "OrderCurrency",

1
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/en.json

@ -5,6 +5,7 @@
"Menu:Order": "MenuOrder",
"Order": "Order",
"OrderStoreId": "OrderStoreId",
"OrderOrderNumber": "OrderOrderNumber",
"OrderCustomerUserId": "OrderCustomerUserId",
"OrderOrderStatus": "OrderOrderStatus",
"OrderCurrency": "OrderCurrency",

1
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/pl.json

@ -4,6 +4,7 @@
"Menu:Order": "MenuOrder",
"Order": "Order",
"OrderStoreId": "OrderStoreId",
"OrderOrderNumber": "OrderOrderNumber",
"OrderCustomerUserId": "OrderCustomerUserId",
"OrderOrderStatus": "OrderOrderStatus",
"OrderCurrency": "OrderCurrency",

1
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/pt-BR.json

@ -4,6 +4,7 @@
"Menu:Order": "MenuOrder",
"Order": "Order",
"OrderStoreId": "OrderStoreId",
"OrderOrderNumber": "OrderOrderNumber",
"OrderCustomerUserId": "OrderCustomerUserId",
"OrderOrderStatus": "OrderOrderStatus",
"OrderCurrency": "OrderCurrency",

1
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/sl.json

@ -5,6 +5,7 @@
"Menu:Order": "MenuOrder",
"Order": "Order",
"OrderStoreId": "OrderStoreId",
"OrderOrderNumber": "OrderOrderNumber",
"OrderCustomerUserId": "OrderCustomerUserId",
"OrderOrderStatus": "OrderOrderStatus",
"OrderCurrency": "OrderCurrency",

1
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/tr.json

@ -5,6 +5,7 @@
"Menu:Order": "MenuOrder",
"Order": "Order",
"OrderStoreId": "OrderStoreId",
"OrderOrderNumber": "OrderOrderNumber",
"OrderCustomerUserId": "OrderCustomerUserId",
"OrderOrderStatus": "OrderOrderStatus",
"OrderCurrency": "OrderCurrency",

1
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/vi.json

@ -4,6 +4,7 @@
"Menu:Order": "MenuOrder",
"Order": "Order",
"OrderStoreId": "OrderStoreId",
"OrderOrderNumber": "OrderOrderNumber",
"OrderCustomerUserId": "OrderCustomerUserId",
"OrderOrderStatus": "OrderOrderStatus",
"OrderCurrency": "OrderCurrency",

1
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/zh-Hans.json

@ -5,6 +5,7 @@
"Menu:Order": "MenuOrder",
"Order": "Order",
"OrderStoreId": "OrderStoreId",
"OrderOrderNumber": "OrderOrderNumber",
"OrderCustomerUserId": "OrderCustomerUserId",
"OrderOrderStatus": "OrderOrderStatus",
"OrderCurrency": "OrderCurrency",

1
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Localization/Orders/zh-Hant.json

@ -5,6 +5,7 @@
"Menu:Order": "MenuOrder",
"Order": "Order",
"OrderStoreId": "OrderStoreId",
"OrderOrderNumber": "OrderOrderNumber",
"OrderCustomerUserId": "OrderCustomerUserId",
"OrderOrderStatus": "OrderOrderStatus",
"OrderCurrency": "OrderCurrency",

2
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain.Shared/EasyAbp/EShop/Orders/Orders/OrderEto.cs

@ -12,6 +12,8 @@ namespace EasyAbp.EShop.Orders.Orders
public Guid StoreId { get; set; }
public string OrderNumber { get; set; }
public Guid CustomerUserId { get; set; }
public OrderStatus OrderStatus { get; set; }

9
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/IOrderNumberGenerator.cs

@ -0,0 +1,9 @@
using System.Threading.Tasks;
namespace EasyAbp.EShop.Orders.Orders
{
public interface IOrderNumberGenerator
{
Task<string> CreateAsync(Order order);
}
}

8
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/Order.cs

@ -13,6 +13,9 @@ namespace EasyAbp.EShop.Orders.Orders
public virtual Guid StoreId { get; protected set; }
[NotNull]
public virtual string OrderNumber { get; protected set; }
public virtual Guid CustomerUserId { get; protected set; }
public virtual OrderStatus OrderStatus { get; protected set; }
@ -80,6 +83,11 @@ namespace EasyAbp.EShop.Orders.Orders
OrderLines = new List<OrderLine>();
}
public void SetOrderNumber([NotNull] string orderNumber)
{
OrderNumber = orderNumber;
}
public void SetOrderLines(List<OrderLine> orderLines)
{
OrderLines = orderLines;

22
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/OrderNumberGenerator.cs

@ -0,0 +1,22 @@
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Timing;
namespace EasyAbp.EShop.Orders.Orders
{
public class OrderNumberGenerator : IOrderNumberGenerator, ITransientDependency
{
private readonly IClock _clock;
public OrderNumberGenerator(IClock clock)
{
_clock = clock;
}
public virtual Task<string> CreateAsync(Order order)
{
return Task.FromResult(_clock.Now.ToString("yyyyMMddHHmmssffff") + RandomHelper.GetRandom(0, 99).ToString("00"));
}
}
}

1
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.EntityFrameworkCore/EasyAbp/EShop/Orders/EntityFrameworkCore/OrdersDbContextModelCreatingExtensions.cs

@ -50,6 +50,7 @@ namespace EasyAbp.EShop.Orders.EntityFrameworkCore
b.Property(x => x.TotalPrice).HasColumnType("decimal(18,6)");
b.Property(x => x.TotalDiscount).HasColumnType("decimal(18,6)");
b.Property(x => x.RefundedAmount).HasColumnType("decimal(18,6)");
b.HasIndex(x => x.OrderNumber).IsUnique();
});
builder.Entity<OrderLine>(b =>

17
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.EntityFrameworkCore/EasyAbp/EShop/Orders/Orders/OrderRepository.cs

@ -1,7 +1,10 @@
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using EasyAbp.EShop.Orders.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
@ -17,5 +20,19 @@ namespace EasyAbp.EShop.Orders.Orders
{
return base.WithDetails().Include(x => x.OrderLines);
}
public override Task<Order> UpdateAsync(Order entity, bool autoSave = false, CancellationToken cancellationToken = new CancellationToken())
{
Check.NotNullOrWhiteSpace(entity.OrderNumber, nameof(entity.OrderNumber));
return base.UpdateAsync(entity, autoSave, cancellationToken);
}
public override Task<Order> InsertAsync(Order entity, bool autoSave = false, CancellationToken cancellationToken = new CancellationToken())
{
Check.NotNullOrWhiteSpace(entity.OrderNumber, nameof(entity.OrderNumber));
return base.InsertAsync(entity, autoSave, cancellationToken);
}
}
}

1
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Web/Pages/EShop/Orders/Orders/Order/Index.cshtml

@ -44,6 +44,7 @@
<thead>
<tr>
<th>@L["Actions"]</th>
<th>@L["OrderOrderNumber"]</th>
<th>@L["OrderCustomerUserId"]</th>
<th>@L["OrderOrderStatus"]</th>
<th>@L["OrderTotalPrice"]</th>

1
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Web/Pages/EShop/Orders/Orders/Order/index.js

@ -27,6 +27,7 @@ $(function () {
]
}
},
{ data: "orderNumber" },
{ data: "customerUserId" },
{ data: "orderStatus" },
{ data: "totalPrice" },

3540
samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/20200612085218_AddedOrderNumberProperty.Designer.cs

File diff suppressed because it is too large

33
samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/20200612085218_AddedOrderNumberProperty.cs

@ -0,0 +1,33 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace EShopSample.Migrations
{
public partial class AddedOrderNumberProperty : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "OrderNumber",
table: "EShopOrdersOrders",
nullable: true);
migrationBuilder.CreateIndex(
name: "IX_EShopOrdersOrders_OrderNumber",
table: "EShopOrdersOrders",
column: "OrderNumber",
unique: true,
filter: "[OrderNumber] IS NOT NULL");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(
name: "IX_EShopOrdersOrders_OrderNumber",
table: "EShopOrdersOrders");
migrationBuilder.DropColumn(
name: "OrderNumber",
table: "EShopOrdersOrders");
}
}
}

7
samples/EShopSample/aspnet-core/src/EShopSample.EntityFrameworkCore.DbMigrations/Migrations/EShopSampleMigrationsDbContextModelSnapshot.cs

@ -81,6 +81,9 @@ namespace EShopSample.Migrations
.HasColumnName("LastModifierId")
.HasColumnType("uniqueidentifier");
b.Property<string>("OrderNumber")
.HasColumnType("nvarchar(450)");
b.Property<int>("OrderStatus")
.HasColumnType("int");
@ -120,6 +123,10 @@ namespace EShopSample.Migrations
b.HasKey("Id");
b.HasIndex("OrderNumber")
.IsUnique()
.HasFilter("[OrderNumber] IS NOT NULL");
b.ToTable("EShopOrdersOrders");
});

Loading…
Cancel
Save