From 5ea0bd6a52c48dd7dda1110dc814badf215c0898 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Wed, 10 Jan 2024 23:29:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=87=87=E8=B4=AD=E5=95=86?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=8F=96=E6=B6=88=E5=A4=A9=E6=95=B0=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E6=9C=80=E8=BF=91=E9=87=87=E8=B4=AD=E5=95=86?= =?UTF-8?q?=E5=93=81=E6=8C=89=E9=87=87=E8=B4=AD=E6=97=B6=E9=97=B4=E6=8E=92?= =?UTF-8?q?=E5=80=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AggregationPurchaserController.cs | 10 +++++ .../Aggregion/AggregionPurchaserBusiness.cs | 5 +++ .../Purchaser/PurchaserBusiness.cs | 37 ++++++++++--------- .../Product/RecentPurchasedSkuResponse.cs | 2 + 4 files changed, 37 insertions(+), 17 deletions(-) diff --git a/BBWYB.Server.API/Controllers/AggregationPurchaserController.cs b/BBWYB.Server.API/Controllers/AggregationPurchaserController.cs index 711cafb..9eb8adf 100644 --- a/BBWYB.Server.API/Controllers/AggregationPurchaserController.cs +++ b/BBWYB.Server.API/Controllers/AggregationPurchaserController.cs @@ -21,5 +21,15 @@ namespace BBWYB.Server.API.Controllers { aggregionPurchaserBusiness.AutoAggregion(); } + + /// + /// 根据指定采购商Id聚合 + /// + /// + [HttpPost] + public void AggregionByPurchaserIdList([FromBody] IList purchaserIdList) + { + aggregionPurchaserBusiness.AggregionByPurchaserIdList(purchaserIdList); + } } } diff --git a/BBWYB.Server.Business/Aggregion/AggregionPurchaserBusiness.cs b/BBWYB.Server.Business/Aggregion/AggregionPurchaserBusiness.cs index 1094bed..2b3b456 100644 --- a/BBWYB.Server.Business/Aggregion/AggregionPurchaserBusiness.cs +++ b/BBWYB.Server.Business/Aggregion/AggregionPurchaserBusiness.cs @@ -30,6 +30,11 @@ namespace BBWYB.Server.Business Task.Factory.StartNew(() => AggregionByGroup(purchaserIdList), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.AggregationPurchaserTaskScheduler); } + public void AggregionByPurchaserIdList(IList purchaserIdList) + { + Task.Factory.StartNew(() => AggregionByGroup(purchaserIdList), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.AggregationPurchaserTaskScheduler); + } + private void AggregionByGroup(IList purchaserIdList) { diff --git a/BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs b/BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs index 5d720e2..f661147 100644 --- a/BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs +++ b/BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs @@ -39,7 +39,7 @@ namespace BBWYB.Server.Business request.ShopId = null; #region 数据验证 - if (request.RecentDayCondition != null && request.RecentDayCondition.RecentDay > 0) + if (request.RecentDayCondition != null) // && request.RecentDayCondition.RecentDay > 0 { if (request.RecentDayCondition.PurchasedCountComparisonOperator != null) { @@ -78,44 +78,42 @@ namespace BBWYB.Server.Business .WhereIf(request.LocationList != null && request.LocationList.Count() > 0, p => request.LocationList.Contains(p.Location)) .WhereIf(request.ManagmentMode != null, p => p.ManagmentMode == request.ManagmentMode); - if (request.RecentDayCondition != null && request.RecentDayCondition.RecentDay > 0) + if (request.RecentDayCondition != null) // && request.RecentDayCondition.RecentDay > 0 { - var recentStartDay = DateTime.Now.Date.AddDays(request.RecentDayCondition.RecentDay.Value * -1); + //var recentStartDay = DateTime.Now.Date.AddDays(request.RecentDayCondition.RecentDay.Value * -1); if (request.RecentDayCondition.PurchasedCountComparisonOperator != null && - request.RecentDayCondition.PurchasedCountComparisonOperator != 0 && request.RecentDayCondition.PurchasedCount != null && request.RecentDayCondition.PurchasedCount != 0) { select = select.WhereIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator.等于, - p => p.Recent90dPurchasedCount == request.RecentDayCondition.PurchasedCount) + p => p.Recent90dPurchasedCount != null && p.Recent90dPurchasedCount == request.RecentDayCondition.PurchasedCount) .WhereIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator.小于, - p => p.Recent90dPurchasedCount <= request.RecentDayCondition.PurchasedCount) + p => p.Recent90dPurchasedCount != null && p.Recent90dPurchasedCount <= request.RecentDayCondition.PurchasedCount) .WhereIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator.大于, - p => p.Recent90dPurchasedCount >= request.RecentDayCondition.PurchasedCount) + p => p.Recent90dPurchasedCount != null && p.Recent90dPurchasedCount >= request.RecentDayCondition.PurchasedCount) .WhereIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator.介于, - p => p.Recent90dPurchasedCount >= request.RecentDayCondition.PurchasedCount && + p => p.Recent90dPurchasedCount != null && p.Recent90dPurchasedCount >= request.RecentDayCondition.PurchasedCount && p.Recent90dPurchasedCount <= request.RecentDayCondition.PurchasedCount2); } if (request.RecentDayCondition.PurchasedAmountComparisonOperator != null && - request.RecentDayCondition.PurchasedAmountComparisonOperator != 0 && request.RecentDayCondition.PurchasedAmount != null && request.RecentDayCondition.PurchasedAmount != 0) { select = select.WhereIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator.等于, - p => p.Recent90dPurchasedAmount == request.RecentDayCondition.PurchasedAmount) + p => p.Recent90dPurchasedAmount != null && p.Recent90dPurchasedAmount == request.RecentDayCondition.PurchasedAmount) .WhereIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator.小于, - p => p.Recent90dPurchasedAmount <= request.RecentDayCondition.PurchasedAmount) + p => p.Recent90dPurchasedAmount != null && p.Recent90dPurchasedAmount <= request.RecentDayCondition.PurchasedAmount) .WhereIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator.大于, - p => p.Recent90dPurchasedAmount >= request.RecentDayCondition.PurchasedAmount) + p => p.Recent90dPurchasedAmount != null && p.Recent90dPurchasedAmount >= request.RecentDayCondition.PurchasedAmount) .WhereIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator.介于, - p => p.Recent90dPurchasedAmount >= request.RecentDayCondition.PurchasedAmount && + p => p.Recent90dPurchasedAmount != null && p.Recent90dPurchasedAmount >= request.RecentDayCondition.PurchasedAmount && p.Recent90dPurchasedAmount <= request.RecentDayCondition.PurchasedAmount2); } } select = select.Page(request.PageIndex, request.PageSize) .OrderByPropertyNameIf(!string.IsNullOrEmpty(request.SortColumn), request.SortColumn, request.SortType == 0); - //var sql = pageSelect.ToSql(); + var sql = select.ToSql(); var purchaserList = select.Count(out var count).ToList(); if (purchaserList.Count() > 0) { @@ -160,7 +158,8 @@ namespace BBWYB.Server.Business g.Key.PurchaserId, g.Key.Logo, g.Key.SkuName, - g.Key.SourceSkuId + g.Key.SourceSkuId, + MaxPurchasedTime = g.Max(g.Value.Item1.CreateTime) }); var belongSkuIdList = bePurchasedProductSkuList.Select(x => x.SourceSkuId).Distinct().ToList(); var belongSkuList = _freeSqlMultiDBManager.BBWYCfsql.Select(belongSkuIdList).ToList(ps => new { ps.Id, ps.Logo }); @@ -192,7 +191,10 @@ namespace BBWYB.Server.Business #endregion #region 最近采购店铺商品 - purchaser.Recent30dProductSku = bePurchasedProductSkuList.Where(x => x.PurchaserId == purchaser.Id).Take(10).Select(x => + purchaser.Recent30dProductSku = bePurchasedProductSkuList.Where(x => x.PurchaserId == purchaser.Id) + .OrderByDescending(x => x.MaxPurchasedTime) + .Take(10) + .Select(x => { var belongSku = belongSkuList.FirstOrDefault(b => b.Id == x.SourceSkuId); return new RecentPurchasedSkuResponse() @@ -200,7 +202,8 @@ namespace BBWYB.Server.Business Id = x.Id, Logo = belongSku?.Logo ?? x.Logo, SkuName = x.SkuName, - BelongSku = x.SourceSkuId + BelongSku = x.SourceSkuId, + MaxPurchasedTime = x.MaxPurchasedTime }; }).ToList(); #endregion diff --git a/BBWYB.Server.Model/Dto/Response/Product/RecentPurchasedSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/Product/RecentPurchasedSkuResponse.cs index 0d4d2f0..60f455f 100644 --- a/BBWYB.Server.Model/Dto/Response/Product/RecentPurchasedSkuResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Product/RecentPurchasedSkuResponse.cs @@ -15,5 +15,7 @@ /// 归属SkuId(JD) /// public string BelongSku { get; set; } + + public DateTime? MaxPurchasedTime { get; set; } } }