From c5975fbeabb9e6d21e5ac62074088cb0ba09c56b Mon Sep 17 00:00:00 2001
From: shanji <18996038927@163.com>
Date: Tue, 8 Mar 2022 18:57:52 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E9=87=87=E8=B4=AD=E6=8E=A5?=
=?UTF-8?q?=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/PurchaseOrderController.cs | 2 +-
.../BBWY.Server.Business.csproj | 10 +-
.../PurchaseOrder/PurchaseOrderBusiness.cs | 108 ++++++++++++++++++
.../Db/Order/OrderDropShipping.cs | 6 +-
.../Db/PurchaseOrder/PurchaseOrder.cs | 3 +
.../CreateOnlinePurchaseOrderRequest.cs | 7 ++
6 files changed, 128 insertions(+), 8 deletions(-)
diff --git a/BBWY.Server.API/Controllers/PurchaseOrderController.cs b/BBWY.Server.API/Controllers/PurchaseOrderController.cs
index 9c5f9f3d..c16f3d42 100644
--- a/BBWY.Server.API/Controllers/PurchaseOrderController.cs
+++ b/BBWY.Server.API/Controllers/PurchaseOrderController.cs
@@ -58,7 +58,7 @@ namespace BBWY.Server.API.Controllers
///
///
[HttpPost]
- public void FastCreateOrder(CreateOnlinePurchaseOrderRequest createOnlinePurchaseOrderRequest)
+ public void FastCreateOrder([FromBody]CreateOnlinePurchaseOrderRequest createOnlinePurchaseOrderRequest)
{
purchaseOrderBusiness.FastCreateOrder(createOnlinePurchaseOrderRequest);
}
diff --git a/BBWY.Server.Business/BBWY.Server.Business.csproj b/BBWY.Server.Business/BBWY.Server.Business.csproj
index 9c1f3f0e..58ecf8d7 100644
--- a/BBWY.Server.Business/BBWY.Server.Business.csproj
+++ b/BBWY.Server.Business/BBWY.Server.Business.csproj
@@ -5,6 +5,12 @@
True
+
+
+
+
+
+
@@ -21,8 +27,4 @@
-
-
-
-
diff --git a/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
index b74a6378..c717fe86 100644
--- a/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
+++ b/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
@@ -2,6 +2,7 @@
using BBWY.Common.Models;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto;
+using FreeSql;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -74,10 +75,117 @@ namespace BBWY.Server.Business
{
if (createOnlinePurchaseOrderRequest.Platform != Model.Enums.Platform.阿里巴巴)
throw new NotImplementedException();
+ var dbOrder = fsql.Select(createOnlinePurchaseOrderRequest.OrderId).ToOne();
+ if (dbOrder == null)
+ throw new BusinessException("订单不存在");
+ if (dbOrder.OrderState != Model.Enums.OrderState.等待采购)
+ throw new BusinessException("只能为等待采购的订单进行采购");
+ var orderSku = fsql.Select().Where(osku => osku.OrderId == createOnlinePurchaseOrderRequest.OrderId).ToOne();
+ if (orderSku == null)
+ throw new BusinessException("订单Sku不存在");
+
var createOrderResponse = platformSDKBusinessList.FirstOrDefault(p => p.Platform == createOnlinePurchaseOrderRequest.Platform)
.FastCreateOrder(createOnlinePurchaseOrderRequest);
+ IInsert insertPurchaseOrder = null;
+ IInsert insertOrderCostDetail = null;
+ IInsert insertOrderCost = null;
+ IInsert insertOrderDropShipping = null;
+
+ #region 采购单
+ var purchaseOrder = new PurchaseOrder()
+ {
+ Id = idGenerator.NewLong(),
+ CreateTime = DateTime.Now,
+ ProductId = orderSku.ProductId,
+ SkuId = orderSku.SkuId,
+ PurchaseMethod = Model.Enums.PurchaseMethod.线上采购,
+ PurchaseOrderId = createOrderResponse.PurchaseOrderId,
+ PurchasePlatform = createOnlinePurchaseOrderRequest.Platform,
+ PurchaseQuantity = orderSku.ItemTotal.Value,
+ RemainingQuantity = 0,
+ ShopId = createOnlinePurchaseOrderRequest.ShopId,
+ SingleConsumableAmount = 0,
+ SingleDeliveryFreight = 0,
+ SingleFirstFreight = 0,
+ SingleStorageAmount = 0,
+ SingleOperationAmount = 0,
+ SingleSkuAmount = createOrderResponse.ProductAmount / orderSku.ItemTotal.Value,
+ SingleFreight = createOrderResponse.FreightAmount / orderSku.ItemTotal.Value,
+ StorageType = Model.Enums.StorageType.代发
+ };
+ insertPurchaseOrder = fsql.Insert(purchaseOrder);
+ #endregion
+
+ #region 成本明细
+ var orderCostDetail = new OrderCostDetail()
+ {
+ Id = idGenerator.NewLong(),
+ ConsumableAmount = 0,
+ CreateTime = DateTime.Now,
+ DeductionQuantity = orderSku.ItemTotal.Value,
+ DeliveryExpressFreight = 0,
+ FirstFreight = 0,
+ OperationAmount = 0,
+ OrderId = createOnlinePurchaseOrderRequest.OrderId,
+ ProductId = orderSku.ProductId,
+ PurchaseFreight = createOrderResponse.FreightAmount,
+ PurchaseOrderPKId = purchaseOrder.Id,
+ SkuAmount = createOrderResponse.ProductAmount,
+ SkuId = orderSku.SkuId,
+ StorageAmount = 0,
+ UnitCost = purchaseOrder.UnitCost,
+ TotalCost = createOrderResponse.TotalAmount //purchaseOrder.UnitCost * orderSku.ItemTotal.Value
+ };
+ insertOrderCostDetail = fsql.Insert(orderCostDetail);
+ #endregion
+
+ #region 订单成本
+ var orderCost = new OrderCost()
+ {
+ OrderId = orderSku.OrderId,
+ CreateTime = DateTime.Now,
+ DeliveryExpressFreight = 0,
+ IsManualEdited = false,
+ PlatformCommissionRatio = 0.05M,
+ PreferentialAmount = dbOrder.PreferentialAmount,
+ SDCommissionAmount = 0,
+ PurchaseAmount = createOrderResponse.TotalAmount
+ };
+ orderCost.PlatformCommissionAmount = dbOrder.OrderSellerPrice * orderCost.PlatformCommissionRatio;
+ orderCost.Profit = dbOrder.OrderSellerPrice +
+ dbOrder.FreightPrice -
+ orderCost.PurchaseAmount -
+ orderCost.DeliveryExpressFreight -
+ orderCost.PlatformCommissionAmount;
+ insertOrderCost = fsql.Insert(orderCost);
+ #endregion
+
+ #region 采购信息
+ var orderDropShipping = new OrderDropShipping()
+ {
+ OrderId = createOnlinePurchaseOrderRequest.OrderId,
+ BuyerAccount = createOnlinePurchaseOrderRequest.BuyerAccount,
+ SellerAccount = createOnlinePurchaseOrderRequest.SellerAccount,
+ CreateTime = DateTime.Now,
+ DeliveryFreight = 0,
+ PurchaseAmount = createOrderResponse.TotalAmount,
+ PurchaseOrderId = createOrderResponse.PurchaseOrderId,
+ PurchasePlatform = createOnlinePurchaseOrderRequest.Platform
+ };
+ insertOrderDropShipping = fsql.Insert(orderDropShipping);
+ #endregion
+ fsql.Transaction(() =>
+ {
+ insertPurchaseOrder.ExecuteAffrows();
+ insertOrderCostDetail.ExecuteAffrows();
+ insertOrderCost.ExecuteAffrows();
+ insertOrderDropShipping.ExecuteAffrows();
+ fsql.Update(createOnlinePurchaseOrderRequest.OrderId).Set(o => o.OrderState, Model.Enums.OrderState.待出库)
+ .Set(o => o.StorageType, Model.Enums.StorageType.代发)
+ .ExecuteAffrows();
+ });
}
}
}
diff --git a/BBWY.Server.Model/Db/Order/OrderDropShipping.cs b/BBWY.Server.Model/Db/Order/OrderDropShipping.cs
index f7651ae1..557ec12f 100644
--- a/BBWY.Server.Model/Db/Order/OrderDropShipping.cs
+++ b/BBWY.Server.Model/Db/Order/OrderDropShipping.cs
@@ -17,7 +17,7 @@ namespace BBWY.Server.Model.Db
///
/// 买家账号
///
- [Column(StringLength = 50)]
+ [Column(StringLength = 200)]
public string BuyerAccount { get; set; }
[Column(DbType = "datetime")]
@@ -38,7 +38,7 @@ namespace BBWY.Server.Model.Db
///
/// 采购单号
///
- [Column(StringLength = 50)]
+ [Column(StringLength = 200)]
public string PurchaseOrderId { get; set; }
///
@@ -50,7 +50,7 @@ namespace BBWY.Server.Model.Db
///
/// 卖家账号
///
- [Column(StringLength = 50)]
+ [Column(StringLength = 200)]
public string SellerAccount { get; set; }
}
diff --git a/BBWY.Server.Model/Db/PurchaseOrder/PurchaseOrder.cs b/BBWY.Server.Model/Db/PurchaseOrder/PurchaseOrder.cs
index fd730ea0..9352327f 100644
--- a/BBWY.Server.Model/Db/PurchaseOrder/PurchaseOrder.cs
+++ b/BBWY.Server.Model/Db/PurchaseOrder/PurchaseOrder.cs
@@ -29,6 +29,9 @@ namespace BBWY.Server.Model.Db
//[Column(DbType = "decimal(20,2)")]
//public decimal Freight { get; set; } = 0.00M;
+ ///
+ /// 产品Id
+ ///
[Column(StringLength = 50)]
public string ProductId { get; set; }
diff --git a/BBWY.Server.Model/Dto/Request/PurchaseOrder/OnlinePurchase/CreateOnlinePurchaseOrderRequest.cs b/BBWY.Server.Model/Dto/Request/PurchaseOrder/OnlinePurchase/CreateOnlinePurchaseOrderRequest.cs
index 5f7fd53e..a73ba736 100644
--- a/BBWY.Server.Model/Dto/Request/PurchaseOrder/OnlinePurchase/CreateOnlinePurchaseOrderRequest.cs
+++ b/BBWY.Server.Model/Dto/Request/PurchaseOrder/OnlinePurchase/CreateOnlinePurchaseOrderRequest.cs
@@ -21,5 +21,12 @@
/// 店铺Id
///
public long ShopId { get; set; }
+
+ ///
+ /// 买家账号
+ ///
+ public string BuyerAccount { get; set; }
+
+ public string SellerAccount { get; set; }
}
}