|
|
@ -27,6 +27,66 @@ namespace SiNan.Business |
|
|
|
this.taskSchedulerManager = taskSchedulerManager; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private IList<ActualAmountBySpu> StatisticsActualAmountBySpu(IList<string> spuList, DateTime startDate, DateTime endDate) |
|
|
|
{ |
|
|
|
var list = fsql.Select<OrderSku, Order>().InnerJoin((osku, o) => osku.OrderId == o.Id) |
|
|
|
.Where((osku, o) => o.OrderState != Enums.OrderState.已取消 && |
|
|
|
o.IsGift == false && |
|
|
|
o.StartTime >= startDate && |
|
|
|
o.StartTime <= endDate && |
|
|
|
osku.Price > 0 && |
|
|
|
spuList.Contains(osku.ProductId)) |
|
|
|
.GroupBy((osku, o) => osku.ProductId) |
|
|
|
.ToList(g => new ActualAmountBySpu |
|
|
|
{ |
|
|
|
ActualAmount = g.Sum(g.Value.Item1.ActualAmount), |
|
|
|
Spu = g.Key |
|
|
|
}); |
|
|
|
return list; |
|
|
|
} |
|
|
|
|
|
|
|
private IList<ActualAmountBySku> StatisticsActualAmountBySku(IList<string> skuList, DateTime startDate, DateTime endDate) |
|
|
|
{ |
|
|
|
var list = fsql.Select<OrderSku, Order>().InnerJoin((osku, o) => osku.OrderId == o.Id) |
|
|
|
.Where((osku, o) => o.OrderState != Enums.OrderState.已取消 && |
|
|
|
o.IsGift == false && |
|
|
|
o.StartTime >= startDate && |
|
|
|
o.StartTime <= endDate && |
|
|
|
osku.Price > 0 && |
|
|
|
skuList.Contains(osku.SkuId)) |
|
|
|
.GroupBy((osku, o) => new { osku.SkuId, osku.ProductId }) |
|
|
|
.ToList(g => new ActualAmountBySku |
|
|
|
{ |
|
|
|
ActualAmount = g.Sum(g.Value.Item1.ActualAmount), |
|
|
|
Sku = g.Key.SkuId, |
|
|
|
Spu = g.Key.ProductId |
|
|
|
}); |
|
|
|
return list; |
|
|
|
} |
|
|
|
|
|
|
|
private IList<PopularizeAmountBySku> StatisticsPopularizeAmountBySku(IList<string> skuList, DateTime startDate, DateTime endDate) |
|
|
|
{ |
|
|
|
var list = fsql.Select<JDOrderPopularizeRelation, Order, OrderSku>() |
|
|
|
.InnerJoin((jr, o, osku) => jr.OrderId == o.Id) |
|
|
|
.InnerJoin((jr, o, osku) => o.Id == osku.OrderId) |
|
|
|
.Where((jr, o, osku) => o.OrderState != Enums.OrderState.已取消 && |
|
|
|
o.IsGift == false && |
|
|
|
o.StartTime >= startDate && |
|
|
|
o.StartTime <= endDate && |
|
|
|
osku.Price > 0 && |
|
|
|
skuList.Contains(osku.SkuId)) |
|
|
|
.GroupBy((jr, o, osku) => new { osku.SkuId, jr.BusinessType }) |
|
|
|
.ToList(g => new PopularizeAmountBySku |
|
|
|
{ |
|
|
|
ActualAmount = g.Sum(g.Value.Item3.ActualAmount), |
|
|
|
BusinessType = g.Value.Item1.BusinessType, |
|
|
|
Sku = g.Key.SkuId |
|
|
|
}); |
|
|
|
return list; |
|
|
|
} |
|
|
|
|
|
|
|
#region SPU/SKU聚合任务
|
|
|
|
public void StartSpuAggregationTask() |
|
|
|
{ |
|
|
@ -373,43 +433,6 @@ namespace SiNan.Business |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private IList<ActualAmountBySpu> StatisticsActualAmountBySpu(IList<string> spuList, DateTime startDate, DateTime endDate) |
|
|
|
{ |
|
|
|
var list = fsql.Select<OrderSku, Order>().InnerJoin((osku, o) => osku.OrderId == o.Id) |
|
|
|
.Where((osku, o) => o.OrderState != Enums.OrderState.已取消 && |
|
|
|
o.IsGift == false && |
|
|
|
o.StartTime >= startDate && |
|
|
|
o.StartTime <= endDate && |
|
|
|
osku.Price > 0 && |
|
|
|
spuList.Contains(osku.ProductId)) |
|
|
|
.GroupBy((osku, o) => osku.ProductId) |
|
|
|
.ToList(g => new ActualAmountBySpu |
|
|
|
{ |
|
|
|
ActualAmount = g.Sum(g.Value.Item1.ActualAmount), |
|
|
|
Spu = g.Key |
|
|
|
}); |
|
|
|
return list; |
|
|
|
} |
|
|
|
|
|
|
|
private IList<ActualAmountBySku> StatisticsActualAmountBySku(IList<string> skuList, DateTime startDate, DateTime endDate) |
|
|
|
{ |
|
|
|
var list = fsql.Select<OrderSku, Order>().InnerJoin((osku, o) => osku.OrderId == o.Id) |
|
|
|
.Where((osku, o) => o.OrderState != Enums.OrderState.已取消 && |
|
|
|
o.IsGift == false && |
|
|
|
o.StartTime >= startDate && |
|
|
|
o.StartTime <= endDate && |
|
|
|
osku.Price > 0 && |
|
|
|
skuList.Contains(osku.SkuId)) |
|
|
|
.GroupBy((osku, o) => new { osku.SkuId, osku.ProductId }) |
|
|
|
.ToList(g => new ActualAmountBySku |
|
|
|
{ |
|
|
|
ActualAmount = g.Sum(g.Value.Item1.ActualAmount), |
|
|
|
Sku = g.Key.SkuId, |
|
|
|
Spu = g.Key.ProductId |
|
|
|
}); |
|
|
|
return list; |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 计划聚合任务
|
|
|
@ -799,6 +822,7 @@ namespace SiNan.Business |
|
|
|
List<AggregationJDPopularizeAdSkuDaily> insertAggregationAdSkuDailyList = new List<AggregationJDPopularizeAdSkuDaily>(); |
|
|
|
var aggregationDate_PopularizeLevelList = goiBusiness.CalculationAdSkuLevelGOI(adSkuIdList, startDate_aggregationDate, endDate_aggregationDate); |
|
|
|
var aggregationDate_ProductLevelList = goiBusiness.CalculationAdSkuProductLevelGOI(adSkuIdList, startDate_aggregationDate, endDate_aggregationDate); |
|
|
|
var aggregationDate_SkuPopularizeAmountList = StatisticsPopularizeAmountBySku(adSkuIdList, startDate_aggregationDate, endDate_aggregationDate); |
|
|
|
|
|
|
|
var adSkuIndex = 0; |
|
|
|
foreach (var adSku in adSkuList) |
|
|
@ -810,6 +834,8 @@ namespace SiNan.Business |
|
|
|
var adSkuGoi_AggregationDate_PopularizeLevel = aggregationDate_PopularizeLevelList.FirstOrDefault(x => x.Sku == adSku.Sku && x.BusinessType == adSku.BusinessType); |
|
|
|
var adSkuGoi_AggregationDate_ProductLevel = aggregationDate_ProductLevelList.FirstOrDefault(x => x.Sku == adSku.Sku && x.BusinessType == adSku.BusinessType); |
|
|
|
|
|
|
|
var adSkuPoplarizeAmount = aggregationDate_SkuPopularizeAmountList.FirstOrDefault(x => x.Sku == adSku.Sku && x.BusinessType == adSku.BusinessType); |
|
|
|
|
|
|
|
var adSkuDailyAggregation = new AggregationJDPopularizeAdSkuDaily() |
|
|
|
{ |
|
|
|
Id = idGenerator.NewLong(), |
|
|
@ -825,7 +851,8 @@ namespace SiNan.Business |
|
|
|
CampaignId = adSku.CampaignId, |
|
|
|
BusinessType = adSku.BusinessType, |
|
|
|
SkuId = adSku.Sku, |
|
|
|
AdId = adSku.AdId |
|
|
|
AdId = adSku.AdId, |
|
|
|
PopularizeAmount = adSkuPoplarizeAmount?.ActualAmount ?? 0M |
|
|
|
}; |
|
|
|
insertAggregationAdSkuDailyList.Add(adSkuDailyAggregation); |
|
|
|
|
|
|
|