diff --git a/SiNan.Business/AggregationBusiness.cs b/SiNan.Business/AggregationBusiness.cs index 62d7f69..5d0901a 100644 --- a/SiNan.Business/AggregationBusiness.cs +++ b/SiNan.Business/AggregationBusiness.cs @@ -73,16 +73,17 @@ namespace SiNan.Business .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 && + jr.CookieTime >= startDate && + jr.CookieTime <= endDate && osku.Price > 0 && skuList.Contains(osku.SkuId)) - .GroupBy((jr, o, osku) => new { osku.SkuId, jr.BusinessType }) + .GroupBy((jr, o, osku) => new { osku.SkuId, jr.BusinessType, jr.CampaignId }) .ToList(g => new PopularizeAmountBySku { ActualAmount = g.Sum(g.Value.Item3.ActualAmount), BusinessType = g.Value.Item1.BusinessType, - Sku = g.Key.SkuId + Sku = g.Key.SkuId, + CampaignId = g.Key.CampaignId }); return list; } @@ -831,10 +832,14 @@ namespace SiNan.Business Console.WriteLine($"{DateTime.Now} {shopName} SKU聚合 {adSkuIndex}/{adSkuIdList.Count()}"); #region 处理SKU每日聚合 - var adSkuGoi_AggregationDate_PopularizeLevel = aggregationDate_PopularizeLevelList.FirstOrDefault(x => x.Sku == adSku.Sku && x.BusinessType == adSku.BusinessType); + var adSkuGoi_AggregationDate_PopularizeLevel = aggregationDate_PopularizeLevelList.FirstOrDefault(x => x.Sku == adSku.Sku && + x.BusinessType == adSku.BusinessType && + x.CampaignId == adSku.CampaignId); 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 adSkuPoplarizeAmount = aggregationDate_SkuPopularizeAmountList.FirstOrDefault(x => x.Sku == adSku.Sku && + x.BusinessType == adSku.BusinessType && + x.CampaignId == adSku.CampaignId); var adSkuDailyAggregation = new AggregationJDPopularizeAdSkuDaily() { diff --git a/SiNan.Business/GOIBusiness.cs b/SiNan.Business/GOIBusiness.cs index 632bf64..9407356 100644 --- a/SiNan.Business/GOIBusiness.cs +++ b/SiNan.Business/GOIBusiness.cs @@ -201,13 +201,14 @@ namespace SiNan.Business { var costs = fsql.Select() .Where(jas => skuIdList.Contains(jas.Sku) && jas.Date >= startDate && jas.Date <= endDate) - .GroupBy(jas => new { jas.Sku, jas.BusinessType }) + .GroupBy(jas => new { jas.Sku, jas.BusinessType, jas.CampaignId }) .ToList(g => new { Cost = g.Sum(g.Value.Cost), Clicks = g.Sum(g.Value.Clicks), g.Key.Sku, - g.Key.BusinessType + g.Key.BusinessType, + g.Key.CampaignId }); var profits = fsql.Select() @@ -217,41 +218,34 @@ namespace SiNan.Business jr.CookieTime >= startDate && jr.CookieTime <= endDate && ocd.IsEnabled == true && o.OrderState != Enums.OrderState.已取消) - .GroupBy((jr, ocd, o) => new { jr.PopularizeSku, jr.BusinessType }) + .GroupBy((jr, ocd, o) => new { jr.PopularizeSku, jr.BusinessType, jr.CampaignId }) .ToList(g => new { Profit = g.Sum(g.Value.Item2.SkuGrossProfit), Sku = g.Key.PopularizeSku, - g.Key.BusinessType + g.Key.BusinessType, + g.Key.CampaignId }); IList list = new List(); foreach (var skuId in skuIdList) { + var currentCosts = costs.Where(c => c.Sku == skuId).ToList(); + foreach (var cost in currentCosts) { - var kuaicheCost = costs.FirstOrDefault(x => x.Sku == skuId && x.BusinessType == 2); - var kuaicheProfit = profits.FirstOrDefault(x => x.Sku == skuId && x.BusinessType == 2); - if (kuaicheCost != null || kuaicheProfit != null) + var profit = profits.FirstOrDefault(x => x.Sku == skuId && + x.BusinessType == cost.BusinessType && + x.CampaignId == cost.CampaignId); + var adskuGoi = new GOIByAdSku() { - var cost = kuaicheCost?.Cost ?? 0M; - var clicks = kuaicheCost?.Clicks ?? 0; - var profit = kuaicheProfit?.Profit ?? 0M; - var adskuGoi = new GOIByAdSku() { Sku = skuId, Cost = cost, Profit = profit, BusinessType = 2, Clicks = Convert.ToInt32(clicks) }; - list.Add(adskuGoi); - } - } - - { - var zntfCost = costs.FirstOrDefault(x => x.Sku == skuId && x.BusinessType == 134217728); - var zntfProfit = profits.FirstOrDefault(x => x.Sku == skuId && x.BusinessType == 134217728); - if (zntfCost != null || zntfProfit != null) - { - var cost = zntfCost?.Cost ?? 0M; - var clicks = zntfCost?.Clicks ?? 0; - var profit = zntfProfit?.Profit ?? 0M; - var adskuGoi = new GOIByAdSku() { Sku = skuId, Cost = cost, Profit = profit, BusinessType = 134217728, Clicks = Convert.ToInt32(clicks) }; - list.Add(adskuGoi); - } + Sku = skuId, + Cost = cost.Cost, + Profit = profit?.Profit ?? 0M, + BusinessType = cost.BusinessType.Value, + CampaignId = cost.CampaignId.Value, + Clicks = Convert.ToInt32(cost.Clicks) + }; + list.Add(adskuGoi); } } return list; @@ -265,8 +259,8 @@ namespace SiNan.Business .ToList(g => new { Cost = g.Sum(g.Value.Cost), - Sku = g.Key.Sku, - BusinessType = g.Key.BusinessType + g.Key.Sku, + g.Key.BusinessType }); var profits = fsql.Select() diff --git a/SiNan.Model/Core/ActualAmountBySpu.cs b/SiNan.Model/Core/ActualAmountBySpu.cs index c33f215..ded134a 100644 --- a/SiNan.Model/Core/ActualAmountBySpu.cs +++ b/SiNan.Model/Core/ActualAmountBySpu.cs @@ -29,5 +29,7 @@ /// 业务线(快车:2 京速推:134217728) /// public int? BusinessType { get; set; } + + public long? CampaignId { get; set; } } } diff --git a/SiNan.Model/Core/GOI/GOIByAdSku.cs b/SiNan.Model/Core/GOI/GOIByAdSku.cs index dab91d1..c078122 100644 --- a/SiNan.Model/Core/GOI/GOIByAdSku.cs +++ b/SiNan.Model/Core/GOI/GOIByAdSku.cs @@ -5,5 +5,7 @@ public int BusinessType { get; set; } public int Clicks { get; set; } + + public long CampaignId { get; set; } } }