From 261a8d9b6724a74aab29e7457946f95114566d58 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Sun, 14 Jan 2024 23:07:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=87=87=E8=B4=AD=E5=95=86?= =?UTF-8?q?=E8=81=9A=E5=90=88=E9=80=BB=E8=BE=91=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=B8=BB=E8=90=A5=E7=B1=BB=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Aggregion/AggregionPurchaserBusiness.cs | 50 ++++++++++++++++++- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/BBWYB.Server.Business/Aggregion/AggregionPurchaserBusiness.cs b/BBWYB.Server.Business/Aggregion/AggregionPurchaserBusiness.cs index 2b3b456..58f12c0 100644 --- a/BBWYB.Server.Business/Aggregion/AggregionPurchaserBusiness.cs +++ b/BBWYB.Server.Business/Aggregion/AggregionPurchaserBusiness.cs @@ -47,6 +47,7 @@ namespace BBWYB.Server.Business Console.WriteLine($"聚合{i + 1}/{purchaserIdList.Count()}"); Aggregion(tempPurchaserIdList); tempPurchaserIdList.Clear(); + Thread.Sleep(2000); } } if (tempPurchaserIdList.Count() > 0) @@ -59,9 +60,24 @@ namespace BBWYB.Server.Business private void Aggregion(IList purchaserIdList) { - Thread.Sleep(2000); - List> updatePurchaserList = new List>(); + List deletePeiList = new List(); + List insertPeiList = new List(); + + List dbPeiList = fsql.Select() + .Where(pei => pei.ExtendedType == Enums.PurchaserBasicInfoType.主营类目 && + purchaserIdList.Contains(pei.PurchaserId)) + .ToList(); + + var pspList = fsql.Select() + .InnerJoin((psp, p) => psp.ProductId == p.Id) + .Where((psp, p) => p.CategoryId != null && purchaserIdList.Contains(psp.PurchaserId)) + .ToList((psp, p) => new + { + psp.PurchaserId, + psp.ProductId, + p.CategoryId + }); #region 查询SPU绑定数/SKU绑定数 var bindList = fsql.Select() @@ -192,6 +208,32 @@ namespace BBWYB.Server.Business var recent90dPurchasedCount = recent90dPurchasedCountList.FirstOrDefault(x => x.PurchaserId == purchaserId)?.Count ?? 0; #endregion + #region 主营类目 + { + var currentDbPeiList = dbPeiList.Where(pei => pei.PurchaserId == purchaserId).ToList(); + var currentDbPspList = pspList.Where(psp => psp.PurchaserId == purchaserId).ToList(); + + var currentDeletePeiList = currentDbPeiList.Where(pei => !currentDbPspList.Any(psp => psp.PurchaserId == pei.PurchaserId && + psp.CategoryId == pei.ExtendedInfoId)) + .Select(pei => pei.Id).ToList(); + if (currentDeletePeiList.Count() > 0) + deletePeiList.AddRange(currentDeletePeiList); + + var currentInsertPeiList = currentDbPspList.Where(psp => !currentDbPeiList.Any(pei => pei.PurchaserId == psp.PurchaserId && + pei.ExtendedInfoId == psp.CategoryId)) + .GroupBy(psp => psp.CategoryId) + .Select(g => new Purchaser_ExtendedInfo_Relation() + { + Id = idGenerator.NewLong(), + ExtendedInfoId = g.Key, + ExtendedType = Enums.PurchaserBasicInfoType.主营类目, + PurchaserId = purchaserId + }).ToList(); + if (currentInsertPeiList.Count() > 0) + insertPeiList.AddRange(currentInsertPeiList); + } + #endregion + var update = fsql.Update(purchaserId) .Set(p => p.BindingSpuCount, bindingSpuCount) .Set(p => p.BindingSkuCount, bindingSkuCount) @@ -209,6 +251,10 @@ namespace BBWYB.Server.Business { foreach (var update in updatePurchaserList) update.ExecuteAffrows(); + if (deletePeiList.Count() > 0) + fsql.Delete(deletePeiList).ExecuteAffrows(); + if (insertPeiList.Count() > 0) + fsql.Insert(insertPeiList).ExecuteAffrows(); }); } }