Browse Source

订单取消,扣减SPU/SKU销量

yijia
shanji 2 years ago
parent
commit
f7614b30d3
  1. 37
      BBWYB.Server.Business/Order/OrderBusiness.cs
  2. 19
      BBWYB.Server.Business/Sync/OrderSyncBusiness.cs

37
BBWYB.Server.Business/Order/OrderBusiness.cs

@ -555,6 +555,12 @@ namespace BBWYB.Server.Business
public void CancelOrder(CancelOrderRequest request, string mdsToken) public void CancelOrder(CancelOrderRequest request, string mdsToken)
{ {
var order = fsql.Select<Order>(request.OrderId).ToOne();
if (order == null)
throw new BusinessException("订单不存在");
if (order.OrderState == Enums.OrderState.)
return;
try try
{ {
opPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.Platform).CancelOrder(new OP_CancelOrderRequest() opPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.Platform).CancelOrder(new OP_CancelOrderRequest()
@ -573,10 +579,33 @@ namespace BBWYB.Server.Business
throw new BusinessException(ex.Message); throw new BusinessException(ex.Message);
} }
var orderSkus = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList();
IList<IUpdate<SpuTotalSaleInfo>> updateSpuTotalSaleInfoList = new List<IUpdate<SpuTotalSaleInfo>>();
IList<IUpdate<SkuTotalSaleInfo>> updateSkuTotalSaleInfoList = new List<IUpdate<SkuTotalSaleInfo>>();
var skuGroupsByProductId = orderSkus.GroupBy(osku => osku.ProductId);
foreach (var group in skuGroupsByProductId)
{
var totalItemCount = group.Sum(osku => osku.ItemTotal ?? 0);
foreach (var osku in group)
{
var updateSku = fsql.Update<SkuTotalSaleInfo>(osku.SkuId).Set(s => s.ItemCount - osku.ItemTotal);
updateSkuTotalSaleInfoList.Add(updateSku);
}
var updateSpu = fsql.Update<SpuTotalSaleInfo>(group.Key).Set(s => s.ItemCount - totalItemCount);
updateSpuTotalSaleInfoList.Add(updateSpu);
}
fsql.Transaction(() => fsql.Transaction(() =>
{ {
fsql.Update<Order>(request.OrderId).Set(o => o.OrderState, Enums.OrderState.).ExecuteAffrows(); fsql.Update<Order>(request.OrderId).Set(o => o.OrderState, Enums.OrderState.).ExecuteAffrows();
fsql.Delete<TimeLimitTask>().Where(t => t.OrderId == request.OrderId).ExecuteAffrows(); fsql.Delete<TimeLimitTask>().Where(t => t.OrderId == request.OrderId).ExecuteAffrows();
foreach (var update in updateSkuTotalSaleInfoList)
update.ExecuteAffrows();
foreach (var update in updateSpuTotalSaleInfoList)
update.ExecuteAffrows();
}); });
try try
@ -592,14 +621,6 @@ namespace BBWYB.Server.Business
} }
//var sql = $"update purchaseorderv2 set OrderState=6 where Id='{request.OrderId}'";
////取消C端采购单
//restApiService.SendRequest("https://bbwy.qiyue666.com",
// "/Api/Sql/ExecuteNonQuery",
// new { sql = sql.AESEncrypt() },
// new Dictionary<string, string>() { { "Authorization", $"Bearer {mdsToken}" } },
// HttpMethod.Post);
try try
{ {
//取消齐库的任务 //取消齐库的任务

19
BBWYB.Server.Business/Sync/OrderSyncBusiness.cs

@ -138,6 +138,9 @@ namespace BBWYB.Server.Business.Sync
//等待检查sku销量的订单集合 //等待检查sku销量的订单集合
List<OP_OrderResponse> waitToCheckSkuSaleOrderList = new List<OP_OrderResponse>(); List<OP_OrderResponse> waitToCheckSkuSaleOrderList = new List<OP_OrderResponse>();
IDictionary<string, int> deductionSkuCountDictionary = new Dictionary<string, int>();
IDictionary<string, int> deductionSpuCountDictionary = new Dictionary<string, int>();
#region 同步订单 #region 同步订单
foreach (var qtOrder in qtOrderList.Items) foreach (var qtOrder in qtOrderList.Items)
{ {
@ -263,6 +266,17 @@ namespace BBWYB.Server.Business.Sync
updateOrderState = Enums.OrderState.; updateOrderState = Enums.OrderState.;
if (dbPurchaseTimeLimitTaskList.Any(t => t.OrderId == qtOrder.OrderId)) if (dbPurchaseTimeLimitTaskList.Any(t => t.OrderId == qtOrder.OrderId))
deleteTimeLimitTaskOrderIdList.Add(qtOrder.OrderId); deleteTimeLimitTaskOrderIdList.Add(qtOrder.OrderId);
foreach (var qtOrderSku in qtOrder.OrderSkuList)
{
if (!deductionSkuCountDictionary.ContainsKey(qtOrderSku.SkuId))
deductionSkuCountDictionary.Add(qtOrderSku.SkuId, 0);
deductionSkuCountDictionary[qtOrderSku.SkuId] += qtOrderSku.Quantity;
if (!deductionSpuCountDictionary.ContainsKey(qtOrderSku.ProductId))
deductionSpuCountDictionary.Add(qtOrderSku.ProductId, 0);
deductionSpuCountDictionary[qtOrderSku.ProductId] += qtOrderSku.Quantity;
}
} }
#endregion #endregion
@ -460,6 +474,11 @@ namespace BBWYB.Server.Business.Sync
if (updateOrderSkuIdList_OptimizationFlag.Count() > 0) if (updateOrderSkuIdList_OptimizationFlag.Count() > 0)
fsql.Update<OrderSku>(updateOrderSkuIdList_OptimizationFlag).Set(osku => osku.IsNeedOptimization, 1).ExecuteAffrows(); fsql.Update<OrderSku>(updateOrderSkuIdList_OptimizationFlag).Set(osku => osku.IsNeedOptimization, 1).ExecuteAffrows();
foreach (var key in deductionSkuCountDictionary.Keys)
fsql.Update<SkuTotalSaleInfo>(key).Set(s => s.ItemCount - deductionSkuCountDictionary[key]).ExecuteAffrows();
foreach (var key in deductionSpuCountDictionary.Keys)
fsql.Update<SpuTotalSaleInfo>(key).Set(s => s.ItemCount - deductionSpuCountDictionary[key]).ExecuteAffrows();
}); });
} }
catch (Exception ex) catch (Exception ex)

Loading…
Cancel
Save