diff --git a/BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs b/BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs index dba87c5..434ccd9 100644 --- a/BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs +++ b/BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs @@ -76,12 +76,15 @@ namespace BBWYB.Server.Business if (request.RecentDayCondition != null && request.RecentDayCondition.RecentDay > 0) { var recentStartDay = DateTime.Now.Date.AddDays(request.RecentDayCondition.RecentDay.Value * -1); - if (request.RecentDayCondition.PurchasedCountComparisonOperator != null) + if (request.RecentDayCondition.PurchasedCountComparisonOperator != null && + request.RecentDayCondition.PurchasedCountComparisonOperator != 0 && + request.RecentDayCondition.PurchasedCount != null && + request.RecentDayCondition.PurchasedCount != 0) { var childSelect = fsql.Select() .InnerJoin((opi, o) => opi.OrderId == o.Id) - .Where((opi, o) => opi.ShopId == request.ShopId && - opi.IsEnabled == true && + .WhereIf(request.ShopId != null && request.ShopId > 0, (opi, o) => opi.ShopId == request.ShopId) + .Where((opi, o) => opi.IsEnabled == true && o.OrderState != Enums.OrderState.已取消 && opi.CreateTime >= recentStartDay) .GroupBy((opi, o) => opi.PurchaserId) @@ -92,14 +95,17 @@ namespace BBWYB.Server.Business .WithTempQuery(g => new { g.Value.Item1.PurchaserId, Count = g.Count() }).As("pcc"); select = select.Where(p => childSelect.Where(pcc => pcc.PurchaserId == p.Id).Any()); } - if (request.RecentDayCondition.PurchasedAmountComparisonOperator != null) + if (request.RecentDayCondition.PurchasedAmountComparisonOperator != null && + request.RecentDayCondition.PurchasedAmountComparisonOperator != 0 && + request.RecentDayCondition.PurchasedAmount != null && + request.RecentDayCondition.PurchasedAmount != 0) { var childSelect = fsql.Select() .InnerJoin((ocd, o, ori, opi) => ocd.OrderId == o.Id) .InnerJoin((ocd, o, ori, opi) => ocd.OrderId == ori.OrderId && ocd.SkuId == ori.BelongSkuId) .InnerJoin((ocd, o, ori, opi) => ori.OrderId == opi.OrderId) - .Where((ocd, o, ori, opi) => o.ShopId == request.ShopId && - o.OrderState != Enums.OrderState.已取消 && + .WhereIf(request.ShopId != null && request.ShopId > 0, (ocd, o, ori, opi) => o.ShopId == request.ShopId) + .Where((ocd, o, ori, opi) => o.OrderState != Enums.OrderState.已取消 && ocd.IsEnabled == true && opi.IsEnabled == true && opi.CreateTime >= recentStartDay) @@ -125,7 +131,8 @@ namespace BBWYB.Server.Business #region 查询SPU绑定数/SKU绑定数 var bindList = fsql.Select() .InnerJoin((psp, psc) => psp.SkuPurchaseSchemeId == psc.Id) - .Where((psp, psc) => psc.ShopId == request.ShopId && purchaserIdList.Contains(psp.PurchaserId)) + .WhereIf(request.ShopId != null && request.ShopId > 0, (psp, psc) => psc.ShopId == request.ShopId) + .Where((psp, psc) => purchaserIdList.Contains(psp.PurchaserId)) .GroupBy((psp, psc) => new { psp.PurchaserId, psp.ProductId, psp.SkuId }) .ToList(g => new { @@ -138,7 +145,8 @@ namespace BBWYB.Server.Business #region 查询SPU采购数/SKU采购数 var purchasedList = fsql.Select() .InnerJoin((spr, ps) => spr.SkuId == ps.Id) - .Where((spr, ps) => ps.ShopId == request.ShopId && purchaserIdList.Contains(spr.PurchaserId)) + .WhereIf(request.ShopId != null && request.ShopId > 0, (spr, ps) => spr.ShopId == request.ShopId) + .Where((spr, ps) => purchaserIdList.Contains(spr.PurchaserId)) .GroupBy((spr, ps) => new { spr.PurchaserId, spr.SkuId, ps.ProductId }) .ToList(g => new { @@ -152,6 +160,7 @@ namespace BBWYB.Server.Business #region 查询订单数 var poList = fsql.Select() .InnerJoin((opi, o) => opi.OrderId == o.Id) + .WhereIf(request.ShopId != null && request.ShopId > 0, (opi, o) => opi.ShopId == request.ShopId) .Where((opi, o) => opi.ShopId == request.ShopId && opi.IsEnabled == true && o.OrderState != Enums.OrderState.已取消 && @@ -170,8 +179,8 @@ namespace BBWYB.Server.Business .InnerJoin((ocd, o, ori, opi) => ocd.OrderId == o.Id) .InnerJoin((ocd, o, ori, opi) => ocd.OrderId == ori.OrderId && ocd.SkuId == ori.BelongSkuId) .InnerJoin((ocd, o, ori, opi) => ori.OrderId == opi.OrderId) - .Where((ocd, o, ori, opi) => o.ShopId == request.ShopId && - o.OrderState != Enums.OrderState.已取消 && + .WhereIf(request.ShopId != null && request.ShopId > 0, (ocd, o, ori, opi) => o.ShopId == request.ShopId) + .Where((ocd, o, ori, opi) => o.OrderState != Enums.OrderState.已取消 && ocd.IsEnabled == true && opi.IsEnabled == true && purchaserIdList.Contains(opi.PurchaserId)) @@ -185,8 +194,9 @@ namespace BBWYB.Server.Business #region 查询最近采购时间 var recentPurchaseTimeList = fsql.Select() - .InnerJoin((opi1, o) => o.OrderState != Enums.OrderState.已取消) - .Where((opi1, o) => opi1.ShopId == request.ShopId && + .InnerJoin((opi1, o) => opi1.OrderId == o.Id) + .WhereIf(request.ShopId != null && request.ShopId > 0, (opi1, o) => o.ShopId == request.ShopId) + .Where((opi1, o) => o.OrderState != Enums.OrderState.已取消 && purchaserIdList.Contains(opi1.PurchaserId) && opi1.IsEnabled == true) .GroupBy((opi1, o) => opi1.PurchaserId) @@ -213,6 +223,31 @@ namespace BBWYB.Server.Business }); #endregion + #region 最近采购的店铺商品 + var recent30d = DateTime.Now.AddDays(-30); + var bePurchasedProductSkuList = fsql.Select() + .InnerJoin((opi, opri, o, ps) => opi.OrderId == o.Id) + .InnerJoin((opi, opri, o, ps) => opri.PurchaseOrderId == opi.PurchaseOrderId) + .InnerJoin((opi, opri, o, ps) => opri.BelongSkuId == ps.Id) + .WhereIf(request.ShopId != null && request.ShopId > 0, (opi, opri, o, ps) => o.ShopId == request.ShopId) + .Where((opi, opri, o, ps) => o.OrderState != Enums.OrderState.已取消 && + opi.IsEnabled == true && + opi.CreateTime >= recent30d && + purchaserIdList.Contains(opi.PurchaserId)) + .OrderByDescending((opi, opri, o, ps) => opi.CreateTime) + .ToList((opi, opri, o, ps) => new + { + opi.PurchaserId, + ps.Id, + ps.Logo, + ps.SkuName, + ps.Price, + opi.CreateTime + }); + + + #endregion + foreach (var purchaser in purchaserList) { #region SPU绑定数/SKU绑定数 @@ -257,6 +292,17 @@ namespace BBWYB.Server.Business Type = x.Type }).ToList(); #endregion + + #region 最近采购店铺商品 + purchaser.Recent30dProductSku = bePurchasedProductSkuList.Where(x => x.PurchaserId == purchaser.Id).Take(10).Select(x => new ProductSkuResponse() + { + Id = x.Id, + Logo = x.Logo, + SkuName = x.SkuName, + Price = x.Price + }).ToList(); + #endregion + } } diff --git a/BBWYB.Server.Model/Dto/Request/Purchaser/QueryPurchaserRequest.cs b/BBWYB.Server.Model/Dto/Request/Purchaser/QueryPurchaserRequest.cs index b0e277f..2975a21 100644 --- a/BBWYB.Server.Model/Dto/Request/Purchaser/QueryPurchaserRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/Purchaser/QueryPurchaserRequest.cs @@ -5,7 +5,7 @@ namespace BBWYB.Server.Model.Dto public class QueryPurchaserRequest { [Required] - public long ShopId { get; set; } + public long? ShopId { get; set; } public string Spu { get; set; }