diff --git a/BBWY.Server.Business/Statistics/StatisticsBusiness.cs b/BBWY.Server.Business/Statistics/StatisticsBusiness.cs index 3a02dccd..c2012a44 100644 --- a/BBWY.Server.Business/Statistics/StatisticsBusiness.cs +++ b/BBWY.Server.Business/Statistics/StatisticsBusiness.cs @@ -6,11 +6,9 @@ using BBWY.Server.Model.Db; using BBWY.Server.Model.Db.Mds; using BBWY.Server.Model.Dto; using Newtonsoft.Json; -using Org.BouncyCastle.Ocsp; using System; using System.Collections.Generic; using System.Linq; -using System.Runtime.InteropServices.ComTypes; using Yitter.IdGenerator; namespace BBWY.Server.Business @@ -200,12 +198,31 @@ namespace BBWY.Server.Business var orderIdList = orderList.Select(o => o.Id).ToList(); - var orderSkuList = fsql.Select().Where(osku => osku.Price != 0 && 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(); + //来自订单的spu var spuIdList = orderSkuList.Select(osku => osku.ProductId).Distinct().ToList(); + + List noOrderSpuIdList = null; + //来自推广的spu + { + var skuIdList = fsql.Select() + .Where(jas => jas.Date == xingXiangSearchOrderRequest.SearchDate && + jas.ShopId == xingXiangSearchOrderRequest.ShopId) + .Distinct().ToList(jas => jas.Sku); + if (skuIdList.Count() > 0) + { + var productIdFromPopularizeList = fsql.Select(skuIdList).Distinct().ToList(ps => ps.ProductId); + noOrderSpuIdList = productIdFromPopularizeList.Except(spuIdList).ToList(); + if (noOrderSpuIdList.Count() > 0) + spuIdList.AddRange(noOrderSpuIdList); + } + } + + List spuGoiList = null; GOIByShop shopGoi = null; @@ -242,6 +259,7 @@ namespace BBWY.Server.Business detailList = new List(); + foreach (var order in orderList) { var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); @@ -285,7 +303,27 @@ namespace BBWY.Server.Business } //var shopProductAmount = orderSkuList.Sum(osku => osku.ItemTotal * osku.Price); - var shopActualAmount = orderSkuList.Sum(osku => osku.ShouldPay ?? 0M); + var shopActualAmount = orderSkuList.Sum(osku => + { + var pingtaibutie = (osku.PingTaiChengDanYouHuiQuan ?? 0M) + (osku.SuperRedEnvelope ?? 0M) + (osku.XianPinLeiDongQuan ?? 0M); + return (((osku.ShouldPay ?? 0M) - (osku.VenderFee ?? 0M) + pingtaibutie) * osku.ItemTotal) ?? 0M; + }); + + if (noOrderSpuIdList != null && noOrderSpuIdList.Count() > 0) + { + foreach (var spuId in noOrderSpuIdList) + { + //var spuGoi = spuGoiList?.FirstOrDefault(x => x.Spu == spuId); + var xxRespose = new XingXiangItemResponse() + { + Spu = spuId, + Profit = 0M, + ActualAmount = 0M, + SpuYingLiRatio = 0M + }; + detailList.Add(xxRespose); + } + } foreach (var d in detailList) { @@ -401,7 +439,7 @@ namespace BBWY.Server.Business var endTime = DateTime.Now; var startDate = DateTime.Now.Date.AddMonths(-1); - var list = fsql.Select().WhereIf(skuRecentSalesRequest.SkuIds.Count() == 1, osku => osku.SkuId == skuRecentSalesRequest.SkuIds[0]) + var list = fsql.Select().WhereIf(skuRecentSalesRequest.SkuIds.Count() == 1, osku => osku.SkuId == skuRecentSalesRequest.SkuIds[0]) .WhereIf(skuRecentSalesRequest.SkuIds.Count() > 1, osku => skuRecentSalesRequest.SkuIds.Contains(osku.SkuId)) .Where(osku => osku.CreateTime >= startDate && osku.CreateTime <= endTime) .GroupBy(osku => osku.SkuId)