|
|
@ -164,10 +164,10 @@ namespace BBWY.Server.Business |
|
|
|
|
|
|
|
private void SyncJDOrder(JArray orderTokenJArray, long shopId, string relayAPIHost, string appKey, string appSecret, string appToken, decimal platformCommissionRatio) |
|
|
|
{ |
|
|
|
if (shopId == 10388155) |
|
|
|
{ |
|
|
|
nLogManager.GetLogger("订单同步-布莱特玩具专营店").Info(JsonConvert.SerializeObject(orderTokenJArray)); |
|
|
|
} |
|
|
|
//if (shopId == 10388155)
|
|
|
|
//{
|
|
|
|
// nLogManager.GetLogger("订单同步-布莱特玩具专营店").Info(JsonConvert.SerializeObject(orderTokenJArray));
|
|
|
|
//}
|
|
|
|
|
|
|
|
#region 数据库操作
|
|
|
|
List<Order> insertOrderList = new List<Order>(); |
|
|
@ -176,14 +176,13 @@ namespace BBWY.Server.Business |
|
|
|
List<OrderCostDetail> insertOrderCostDetailList = new List<OrderCostDetail>(); |
|
|
|
List<OrderSku> insertOrderSkuList = new List<OrderSku>(); |
|
|
|
List<OrderCoupon> insertOrderCouponList = new List<OrderCoupon>(); |
|
|
|
List<SkuDailySalesDetail> insertSkuDailySaleDetailList = new List<SkuDailySalesDetail>(); |
|
|
|
List<Giftorder> insertGiftorderList = new List<Giftorder>(); |
|
|
|
|
|
|
|
List<GiftOrder> insertGiftOrderList = new List<GiftOrder>(); |
|
|
|
List<GiftOrderSku> insertGiftOrderSkuList = new List<GiftOrderSku>(); |
|
|
|
IList<IUpdate<GiftOrder>> updateGiftOrderList = new List<IUpdate<GiftOrder>>(); |
|
|
|
|
|
|
|
IList<IUpdate<Order>> updateOrderList = new List<IUpdate<Order>>(); |
|
|
|
IList<IUpdate<PurchaseOrder>> updatePurchaseOrderList = new List<IUpdate<PurchaseOrder>>(); |
|
|
|
IList<IUpdate<SkuDailySalesDetail>> updateSkuDailySalesDetailList = new List<IUpdate<SkuDailySalesDetail>>(); |
|
|
|
|
|
|
|
Dictionary<DateTime, List<SkuDailySalesDetail>> skuDailySalesDetailDictionary = new Dictionary<DateTime, List<SkuDailySalesDetail>>(); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 赠品
|
|
|
@ -191,7 +190,9 @@ namespace BBWY.Server.Business |
|
|
|
if (giftOrderJArray.Count() > 0) |
|
|
|
{ |
|
|
|
var giftOrderIds = giftOrderJArray.Select(orderJToken => orderJToken.Value<string>("orderId")).ToArray(); |
|
|
|
var dbGiftOrderIds = fsql.Select<Giftorder>(giftOrderIds).ToList(o => o.Id); |
|
|
|
var dbGiftOrderList = fsql.Select<GiftOrder>(giftOrderIds).ToList(); |
|
|
|
var dbGiftOrderIds = dbGiftOrderList.Select(go => go.Id).ToList(); |
|
|
|
|
|
|
|
var exceptIds = giftOrderIds.Except(dbGiftOrderIds); |
|
|
|
if (exceptIds.Count() > 0) |
|
|
|
{ |
|
|
@ -199,13 +200,16 @@ namespace BBWY.Server.Business |
|
|
|
foreach (var orderJToken in newGiftOrderJArray) |
|
|
|
{ |
|
|
|
var orderStartTime = orderJToken.Value<DateTime>("orderStartTime"); |
|
|
|
insertGiftorderList.Add(new Giftorder() |
|
|
|
var modifyTime = orderJToken.Value<DateTime?>("modified"); |
|
|
|
insertGiftOrderList.Add(new GiftOrder() |
|
|
|
{ |
|
|
|
Id = orderJToken.Value<string>("orderId"), |
|
|
|
CreateTime = DateTime.Now, |
|
|
|
Platform = Enums.Platform.京东, |
|
|
|
ShopId = shopId, |
|
|
|
StartTime = orderStartTime |
|
|
|
StartTime = orderStartTime, |
|
|
|
ModifyTime = modifyTime, |
|
|
|
OrderState = ConvertOrderState(orderJToken) |
|
|
|
}); |
|
|
|
|
|
|
|
var itemInfoList = orderJToken["itemInfoList"] as JArray; |
|
|
@ -215,8 +219,33 @@ namespace BBWY.Server.Business |
|
|
|
var jdPrice = orderSkuJToken.Value<decimal>("jdPrice"); |
|
|
|
var wareId = orderSkuJToken.Value<string>("wareId"); |
|
|
|
var skuId = orderSkuJToken.Value<string>("skuId"); |
|
|
|
insertGiftOrderSkuList.Add(new GiftOrderSku() |
|
|
|
{ |
|
|
|
Id = idGenerator.NewLong(), |
|
|
|
CreateTime = DateTime.Now, |
|
|
|
GiftOrderId = orderJToken.Value<string>("orderId"), |
|
|
|
ItemTotal = itemTotal, |
|
|
|
Price = jdPrice, |
|
|
|
ProductId = wareId, |
|
|
|
ShopId = shopId, |
|
|
|
SkuId = skuId |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
CumulativeSkuDailySalesDetail(skuDailySalesDetailDictionary, orderStartTime, shopId, skuId, wareId, jdPrice, itemTotal); |
|
|
|
var intersectIds = giftOrderIds.Intersect(dbGiftOrderIds); |
|
|
|
if (intersectIds.Count() > 0) |
|
|
|
{ |
|
|
|
foreach (var intersercId in intersectIds) |
|
|
|
{ |
|
|
|
var orderJToken = giftOrderJArray.FirstOrDefault(o => o.Value<string>("orderId") == intersercId); |
|
|
|
var dbGiftOrder = dbGiftOrderList.FirstOrDefault(o => o.Id == intersercId); |
|
|
|
var orderState = ConvertOrderState(orderJToken); |
|
|
|
if (orderState != null && orderState != dbGiftOrder.OrderState) |
|
|
|
{ |
|
|
|
var update = fsql.Update<GiftOrder>(intersercId).Set(go => go.OrderState, orderState); |
|
|
|
updateGiftOrderList.Add(update); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -330,24 +359,23 @@ namespace BBWY.Server.Business |
|
|
|
var wareId = orderSkuJToken.Value<string>("wareId"); |
|
|
|
var skuId = orderSkuJToken.Value<string>("skuId"); |
|
|
|
|
|
|
|
if (orderSkuJToken.Value<decimal>("jdPrice") != 0M) |
|
|
|
//if (orderSkuJToken.Value<decimal>("jdPrice") != 0M)
|
|
|
|
//{
|
|
|
|
var osku = new OrderSku() |
|
|
|
{ |
|
|
|
var osku = new OrderSku() |
|
|
|
{ |
|
|
|
Id = idGenerator.NewLong(), |
|
|
|
ItemTotal = itemTotal, |
|
|
|
Price = jdPrice, |
|
|
|
ProductId = wareId, |
|
|
|
Title = orderSkuJToken.Value<string>("skuName").SimplifySkuName(), |
|
|
|
ProductNo = orderSkuJToken.Value<string>("productNo"), |
|
|
|
CreateTime = DateTime.Now, |
|
|
|
OrderId = orderId, |
|
|
|
SkuId = skuId |
|
|
|
}; |
|
|
|
insertOrderSkuList.Add(osku); |
|
|
|
} |
|
|
|
|
|
|
|
CumulativeSkuDailySalesDetail(skuDailySalesDetailDictionary, dbOrder.StartTime.Value, shopId, skuId, wareId, jdPrice, itemTotal); |
|
|
|
Id = idGenerator.NewLong(), |
|
|
|
ItemTotal = itemTotal, |
|
|
|
Price = jdPrice, |
|
|
|
ProductId = wareId, |
|
|
|
Title = orderSkuJToken.Value<string>("skuName").SimplifySkuName(), |
|
|
|
ProductNo = orderSkuJToken.Value<string>("productNo"), |
|
|
|
CreateTime = DateTime.Now, |
|
|
|
OrderId = orderId, |
|
|
|
SkuId = skuId |
|
|
|
}; |
|
|
|
insertOrderSkuList.Add(osku); |
|
|
|
//}
|
|
|
|
//CumulativeSkuDailySalesDetail(skuDailySalesDetailDictionary, dbOrder.StartTime.Value, shopId, skuId, wareId, jdPrice, itemTotal);
|
|
|
|
|
|
|
|
} |
|
|
|
#endregion
|
|
|
@ -398,65 +426,7 @@ namespace BBWY.Server.Business |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 订单状态转换
|
|
|
|
var jdOrderState = orderJToken.Value<string>("orderState"); |
|
|
|
Enums.OrderState? orderState = null; |
|
|
|
|
|
|
|
#region SOP状态翻译
|
|
|
|
if (jdOrderState.Equals("NOT_PAY")) //未付款
|
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.待付款; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("WAIT_SELLER_STOCK_OUT")) //等待出库
|
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.等待采购; |
|
|
|
if (dbOrder.StorageType != null) |
|
|
|
orderState = Enums.OrderState.待出库; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("WAIT_GOODS_RECEIVE_CONFIRM")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.待收货; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("FINISHED_L")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.已完成; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("LOCKED")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.锁定; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("TRADE_CANCELED")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.已取消; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("POP_ORDER_PAUSE") || jdOrderState.Equals("PAUSE")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.暂停; |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region FBP状态翻译
|
|
|
|
else if (jdOrderState.Equals("DengDaiDaYin") || jdOrderState.Equals("DengDaiChuKu") || jdOrderState.Equals("DengDaiDaBao") || jdOrderState.Equals("DengDaiFaHuo")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.待出库; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("DengDaiQueRenShouHuo")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.待收货; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("WanCheng")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.已完成; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("SuoDing") || jdOrderState.Equals("LOCKED")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.锁定; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("TRADE_CANCELED")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.已取消; |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
var orderState = ConvertOrderState(orderJToken, dbOrder.StorageType); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 取消订单恢复库存
|
|
|
@ -677,47 +647,6 @@ namespace BBWY.Server.Business |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region sku销量统计
|
|
|
|
if (skuDailySalesDetailDictionary.Keys.Count > 0) |
|
|
|
{ |
|
|
|
foreach (var date in skuDailySalesDetailDictionary.Keys) |
|
|
|
{ |
|
|
|
var skuDailySalesDetailList = skuDailySalesDetailDictionary[date]; |
|
|
|
var skuDailySalesDetailIds = skuDailySalesDetailList.Select(s => s.Sku).ToList(); |
|
|
|
var dbSkuDailySalesDetailList = fsql.Select<SkuDailySalesDetail>().Where(s => s.ShopId == shopId && |
|
|
|
s.Date == date && |
|
|
|
skuDailySalesDetailIds.Contains(s.Sku)).ToList(); |
|
|
|
var dbSkuDailySalesDetailIds = dbSkuDailySalesDetailList.Select(s => s.Sku); |
|
|
|
var exceptIds = skuDailySalesDetailIds.Except(dbSkuDailySalesDetailIds).ToList(); |
|
|
|
if (exceptIds.Count() > 0) |
|
|
|
{ |
|
|
|
var insertList = skuDailySalesDetailList.Where(s => exceptIds.Contains(s.Sku)); |
|
|
|
foreach (var s in insertList) |
|
|
|
{ |
|
|
|
s.Id = idGenerator.NewLong(); |
|
|
|
s.CreateTime = DateTime.Now; |
|
|
|
insertSkuDailySaleDetailList.Add(s); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
var intersectIds = skuDailySalesDetailIds.Intersect(dbSkuDailySalesDetailIds).ToList(); |
|
|
|
if (intersectIds.Count() > 0) |
|
|
|
{ |
|
|
|
foreach (var intersectId in intersectIds) |
|
|
|
{ |
|
|
|
var skudaily = skuDailySalesDetailList.FirstOrDefault(s => s.Sku == intersectId); |
|
|
|
var dbSkudaily = dbSkuDailySalesDetailList.FirstOrDefault(s => s.Sku == intersectId); |
|
|
|
var update = fsql.Update<SkuDailySalesDetail>(dbSkudaily.Id).Set(ds => ds.Amount + skudaily.Amount) |
|
|
|
.Set(ds => ds.OrderCount + skudaily.OrderCount) |
|
|
|
.Set(ds => ds.ItemTotal + skudaily.ItemTotal); |
|
|
|
updateSkuDailySalesDetailList.Add(update); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
if (insertOrderList.Count() > 0) |
|
|
@ -732,10 +661,11 @@ namespace BBWY.Server.Business |
|
|
|
fsql.Insert(insertOrderCostDetailList).ExecuteAffrows(); |
|
|
|
if (insertOrderCouponList.Count() > 0) |
|
|
|
fsql.Insert(insertOrderCouponList).ExecuteAffrows(); |
|
|
|
if (insertSkuDailySaleDetailList.Count() > 0) |
|
|
|
fsql.Insert(insertSkuDailySaleDetailList).ExecuteAffrows(); |
|
|
|
if (insertGiftorderList.Count > 0) |
|
|
|
fsql.Insert(insertGiftorderList).ExecuteAffrows(); |
|
|
|
|
|
|
|
if (insertGiftOrderList.Count() > 0) |
|
|
|
fsql.Insert(insertGiftOrderList).ExecuteAffrows(); |
|
|
|
if (insertGiftOrderSkuList.Count() > 0) |
|
|
|
fsql.Insert(insertGiftOrderSkuList).ExecuteAffrows(); |
|
|
|
|
|
|
|
if (updatePurchaseOrderList.Count() > 0) |
|
|
|
{ |
|
|
@ -749,9 +679,12 @@ namespace BBWY.Server.Business |
|
|
|
update.ExecuteAffrows(); |
|
|
|
} |
|
|
|
|
|
|
|
if (updateSkuDailySalesDetailList.Count > 0) |
|
|
|
foreach (var update in updateSkuDailySalesDetailList) |
|
|
|
if (updateGiftOrderList.Count() > 0) |
|
|
|
{ |
|
|
|
foreach (var update in updateGiftOrderList) |
|
|
|
update.ExecuteAffrows(); |
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
@ -768,47 +701,73 @@ namespace BBWY.Server.Business |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 累计
|
|
|
|
/// 转换订单状态
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="skuDailySalesDetailDictionary"></param>
|
|
|
|
/// <param name="orderStartTime"></param>
|
|
|
|
/// <param name="shopId"></param>
|
|
|
|
/// <param name="skuId"></param>
|
|
|
|
/// <param name="spuId"></param>
|
|
|
|
/// <param name="price"></param>
|
|
|
|
/// <param name="itemTotal"></param>
|
|
|
|
private void CumulativeSkuDailySalesDetail(Dictionary<DateTime, List<SkuDailySalesDetail>> skuDailySalesDetailDictionary, |
|
|
|
DateTime orderStartTime, |
|
|
|
long shopId, |
|
|
|
string skuId, |
|
|
|
string spuId, |
|
|
|
decimal price, |
|
|
|
int itemTotal) |
|
|
|
/// <param name="orderJToken"></param>
|
|
|
|
/// <param name="storageType"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
private Enums.OrderState? ConvertOrderState(JToken orderJToken, Enums.StorageType? storageType = null) |
|
|
|
{ |
|
|
|
var startDate = orderStartTime.Date; |
|
|
|
if (!skuDailySalesDetailDictionary.TryGetValue(startDate, out List<SkuDailySalesDetail> skuDailySalesDetailList)) |
|
|
|
var jdOrderState = orderJToken.Value<string>("orderState"); |
|
|
|
Enums.OrderState? orderState = null; |
|
|
|
|
|
|
|
#region SOP状态翻译
|
|
|
|
if (jdOrderState.Equals("NOT_PAY")) //未付款
|
|
|
|
{ |
|
|
|
skuDailySalesDetailList = new List<SkuDailySalesDetail>(); |
|
|
|
skuDailySalesDetailDictionary.Add(startDate, skuDailySalesDetailList); |
|
|
|
orderState = Enums.OrderState.待付款; |
|
|
|
} |
|
|
|
var skuDailySalesDetail = skuDailySalesDetailList.FirstOrDefault(s => s.Sku == skuId); |
|
|
|
if (skuDailySalesDetail == null) |
|
|
|
else if (jdOrderState.Equals("WAIT_SELLER_STOCK_OUT")) //等待出库
|
|
|
|
{ |
|
|
|
skuDailySalesDetail = new SkuDailySalesDetail() |
|
|
|
{ |
|
|
|
ShopId = shopId, |
|
|
|
Spu = spuId, |
|
|
|
Sku = skuId, |
|
|
|
Platform = Enums.Platform.京东, |
|
|
|
Price = price, |
|
|
|
Date = startDate, |
|
|
|
IsGift = price == 0M |
|
|
|
}; |
|
|
|
skuDailySalesDetailList.Add(skuDailySalesDetail); |
|
|
|
orderState = Enums.OrderState.等待采购; |
|
|
|
if (storageType != null) |
|
|
|
orderState = Enums.OrderState.待出库; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("WAIT_GOODS_RECEIVE_CONFIRM")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.待收货; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("FINISHED_L")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.已完成; |
|
|
|
} |
|
|
|
skuDailySalesDetail.Amount += price * itemTotal; |
|
|
|
skuDailySalesDetail.ItemTotal += itemTotal; |
|
|
|
skuDailySalesDetail.OrderCount++; |
|
|
|
else if (jdOrderState.Equals("LOCKED")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.锁定; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("TRADE_CANCELED")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.已取消; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("POP_ORDER_PAUSE") || jdOrderState.Equals("PAUSE")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.暂停; |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region FBP状态翻译
|
|
|
|
else if (jdOrderState.Equals("DengDaiDaYin") || jdOrderState.Equals("DengDaiChuKu") || jdOrderState.Equals("DengDaiDaBao") || jdOrderState.Equals("DengDaiFaHuo")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.待出库; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("DengDaiQueRenShouHuo")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.待收货; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("WanCheng")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.已完成; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("SuoDing") || jdOrderState.Equals("LOCKED")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.锁定; |
|
|
|
} |
|
|
|
else if (jdOrderState.Equals("TRADE_CANCELED")) |
|
|
|
{ |
|
|
|
orderState = Enums.OrderState.已取消; |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
return orderState; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|