Browse Source

Added PaymentRequest data

pull/53/head
Galip Tolga Erdem 5 years ago
parent
commit
2479b2588f
  1. 2
      services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Orders/OrderConstants.cs
  2. 13
      services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs
  3. 3
      services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderItem.cs
  4. 12
      services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderManager.cs
  5. 1
      services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs
  6. 248
      services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220104093641_Added_Order_PaymentRequest_Info.Designer.cs
  7. 47
      services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220104093641_Added_Order_PaymentRequest_Info.cs
  8. 8
      services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/OrderingServiceDbContextModelSnapshot.cs

2
services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Orders/OrderConstants.cs

@ -4,4 +4,6 @@ public static class OrderConstants
{
public const int OrderPaymentTypeNameMaxLength = 128;
public const int OrderStatusNameMaxLength = 256;
public const int PaymentStatusMaxLength = 256;
}

13
services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs

@ -10,7 +10,8 @@ public class Order : AggregateRoot<Guid>
private int _orderStatusId;
public DateTime OrderDate { get; private set; }
public Guid? BuyerId { get; private set; }
public string PaymentMethodToken { get; private set; } // Payment token for validation
public Guid? PaymentRequestId { get; private set; }
public string PaymentStatus { get; private set; }
public Address Address { get; private set; }
public OrderStatus OrderStatus { get; private set; }
public List<OrderItem> OrderItems { get; private set; }
@ -19,14 +20,14 @@ public class Order : AggregateRoot<Guid>
{
}
internal Order(Guid id, Address address, Guid? buyerId = null, string paymentMethodToken = null) : base(id)
internal Order(Guid id, Address address, Guid? buyerId = null, Guid? paymentRequestId = null) : base(id)
{
_orderStatusId = OrderStatus.Placed.Id;
OrderStatus = OrderStatus.Placed;
OrderDate = DateTime.UtcNow;
Address = address;
BuyerId = buyerId;
PaymentMethodToken = paymentMethodToken;
PaymentRequestId = paymentRequestId;
PaymentStatus = "Waiting"; // TODO: magic string
OrderItems = new List<OrderItem>();
}
@ -37,7 +38,7 @@ public class Order : AggregateRoot<Guid>
return this;
}
public Order AddOrderItem(Guid productId, string productName, string productCode, decimal unitPrice,
public Order AddOrderItem(Guid id, Guid productId, string productName, string productCode, decimal unitPrice,
decimal discount, string pictureUrl, int units = 1)
{
var existingOrderForProduct = OrderItems.SingleOrDefault(o => o.ProductId == productId);
@ -53,7 +54,7 @@ public class Order : AggregateRoot<Guid>
}
else
{
var orderItem = new OrderItem(productId, productName, productCode, unitPrice, discount, pictureUrl, units);
var orderItem = new OrderItem(id, productId, productName, productCode, unitPrice, discount, pictureUrl, units);
OrderItems.Add(orderItem);
}

3
services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderItem.cs

@ -17,7 +17,8 @@ public class OrderItem : Entity<Guid>
protected OrderItem() { }
public OrderItem(Guid productId, [NotNull]string productName, [NotNull]string productCode, decimal unitPrice, decimal discount, [CanBeNull]string pictureUrl, int units = 1)
public OrderItem(Guid id, Guid productId, [NotNull]string productName, [NotNull]string productCode, decimal unitPrice, decimal discount, [CanBeNull]string pictureUrl, int units = 1)
: base(id)
{
if (units <= 0)
{

12
services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderManager.cs

@ -3,8 +3,10 @@ using System.Collections.Generic;
using System.Threading.Tasks;
using EShopOnAbp.OrderingService.Buyers;
using Volo.Abp;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Domain.Services;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.Uow;
namespace EShopOnAbp.OrderingService.Orders;
@ -13,15 +15,17 @@ public class OrderManager : DomainService
private readonly IOrderRepository _orderRepository;
private readonly IBuyerRepository _buyerRepository;
private readonly IDistributedEventBus _distributedEventBus;
private readonly UnitOfWorkManager _unitOfWorkManager;
public OrderManager(
IOrderRepository orderRepository,
IBuyerRepository buyerRepository,
IDistributedEventBus distributedEventBus)
IDistributedEventBus distributedEventBus, UnitOfWorkManager unitOfWorkManager)
{
_orderRepository = orderRepository;
_buyerRepository = buyerRepository;
_distributedEventBus = distributedEventBus;
_unitOfWorkManager = unitOfWorkManager;
}
public async Task<Order> CreateOrderAsync(
@ -44,6 +48,8 @@ public class OrderManager : DomainService
autoSave: true
);
var insertedBuyer = await _buyerRepository.GetAsync(buyer.Id, includeDetails: true);
// Create new order
Order order = new Order(
id: GuidGenerator.Create(),
@ -59,6 +65,7 @@ public class OrderManager : DomainService
foreach (var orderItem in orderItems)
{
order.AddOrderItem(
id: GuidGenerator.Create(),
productId: orderItem.productId,
productName: orderItem.productName,
productCode: orderItem.productCode,
@ -92,7 +99,8 @@ public class OrderManager : DomainService
.WithData("OrderId", orderId);
}
//Update order.PaymentMethodToken
//Update order.PaymentId
//Update order.PaymentStatus
order.SetOrderPaid();
return await _orderRepository.UpdateAsync(order);

1
services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs

@ -66,6 +66,7 @@ namespace EShopOnAbp.OrderingService.EntityFrameworkCore
b.Property<int>("_orderStatusId").UsePropertyAccessMode(PropertyAccessMode.Field)
.HasColumnName("OrderStatusId")
.IsRequired();
b.Property(q => q.PaymentStatus).HasMaxLength(OrderConstants.PaymentStatusMaxLength);
b.HasOne<Buyer>().WithMany().HasForeignKey(q => q.BuyerId).IsRequired(false);
b.HasOne(q => q.OrderStatus).WithMany().HasForeignKey("_orderStatusId");

248
services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220104093641_Added_Order_PaymentRequest_Info.Designer.cs

@ -0,0 +1,248 @@
// <auto-generated />
using System;
using EShopOnAbp.OrderingService.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using Volo.Abp.EntityFrameworkCore;
#nullable disable
namespace EShopOnAbp.OrderingService.Migrations
{
[DbContext(typeof(OrderingServiceDbContext))]
[Migration("20220104093641_Added_Order_PaymentRequest_Info")]
partial class Added_Order_PaymentRequest_Info
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql)
.HasAnnotation("ProductVersion", "6.0.0")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("EShopOnAbp.OrderingService.Buyers.Buyer", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uuid");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.HasMaxLength(40)
.HasColumnType("character varying(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<string>("Email")
.IsRequired()
.HasColumnType("text");
b.Property<string>("ExtraProperties")
.HasColumnType("text")
.HasColumnName("ExtraProperties");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<int>("_paymentTypeId")
.HasColumnType("integer")
.HasColumnName("PaymentTypeId");
b.HasKey("Id");
b.HasIndex("_paymentTypeId");
b.ToTable("Buyers", (string)null);
});
modelBuilder.Entity("EShopOnAbp.OrderingService.Buyers.PaymentType", b =>
{
b.Property<int>("Id")
.HasColumnType("integer")
.HasDefaultValue(1);
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)");
b.HasKey("Id");
b.ToTable("PaymentTypes", (string)null);
});
modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.Order", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uuid");
b.Property<Guid?>("BuyerId")
.HasColumnType("uuid");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.HasMaxLength(40)
.HasColumnType("character varying(40)")
.HasColumnName("ConcurrencyStamp");
b.Property<string>("ExtraProperties")
.HasColumnType("text")
.HasColumnName("ExtraProperties");
b.Property<DateTime>("OrderDate")
.HasColumnType("timestamp with time zone");
b.Property<Guid?>("PaymentRequestId")
.HasColumnType("uuid");
b.Property<string>("PaymentStatus")
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<int>("_orderStatusId")
.HasColumnType("integer")
.HasColumnName("OrderStatusId");
b.HasKey("Id");
b.HasIndex("BuyerId");
b.HasIndex("Id");
b.HasIndex("_orderStatusId");
b.ToTable("Orders", (string)null);
});
modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.OrderItem", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uuid");
b.Property<decimal>("Discount")
.HasColumnType("numeric");
b.Property<Guid>("OrderId")
.HasColumnType("uuid");
b.Property<string>("PictureUrl")
.HasColumnType("text");
b.Property<string>("ProductCode")
.IsRequired()
.HasColumnType("text");
b.Property<Guid>("ProductId")
.HasColumnType("uuid");
b.Property<string>("ProductName")
.IsRequired()
.HasColumnType("text");
b.Property<decimal>("UnitPrice")
.HasColumnType("numeric");
b.Property<int>("Units")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("OrderId");
b.ToTable("OrderItems", (string)null);
});
modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.OrderStatus", b =>
{
b.Property<int>("Id")
.HasColumnType("integer")
.HasDefaultValue(1);
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.HasKey("Id");
b.ToTable("OrderStatus", (string)null);
});
modelBuilder.Entity("EShopOnAbp.OrderingService.Buyers.Buyer", b =>
{
b.HasOne("EShopOnAbp.OrderingService.Buyers.PaymentType", "PaymentType")
.WithMany()
.HasForeignKey("_paymentTypeId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("PaymentType");
});
modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.Order", b =>
{
b.HasOne("EShopOnAbp.OrderingService.Buyers.Buyer", null)
.WithMany()
.HasForeignKey("BuyerId");
b.HasOne("EShopOnAbp.OrderingService.Orders.OrderStatus", "OrderStatus")
.WithMany()
.HasForeignKey("_orderStatusId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.OwnsOne("EShopOnAbp.OrderingService.Orders.Address", "Address", b1 =>
{
b1.Property<Guid>("OrderId")
.HasColumnType("uuid");
b1.Property<string>("City")
.HasColumnType("text");
b1.Property<string>("Country")
.HasColumnType("text");
b1.Property<string>("Description")
.HasColumnType("text");
b1.Property<string>("Street")
.HasColumnType("text");
b1.Property<string>("ZipCode")
.HasColumnType("text");
b1.HasKey("OrderId");
b1.ToTable("Orders");
b1.WithOwner()
.HasForeignKey("OrderId");
});
b.Navigation("Address");
b.Navigation("OrderStatus");
});
modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.OrderItem", b =>
{
b.HasOne("EShopOnAbp.OrderingService.Orders.Order", null)
.WithMany("OrderItems")
.HasForeignKey("OrderId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.Order", b =>
{
b.Navigation("OrderItems");
});
#pragma warning restore 612, 618
}
}
}

