Browse Source

更新采购商聚合逻辑,增加主营类目

liangku_skuoptimazation
shanji 1 year ago
parent
commit
261a8d9b67
  1. 50
      BBWYB.Server.Business/Aggregion/AggregionPurchaserBusiness.cs

50
BBWYB.Server.Business/Aggregion/AggregionPurchaserBusiness.cs

@ -47,6 +47,7 @@ namespace BBWYB.Server.Business
Console.WriteLine($"聚合{i + 1}/{purchaserIdList.Count()}"); Console.WriteLine($"聚合{i + 1}/{purchaserIdList.Count()}");
Aggregion(tempPurchaserIdList); Aggregion(tempPurchaserIdList);
tempPurchaserIdList.Clear(); tempPurchaserIdList.Clear();
Thread.Sleep(2000);
} }
} }
if (tempPurchaserIdList.Count() > 0) if (tempPurchaserIdList.Count() > 0)
@ -59,9 +60,24 @@ namespace BBWYB.Server.Business
private void Aggregion(IList<string> purchaserIdList) private void Aggregion(IList<string> purchaserIdList)
{ {
Thread.Sleep(2000);
List<IUpdate<Purchaser>> updatePurchaserList = new List<IUpdate<Purchaser>>(); List<IUpdate<Purchaser>> updatePurchaserList = new List<IUpdate<Purchaser>>();
List<long> deletePeiList = new List<long>();
List<Purchaser_ExtendedInfo_Relation> insertPeiList = new List<Purchaser_ExtendedInfo_Relation>();
List<Purchaser_ExtendedInfo_Relation> dbPeiList = fsql.Select<Purchaser_ExtendedInfo_Relation>()
.Where(pei => pei.ExtendedType == Enums.PurchaserBasicInfoType. &&
purchaserIdList.Contains(pei.PurchaserId))
.ToList();
var pspList = fsql.Select<PurchaseSchemeProduct, Product>()
.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绑定数 #region 查询SPU绑定数/SKU绑定数
var bindList = fsql.Select<PurchaseSchemeProduct, PurchaseScheme>() var bindList = fsql.Select<PurchaseSchemeProduct, PurchaseScheme>()
@ -192,6 +208,32 @@ namespace BBWYB.Server.Business
var recent90dPurchasedCount = recent90dPurchasedCountList.FirstOrDefault(x => x.PurchaserId == purchaserId)?.Count ?? 0; var recent90dPurchasedCount = recent90dPurchasedCountList.FirstOrDefault(x => x.PurchaserId == purchaserId)?.Count ?? 0;
#endregion #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<Purchaser>(purchaserId) var update = fsql.Update<Purchaser>(purchaserId)
.Set(p => p.BindingSpuCount, bindingSpuCount) .Set(p => p.BindingSpuCount, bindingSpuCount)
.Set(p => p.BindingSkuCount, bindingSkuCount) .Set(p => p.BindingSkuCount, bindingSkuCount)
@ -209,6 +251,10 @@ namespace BBWYB.Server.Business
{ {
foreach (var update in updatePurchaserList) foreach (var update in updatePurchaserList)
update.ExecuteAffrows(); update.ExecuteAffrows();
if (deletePeiList.Count() > 0)
fsql.Delete<Purchaser_ExtendedInfo_Relation>(deletePeiList).ExecuteAffrows();
if (insertPeiList.Count() > 0)
fsql.Insert(insertPeiList).ExecuteAffrows();
}); });
} }
} }

Loading…
Cancel
Save