From 54aedd7d97560bc43d96e0de711fe79247c58771 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Mon, 19 Dec 2022 04:04:10 +0800 Subject: [PATCH] 1 --- .../Request/SkuWriteUpdateSkusRequest.cs | 4 + BBWY.Server.Business/Order/OrderBusiness.cs | 12 ++- .../PurchaseOrder/PurchaseOrderBusiness.cs | 5 +- .../Sync/OrderSyncBusiness.cs | 4 +- BBWY.Test/JDProductAPITest.cs | 93 ++++++++++++------- 5 files changed, 76 insertions(+), 42 deletions(-) diff --git a/BBWY.JDSDK/Request/SkuWriteUpdateSkusRequest.cs b/BBWY.JDSDK/Request/SkuWriteUpdateSkusRequest.cs index 806435d7..abd77684 100644 --- a/BBWY.JDSDK/Request/SkuWriteUpdateSkusRequest.cs +++ b/BBWY.JDSDK/Request/SkuWriteUpdateSkusRequest.cs @@ -42,5 +42,9 @@ namespace Jd.Api.Request public string attrId { get; set; } public List attrValues { get; set; } + + public List attrValueAlias { get; set; } + + public int index { get; set; } } } diff --git a/BBWY.Server.Business/Order/OrderBusiness.cs b/BBWY.Server.Business/Order/OrderBusiness.cs index 270748a3..fb561459 100644 --- a/BBWY.Server.Business/Order/OrderBusiness.cs +++ b/BBWY.Server.Business/Order/OrderBusiness.cs @@ -466,6 +466,8 @@ namespace BBWY.Server.Business var orderCostPurchaseAmount = 0M; var orderDeliveryExpressFreight = 0M; //发货总运费,sku购买数量第二个开始半价 + + var avgPreferential = dbOrder.PreferentialAmount / orderSkus.Count(); foreach (var orderSku in orderSkus) { //查询该sku的扣减明细 @@ -533,7 +535,7 @@ namespace BBWY.Server.Business SkuAmount = purchaseOrder.SingleSkuAmount * deductionQuantity, StorageAmount = purchaseOrder.SingleStorageAmount * deductionQuantity }; - orderCostDetail.SkuGrossProfit = orderSku.Price.Value * deductionQuantity - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - orderSku.Price.Value * deductionQuantity * autoCalculationCostRequest.PlatformCommissionRatio; + orderCostDetail.SkuGrossProfit = orderSku.Price.Value * deductionQuantity - avgPreferential - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - orderSku.Price.Value * deductionQuantity * autoCalculationCostRequest.PlatformCommissionRatio; insertOrderCostDetailList.Add(orderCostDetail); } } @@ -603,6 +605,8 @@ namespace BBWY.Server.Business osku.Price, osku.ItemTotal }); + var avgPreferential = dbOrder.PreferentialAmount / orderSkuList.Count(); + var dbAfterSaleOrderList = fsql.Select().Where(aso => aso.OrderId == manualCalculationCostRequest.OrderId).ToList(); if (manualCalculationCostRequest.IsSetStorageType) @@ -619,7 +623,7 @@ namespace BBWY.Server.Business var osku = orderSkuList.FirstOrDefault(o => o.SkuId == orderCostDetail.SkuId); if (osku != null) { - orderCostDetail.SkuGrossProfit = osku.Price.Value * orderCostDetail.DeductionQuantity - + orderCostDetail.SkuGrossProfit = osku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - osku.Price.Value * orderCostDetail.DeductionQuantity * manualCalculationCostRequest.PlatformCommissionRatio; } @@ -795,7 +799,7 @@ namespace BBWY.Server.Business deletePurchaseOrder = fsql.Delete().Where(po => oldPourchaseIdList.Contains(po.Id)); deleteOrderCostDetail = fsql.Delete().Where(ocd => ocd.OrderId == dbOrder.Id); - + var avgPreferential = dbOrder.PreferentialAmount / dbOrderSkuList.Count(); foreach (var odsRequest in relationPurchaseOrderRequestV2.OrderDropShippingList) { @@ -876,7 +880,7 @@ namespace BBWY.Server.Business var dbOrderSku = dbOrderSkuList.FirstOrDefault(dbosku => dbosku.SkuId == relationOrderSku.SkuId); if (dbOrderSku != null) { - orderCostDetail.SkuGrossProfit = dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity - + orderCostDetail.SkuGrossProfit = dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity * relationPurchaseOrderRequestV2.PlatformCommissionRatio; } diff --git a/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index ea64580c..fc0ae0e3 100644 --- a/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -189,6 +189,9 @@ namespace BBWY.Server.Business IInsert insertOrderCost = null; IUpdate updateOrderCost = null; IInsert insertOrderDropShipping = null; + + var avgPreferential = dbOrder.PreferentialAmount / orderSkus.Count(); + foreach (var orderSku in orderSkus) { #region 计算当前sku的采购成本和采购运费 @@ -261,7 +264,7 @@ namespace BBWY.Server.Business //UnitCost = purchaseOrder.UnitCost, //TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount//purchaseOrder.UnitCost * orderSku.ItemTotal.Value }; - orderCostDetail.SkuGrossProfit = orderSku.Price.Value * orderCostDetail.DeductionQuantity - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - orderSku.Price.Value * orderCostDetail.DeductionQuantity * createOnlinePurchaseOrderRequest.PlatformCommissionRatio; + orderCostDetail.SkuGrossProfit = orderSku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - orderSku.Price.Value * orderCostDetail.DeductionQuantity * createOnlinePurchaseOrderRequest.PlatformCommissionRatio; insertOrderCostDetails.Add(orderCostDetail); #endregion } diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 3315a45d..5da570a1 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -492,6 +492,8 @@ namespace BBWY.Server.Business var orderCostPurchaseAmount = 0M; var orderDeliveryExpressFreight = 0M; //发货总运费,sku购买数量第二个开始半价 + var avgPreferential = dbOrder.PreferentialAmount / orderSkuJArray.Count(); + #region 扣减库存 foreach (var orderSkuJToken in orderSkuJArray) { @@ -550,7 +552,7 @@ namespace BBWY.Server.Business StorageAmount = purchaseOrder.SingleStorageAmount * deductionQuantity, IsEnabled = true }; - orderCostDetail.SkuGrossProfit = itemPrice * deductionQuantity - + orderCostDetail.SkuGrossProfit = itemPrice * deductionQuantity - avgPreferential - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - itemPrice * deductionQuantity * platformCommissionRatio; insertOrderCostDetailList.Add(orderCostDetail); diff --git a/BBWY.Test/JDProductAPITest.cs b/BBWY.Test/JDProductAPITest.cs index 2b86855e..aad4701d 100644 --- a/BBWY.Test/JDProductAPITest.cs +++ b/BBWY.Test/JDProductAPITest.cs @@ -58,7 +58,7 @@ namespace BBWY.Test var barCode = ""; var categoryId = ""; - IList saleAttrs = null; + IList multiCateProps = null; var selectGiftSkuList = new List(); @@ -88,7 +88,7 @@ namespace BBWY.Test barCode = skuList[0].Source.Value("barCode"); categoryId = skuList[0].Source.Value("categoryId"); - saleAttrs = skuList[0].Source["saleAttrs"] != null ? skuList[0].Source["saleAttrs"].ToList() : null; + multiCateProps = skuList[0].Source["multiCateProps"] != null ? skuList[0].Source["multiCateProps"].ToList() : null; } #endregion @@ -125,50 +125,71 @@ namespace BBWY.Test } #endregion - #region 增量保存sku + #region 获取销售属性 + + IList colorSaleAttrs = null; + { + var req = new CategoryReadFindAttrsByCategoryIdUnlimitCateRequest(); + req.cid = long.Parse(categoryId); + req.attributeType = 4; + req.field = "attrValueList,attrGroup"; + var response = client.Execute(req, token, DateTime.Now.ToLocalTime()); + Console.WriteLine("销售属性"); + if (response.Json == null) + response.Json = JObject.Parse(response.Body); + var colorProperty = response.Json["jingdong_category_read_findAttrsByCategoryIdUnlimitCate_responce"]["findattrsbycategoryidunlimitcate_result"].FirstOrDefault(j => j.Value("id") == 1000007121); + if (colorProperty == null) + throw new Exception("缺少颜色属性"); + colorSaleAttrs = colorProperty["attrValueList"].ToList(); + } + #endregion + + #region 增量保存sku { var skusParamList = new List(); - foreach (var sku in selectGiftSkuList) + var takeColorIndex = colorSaleAttrs.Count() - 1; + for (var i = 0; i < 2; i++) { + var giftSku = selectGiftSkuList[i]; var p = new SkuWriteUpdateSkusItem() { wareId = long.Parse(mainSpu), - skuId = long.Parse(sku.Id), - //saleAttrs = sku.Source["saleAttrs"].Select(s => new SkuWriteUpdateSkusItemSaleAttrs() - //{ - // attrId = s.Value("attrId"), - // attrValues = s.Value("attrValues").Select(x => x.ToString()).ToList() - //}).ToList(), - jdPrice = sku.Price, - stockNum = 5000, + //skuId = long.Parse(sku.Id), + jdPrice = giftSku.Price, + stockNum = 500, barCode = barCode, - //multiCateProps = multiCateProps.Select(mp => new SkuWriteUpdateSkusItemSaleAttrs() - //{ - // attrId = mp.Value("attrId"), - // attrValues = mp.Value("attrValues").Select(x => x.ToString()).ToList() - //}).ToList() }; + var colorProperty = colorSaleAttrs[takeColorIndex]; p.saleAttrs = new List(); - foreach (var saleAttr in saleAttrs) - { - var m = new SkuWriteUpdateSkusItemSaleAttrs(); - m.attrId = saleAttr.Value("attrId"); - m.attrValues = saleAttr.Value("attrValues").Select(x => x.ToString()).ToList(); - p.saleAttrs.Add(m); - } - - p.multiCateProps = new List(); - if (multiCateProps != null && multiCateProps.Count() > 0) - { - foreach (var multiCateProp in multiCateProps) - { - var m = new SkuWriteUpdateSkusItemSaleAttrs(); - m.attrId = multiCateProp.Value("attrId"); - m.attrValues = multiCateProp.Value("attrValues").Select(x => x.ToString()).ToList(); - p.multiCateProps.Add(m); - } - } + + var m = new SkuWriteUpdateSkusItemSaleAttrs(); + m.attrId = colorProperty.Value("attId"); + m.attrValues = new List() { colorProperty.Value("id") }; + m.attrValueAlias = new List() { colorProperty.Value("name") }; + m.index = takeColorIndex; + p.saleAttrs.Add(m); + takeColorIndex--; + + //foreach (var saleAttr in colorSaleAttrs) + //{ + // var m = new SkuWriteUpdateSkusItemSaleAttrs(); + // m.attrId = saleAttr.Value("attrId"); + // m.attrValues = saleAttr.Value("attrValues").Select(x => x.ToString()).ToList(); + // p.saleAttrs.Add(m); + //} + + //p.multiCateProps = new List(); + //if (multiCateProps != null && multiCateProps.Count() > 0) + //{ + // foreach (var multiCateProp in multiCateProps) + // { + // var m = new SkuWriteUpdateSkusItemSaleAttrs(); + // m.attrId = multiCateProp.Value("attrId"); + // m.attrValues = multiCateProp.Value("attrValues").Select(x => x.ToString()).ToList(); + // p.multiCateProps.Add(m); + // } + //} skusParamList.Add(p); }