From cc14fc7cba6c7685c8a84c1b83bd7e40d22fde11 Mon Sep 17 00:00:00 2001 From: sanji Date: Fri, 29 Mar 2024 18:13:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E5=B9=BF=E9=87=91=E9=A2=9D=20?= =?UTF-8?q?=E6=8E=A8=E5=B9=BFROI=E5=8C=BA=E5=88=86=E7=9B=B4=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SiNan.Business/AggregationBusiness.cs | 23 +++++++++++++++---- SiNan.Business/GOIBusiness.cs | 8 ++++--- .../AggregationJDPopularizeAdSkuDaily.cs | 12 ++++++++++ .../AggregationJDPopularizeSkuDaily.cs | 11 +++++++++ 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/SiNan.Business/AggregationBusiness.cs b/SiNan.Business/AggregationBusiness.cs index 5d9deef..b35285e 100644 --- a/SiNan.Business/AggregationBusiness.cs +++ b/SiNan.Business/AggregationBusiness.cs @@ -168,6 +168,8 @@ namespace SiNan.Business var aggregationDate_SkuActualAmountList = StatisticsActualAmountBySku(currentGroupSkuIdList, startDate_aggregationDate, endDate_aggregationDate); var aggregationDate_PopularizeLevelROIList = goiBusiness.StatisticsPopluarizeLvelROI(currentGroupSkuIdList, startDate_aggregationDate, endDate_aggregationDate); + var aggregationDate_DirectPopularizeLevelROIList = goiBusiness.StatisticsPopluarizeLvelROI(currentGroupSkuIdList, startDate_aggregationDate, endDate_aggregationDate, true); + IList recent7d_ProductLevelList = null; IList recent7d_PopularizeLevelList = null; IList recent30d_ProductLevelList = null; @@ -201,7 +203,7 @@ namespace SiNan.Business IList currentSpu_Recent30d_ProductLevelList = recent30d_ProductLevelList?.Where(x => currentSpuSkuIdList.Contains(x.Sku)).ToList(); IList currentSpu_Recent30d_PopularizeLevelList = recent30d_PopularizeLevelList?.Where(x => currentSpuSkuIdList.Contains(x.Sku)).ToList(); - var currentSpu_AggregationDate_PopularizeLevelROIList = aggregationDate_PopularizeLevelROIList.Where(x => currentSpuSkuIdList.Contains(x.Sku)).ToList(); + //var currentSpu_AggregationDate_PopularizeLevelROIList = aggregationDate_PopularizeLevelROIList.Where(x => currentSpuSkuIdList.Contains(x.Sku)).ToList(); #region 处理SPU每日聚合 var spugoi_AggregationDate_ProductLevel = new GOIBySpu() @@ -319,7 +321,8 @@ namespace SiNan.Business #region 处理SKU每日聚合 var skugoi_AggregationDate_ProductLevel = currentSpu_AggregationDate_ProductLevelList.FirstOrDefault(x => x.Sku == skuId); var skugoi_AggregationDate_PopularizeLevel = currentSpu_AggregationDate_PopularizeLevelList.FirstOrDefault(x => x.Sku == skuId); - var skuroi_aggregationDate_PopularizeLevelROI = currentSpu_AggregationDate_PopularizeLevelROIList.FirstOrDefault(x => x.Sku == skuId); + var skuroi_aggregationDate_PopularizeLevelROI = aggregationDate_PopularizeLevelROIList.FirstOrDefault(x => x.Sku == skuId); + var skuroi_aggregationDate_DirectPopularizeLevelROI = aggregationDate_DirectPopularizeLevelROIList.FirstOrDefault(x => x.Sku == skuId); var skugoi_Recent7d_ProductLevel = currentSpu_Recent7d_ProductLevelList?.FirstOrDefault(x => x.Sku == skuId); var skugoi_Recent7d_PopularizeLevel = currentSpu_Recent7d_PopularizeLevelList?.FirstOrDefault(x => x.Sku == skuId); var skugoi_Recent30d_ProductLevel = currentSpu_Recent30d_ProductLevelList?.FirstOrDefault(x => x.Sku == skuId); @@ -341,7 +344,9 @@ namespace SiNan.Business PopularizeLevelGOI = skugoi_AggregationDate_PopularizeLevel?.GOI ?? 0M, ActualAmount = aggregationDate_SkuActualAmountList.FirstOrDefault(x => x.Sku == skuId)?.ActualAmount ?? 0M, PopularizeAmount = skuroi_aggregationDate_PopularizeLevelROI?.Amount ?? 0M, - PopularizeLevelROI = skuroi_aggregationDate_PopularizeLevelROI?.ROI ?? 0M + PopularizeLevelROI = skuroi_aggregationDate_PopularizeLevelROI?.ROI ?? 0M, + DirectPopularizeAmount = skuroi_aggregationDate_DirectPopularizeLevelROI?.Amount ?? 0M, + DirectPopularizeLevelROI = skuroi_aggregationDate_DirectPopularizeLevelROI?.ROI ?? 0M }; insertAggregationSkuDailyList.Add(skuDailyAggregation); #endregion @@ -819,6 +824,8 @@ namespace SiNan.Business //var aggregationDate_SkuPopularizeAmountList = StatisticsPopularizeAmountBySku(adSkuIdList, startDate_aggregationDate, endDate_aggregationDate); var aggregationDate_PopularizeLevelROIList = goiBusiness.StatisticsAdSkuLvelROI(adSkuIdList, startDate_aggregationDate, endDate_aggregationDate); + var aggregationDate_DirectPopularizeLevelROIList = goiBusiness.StatisticsAdSkuLvelROI(adSkuIdList, startDate_aggregationDate, endDate_aggregationDate, true); + var adSkuIndex = 0; foreach (var adSku in adSkuList) { @@ -836,6 +843,10 @@ namespace SiNan.Business x.BusinessType == adSku.BusinessType && x.CampaignId == adSku.CampaignId); + var adSkuDirectPopularizeROI = aggregationDate_DirectPopularizeLevelROIList.FirstOrDefault(x => x.Sku == adSku.Sku && + x.BusinessType == adSku.BusinessType && + x.CampaignId == adSku.CampaignId); + var adSkuDailyAggregation = new AggregationJDPopularizeAdSkuDaily() { Id = idGenerator.NewLong(), @@ -852,9 +863,11 @@ namespace SiNan.Business BusinessType = adSku.BusinessType, SkuId = adSku.Sku, AdId = adSku.AdId, - PopularizeAmount = adSkuPopularizeROI?.Amount ?? 0M, Clicks = adSkuGoi_AggregationDate_PopularizeLevel?.Clicks ?? 0, - PopularizeLevelROI = adSkuPopularizeROI?.ROI ?? 0M + PopularizeAmount = adSkuPopularizeROI?.Amount ?? 0M, + PopularizeLevelROI = adSkuPopularizeROI?.ROI ?? 0M, + DirectPopularizeAmount = adSkuDirectPopularizeROI?.Amount ?? 0M, + DirectPopularizeLevelROI = adSkuDirectPopularizeROI?.ROI ?? 0M }; insertAggregationAdSkuDailyList.Add(adSkuDailyAggregation); diff --git a/SiNan.Business/GOIBusiness.cs b/SiNan.Business/GOIBusiness.cs index 8c410e8..a64100b 100644 --- a/SiNan.Business/GOIBusiness.cs +++ b/SiNan.Business/GOIBusiness.cs @@ -58,7 +58,7 @@ namespace SiNan.Business return list; } - public IList StatisticsPopularizeLevelGOI(IList skuIdList, DateTime? startDate, DateTime? endDate) + public IList StatisticsPopularizeLevelGOI(IList skuIdList, DateTime? startDate, DateTime? endDate, bool isDirect = false) { IList list = new List(); @@ -97,7 +97,7 @@ namespace SiNan.Business return list; } - public IList StatisticsPopluarizeLvelROI(IList skuIdList, DateTime? startDate, DateTime? endDate) + public IList StatisticsPopluarizeLvelROI(IList skuIdList, DateTime? startDate, DateTime? endDate, bool isDirect = false) { var costs = fsql.Select() .Where(jas => skuIdList.Contains(jas.Sku)) // &&jas.Date >= startDate && jas.Date <= endDate @@ -119,6 +119,7 @@ namespace SiNan.Business jr.CookieTime <= endDate && osku.Price > 0 && skuIdList.Contains(jr.PopularizeSku)) + .WhereIf(isDirect, (jr, o, osku) => jr.PlaceOrderSku == jr.PopularizeSku) .GroupBy((jr, o, osku) => jr.PopularizeSku) .ToList(g => new PopularizeAmountBySku { @@ -291,7 +292,7 @@ namespace SiNan.Business return list; } - public IList StatisticsAdSkuLvelROI(IList skuIdList, DateTime? startDate, DateTime? endDate) + public IList StatisticsAdSkuLvelROI(IList skuIdList, DateTime? startDate, DateTime? endDate, bool isDirect = false) { var costs = fsql.Select() .Where(jas => skuIdList.Contains(jas.Sku)) // &&jas.Date >= startDate && jas.Date <= endDate @@ -315,6 +316,7 @@ namespace SiNan.Business jr.CookieTime <= endDate && osku.Price > 0 && skuIdList.Contains(jr.PopularizeSku)) + .WhereIf(isDirect, (jr, o, osku) => jr.PlaceOrderSku == jr.PopularizeSku) .GroupBy((jr, o, osku) => new { jr.PopularizeSku, jr.BusinessType, jr.CampaignId }) .ToList(g => new PopularizeAmountBySku { diff --git a/SiNan.Model/Db/Aggregation/AggregationJDPopularizeAdSkuDaily.cs b/SiNan.Model/Db/Aggregation/AggregationJDPopularizeAdSkuDaily.cs index d37e6bb..47cd701 100644 --- a/SiNan.Model/Db/Aggregation/AggregationJDPopularizeAdSkuDaily.cs +++ b/SiNan.Model/Db/Aggregation/AggregationJDPopularizeAdSkuDaily.cs @@ -93,6 +93,18 @@ namespace SiNan.Model.Db /// [Column(DbType = "decimal(18,2)")] public decimal? PopularizeLevelROI { get; set; } = 0.00M; + + /// + /// 直接推广营业额(SKU实收) + /// + [Column(DbType = "decimal(18,2)")] + public decimal? DirectPopularizeAmount { get; set; } = 0.00M; + + /// + /// 直接推广维度ROI + /// + [Column(DbType = "decimal(18,2)")] + public decimal? DirectPopularizeLevelROI { get; set; } = 0.00M; } } diff --git a/SiNan.Model/Db/Aggregation/AggregationJDPopularizeSkuDaily.cs b/SiNan.Model/Db/Aggregation/AggregationJDPopularizeSkuDaily.cs index 0cb1c22..ea8c2d5 100644 --- a/SiNan.Model/Db/Aggregation/AggregationJDPopularizeSkuDaily.cs +++ b/SiNan.Model/Db/Aggregation/AggregationJDPopularizeSkuDaily.cs @@ -79,6 +79,17 @@ namespace SiNan.Model.Db [Column(DbType = "decimal(18,2)")] public decimal? PopularizeLevelROI { get; set; } = 0.00M; + /// + /// 直接推广营业额(SKU实收) + /// + [Column(DbType = "decimal(18,2)")] + public decimal? DirectPopularizeAmount { get; set; } = 0.00M; + + /// + /// 直接推广维度ROI + /// + [Column(DbType = "decimal(18,2)")] + public decimal? DirectPopularizeLevelROI { get; set; } = 0.00M; } }