Browse Source

改价通知

updatebug
shanji 2 years ago
parent
commit
d4f207df5a
  1. 211
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

211
BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -387,8 +387,8 @@ namespace BBWYB.Server.Business
/// <param name="jObject"></param>
private void OrderPriceModificationCallbackFrom1688(JObject jObject)
{
//var purchaseOrderId = jObject["data"].Value<string>("orderId");
//Task.Factory.StartNew(() => OrderPriceModificationCallback(purchaseOrderId, Enums.Platform.阿里巴巴), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
var purchaseOrderId = jObject["data"].Value<string>("orderId");
Task.Factory.StartNew(() => OrderPriceModificationCallback(purchaseOrderId, Enums.Platform.), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
}
#endregion
@ -612,145 +612,72 @@ namespace BBWYB.Server.Business
}, CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
}
///// <summary>
///// 采购平台改价回调
///// </summary>
///// <param name="purchaseOrderId"></param>
///// <param name="callbackPlatform"></param>
//private void OrderPriceModificationCallback(string purchaseOrderId, Enums.Platform callbackPlatform)
//{
// string currentProgress = string.Empty;
// try
// {
// #region 查询代发信息
// currentProgress = "查询代发信息";
// var orderDropshipping = fsql.Select<OrderDropShipping>().Where(o => o.PurchaseOrderId == purchaseOrderId).ToOne();
// if (orderDropshipping == null)
// throw new Exception("未查询到代发信息");
// #endregion
// #region 查询订单Sku
// currentProgress = "查询订单Sku";
// var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.Price != 0 && osku.OrderId == orderDropshipping.OrderId).ToList();
// if (orderSkuList == null || orderSkuList.Count() == 0)
// throw new BusinessException("订单Sku不存在");
// #endregion
// #region 查询采购单
// currentProgress = "查询采购单";
// var purchaseOrderList = fsql.Select<PurchaseOrder>().Where(po => po.PurchaseOrderId == purchaseOrderId).ToList();
// if (purchaseOrderList == null || purchaseOrderList.Count() == 0)
// throw new BusinessException("采购单不存在");
// if (orderSkuList.Count() > 1 && purchaseOrderList.Any(p => p.PurchaseMethod == Enums.PurchaseMethod.线下采购))
// throw new Exception("多sku订单关联采购单不支持改价");
// #endregion
// #region 查询成本
// currentProgress = "查询成本";
// var orderCost = fsql.Select<OrderCost>(orderDropshipping.OrderId).ToOne();
// if (orderCost == null)
// throw new BusinessException("订单成本不存在");
// #endregion
// #region 查询成本明细
// currentProgress = "查询成本明细";
// var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == orderDropshipping.OrderId).ToList();
// if (orderCostDetailList == null || orderCostDetailList.Count() == 0)
// throw new BusinessException("订单成本明细不存在");
// #endregion
// #region 查询采购账号
// currentProgress = "查询采购账号";
// var purchaseAccount = fsql.Select<PurchaseAccount>().WhereIf(orderDropshipping.PurchaseAccountId != 0, pa => pa.Id == orderDropshipping.PurchaseAccountId)
// .WhereIf(orderDropshipping.PurchaseAccountId == 0, pa => pa.AccountName == orderDropshipping.BuyerAccount)
// .Where(pa => pa.PurchasePlatformId == callbackPlatform).ToOne();
// if (purchaseAccount == null)
// throw new Exception($"未查询到采购账号{orderDropshipping.BuyerAccount}");
// #endregion
// #region 查询改价后的订单金额
// currentProgress = "查询改价后的订单金额";
// var purchaseOrderSimpleInfo = platformSDKBusinessList.FirstOrDefault(p => p.Platform == callbackPlatform).GetOrderSimpleInfo(new GetOrderInfoRequest()
// {
// AppKey = purchaseAccount.AppKey,
// AppSecret = purchaseAccount.AppSecret,
// AppToken = purchaseAccount.AppToken,
// OrderId = purchaseOrderId,
// Platform = callbackPlatform
// });
// #endregion
// #region 查询采购单明细
// currentProgress = "查询采购单明细";
// var purchaseOrderDetails = fsql.Select<PurchaseOrderDetail>().Where(p => p.OrderId == orderDropshipping.OrderId);
// #endregion
// #region 查询订单
// currentProgress = "查询订单";
// var dbOrder = fsql.Select<Order>(orderDropshipping.OrderId).ToOne();
// if (dbOrder == null)
// throw new BusinessException("订单不存在");
// #endregion
// IList<IUpdate<PurchaseOrder>> updatePurchaseOrders = new List<IUpdate<PurchaseOrder>>();
// IList<IUpdate<OrderCostDetail>> updateOrderCostDetails = new List<IUpdate<OrderCostDetail>>();
// foreach (var orderSku in orderSkuList)
// {
// var currentOrderSkuProductAmount = 0M; //采购成本
// if (orderSkuList.Count() != 1)
// {
// var currentOrderSkuPurchaseOrderDetails = purchaseOrderDetails.Where(p => p.SkuId == orderSku.SkuId); //找当前skuId的采购skuId
// currentOrderSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => currentOrderSkuPurchaseOrderDetails.Any(p1 => p1.PurchaseSkuId == p.SkuId))
// ?.Sum(p => p.ProductAmount) ?? 0M;
// }
// else
// {
// currentOrderSkuProductAmount = purchaseOrderSimpleInfo.ProductAmount;
// }
// var currentOrderSkuFreightAmount = purchaseOrderSimpleInfo.FreightAmount / orderSkuList.Count(); //采购运费(按sku数均分)
// var purchaseOrder = purchaseOrderList.FirstOrDefault(po => po.SkuId == orderSku.SkuId);
// var orderCostDetail = orderCostDetailList.FirstOrDefault(oc => oc.PurchaseOrderPKId == purchaseOrder.Id);
// purchaseOrder.SingleSkuAmount = currentOrderSkuProductAmount / orderSku.ItemTotal.Value;
// purchaseOrder.SingleFreight = currentOrderSkuFreightAmount / orderSku.ItemTotal.Value;
// orderCostDetail.SkuAmount = currentOrderSkuProductAmount;
// orderCostDetail.PurchaseFreight = currentOrderSkuFreightAmount;
// //orderCostDetail.UnitCost = purchaseOrder.UnitCost;
// //orderCostDetail.TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount;
// updatePurchaseOrders.Add(fsql.Update<PurchaseOrder>().SetSource(purchaseOrder));
// updateOrderCostDetails.Add(fsql.Update<OrderCostDetail>().SetSource(orderCostDetail));
// }
// orderCost.PurchaseAmount = purchaseOrderSimpleInfo.TotalAmount;
// orderCost.Profit = dbOrder.OrderSellerPrice +
// dbOrder.FreightPrice -
// orderCost.PurchaseAmount -
// orderCost.DeliveryExpressFreight -
// orderCost.PlatformCommissionAmount;
// orderDropshipping.PurchaseAmount = purchaseOrderSimpleInfo.TotalAmount;
// orderDropshipping.SkuAmount = purchaseOrderSimpleInfo.ProductAmount;
// orderDropshipping.PurchaseFreight = purchaseOrderSimpleInfo.FreightAmount;
// fsql.Transaction(() =>
// {
// foreach (var update in updatePurchaseOrders)
// update.ExecuteAffrows();
// foreach (var update in updateOrderCostDetails)
// update.ExecuteAffrows();
// fsql.Update<OrderCost>().SetSource(orderCost).ExecuteAffrows();
// fsql.Update<OrderDropShipping>().SetSource(orderDropshipping).ExecuteAffrows();
// });
// }
// catch (Exception ex)
// {
// nLogManager.Default().Error(ex, $"OrderPriceModificationCallback 回调平台{callbackPlatform},采购单号{purchaseOrderId},执行进度[{currentProgress}]");
// }
//}
/// <summary>
/// 采购平台改价回调
/// </summary>
/// <param name="purchaseOrderId"></param>
/// <param name="callbackPlatform"></param>
private void OrderPriceModificationCallback(string purchaseOrderId, Enums.Platform callbackPlatform)
{
string currentProgress = string.Empty;
try
{
var orderPurchaseInfo = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.PurchaseOrderId == purchaseOrderId).ToOne();
if (orderPurchaseInfo == null)
throw new Exception($"未查询到采购单{orderPurchaseInfo.PurchaseAccountId}");
var purchaseAccount = fsqlManager.MDSfsql.Select<Purchaseaccount>().Where(pa => pa.Id == orderPurchaseInfo.PurchaseAccountId).ToOne();
if (purchaseAccount == null)
throw new Exception($"未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}");
var dbOrder = fsql.Select<Order>(orderPurchaseInfo.OrderId).ToOne(o => new { o.OrderTotalPrice });
var dbOrderCost = fsql.Select<OrderCost>(orderPurchaseInfo.OrderId).ToOne();
if (dbOrderCost == null)
throw new Exception($"未查询到订单成本 {orderPurchaseInfo.OrderId}");
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == orderPurchaseInfo.OrderId).ToList(opi => new
{
opi.PurchaseOrderId,
opi.PurchaseAccountId
});
var client = ppPlatformClientFactory.GetClient(AdapterEnums.PlatformType.);
var totalPurchaseAmount = 0M;
foreach (var opi in orderPurchaseInfoList)
{
var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest()
{
AppKey = purchaseAccount.AppKey,
AppSecret = purchaseAccount.AppSecret,
AppToken = purchaseAccount.AppToken,
OrderId = opi.PurchaseOrderId
});
totalPurchaseAmount += purchaseOrderSimpleInfo.TotalAmount;
}
//var oldTotalAmount = dbOrderCost.PurchaseAmount;
//var oldProductAmount = dbOrderCostDetailList.Sum(ocd => ocd.SkuAmount);
//var oldPurchaseFreight = dbOrderCostDetailList.Sum(ocd => ocd.PurchaseFreight);
dbOrderCost.PurchaseAmount = totalPurchaseAmount;
dbOrderCost.Profit = dbOrder.OrderTotalPrice -
dbOrderCost.PurchaseAmount -
dbOrderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount
fsql.Transaction(() =>
{
fsql.Update<OrderCost>(dbOrderCost.OrderId).Set(oc => oc.PurchaseAmount, dbOrderCost.PurchaseAmount)
.Set(oc => oc.Profit, dbOrderCost.Profit)
.ExecuteAffrows();
});
}
catch (Exception ex)
{
nLogManager.Default().Error(ex, $"OrderPriceModificationCallback 回调平台{callbackPlatform},采购单号{purchaseOrderId},执行进度[{currentProgress}]");
}
}
}
}

Loading…
Cancel
Save