diff --git a/BBWY.Server.Business/Order/OrderBusiness.cs b/BBWY.Server.Business/Order/OrderBusiness.cs index 1b0da323..141b49e2 100644 --- a/BBWY.Server.Business/Order/OrderBusiness.cs +++ b/BBWY.Server.Business/Order/OrderBusiness.cs @@ -186,7 +186,9 @@ namespace BBWY.Server.Business #endregion #region 处理Sku - var orderSkuList = fsql.Select().Where(osku => orderIdList.Contains(osku.OrderId)).ToList().Map>(); + var orderSkuList = fsql.Select().Where(osku => osku.Price != 0 && + orderIdList.Contains(osku.OrderId)).ToList() + .Map>(); foreach (var order in orderList) { order.ItemList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); @@ -294,7 +296,7 @@ namespace BBWY.Server.Business }); var orderIdList = orderSourceList.Select(o => o.OrderId).ToList(); - var orderSkuList = fsql.Select().Where(osku => orderIdList.Contains(osku.OrderId)).ToList(); + var orderSkuList = fsql.Select().Where(osku => osku.Price != 0 && orderIdList.Contains(osku.OrderId)).ToList(); var orderCostDetailGroup = fsql.Select().Where(ocd => orderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true) .GroupBy(ocd => ocd.OrderId).ToList(g => new { @@ -344,7 +346,7 @@ namespace BBWY.Server.Business throw new BusinessException("订单不存在"); var orderResponse = order.Map(); - var orderSkuList = fsql.Select().Where(osku => osku.OrderId == orderId).ToList().Map>(); + var orderSkuList = fsql.Select().Where(osku => osku.Price != 0 && osku.OrderId == orderId).ToList().Map>(); var orderCouponList = fsql.Select().Where(oc => oc.OrderId == orderId).ToList().Map>(); var orderCostDetailList = fsql.Select().Where(ocd => ocd.OrderId == orderId && ocd.IsEnabled == true).ToList().Map>(); var orderDropShippingList = fsql.Select().Where(ods => ods.OrderId == orderId).ToList().Map>(); @@ -438,7 +440,7 @@ namespace BBWY.Server.Business if (dbOrder == null) throw new BusinessException($"订单号{autoCalculationCostRequest.OrderId}不存在"); - var orderSkus = fsql.Select().Where(osku => osku.OrderId == autoCalculationCostRequest.OrderId).ToList(); + var orderSkus = fsql.Select().Where(osku => osku.Price != 0 && osku.OrderId == autoCalculationCostRequest.OrderId).ToList(); var orderSkuIds = orderSkus.Select(osku => osku.SkuId).ToList(); var purchaserOrders = fsql.Select().Where(po => po.StorageType == autoCalculationCostRequest.StorageType && po.RemainingQuantity != 0 && @@ -592,7 +594,7 @@ namespace BBWY.Server.Business IUpdate updateOrderCost = null; IInsert insertOrderCost = null; List insertOrderCostDetailList = new List(); - var orderSkuList = fsql.Select().Where(osku => osku.OrderId == manualCalculationCostRequest.OrderId).ToList(osku => new + var orderSkuList = fsql.Select().Where(osku => osku.Price != 0 && osku.OrderId == manualCalculationCostRequest.OrderId).ToList(osku => new { osku.SkuId, osku.Price, @@ -784,7 +786,7 @@ namespace BBWY.Server.Business List insertPurchaseOrderList = new List(); List insertOrderCostDetailList = new List(); - var dbOrderSkuList = fsql.Select().Where(osku => osku.OrderId == dbOrder.Id).ToList(); + var dbOrderSkuList = fsql.Select().Where(osku => osku.Price != 0 && osku.OrderId == dbOrder.Id).ToList(); var oldPourchaseIdList = fsql.Select().Where(ocd => ocd.OrderId == dbOrder.Id) .ToList(ocd => ocd.PurchaseOrderPKId); diff --git a/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 87a89dac..ea64580c 100644 --- a/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -164,7 +164,7 @@ namespace BBWY.Server.Business } #endregion - var orderSkus = fsql.Select().Where(osku => osku.OrderId == createOnlinePurchaseOrderRequest.OrderId).ToList(); + var orderSkus = fsql.Select().Where(osku => osku.Price != 0 && osku.OrderId == createOnlinePurchaseOrderRequest.OrderId).ToList(); var orderSkuIds = orderSkus.Select(osku => osku.Id).ToList(); var createOrderResponse = platformSDKBusinessList.FirstOrDefault(p => p.Platform == createOnlinePurchaseOrderRequest.Platform) @@ -557,7 +557,7 @@ namespace BBWY.Server.Business #region 查询订单Sku currentProgress = "查询订单Sku"; - var orderSkuList = fsql.Select().Where(osku => osku.OrderId == orderDropshipping.OrderId).ToList(); + 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 diff --git a/BBWY.Server.Business/Statistics/StatisticsBusiness.cs b/BBWY.Server.Business/Statistics/StatisticsBusiness.cs index ef234681..dcc68eb7 100644 --- a/BBWY.Server.Business/Statistics/StatisticsBusiness.cs +++ b/BBWY.Server.Business/Statistics/StatisticsBusiness.cs @@ -191,7 +191,7 @@ namespace BBWY.Server.Business var orderIdList = orderList.Select(o => o.Id).ToList(); //查询orderSku - var orderSkuList = fsql.Select().Where(osku => orderIdList.Contains(osku.OrderId)).ToList(); + var orderSkuList = fsql.Select().Where(osku => osku.Price != 0 && orderIdList.Contains(osku.OrderId)).ToList(); //查询成本明细 var orderCostDetailList = fsql.Select().Where(ocd => orderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true).ToList(); diff --git a/BBWY.Server.Business/Sync/JD/JDPopularizeReportFormAdLevelSyncBusiness.cs b/BBWY.Server.Business/Sync/JD/JDPopularizeReportFormAdLevelSyncBusiness.cs index 4fa24343..bee110d0 100644 --- a/BBWY.Server.Business/Sync/JD/JDPopularizeReportFormAdLevelSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/JD/JDPopularizeReportFormAdLevelSyncBusiness.cs @@ -129,7 +129,7 @@ namespace BBWY.Server.Business.Sync { if (jArray == null || !jArray.HasValues) return; - var insertList = new List(); + var insertList = new List(); foreach (var j in jArray) { var adName = j.Value("adName"); diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 8d9ccb5e..12e53e91 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -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 insertOrderList = new List(); @@ -176,14 +176,13 @@ namespace BBWY.Server.Business List insertOrderCostDetailList = new List(); List insertOrderSkuList = new List(); List insertOrderCouponList = new List(); - List insertSkuDailySaleDetailList = new List(); - List insertGiftorderList = new List(); + + List insertGiftOrderList = new List(); + List insertGiftOrderSkuList = new List(); + IList> updateGiftOrderList = new List>(); IList> updateOrderList = new List>(); IList> updatePurchaseOrderList = new List>(); - IList> updateSkuDailySalesDetailList = new List>(); - - Dictionary> skuDailySalesDetailDictionary = new Dictionary>(); #endregion #region 赠品 @@ -191,7 +190,9 @@ namespace BBWY.Server.Business if (giftOrderJArray.Count() > 0) { var giftOrderIds = giftOrderJArray.Select(orderJToken => orderJToken.Value("orderId")).ToArray(); - var dbGiftOrderIds = fsql.Select(giftOrderIds).ToList(o => o.Id); + var dbGiftOrderList = fsql.Select(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("orderStartTime"); - insertGiftorderList.Add(new Giftorder() + var modifyTime = orderJToken.Value("modified"); + insertGiftOrderList.Add(new GiftOrder() { Id = orderJToken.Value("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("jdPrice"); var wareId = orderSkuJToken.Value("wareId"); var skuId = orderSkuJToken.Value("skuId"); + insertGiftOrderSkuList.Add(new GiftOrderSku() + { + Id = idGenerator.NewLong(), + CreateTime = DateTime.Now, + GiftOrderId = orderJToken.Value("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("orderId") == intersercId); + var dbGiftOrder = dbGiftOrderList.FirstOrDefault(o => o.Id == intersercId); + var orderState = ConvertOrderState(orderJToken); + if (orderState != null && orderState != dbGiftOrder.OrderState) + { + var update = fsql.Update(intersercId).Set(go => go.OrderState, orderState); + updateGiftOrderList.Add(update); } } } @@ -330,24 +359,23 @@ namespace BBWY.Server.Business var wareId = orderSkuJToken.Value("wareId"); var skuId = orderSkuJToken.Value("skuId"); - if (orderSkuJToken.Value("jdPrice") != 0M) + //if (orderSkuJToken.Value("jdPrice") != 0M) + //{ + var osku = new OrderSku() { - var osku = new OrderSku() - { - Id = idGenerator.NewLong(), - ItemTotal = itemTotal, - Price = jdPrice, - ProductId = wareId, - Title = orderSkuJToken.Value("skuName").SimplifySkuName(), - ProductNo = orderSkuJToken.Value("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("skuName").SimplifySkuName(), + ProductNo = orderSkuJToken.Value("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("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().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(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 } /// - /// 累计 + /// 转换订单状态 /// - /// - /// - /// - /// - /// - /// - /// - private void CumulativeSkuDailySalesDetail(Dictionary> skuDailySalesDetailDictionary, - DateTime orderStartTime, - long shopId, - string skuId, - string spuId, - decimal price, - int itemTotal) + /// + /// + /// + private Enums.OrderState? ConvertOrderState(JToken orderJToken, Enums.StorageType? storageType = null) { - var startDate = orderStartTime.Date; - if (!skuDailySalesDetailDictionary.TryGetValue(startDate, out List skuDailySalesDetailList)) + var jdOrderState = orderJToken.Value("orderState"); + Enums.OrderState? orderState = null; + + #region SOP状态翻译 + if (jdOrderState.Equals("NOT_PAY")) //未付款 { - skuDailySalesDetailList = new List(); - 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; } } } diff --git a/BBWY.Server.Model/Db/Order/GiftOrder.cs b/BBWY.Server.Model/Db/Order/GiftOrder.cs index 906a8b0d..e10ad540 100644 --- a/BBWY.Server.Model/Db/Order/GiftOrder.cs +++ b/BBWY.Server.Model/Db/Order/GiftOrder.cs @@ -5,7 +5,7 @@ namespace BBWY.Server.Model.Db { [Table(Name = "giftorder", DisableSyncStructure = true)] - public partial class Giftorder + public partial class GiftOrder { [Column(StringLength = 50, IsPrimary = true, IsNullable = false)] @@ -14,6 +14,12 @@ namespace BBWY.Server.Model.Db [Column(DbType = "datetime")] public DateTime? CreateTime { get; set; } + [Column(DbType = "datetime")] + public DateTime? ModifyTime { get; set; } + + [Column(MapType = typeof(int?))] + public Enums.OrderState? OrderState { get; set; } + [Column(MapType = typeof(int))] public Enums.Platform Platform { get; set; } diff --git a/BBWY.Server.Model/Db/Order/GiftOrderSku.cs b/BBWY.Server.Model/Db/Order/GiftOrderSku.cs new file mode 100644 index 00000000..461039b3 --- /dev/null +++ b/BBWY.Server.Model/Db/Order/GiftOrderSku.cs @@ -0,0 +1,36 @@ +using FreeSql.DataAnnotations; +using System; + +namespace BBWY.Server.Model.Db +{ + + [Table(Name = "giftordersku", DisableSyncStructure = true)] + public partial class GiftOrderSku { + + [Column(DbType = "datetime")] + public DateTime? CreateTime { get; set; } + + [Column(StringLength = 50)] + public string GiftOrderId { get; set; } + + + public long? Id { get; set; } + + + public int? ItemTotal { get; set; } + + [Column(DbType = "decimal(18,2)")] + public decimal? Price { get; set; } + + [Column(StringLength = 50)] + public string ProductId { get; set; } + + + public long? ShopId { get; set; } + + [Column(StringLength = 50)] + public string SkuId { get; set; } + + } + +}