diff --git a/KJD_WebService/Services/Shops/ShopRevenueStatisticsService.cs b/KJD_WebService/Services/Shops/ShopRevenueStatisticsService.cs index b3facab..2d89a3a 100644 --- a/KJD_WebService/Services/Shops/ShopRevenueStatisticsService.cs +++ b/KJD_WebService/Services/Shops/ShopRevenueStatisticsService.cs @@ -182,14 +182,17 @@ public class ShopRevenueStatisticsService : ITransientDependency orderShopIds.Add(shopId); } if (orderShopIds.Count == 0) return result; - + if (startTime == endTime) + { + endTime = startTime.Date.AddDays(1).AddSeconds(-1); + } int startStamp = TimeUtils.DateTimeToTimestampSeconds(startTime); - int endStamp = TimeUtils.DateTimeToTimestampSeconds(endTime) + 1; // 结束时间含当天/当秒 + int endStamp = TimeUtils.DateTimeToTimestampSeconds(endTime); var orders = LoadOrders(startStamp, endStamp, orderShopIds); if (orders.Count == 0) return result; // 加载买手订单(直拍和中转仓都要查),并回填商铺订单的退款金额 - LoadBuyerOrder(orders, true); + LoadBuyerOrder(orders); FillRefunds(orders); foreach (var order in orders) @@ -451,7 +454,7 @@ public class ShopRevenueStatisticsService : ITransientDependency { var query = _freeSql.Select() .InnerJoin((a, b) => a.OrderId == b.OrderId) - .Where((a, b) => a.CreateTime >= startStamp && a.CreateTime < endStamp) + .Where((a, b) => a.CreateTime >= startStamp && a.CreateTime <= endStamp) .Where((a, b) => a.Status > 10); if (shopIds != null && shopIds.Count > 0) @@ -513,14 +516,14 @@ public class ShopRevenueStatisticsService : ITransientDependency /// true:按订单的采购类型区分直拍 / 中转仓,两张买手表都能查到(查询明细用) /// false:沿用历史口径,按 OutAmount 是否为 0 判断(统计任务保持原行为不变) /// - private void LoadBuyerOrder(List orders, bool byPurchaseType = false) + private void LoadBuyerOrder(List orders) { var result = new List(); //查询中转仓购买表 var outWarehouseOrderIds = orders - .Where(a => byPurchaseType ? a.PurchaseType == PurchaseType.FromWarehouse : a.OutAmount == 0) + .Where(a => a.PurchaseType == PurchaseType.FromWarehouse) .Select(a => a.OrderId).Distinct().ToList(); if (outWarehouseOrderIds.Count > 0) { @@ -546,7 +549,7 @@ public class ShopRevenueStatisticsService : ITransientDependency //查询直拍表 var outDirectOrderIds = orders - .Where(a => byPurchaseType ? a.PurchaseType == PurchaseType.DirectPurchase : a.OutAmount > 0) + .Where(a => a.PurchaseType == PurchaseType.DirectPurchase) .Select(a => a.OrderId).Distinct().ToList(); foreach (string[] batch in Batch(outDirectOrderIds, BatchSize)) { @@ -596,7 +599,7 @@ public class ShopRevenueStatisticsService : ITransientDependency SkuId = a.WxSkuId, OutOrderSn = a.OrderSn, OutAmount = a.OrderAmount ?? 0, - RefundAmount = a.RefundAmount ?? 0, + RefundAmount = a.RefundAmount ?? (a.OrderAmount ?? 0), RefundStatusText = a.StatusText })); } @@ -621,6 +624,13 @@ public class ShopRevenueStatisticsService : ITransientDependency } } + + //移除未购买的订单 + for (int i = orders.Count - 1; i >= 0; i--) + { + if (orders[i].BuyerOrders.Count == 0) + orders.RemoveAt(i); + } } /// 回填商铺订单的退款信息 @@ -732,7 +742,10 @@ public class ShopRevenueStatisticsService : ITransientDependency var outOrderGroups = buyerOrders .GroupBy(b => b.OutOrderSn) .ToList(); + if (buyerOrders.Any(a => a.OutOrderSn == "261007-181907044681346")) + { + } long done = 0, pending = 0, rejected = 0; long totalPurchase = 0;