From 443e4badcdbe3a1ae2c2eb3af3f5900d57196129 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 5 Oct 2023 01:26:13 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=9C=80=E8=BF=9130=E5=A4=A9=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extensions/ConverterExtensions.cs | 17 +++++++++ .../PurchaseScheme/PurchaseSchemeBusiness.cs | 35 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 BBWYB.Common/Extensions/ConverterExtensions.cs diff --git a/BBWYB.Common/Extensions/ConverterExtensions.cs b/BBWYB.Common/Extensions/ConverterExtensions.cs new file mode 100644 index 0000000..2bc884e --- /dev/null +++ b/BBWYB.Common/Extensions/ConverterExtensions.cs @@ -0,0 +1,17 @@ +namespace BBWYB.Common.Extensions +{ + public static class ConverterExtensions + { + public static long? ToInt64(this object? o) + { + try + { + return Convert.ToInt64(o); + } + catch + { + return null; + } + } + } +} diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index a51173d..045eaa4 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -16,6 +16,8 @@ namespace BBWYB.Server.Business private PurchaseProductAPIService purchaseProductAPIService; private RestApiService restApiService; + private IList invalidOrderStateList; + public PurchaseSchemeBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, @@ -24,6 +26,7 @@ namespace BBWYB.Server.Business { this.purchaseProductAPIService = purchaseProductAPIService; this.restApiService = restApiService; + this.invalidOrderStateList = new List() { Enums.OrderState.待付款, Enums.OrderState.已取消 }; } private void ExtractNewPurchaser(IList purchaserSchemeList, IList addPurchaserList) where T : InputPurchaseSchemeRequest @@ -645,6 +648,9 @@ namespace BBWYB.Server.Business if (purchaseSchemeList.Count > 0) { var purchaseSchemeIdList = purchaseSchemeList.Select(p => p.Id).ToList(); + var spuIdList = purchaseSchemeList.Select(ps => ps.ProductId).Distinct().ToList(); + var skuIdList = purchaseSchemeList.Select(ps => ps.SkuId).Distinct().ToList(); + var recentDate = DateTime.Now.Date.AddDays(-30); var purchaseSchemeProductList = fsql.Select() .InnerJoin((psp, p) => psp.PurchaserId == p.Id) @@ -671,6 +677,30 @@ namespace BBWYB.Server.Business var purchaseSchemeProductSkuList = fsql.Select().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)) .ToList().Map>(); + var recent30daySpuItemCountGroups = fsql.Select() + .LeftJoin((osku, o) => osku.OrderId == o.Id) + .Where((osku, o) => spuIdList.Contains(osku.ProductId) && + !invalidOrderStateList.Contains(o.OrderState) && + o.StartTime >= recentDate) + .GroupBy((osku, o) => osku.ProductId) + .ToList(g => new + { + ProductId = g.Key, + ItemTotal = g.Sum(g.Value.Item1.ItemTotal) + }); + + var recent30daySkuItemCountGroups = fsql.Select() + .LeftJoin((osku, o) => osku.OrderId == o.Id) + .Where((osku, o) => skuIdList.Contains(osku.SkuId) && + !invalidOrderStateList.Contains(o.OrderState) && + o.StartTime >= recentDate) + .GroupBy((osku, o) => osku.SkuId) + .ToList(g => new + { + SkuId = g.Key, + ItemTotal = g.Sum(g.Value.Item1.ItemTotal) + }); + foreach (var scheme in purchaseSchemeList) { var schemeProductList = purchaseSchemeProductList.Where(ps => ps.SkuPurchaseSchemeId == scheme.Id); @@ -747,6 +777,11 @@ namespace BBWYB.Server.Business } } #endregion + + #region 近30天spu/sku销量 + scheme.Recent30DaySpuItemCount = Convert.ToInt64(recent30daySpuItemCountGroups.FirstOrDefault(x => x.ProductId == scheme.ProductId)?.ItemTotal ?? 0); + scheme.Recent30DaySkuItemCount = Convert.ToInt64(recent30daySkuItemCountGroups.FirstOrDefault(x => x.SkuId == scheme.SkuId)?.ItemTotal ?? 0); + #endregion } } return purchaseSchemeList;