From 25795b92e482d5425ada649b492a2f3de3fbb82b Mon Sep 17 00:00:00 2001
From: shanj <18996038927@163.com>
Date: Wed, 26 Jul 2023 01:09:08 +0800
Subject: [PATCH] =?UTF-8?q?1.=E5=9C=A81688=E6=94=B9=E4=BB=B7=E9=80=9A?=
=?UTF-8?q?=E7=9F=A5=E5=AF=B9=E6=8E=A5=E6=8B=B3=E6=8E=A2=E6=94=B9=E4=BB=B7?=
=?UTF-8?q?=E5=81=9A=E5=B9=B3=E4=BB=B7=E5=A4=84=E7=90=86=202.=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E6=8B=B3=E6=8E=A2=E5=95=86=E5=93=81=E6=94=B9=E4=BB=B7?=
=?UTF-8?q?=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/ProductController.cs | 10 ++
BBWYB.Server.API/appsettings.json | 8 +-
.../Product/ProductBusiness.cs | 5 +
.../PurchaseOrder/PurchaseOrderBusiness.cs | 111 ++++++++++++++----
.../QuanTan_Supplier_ProductClient.cs | 5 +
...uanTan_Supplier_EditProductPriceRequest.cs | 18 +++
.../Client/Base/OP_PlatformClient.cs | 5 +
.../Client/Impl/OP_QuanTanClient.cs | 16 +++
.../Product/OP_EditProductPriceRequest.cs | 16 +++
9 files changed, 166 insertions(+), 28 deletions(-)
create mode 100644 QuanTan.SDK/Models/Supplier/Request/Product/QuanTan_Supplier_EditProductPriceRequest.cs
create mode 100644 SDKAdapter/OperationPlatform/Models/Request/Product/OP_EditProductPriceRequest.cs
diff --git a/BBWYB.Server.API/Controllers/ProductController.cs b/BBWYB.Server.API/Controllers/ProductController.cs
index 7d34e71..3ed179e 100644
--- a/BBWYB.Server.API/Controllers/ProductController.cs
+++ b/BBWYB.Server.API/Controllers/ProductController.cs
@@ -33,5 +33,15 @@ namespace BBWYB.Server.API.Controllers
{
return productBusiness.GetProductSkuList(request);
}
+
+ ///
+ /// 修改商品价格
+ ///
+ ///
+ [HttpPost]
+ public void EditProductPrice([FromBody] OP_EditProductPriceRequest request)
+ {
+ productBusiness.EditProductPrice(request);
+ }
}
}
diff --git a/BBWYB.Server.API/appsettings.json b/BBWYB.Server.API/appsettings.json
index 9be7fb6..9a15df4 100644
--- a/BBWYB.Server.API/appsettings.json
+++ b/BBWYB.Server.API/appsettings.json
@@ -15,9 +15,9 @@
"AllowedSwagger": true,
"Secret": "D96BFA5B-F2AF-45BC-9342-5A55C3F9BBB0",
"ApiVersionRequirements": [
- {
- "Api": "/api/purchaseOrder/createpurchaseorder",
- "MinimumVersion": 10017
- }
+ //{
+ // "Api": "/api/purchaseOrder/createpurchaseorder",
+ // "MinimumVersion": 10017
+ //}
]
}
diff --git a/BBWYB.Server.Business/Product/ProductBusiness.cs b/BBWYB.Server.Business/Product/ProductBusiness.cs
index 39d0d55..0d644cf 100644
--- a/BBWYB.Server.Business/Product/ProductBusiness.cs
+++ b/BBWYB.Server.Business/Product/ProductBusiness.cs
@@ -24,5 +24,10 @@ namespace BBWYB.Server.Business
{
return opPlatformClientFactory.GetClient(request.Platform).GetProductSkuList(request);
}
+
+ public void EditProductPrice(OP_EditProductPriceRequest request)
+ {
+ opPlatformClientFactory.GetClient(request.Platform).EditProductPrice(request);
+ }
}
}
diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
index cb2edf7..a661ad6 100644
--- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
+++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
@@ -14,6 +14,8 @@ using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SDKAdapter;
+using SDKAdapter.OperationPlatform.Client;
+using SDKAdapter.OperationPlatform.Models;
using SDKAdapter.PurchasePlatform.Client;
using SDKAdapter.PurchasePlatform.Models;
using System.Text;
@@ -32,6 +34,7 @@ namespace BBWYB.Server.Business
private Lazy qiKuManagerLazy;
private Lazy restApiServiceLazy;
private Lazy jdBusinessLazy;
+ private Lazy opPlatformClientFactoryLazy;
private PP_PlatformClientFactory ppPlatformClientFactory => pplatformClientFactoryLazy.Value;
private TaskSchedulerManager taskSchedulerManager => taskSchedulerManagerLazy.Value;
@@ -41,6 +44,7 @@ namespace BBWYB.Server.Business
private DingDingBusiness dingDingBusiness => dingDingBusinessLazy.Value;
private QiKuManager qiKuManager => qiKuManagerLazy.Value;
private RestApiService restApiService => restApiServiceLazy.Value;
+ private OP_PlatformClientFactory opPlatformClientFactory => opPlatformClientFactoryLazy.Value;
private JDBusiness jdBusiness => jdBusinessLazy.Value;
@@ -60,6 +64,8 @@ namespace BBWYB.Server.Business
qiKuManagerLazy = new Lazy(() => serviceProvider.GetService());
restApiServiceLazy = new Lazy(() => serviceProvider.GetService());
jdBusinessLazy = new Lazy(() => serviceProvider.GetService());
+ opPlatformClientFactoryLazy = new Lazy(() => serviceProvider.GetService());
+
cantPurchaseOrderStateList = new List()
{
Enums.OrderState.已取消,
@@ -2369,8 +2375,7 @@ namespace BBWYB.Server.Business
///
private void OrderPriceModificationCallback(string purchaseOrderId, Enums.Platform callbackPlatform)
{
- string currentProgress = string.Empty;
-
+ bool isEditOrderPrice = true;
try
{
var orderPurchaseInfo = fsql.Select().Where(opi => opi.PurchaseOrderId == purchaseOrderId).ToOne();
@@ -2386,6 +2391,8 @@ namespace BBWYB.Server.Business
if (dbOrderCost == null)
throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的成本");
+ var shop = fsqlManager.MDSfsql.Select().Where(s => s.ShopId == dbOrder.ShopId.ToString()).ToOne();
+
var dbOrderCostDetails = fsql.Select().Where(ocd => ocd.OrderId == dbOrder.Id && ocd.IsEnabled == true).ToList();
if (dbOrderCostDetails.Count() == 0)
throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的明细成本");
@@ -2395,23 +2402,34 @@ namespace BBWYB.Server.Business
if (dbOrderPurchaseInfoList.Count() == 0)
throw new Exception($"采购单{purchaseOrderId}-未查询到订单{orderPurchaseInfo.OrderId}的采购单集合");
+ isEditOrderPrice = dbOrderPurchaseInfoList.Count() == dbOrderPurchaseInfoList.Count(opi => opi.PurchasePlatform == Enums.Platform.阿里巴巴 &&
+ opi.PurchaseMethod == Enums.PurchaseMethod.线上采购);
+
var dbPurchaseOrderIdList = dbOrderPurchaseInfoList.Select(x => x.PurchaseOrderId).ToList();
var dbOrderPurchaseRelationInfos = fsql.Select().Where(x => dbPurchaseOrderIdList.Contains(x.PurchaseOrderId)).ToList();
if (dbOrderPurchaseRelationInfos.Count() == 0)
- throw new Exception($"采购单{purchaseOrderId}-未查询到采购单关联明细,手动关联的采购单不支持改价");
+ throw new Exception($"采购单{purchaseOrderId}-未查询到采购单关联明细");
var dbOrderSkus = fsql.Select().Where(osku => osku.OrderId == orderPurchaseInfo.OrderId).ToList();
List> updateOrderCostDetailList = new List>();
IUpdate updateOrderCost = null;
- var client = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.阿里巴巴);
+ IList> updateOrderSkuList = new List>();
+ IUpdate updateOrder = null;
+
+ IList op_EditPriceSkuRequests = new List();
+
+ var ppclient = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.阿里巴巴);
var totalPurchaseProductAmount = 0M;
var totalPurchaseFreight = 0M;
foreach (var opi in dbOrderPurchaseInfoList)
{
- var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest()
+ if (opi.PurchasePlatform != Enums.Platform.阿里巴巴)
+ continue;
+
+ var purchaseOrderSimpleInfo = ppclient.QueryOrderDetail(new PP_QueryOrderDetailRequest()
{
AppKey = purchaseAccount.AppKey,
AppSecret = purchaseAccount.AppSecret,
@@ -2429,6 +2447,7 @@ namespace BBWYB.Server.Business
foreach (var belongSkuGroup in belongSkuGroups)
{
var belongSkuId = belongSkuGroup.Key;
+
var currentOrderSkuCargoParamList = belongSkuGroup.ToList(); //找当前skuId的采购skuId
var currentOrderSkuProductAmount = 0M; //采购成本
var currentSkuTotalPurchaseQuantity = currentOrderSkuCargoParamList.Sum(x => x.Quantity); //当前skuId的采购数量总和
@@ -2444,12 +2463,26 @@ namespace BBWYB.Server.Business
currentOrderSkuProductAmount += currentPurchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity.Value / currentPurchaseSkuTotalQuantity);
}
- var dbOrderSkuDetail = dbOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == belongSkuId);
+ #region 订单sku平价
var orderSku = dbOrderSkus.FirstOrDefault(osku => osku.SkuId == belongSkuId);
- //dbOrderSkuDetail.SkuAmount = currentOrderSkuProductAmount;
- //dbOrderSkuDetail.PurchaseFreight = currentOrderSkuFreightAmount;
- //dbOrderSkuDetail.TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount;
+ if (isEditOrderPrice)
+ {
+ orderSku.Price = currentOrderSkuProductAmount / orderSku.ItemTotal;
+ orderSku.BuyerPayFreight = currentPurchaseFreight;
+ op_EditPriceSkuRequests.Add(new OP_EditPriceSkuRequest()
+ {
+ Freight = currentPurchaseFreight ?? 0M,
+ InPackAmountPrice = orderSku.InPackAmount ?? 0M,
+ OrderSkuId = orderSku.Id.ToString(),
+ Price = orderSku.Price ?? 0M,
+ SkuId = orderSku.SkuId
+ });
+ updateOrderSkuList.Add(fsql.Update(orderSku.Id).Set(osku => osku.Price, orderSku.Price)
+ .Set(osku => osku.BuyerPayFreight, orderSku.BuyerPayFreight));
+ }
+ #endregion
+ var dbOrderSkuDetail = dbOrderCostDetails.FirstOrDefault(ocd => ocd.SkuId == belongSkuId && ocd.PurchaseOrderId == opi.PurchaseOrderId);
dbOrderSkuDetail.CalculationOrderCostDetailCostAndProfit(orderSku.Price.Value * orderSku.ItemTotal.Value,
orderSku.BuyerPayFreight ?? 0M,
orderSku.InPackAmount ?? 0M,
@@ -2459,31 +2492,61 @@ namespace BBWYB.Server.Business
dbOrderSkuDetail.DeliveryExpressFreight ?? 0M);
updateOrderCostDetailList.Add(fsql.Update().SetSource(dbOrderSkuDetail));
}
+ }
+ if (isEditOrderPrice)
+ {
+ dbOrder.OrderTotalPrice = totalPurchaseProductAmount + totalPurchaseFreight;
+ dbOrder.OrderSellerPrice = totalPurchaseProductAmount;
+ dbOrder.FreightPrice = totalPurchaseFreight;
+ updateOrder = fsql.Update(dbOrder.Id).Set(o => o.OrderTotalPrice, dbOrder.OrderTotalPrice)
+ .Set(o => o.OrderSellerPrice, dbOrder.OrderSellerPrice)
+ .Set(o => o.FreightPrice, dbOrder.FreightPrice);
+ }
- //dbOrderCost.TotalCost = dbOrderCost.PurchaseAmount = totalPurchaseAmount;
- //dbOrderCost.Profit = dbOrder.OrderTotalPrice -
- // dbOrderCost.PurchaseAmount -
- // dbOrderCost.DeliveryExpressFreight;
+ dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice ?? 0M,
+ totalPurchaseProductAmount,
+ totalPurchaseFreight,
+ dbOrderCostDetails.Sum(ocd => ocd.OutPackAmount ?? 0M),
+ dbOrderCostDetails.Sum(ocd => ocd.DeliveryExpressFreight ?? 0M));
+ updateOrderCost = fsql.Update().SetSource(dbOrderCost);
+ fsql.Transaction(() =>
+ {
+ foreach (var update in updateOrderCostDetailList)
+ update.ExecuteAffrows();
+ updateOrderCost?.ExecuteAffrows();
+ foreach (var update in updateOrderSkuList)
+ update.ExecuteAffrows();
+ updateOrder?.ExecuteAffrows();
+ });
- dbOrderCost.CalculationOrderCostCostAndProfit(dbOrder.OrderTotalPrice ?? 0M,
- totalPurchaseProductAmount,
- totalPurchaseFreight,
- dbOrderCostDetails.Sum(ocd => ocd.OutPackAmount ?? 0M),
- dbOrderCostDetails.Sum(ocd => ocd.DeliveryExpressFreight ?? 0M));
- updateOrderCost = fsql.Update().SetSource(dbOrderCost);
- fsql.Transaction(() =>
+ if (isEditOrderPrice)
+ {
+ #region 通知拳探改价
+ var opclient = opPlatformClientFactory.GetClient(AdapterEnums.PlatformType.拳探);
+ opclient.EditPrice(new OP_EditPriceRequest()
{
- foreach (var update in updateOrderCostDetailList)
- update.ExecuteAffrows();
- updateOrderCost?.ExecuteAffrows();
+ AppKey = shop.AppKey,
+ AppSecret = shop.AppSecret,
+ AppToken = shop.AppToken,
+ OrderId = dbOrder.Id,
+ EditItems = op_EditPriceSkuRequests
});
+ #endregion
+
+ #region 通知C端改价
+ restApiService.SendRequest("https://bbwy.qiyue666.com",
+ "/Api/PurchaseOrder/QuanTanEditPriceCallback",
+ new { orderId = dbOrder.Id },
+ null,
+ HttpMethod.Post);
+ #endregion
}
}
catch (Exception ex)
{
- nLogManager.Default().Error(ex, $"OrderPriceModificationCallback 回调平台{callbackPlatform},采购单号{purchaseOrderId},执行进度[{currentProgress}]");
+ nLogManager.Default().Error(ex, $"OrderPriceModificationCallback 回调平台{callbackPlatform},采购单号{purchaseOrderId}");
}
}
diff --git a/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_ProductClient.cs b/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_ProductClient.cs
index d38770c..01770d1 100644
--- a/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_ProductClient.cs
+++ b/QuanTan.SDK/Client/Supplier/QuanTan_Supplier_ProductClient.cs
@@ -19,5 +19,10 @@ namespace QuanTan.SDK.Client.Supplier
{
return SendRequest("api/platform/supply/product/list", request, appId, appSecret);
}
+
+ public QuanTanResponse