diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 28749ba..6dda589 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -387,8 +387,8 @@ namespace BBWYB.Server.Business /// private void OrderPriceModificationCallbackFrom1688(JObject jObject) { - //var purchaseOrderId = jObject["data"].Value("orderId"); - //Task.Factory.StartNew(() => OrderPriceModificationCallback(purchaseOrderId, Enums.Platform.阿里巴巴), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); + var purchaseOrderId = jObject["data"].Value("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); } - ///// - ///// 采购平台改价回调 - ///// - ///// - ///// - //private void OrderPriceModificationCallback(string purchaseOrderId, Enums.Platform callbackPlatform) - //{ - // string currentProgress = string.Empty; - - // try - // { - // #region 查询代发信息 - // currentProgress = "查询代发信息"; - // var orderDropshipping = fsql.Select().Where(o => o.PurchaseOrderId == purchaseOrderId).ToOne(); - // if (orderDropshipping == null) - // throw new Exception("未查询到代发信息"); - // #endregion - - // #region 查询订单Sku - // currentProgress = "查询订单Sku"; - // var orderSkuList = fsql.Select().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().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(orderDropshipping.OrderId).ToOne(); - // if (orderCost == null) - // throw new BusinessException("订单成本不存在"); - // #endregion - - // #region 查询成本明细 - // currentProgress = "查询成本明细"; - // var orderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == orderDropshipping.OrderId).ToList(); - // if (orderCostDetailList == null || orderCostDetailList.Count() == 0) - // throw new BusinessException("订单成本明细不存在"); - // #endregion - - // #region 查询采购账号 - // currentProgress = "查询采购账号"; - // var purchaseAccount = fsql.Select().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().Where(p => p.OrderId == orderDropshipping.OrderId); - // #endregion - - // #region 查询订单 - // currentProgress = "查询订单"; - // var dbOrder = fsql.Select(orderDropshipping.OrderId).ToOne(); - // if (dbOrder == null) - // throw new BusinessException("订单不存在"); - // #endregion - - // IList> updatePurchaseOrders = new List>(); - // IList> updateOrderCostDetails = new List>(); - - // 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().SetSource(purchaseOrder)); - // updateOrderCostDetails.Add(fsql.Update().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().SetSource(orderCost).ExecuteAffrows(); - // fsql.Update().SetSource(orderDropshipping).ExecuteAffrows(); - // }); - // } - // catch (Exception ex) - // { - // nLogManager.Default().Error(ex, $"OrderPriceModificationCallback 回调平台{callbackPlatform},采购单号{purchaseOrderId},执行进度[{currentProgress}]"); - // } - //} + /// + /// 采购平台改价回调 + /// + /// + /// + private void OrderPriceModificationCallback(string purchaseOrderId, Enums.Platform callbackPlatform) + { + string currentProgress = string.Empty; + + try + { + var orderPurchaseInfo = fsql.Select().Where(opi => opi.PurchaseOrderId == purchaseOrderId).ToOne(); + if (orderPurchaseInfo == null) + throw new Exception($"未查询到采购单{orderPurchaseInfo.PurchaseAccountId}"); + + var purchaseAccount = fsqlManager.MDSfsql.Select().Where(pa => pa.Id == orderPurchaseInfo.PurchaseAccountId).ToOne(); + if (purchaseAccount == null) + throw new Exception($"未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}"); + + var dbOrder = fsql.Select(orderPurchaseInfo.OrderId).ToOne(o => new { o.OrderTotalPrice }); + var dbOrderCost = fsql.Select(orderPurchaseInfo.OrderId).ToOne(); + if (dbOrderCost == null) + throw new Exception($"未查询到订单成本 {orderPurchaseInfo.OrderId}"); + + var orderPurchaseInfoList = fsql.Select().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(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}]"); + } + } } }