From 33584967eae239bbe25c5a5aab861bf80a797082 Mon Sep 17 00:00:00 2001
From: shanj <18996038927@163.com>
Date: Mon, 11 Apr 2022 05:43:50 +0800
Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A4=9Asku=E4=B8=8B?=
=?UTF-8?q?=E5=8D=95=20=E6=9C=AA=E5=AE=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/PurchaseOrderController.cs | 11 +-
.../PurchaseOrder/PurchaseOrderBusiness.cs | 156 ++++++++++++++++--
.../Db/PurchaseOrder/PurchaseOrderDetail.cs | 21 +++
.../OnlinePurchase/CargoParamRequest.cs | 11 ++
4 files changed, 179 insertions(+), 20 deletions(-)
create mode 100644 BBWY.Server.Model/Db/PurchaseOrder/PurchaseOrderDetail.cs
diff --git a/BBWY.Server.API/Controllers/PurchaseOrderController.cs b/BBWY.Server.API/Controllers/PurchaseOrderController.cs
index 1c341d5d..23de536e 100644
--- a/BBWY.Server.API/Controllers/PurchaseOrderController.cs
+++ b/BBWY.Server.API/Controllers/PurchaseOrderController.cs
@@ -54,7 +54,7 @@ namespace BBWY.Server.API.Controllers
}
///
- /// 创建在线采购单
+ /// 创建在线采购单,即将废弃
///
///
[HttpPost]
@@ -64,14 +64,13 @@ namespace BBWY.Server.API.Controllers
}
///
- /// 1688发货回调(即将废弃)
+ /// 创建在线采购单
///
- ///
- ///
+ ///
[HttpPost]
- public void DeliveryCallbackFrom1688([FromForm] string message,[FromForm] string _aop_signature)
+ public void NewFastCreateOrder([FromBody] CreateOnlinePurchaseOrderRequest createOnlinePurchaseOrderRequest)
{
- purchaseOrderBusiness.DeliveryCallbackFrom1688(message);
+ purchaseOrderBusiness.NewFastCreateOrder(createOnlinePurchaseOrderRequest);
}
///
diff --git a/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
index 0dcaffc2..9f7d5ddf 100644
--- a/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
+++ b/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
@@ -130,7 +130,7 @@ namespace BBWY.Server.Business
CreateTime = DateTime.Now,
ProductId = orderSku.ProductId,
SkuId = orderSku.SkuId,
- PurchaseMethod = Model.Enums.PurchaseMethod.线上采购,
+ PurchaseMethod = Enums.PurchaseMethod.线上采购,
PurchaseOrderId = createOrderResponse.PurchaseOrderId,
PurchasePlatform = createOnlinePurchaseOrderRequest.Platform,
PurchaseQuantity = orderSku.ItemTotal.Value,
@@ -143,7 +143,7 @@ namespace BBWY.Server.Business
SingleOperationAmount = 0,
SingleSkuAmount = createOrderResponse.ProductAmount / orderSku.ItemTotal.Value,
SingleFreight = createOrderResponse.FreightAmount / orderSku.ItemTotal.Value,
- StorageType = Model.Enums.StorageType.代发
+ StorageType = Enums.StorageType.代发
};
insertPurchaseOrder = fsql.Insert(purchaseOrder);
#endregion
@@ -220,6 +220,146 @@ namespace BBWY.Server.Business
});
}
+ public void NewFastCreateOrder(CreateOnlinePurchaseOrderRequest createOnlinePurchaseOrderRequest)
+ {
+ if (createOnlinePurchaseOrderRequest.Platform != 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 orderSkus = fsql.Select().Where(osku => osku.OrderId == createOnlinePurchaseOrderRequest.OrderId).ToList();
+
+ var createOrderResponse = platformSDKBusinessList.FirstOrDefault(p => p.Platform == createOnlinePurchaseOrderRequest.Platform)
+ .FastCreateOrder(createOnlinePurchaseOrderRequest);
+
+
+ var purchaseOrderSimpleInfo = platformSDKBusinessList.FirstOrDefault(p => p.Platform == createOnlinePurchaseOrderRequest.Platform).GetOrderSimpleInfo(new GetOrderInfoRequest()
+ {
+ AppKey = createOnlinePurchaseOrderRequest.AppKey,
+ AppSecret = createOnlinePurchaseOrderRequest.AppSecret,
+ AppToken = createOnlinePurchaseOrderRequest.AppToken,
+ OrderId = createOrderResponse.PurchaseOrderId,
+ Platform = createOnlinePurchaseOrderRequest.Platform
+ });
+
+ List insertPurchaseOrders = new List();
+ List insertOrderCostDetails = new List();
+ List insertPurchaseOrderDetails = new List();
+
+ IInsert insertOrderCost = null;
+ IInsert insertOrderDropShipping = null;
+ foreach (var orderSku in orderSkus)
+ {
+ #region 计算当前sku的采购成本和采购运费
+ var currentOrderSkuProductAmount = 0M; //采购成本
+ var currentOrderSkuCargoParamList = createOnlinePurchaseOrderRequest.CargoParamList.Where(p => p.BelongSkuId == orderSku.SkuId); //找当前skuId的采购skuId
+ currentOrderSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => currentOrderSkuCargoParamList.Any(p1 => p1.SkuId == p.SkuId))
+ ?.Sum(p => p.ProductAmount) ?? 0M;
+
+ var currentOrderSkuFreightAmount = purchaseOrderSimpleInfo.FreightAmount / orderSkus.Count(); //采购运费(按sku数均分)
+ #endregion
+
+ #region 采购单
+ var purchaseOrder = new PurchaseOrder()
+ {
+ Id = idGenerator.NewLong(),
+ CreateTime = DateTime.Now,
+ ProductId = orderSku.ProductId,
+ SkuId = orderSku.SkuId,
+ PurchaseMethod = 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 = currentOrderSkuProductAmount / orderSku.ItemTotal.Value,
+ SingleFreight = currentOrderSkuFreightAmount / orderSku.ItemTotal.Value,
+ StorageType = Enums.StorageType.代发
+ };
+ insertPurchaseOrders.Add(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 = currentOrderSkuFreightAmount,
+ PurchaseOrderPKId = purchaseOrder.Id,
+ SkuAmount = currentOrderSkuProductAmount,
+ SkuId = orderSku.SkuId,
+ StorageAmount = 0,
+ UnitCost = purchaseOrder.UnitCost,
+ TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount//purchaseOrder.UnitCost * orderSku.ItemTotal.Value
+ };
+ insertOrderCostDetail = fsql.Insert(orderCostDetail);
+ #endregion
+ }
+
+ #region 订单成本
+ var orderCost = new OrderCost()
+ {
+ OrderId = createOnlinePurchaseOrderRequest.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,
+ PurchaseAccountId = createOnlinePurchaseOrderRequest.PurchaseAccountId,
+ 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).SetIf(dbOrder.OrderState == Enums.OrderState.等待采购, o => o.OrderState, Model.Enums.OrderState.待出库)
+ .Set(o => o.StorageType, Model.Enums.StorageType.代发)
+ .ExecuteAffrows();
+ });
+ }
+
#region CallBack
#region 1688CallBack
@@ -242,18 +382,6 @@ namespace BBWY.Server.Business
}
}
- ///
- /// 1688发货回调(即将废弃)
- ///
- ///
- public void DeliveryCallbackFrom1688(string jsonStr)
- {
- logger.Info(jsonStr);
- var orderJObject = JObject.Parse(jsonStr);
- var purchaseOrderId = orderJObject["data"].Value("orderId");
- Task.Factory.StartNew(() => DeliveryCallback(purchaseOrderId, Enums.Platform.阿里巴巴), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
- }
-
///
/// 1688发货回调
///
diff --git a/BBWY.Server.Model/Db/PurchaseOrder/PurchaseOrderDetail.cs b/BBWY.Server.Model/Db/PurchaseOrder/PurchaseOrderDetail.cs
new file mode 100644
index 00000000..777ff209
--- /dev/null
+++ b/BBWY.Server.Model/Db/PurchaseOrder/PurchaseOrderDetail.cs
@@ -0,0 +1,21 @@
+using FreeSql.DataAnnotations;
+
+namespace BBWY.Server.Model.Db
+{
+
+ [Table(Name = "purchaseorderdetail", DisableSyncStructure = true)]
+ public partial class PurchaseOrderDetail {
+
+ [Column(IsPrimary = true)]
+ public long Id { get; set; }
+
+ [Column(StringLength = 50)]
+ public string OrderId { get; set; }
+
+ public long? PurchaseOrderPKId { get; set; }
+
+ [Column(StringLength = 50)]
+ public string PurchaseSkuId { get; set; }
+ }
+
+}
diff --git a/BBWY.Server.Model/Dto/Request/PurchaseOrder/OnlinePurchase/CargoParamRequest.cs b/BBWY.Server.Model/Dto/Request/PurchaseOrder/OnlinePurchase/CargoParamRequest.cs
index 6f6f13df..1327199a 100644
--- a/BBWY.Server.Model/Dto/Request/PurchaseOrder/OnlinePurchase/CargoParamRequest.cs
+++ b/BBWY.Server.Model/Dto/Request/PurchaseOrder/OnlinePurchase/CargoParamRequest.cs
@@ -6,9 +6,20 @@ namespace BBWY.Server.Model.Dto
{
public class CargoParamRequest
{
+ ///
+ /// 采购商品Id
+ ///
public string ProductId { get; set; }
+ ///
+ /// 采购SkuId
+ ///
public string SkuId { get; set; }
public string SpecId { get; set; }
public int Quantity { get; set; }
+
+ ///
+ /// 订单SkuId
+ ///
+ public string BelongSkuId { get; set; }
}
}