47
services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220104093641_Added_Order_PaymentRequest_Info.cs

@ -0,0 +1,47 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace EShopOnAbp.OrderingService.Migrations
{
public partial class Added_Order_PaymentRequest_Info : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "PaymentMethodToken",
table: "Orders");
migrationBuilder.AddColumn<Guid>(
name: "PaymentRequestId",
table: "Orders",
type: "uuid",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "PaymentStatus",
table: "Orders",
type: "character varying(256)",
maxLength: 256,
nullable: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "PaymentRequestId",
table: "Orders");
migrationBuilder.DropColumn(
name: "PaymentStatus",
table: "Orders");
migrationBuilder.AddColumn<string>(
name: "PaymentMethodToken",
table: "Orders",
type: "text",
nullable: true);
}
}
}

8
services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/OrderingServiceDbContextModelSnapshot.cs

@ -95,8 +95,12 @@ namespace EShopOnAbp.OrderingService.Migrations
b.Property<DateTime>("OrderDate")
.HasColumnType("timestamp with time zone");
b.Property<string>("PaymentMethodToken")
.HasColumnType("text");
b.Property<Guid?>("PaymentRequestId")
.HasColumnType("uuid");
b.Property<string>("PaymentStatus")
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<int>("_orderStatusId")
.HasColumnType("integer")

Loading…
Cancel
Save