using BBWYB.Common.Log; using BBWYB.Common.Models; using BBWYB.Server.Model; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Db.MDS; using BBWYB.Server.Model.Dto; using FreeSql; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SDKAdapter; using SDKAdapter.OperationPlatform.Models; using SDKAdapter.PurchasePlatform.Client; using SDKAdapter.PurchasePlatform.Models; using System.Text; using Yitter.IdGenerator; namespace BBWYB.Server.Business { public class PurchaseOrderBusiness : BaseBusiness, IDenpendency { private PP_PlatformClientFactory ppPlatformClientFactory; private TaskSchedulerManager taskSchedulerManager; private FreeSqlMultiDBManager fsqlManager; private OrderBusiness orderBusiness; private VenderBusiness venderBusiness; private ExpressCompanyNameConverter expressCompanyNameConverter; public PurchaseOrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, PP_PlatformClientFactory ppPlatformClientFactory, TaskSchedulerManager taskSchedulerManager, FreeSqlMultiDBManager fsqlManager, OrderBusiness orderBusiness, VenderBusiness venderBusiness, ExpressCompanyNameConverter expressCompanyNameConverter) : base(fsql, nLogManager, idGenerator) { this.ppPlatformClientFactory = ppPlatformClientFactory; this.taskSchedulerManager = taskSchedulerManager; this.fsqlManager = fsqlManager; this.orderBusiness = orderBusiness; this.venderBusiness = venderBusiness; this.expressCompanyNameConverter = expressCompanyNameConverter; } /// /// 合并相同的采购Sku /// /// /// private IList CombineRepeatPurchaseSku(IList cargoParamList) { IList orderProductParamList = new List(); var samePurchaseSkuGroups = cargoParamList.GroupBy(p => p.SkuId).ToList(); foreach (var samePurchaseSkuGroup in samePurchaseSkuGroups) { var first = samePurchaseSkuGroup.First(); orderProductParamList.Add(new PP_OrderProductParamRequest() { ProductId = first.ProductId, SkuId = first.SkuId, SpecId = first.SpecId, Quantity = samePurchaseSkuGroup.Sum(p => p.Quantity) }); } return orderProductParamList; } public PreviewOrderResponse PreviewPurchaseOrder(PreviewOrderRequest request) { nLogManager.Default().Info($"PreviewPurchaseOrder {JsonConvert.SerializeObject(request)}"); if (request.Consignee == null || string.IsNullOrEmpty(request.Consignee.Address) || string.IsNullOrEmpty(request.Consignee.Mobile) || string.IsNullOrEmpty(request.Consignee.ContactName)) throw new BusinessException("缺少收货人信息"); if (request.PurchaseAccountList == null || request.PurchaseAccountList.Count() == 0) throw new BusinessException("缺少采购账号"); if (request.CargoParamGroupList == null || request.CargoParamGroupList.Count() == 0) throw new BusinessException("缺少报价参数"); var extJArray = new List(); var errorBuilder = new StringBuilder(); var freightAmount = 0M; var productAmount = 0M; var totalAmount = 0M; foreach (var cargoParamGroup in request.CargoParamGroupList) { var purchaseAccount = request.PurchaseAccountList.FirstOrDefault(pa => pa.PurchasePlatformId == cargoParamGroup.PurchasePlatform); if (purchaseAccount == null) throw new BusinessException($"缺少{cargoParamGroup.PurchasePlatform}采购平台账号,请在店铺配置中设置"); var orderProductParamList = CombineRepeatPurchaseSku(cargoParamGroup.CargoParamList); try { var response = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform) .PreviewOrder(new PP_PreviewOrderRequest() { AppKey = purchaseAccount.AppKey, AppSecret = purchaseAccount.AppSecret, AppToken = purchaseAccount.AppToken, Consignee = new PP_ConsigneeRequest() { Address = request.Consignee.Address, City = request.Consignee.City, ContactName = request.Consignee.ContactName, County = request.Consignee.County, Mobile = request.Consignee.Mobile, Province = request.Consignee.Province, TelePhone = request.Consignee.TelePhone, Town = request.Consignee.Town }, Platform = (AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform, PurchaseMode = (AdapterEnums.PurchaseMode)request.PurchaseOrderMode, OrderProductParamList = orderProductParamList }); if (cargoParamGroup.PurchasePlatform == Enums.Platform.阿里巴巴) extJArray.Add(new { cargoParamGroup.PurchaserId, cargoParamGroup.PurchasePlatform, OrderTradeTypeCode = response.Extensions }); freightAmount += response.FreightAmount; productAmount += response.ProductAmount; totalAmount += response.TotalAmount; } catch (Exception ex) { errorBuilder.AppendLine($"采购商:{cargoParamGroup.PurchaserName}"); errorBuilder.AppendLine(ex.Message); throw new BusinessException(errorBuilder.ToString()); } } return new PreviewOrderResponse() { Extensions = JsonConvert.SerializeObject(extJArray), FreightAmount = freightAmount, ProductAmount = productAmount, TotalAmount = totalAmount }; } public void CreatePurchaseOrder(CreateOrderRequest request) { nLogManager.Default().Info($"CreatePurchaseOrder\r\n{JsonConvert.SerializeObject(request)}"); var dbOrder = fsql.Select(request.OrderId).ToOne(); if (dbOrder == null) throw new BusinessException("订单不存在"); if (dbOrder.OrderState != Enums.OrderState.等待采购 && dbOrder.OrderState != Enums.OrderState.待出库) throw new BusinessException("只能为等待采购或待出库的订单进行采购"); if (request.Consignee == null || string.IsNullOrEmpty(request.Consignee.Address) || string.IsNullOrEmpty(request.Consignee.Mobile) || string.IsNullOrEmpty(request.Consignee.ContactName)) throw new BusinessException("缺少收货人信息"); if (request.PurchaseAccountList == null || request.PurchaseAccountList.Count() == 0) throw new BusinessException("缺少采购账号"); if (request.CargoParamGroupList == null || request.CargoParamGroupList.Count() == 0) throw new BusinessException("缺少下单商品参数"); var deleteOrderCostDetail = fsql.Delete().Where(ocd => ocd.OrderId == dbOrder.Id); var isRepurchase = fsql.Select(dbOrder.Id).Any(); var orderSkus = fsql.Select().Where(osku => osku.Price != 0 && osku.OrderId == request.OrderId).ToList(); var orderSkuIds = orderSkus.Select(osku => osku.Id).ToList(); var extJArray = JsonConvert.DeserializeObject(request.Extensions); //IList purchaseOrderSimpleInfoList = new List(); List insertOrderCostDetails = new List(); List insertOrderPurchaseInfos = new List(); List insertOrderPurchaseSkuInfos = new List(); List updatePurchaseTimeSchemeIdList = new List(); IInsert insertOrderCost = null; IUpdate updateOrderCost = null; var totalPurchaseAmount = 0M; foreach (var cargoParamGroup in request.CargoParamGroupList) { var purchaseAccount = request.PurchaseAccountList.FirstOrDefault(pa => pa.PurchasePlatformId == cargoParamGroup.PurchasePlatform); if (purchaseAccount == null) throw new BusinessException($"缺少{cargoParamGroup.PurchasePlatform}采购平台账号,请在店铺配置中设置"); var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform); var extJson = extJArray.FirstOrDefault(j => j.Value("PurchaserId") == cargoParamGroup.PurchaserId); updatePurchaseTimeSchemeIdList.AddRange(cargoParamGroup.CargoParamList.Select(p => p.SchemeId).Distinct()); var orderProductParamList = CombineRepeatPurchaseSku(cargoParamGroup.CargoParamList); var createOrderResponse = client.CreateOrder(new PP_CreateOrderRequest() { AppKey = purchaseAccount.AppKey, AppSecret = purchaseAccount.AppSecret, AppToken = purchaseAccount.AppToken, Consignee = new PP_ConsigneeRequest() { Address = request.Consignee.Address, City = request.Consignee.City, ContactName = request.Consignee.ContactName, County = request.Consignee.County, Mobile = request.Consignee.Mobile, Province = request.Consignee.Province, TelePhone = request.Consignee.TelePhone, Town = request.Consignee.Town }, Platform = (AdapterEnums.PlatformType)purchaseAccount.PurchasePlatformId, PurchaseMode = (AdapterEnums.PurchaseMode)request.PurchaseOrderMode, Extensions = extJson.Value("OrderTradeTypeCode"), Remark = request.Remark, OrderProductParamList = orderProductParamList }); var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest() { AppKey = purchaseAccount.AppKey, AppSecret = purchaseAccount.AppSecret, AppToken = purchaseAccount.AppToken, OrderId = createOrderResponse.OrderId }); totalPurchaseAmount += purchaseOrderSimpleInfo.TotalAmount; var belongSkuGroups = cargoParamGroup.CargoParamList.GroupBy(p => p.BelongSkuId); foreach (var belongSkuGroup in belongSkuGroups) { var belongSkuId = belongSkuGroup.Key; var currentOrderSkuProductAmount = 0M; //采购成本 var currentOrderSkuCargoParamList = cargoParamGroup.CargoParamList.Where(p => p.BelongSkuId == belongSkuId); //找当前skuId的采购skuId foreach (var currentOrderSkuCargo in currentOrderSkuCargoParamList) { var purchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) .Sum(p => p.ProductAmount); var purchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId) .Sum(p => p.Quantity); currentOrderSkuProductAmount += purchaseSkuProductAmount * (1.0M * currentOrderSkuCargo.Quantity / purchaseSkuTotalQuantity); } var currentOrderSkuFreightAmount = purchaseOrderSimpleInfo.FreightAmount / belongSkuGroups.Count(); //采购运费(按sku数均分) #region 成本明细 var orderSku = orderSkus.FirstOrDefault(osku => osku.SkuId == belongSkuId); var orderCostDetail = new OrderCostDetail() { Id = idGenerator.NewLong(), ConsumableAmount = 0, CreateTime = DateTime.Now, DeductionQuantity = orderSku.ItemTotal.Value, DeliveryExpressFreight = 0, FirstFreight = 0, //OperationAmount = 0, InStorageAmount = 0, OutStorageAmount = 0, OrderId = request.OrderId, ProductId = orderSku.ProductId, PurchaseFreight = currentOrderSkuFreightAmount, PurchaseOrderId = purchaseOrderSimpleInfo.OrderId, SkuAmount = currentOrderSkuProductAmount, SkuId = belongSkuId, StorageAmount = 0 }; insertOrderCostDetails.Add(orderCostDetail); #endregion } #region 采购订单信息 var orderPurchaserInfo = new OrderPurchaseInfo() { Id = idGenerator.NewLong(), OrderId = request.OrderId, CreateTime = DateTime.Now, PurchaseAccountId = purchaseAccount.Id, PurchaseAccountName = purchaseAccount.AccountName, PurchaseMethod = Enums.PurchaseMethod.线上采购, PurchaseOrderId = createOrderResponse.OrderId, PurchasePlatform = cargoParamGroup.PurchasePlatform, PurchaserName = cargoParamGroup.PurchaserName, ShopId = request.ShopId, BelongSkuIds = string.Join(",", belongSkuGroups.Select(bsg => bsg.Key)) }; insertOrderPurchaseInfos.Add(orderPurchaserInfo); #endregion #region 采购订单Sku信息 foreach (var purchaseOrderSku in purchaseOrderSimpleInfo.ItemList) { var orderPurchaseSkuInfo = new OrderPurchaseSkuInfo() { Id = purchaseOrderSku.OrderSkuId, CreateTime = DateTime.Now, OrderId = request.OrderId, PurchaseOrderId = purchaseOrderSimpleInfo.OrderId, PurchaseProductId = purchaseOrderSku.ProductId, PurchaseSkuId = purchaseOrderSku.SkuId, ShopId = request.ShopId }; insertOrderPurchaseSkuInfos.Add(orderPurchaseSkuInfo); } #endregion } #region 订单成本 var orderCost = new OrderCost() { OrderId = request.OrderId, CreateTime = DateTime.Now, DeliveryExpressFreight = 0, IsManualEdited = false, PlatformCommissionRatio = 0, PreferentialAmount = 0, PurchaseAmount = totalPurchaseAmount }; //orderCost.PlatformCommissionAmount = dbOrder.OrderSellerPrice * orderCost.PlatformCommissionRatio; orderCost.Profit = dbOrder.OrderTotalPrice - orderCost.PurchaseAmount - orderCost.DeliveryExpressFreight; // -orderCost.PlatformCommissionAmount if (!isRepurchase) { insertOrderCost = fsql.Insert(orderCost); } else { updateOrderCost = fsql.Update().SetSource(orderCost).IgnoreColumns(a => new { a.CreateTime }); } #endregion fsql.Transaction(() => { deleteOrderCostDetail.ExecuteAffrows(); fsql.Insert(insertOrderCostDetails).ExecuteAffrows(); fsql.Insert(insertOrderPurchaseInfos).ExecuteAffrows(); fsql.Insert(insertOrderPurchaseSkuInfos).ExecuteAffrows(); updateOrderCost?.ExecuteAffrows(); insertOrderCost?.ExecuteAffrows(); if (updatePurchaseTimeSchemeIdList.Count() > 0) fsql.Update(updatePurchaseTimeSchemeIdList).Set(p => p.LastPurchaseTime, DateTime.Now).ExecuteAffrows(); fsql.Update(request.OrderId).SetIf(dbOrder.OrderState == Enums.OrderState.等待采购, o => o.OrderState, Model.Enums.OrderState.待出库) .SetIf(!string.IsNullOrEmpty(request.Remark), o => o.PurchaseRemark, request.Remark) .Set(o => o.IsPurchased, true) .ExecuteAffrows(); }); } #region 1688CallBack public void CallbackFrom1688(string jsonStr) { nLogManager.Default().Info(jsonStr); var jObject = JObject.Parse(jsonStr); var type = jObject.Value("type").ToUpper(); switch (type) { case "ORDER_BUYER_VIEW_PART_PART_SENDGOODS": //部分发货 case "ORDER_BUYER_VIEW_ANNOUNCE_SENDGOODS": //发货 DeliveryCallbackFrom1688(jObject); break; case "ORDER_BUYER_VIEW_ORDER_PRICE_MODIFY": OrderPriceModificationCallbackFrom1688(jObject); //订单改价 break; default: break; } } /// /// 1688发货回调 /// /// private void DeliveryCallbackFrom1688(JObject jObject) { var purchaseOrderId = jObject["data"].Value("orderId"); Task.Factory.StartNew(() => DeliveryCallback(purchaseOrderId, null, Enums.Platform.阿里巴巴), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); } /// /// 1688订单改价回调 /// /// private void OrderPriceModificationCallbackFrom1688(JObject jObject) { //var purchaseOrderId = jObject["data"].Value("orderId"); //Task.Factory.StartNew(() => OrderPriceModificationCallback(purchaseOrderId, Enums.Platform.阿里巴巴), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.PurchaseOrderCallbackTaskScheduler); } #endregion /// /// 采购平台发货回调 /// /// /// /// private void DeliveryCallback(string purchaseOrderId, PP_QueryOrderLogisticsResponse wayBillNoResponse, Enums.Platform callbackPlatform) { string currentProgress = string.Empty; string wayBillNoResponseInfo = string.Empty; string expressCompanyListInfo = string.Empty; string expressCompanyInfo = string.Empty; string orderId = string.Empty; long? shopId = null; try { #region 查询代发信息 currentProgress = "查询代发信息"; var orderPurchaseInfo = fsql.Select().Where(o => o.PurchaseOrderId == purchaseOrderId).ToOne(); if (orderPurchaseInfo == null) throw new Exception("未查询到代发信息"); orderId = orderPurchaseInfo.OrderId; shopId = orderPurchaseInfo.ShopId; #endregion #region 查询采购账号的归属店铺 currentProgress = "查询采购账号归属店铺"; var shop = venderBusiness.GetShopList(shopId: shopId)?.FirstOrDefault(); if (shop == null) throw new Exception("未查询到店铺信息"); #endregion #region 查询采购账号 currentProgress = "查询采购账号"; var purchaseAccount = fsqlManager.MDSfsql.Select().Where(pa => pa.Id == orderPurchaseInfo.PurchaseAccountId).ToOne(); if (purchaseAccount == null) throw new Exception($"未查询到采购账号{orderPurchaseInfo.PurchaseAccountId}"); #endregion #region 获取采购单的物流信息 currentProgress = "获取采购单的物流信息"; if (wayBillNoResponse == null) { var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)callbackPlatform); var ppQueryOrderLogisticsRequest = new PP_QueryOrderLogisticsRequest() { AppKey = purchaseAccount.AppKey, AppSecret = purchaseAccount.AppSecret, AppToken = purchaseAccount.AppToken, OrderId = purchaseOrderId, Platform = (AdapterEnums.PlatformType)callbackPlatform }; wayBillNoResponse = client.QueryOrderLogistics(ppQueryOrderLogisticsRequest); wayBillNoResponseInfo = JsonConvert.SerializeObject(new { Request = ppQueryOrderLogisticsRequest, Result = wayBillNoResponse }); } #endregion #region 获取目标平台的物流公司列表 currentProgress = "获取店铺平台物流公司列表"; var expressCompanyList = venderBusiness.GetExpressCompanyList(new PlatformRequest() { AppKey = shop.AppKey, AppSecret = shop.AppSecret, AppToken = shop.AppToken, Platform = shop.PlatformId }); if (expressCompanyList != null) expressCompanyListInfo = JsonConvert.SerializeObject(expressCompanyList); #endregion #region 物流公司翻译 currentProgress = "物流公司翻译"; OP_QueryExpressCompanyResponse convertExpressCompany = null; try { convertExpressCompany = expressCompanyNameConverter.Converter(wayBillNoResponse.ExpressName, (AdapterEnums.PlatformType)callbackPlatform, (AdapterEnums.PlatformType)shop.PlatformId, expressCompanyList); if (convertExpressCompany != null) expressCompanyInfo = JsonConvert.SerializeObject(convertExpressCompany); } catch { throw; } finally { #region 店铺平台订单出库 currentProgress = "店铺平台订单出库"; orderBusiness.OutStock(new OutStockRequest() { AppKey = shop.AppKey, AppSecret = shop.AppSecret, AppToken = shop.AppToken, OrderId = orderId, TargetExpressId = convertExpressCompany?.ExpressId ?? string.Empty, //物流公司Id TargetExpressName = convertExpressCompany?.ExpressName ?? string.Empty, //物流公司名称 SourceExpressId = wayBillNoResponse.ExpressId, SourceExpressName = wayBillNoResponse.ExpressName, PurchaseOrderId = purchaseOrderId, Platform = shop.PlatformId, WayBillNo = wayBillNoResponse.WayBillNo }); #endregion } #endregion nLogManager.Default().Info($"DeliveryCallback 回调平台{callbackPlatform},订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo},店铺平台物流公司列表:{expressCompanyListInfo},翻译后的物流公司:{expressCompanyInfo}"); } catch (Exception ex) { nLogManager.Default().Error(ex, $"DeliveryCallback 回调平台{callbackPlatform},订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo},店铺平台物流公司列表:{expressCompanyListInfo},翻译后的物流公司:{expressCompanyInfo}"); } } ///// ///// 采购平台改价回调 ///// ///// ///// //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}]"); // } //} } }