shanji 3 years ago
parent
commit
54aedd7d97
  1. 4
      BBWY.JDSDK/Request/SkuWriteUpdateSkusRequest.cs
  2. 12
      BBWY.Server.Business/Order/OrderBusiness.cs
  3. 5
      BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  4. 4
      BBWY.Server.Business/Sync/OrderSyncBusiness.cs
  5. 93
      BBWY.Test/JDProductAPITest.cs

4
BBWY.JDSDK/Request/SkuWriteUpdateSkusRequest.cs

@ -42,5 +42,9 @@ namespace Jd.Api.Request
public string attrId { get; set; } public string attrId { get; set; }
public List<string> attrValues { get; set; } public List<string> attrValues { get; set; }
public List<string> attrValueAlias { get; set; }
public int index { get; set; }
} }
} }

12
BBWY.Server.Business/Order/OrderBusiness.cs

@ -466,6 +466,8 @@ namespace BBWY.Server.Business
var orderCostPurchaseAmount = 0M; var orderCostPurchaseAmount = 0M;
var orderDeliveryExpressFreight = 0M; //发货总运费,sku购买数量第二个开始半价 var orderDeliveryExpressFreight = 0M; //发货总运费,sku购买数量第二个开始半价
var avgPreferential = dbOrder.PreferentialAmount / orderSkus.Count();
foreach (var orderSku in orderSkus) foreach (var orderSku in orderSkus)
{ {
//查询该sku的扣减明细 //查询该sku的扣减明细
@ -533,7 +535,7 @@ namespace BBWY.Server.Business
SkuAmount = purchaseOrder.SingleSkuAmount * deductionQuantity, SkuAmount = purchaseOrder.SingleSkuAmount * deductionQuantity,
StorageAmount = purchaseOrder.SingleStorageAmount * 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); insertOrderCostDetailList.Add(orderCostDetail);
} }
} }
@ -603,6 +605,8 @@ namespace BBWY.Server.Business
osku.Price, osku.Price,
osku.ItemTotal osku.ItemTotal
}); });
var avgPreferential = dbOrder.PreferentialAmount / orderSkuList.Count();
var dbAfterSaleOrderList = fsql.Select<AfterSaleOrder>().Where(aso => aso.OrderId == manualCalculationCostRequest.OrderId).ToList(); var dbAfterSaleOrderList = fsql.Select<AfterSaleOrder>().Where(aso => aso.OrderId == manualCalculationCostRequest.OrderId).ToList();
if (manualCalculationCostRequest.IsSetStorageType) if (manualCalculationCostRequest.IsSetStorageType)
@ -619,7 +623,7 @@ namespace BBWY.Server.Business
var osku = orderSkuList.FirstOrDefault(o => o.SkuId == orderCostDetail.SkuId); var osku = orderSkuList.FirstOrDefault(o => o.SkuId == orderCostDetail.SkuId);
if (osku != null) if (osku != null)
{ {
orderCostDetail.SkuGrossProfit = osku.Price.Value * orderCostDetail.DeductionQuantity - orderCostDetail.SkuGrossProfit = osku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential -
(orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) -
osku.Price.Value * orderCostDetail.DeductionQuantity * manualCalculationCostRequest.PlatformCommissionRatio; osku.Price.Value * orderCostDetail.DeductionQuantity * manualCalculationCostRequest.PlatformCommissionRatio;
} }
@ -795,7 +799,7 @@ namespace BBWY.Server.Business
deletePurchaseOrder = fsql.Delete<PurchaseOrder>().Where(po => oldPourchaseIdList.Contains(po.Id)); deletePurchaseOrder = fsql.Delete<PurchaseOrder>().Where(po => oldPourchaseIdList.Contains(po.Id));
deleteOrderCostDetail = fsql.Delete<OrderCostDetail>().Where(ocd => ocd.OrderId == dbOrder.Id); deleteOrderCostDetail = fsql.Delete<OrderCostDetail>().Where(ocd => ocd.OrderId == dbOrder.Id);
var avgPreferential = dbOrder.PreferentialAmount / dbOrderSkuList.Count();
foreach (var odsRequest in relationPurchaseOrderRequestV2.OrderDropShippingList) foreach (var odsRequest in relationPurchaseOrderRequestV2.OrderDropShippingList)
{ {
@ -876,7 +880,7 @@ namespace BBWY.Server.Business
var dbOrderSku = dbOrderSkuList.FirstOrDefault(dbosku => dbosku.SkuId == relationOrderSku.SkuId); var dbOrderSku = dbOrderSkuList.FirstOrDefault(dbosku => dbosku.SkuId == relationOrderSku.SkuId);
if (dbOrderSku != null) if (dbOrderSku != null)
{ {
orderCostDetail.SkuGrossProfit = dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity - orderCostDetail.SkuGrossProfit = dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential -
(orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) -
dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity * relationPurchaseOrderRequestV2.PlatformCommissionRatio; dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity * relationPurchaseOrderRequestV2.PlatformCommissionRatio;
} }

5
BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -189,6 +189,9 @@ namespace BBWY.Server.Business
IInsert<OrderCost> insertOrderCost = null; IInsert<OrderCost> insertOrderCost = null;
IUpdate<OrderCost> updateOrderCost = null; IUpdate<OrderCost> updateOrderCost = null;
IInsert<OrderDropShipping> insertOrderDropShipping = null; IInsert<OrderDropShipping> insertOrderDropShipping = null;
var avgPreferential = dbOrder.PreferentialAmount / orderSkus.Count();
foreach (var orderSku in orderSkus) foreach (var orderSku in orderSkus)
{ {
#region 计算当前sku的采购成本和采购运费 #region 计算当前sku的采购成本和采购运费
@ -261,7 +264,7 @@ namespace BBWY.Server.Business
//UnitCost = purchaseOrder.UnitCost, //UnitCost = purchaseOrder.UnitCost,
//TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount//purchaseOrder.UnitCost * orderSku.ItemTotal.Value //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); insertOrderCostDetails.Add(orderCostDetail);
#endregion #endregion
} }

4
BBWY.Server.Business/Sync/OrderSyncBusiness.cs

@ -492,6 +492,8 @@ namespace BBWY.Server.Business
var orderCostPurchaseAmount = 0M; var orderCostPurchaseAmount = 0M;
var orderDeliveryExpressFreight = 0M; //发货总运费,sku购买数量第二个开始半价 var orderDeliveryExpressFreight = 0M; //发货总运费,sku购买数量第二个开始半价
var avgPreferential = dbOrder.PreferentialAmount / orderSkuJArray.Count();
#region 扣减库存 #region 扣减库存
foreach (var orderSkuJToken in orderSkuJArray) foreach (var orderSkuJToken in orderSkuJArray)
{ {
@ -550,7 +552,7 @@ namespace BBWY.Server.Business
StorageAmount = purchaseOrder.SingleStorageAmount * deductionQuantity, StorageAmount = purchaseOrder.SingleStorageAmount * deductionQuantity,
IsEnabled = true IsEnabled = true
}; };
orderCostDetail.SkuGrossProfit = itemPrice * deductionQuantity - orderCostDetail.SkuGrossProfit = itemPrice * deductionQuantity - avgPreferential -
(orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) -
itemPrice * deductionQuantity * platformCommissionRatio; itemPrice * deductionQuantity * platformCommissionRatio;
insertOrderCostDetailList.Add(orderCostDetail); insertOrderCostDetailList.Add(orderCostDetail);

93
BBWY.Test/JDProductAPITest.cs

@ -58,7 +58,7 @@ namespace BBWY.Test
var barCode = ""; var barCode = "";
var categoryId = ""; var categoryId = "";
IList<JToken> saleAttrs = null;
IList<JToken> multiCateProps = null; IList<JToken> multiCateProps = null;
var selectGiftSkuList = new List<ProductSkuResponse>(); var selectGiftSkuList = new List<ProductSkuResponse>();
@ -88,7 +88,7 @@ namespace BBWY.Test
barCode = skuList[0].Source.Value<string>("barCode"); barCode = skuList[0].Source.Value<string>("barCode");
categoryId = skuList[0].Source.Value<string>("categoryId"); categoryId = skuList[0].Source.Value<string>("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; multiCateProps = skuList[0].Source["multiCateProps"] != null ? skuList[0].Source["multiCateProps"].ToList() : null;
} }
#endregion #endregion
@ -125,50 +125,71 @@ namespace BBWY.Test
} }
#endregion #endregion
#region 增量保存sku #region 获取销售属性
IList<JToken> 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<long>("id") == 1000007121);
if (colorProperty == null)
throw new Exception("缺少颜色属性");
colorSaleAttrs = colorProperty["attrValueList"].ToList();
}
#endregion
#region 增量保存sku
{ {
var skusParamList = new List<SkuWriteUpdateSkusItem>(); var skusParamList = new List<SkuWriteUpdateSkusItem>();
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() var p = new SkuWriteUpdateSkusItem()
{ {
wareId = long.Parse(mainSpu), wareId = long.Parse(mainSpu),
skuId = long.Parse(sku.Id), //skuId = long.Parse(sku.Id),
//saleAttrs = sku.Source["saleAttrs"].Select(s => new SkuWriteUpdateSkusItemSaleAttrs() jdPrice = giftSku.Price,
//{ stockNum = 500,
// attrId = s.Value<string>("attrId"),
// attrValues = s.Value<JArray>("attrValues").Select(x => x.ToString()).ToList()
//}).ToList(),
jdPrice = sku.Price,
stockNum = 5000,
barCode = barCode, barCode = barCode,
//multiCateProps = multiCateProps.Select(mp => new SkuWriteUpdateSkusItemSaleAttrs()
//{
// attrId = mp.Value<string>("attrId"),
// attrValues = mp.Value<JArray>("attrValues").Select(x => x.ToString()).ToList()
//}).ToList()
}; };
var colorProperty = colorSaleAttrs[takeColorIndex];
p.saleAttrs = new List<SkuWriteUpdateSkusItemSaleAttrs>(); p.saleAttrs = new List<SkuWriteUpdateSkusItemSaleAttrs>();
foreach (var saleAttr in saleAttrs)
{ var m = new SkuWriteUpdateSkusItemSaleAttrs();
var m = new SkuWriteUpdateSkusItemSaleAttrs(); m.attrId = colorProperty.Value<string>("attId");
m.attrId = saleAttr.Value<string>("attrId"); m.attrValues = new List<string>() { colorProperty.Value<string>("id") };
m.attrValues = saleAttr.Value<JArray>("attrValues").Select(x => x.ToString()).ToList(); m.attrValueAlias = new List<string>() { colorProperty.Value<string>("name") };
p.saleAttrs.Add(m); m.index = takeColorIndex;
} p.saleAttrs.Add(m);
takeColorIndex--;
p.multiCateProps = new List<SkuWriteUpdateSkusItemSaleAttrs>();
if (multiCateProps != null && multiCateProps.Count() > 0) //foreach (var saleAttr in colorSaleAttrs)
{ //{
foreach (var multiCateProp in multiCateProps) // var m = new SkuWriteUpdateSkusItemSaleAttrs();
{ // m.attrId = saleAttr.Value<string>("attrId");
var m = new SkuWriteUpdateSkusItemSaleAttrs(); // m.attrValues = saleAttr.Value<JArray>("attrValues").Select(x => x.ToString()).ToList();
m.attrId = multiCateProp.Value<string>("attrId"); // p.saleAttrs.Add(m);
m.attrValues = multiCateProp.Value<JArray>("attrValues").Select(x => x.ToString()).ToList(); //}
p.multiCateProps.Add(m);
} //p.multiCateProps = new List<SkuWriteUpdateSkusItemSaleAttrs>();
} //if (multiCateProps != null && multiCateProps.Count() > 0)
//{
// foreach (var multiCateProp in multiCateProps)
// {
// var m = new SkuWriteUpdateSkusItemSaleAttrs();
// m.attrId = multiCateProp.Value<string>("attrId");
// m.attrValues = multiCateProp.Value<JArray>("attrValues").Select(x => x.ToString()).ToList();
// p.multiCateProps.Add(m);
// }
//}
skusParamList.Add(p); skusParamList.Add(p);
} }

Loading…
Cancel
Save