Browse Source

推广金额 推广ROI区分直接

master
sanji 1 year ago
parent
commit
cc14fc7cba
  1. 23
      SiNan.Business/AggregationBusiness.cs
  2. 8
      SiNan.Business/GOIBusiness.cs
  3. 12
      SiNan.Model/Db/Aggregation/AggregationJDPopularizeAdSkuDaily.cs
  4. 11
      SiNan.Model/Db/Aggregation/AggregationJDPopularizeSkuDaily.cs

23
SiNan.Business/AggregationBusiness.cs

@ -168,6 +168,8 @@ namespace SiNan.Business
var aggregationDate_SkuActualAmountList = StatisticsActualAmountBySku(currentGroupSkuIdList, startDate_aggregationDate, endDate_aggregationDate); var aggregationDate_SkuActualAmountList = StatisticsActualAmountBySku(currentGroupSkuIdList, startDate_aggregationDate, endDate_aggregationDate);
var aggregationDate_PopularizeLevelROIList = goiBusiness.StatisticsPopluarizeLvelROI(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<GOIBySku> recent7d_ProductLevelList = null; IList<GOIBySku> recent7d_ProductLevelList = null;
IList<GOIBySku> recent7d_PopularizeLevelList = null; IList<GOIBySku> recent7d_PopularizeLevelList = null;
IList<GOIBySku> recent30d_ProductLevelList = null; IList<GOIBySku> recent30d_ProductLevelList = null;
@ -201,7 +203,7 @@ namespace SiNan.Business
IList<GOIBySku> currentSpu_Recent30d_ProductLevelList = recent30d_ProductLevelList?.Where(x => currentSpuSkuIdList.Contains(x.Sku)).ToList(); IList<GOIBySku> currentSpu_Recent30d_ProductLevelList = recent30d_ProductLevelList?.Where(x => currentSpuSkuIdList.Contains(x.Sku)).ToList();
IList<GOIBySku> currentSpu_Recent30d_PopularizeLevelList = recent30d_PopularizeLevelList?.Where(x => currentSpuSkuIdList.Contains(x.Sku)).ToList(); IList<GOIBySku> 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每日聚合 #region 处理SPU每日聚合
var spugoi_AggregationDate_ProductLevel = new GOIBySpu() var spugoi_AggregationDate_ProductLevel = new GOIBySpu()
@ -319,7 +321,8 @@ namespace SiNan.Business
#region 处理SKU每日聚合 #region 处理SKU每日聚合
var skugoi_AggregationDate_ProductLevel = currentSpu_AggregationDate_ProductLevelList.FirstOrDefault(x => x.Sku == skuId); 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 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_ProductLevel = currentSpu_Recent7d_ProductLevelList?.FirstOrDefault(x => x.Sku == skuId);
var skugoi_Recent7d_PopularizeLevel = currentSpu_Recent7d_PopularizeLevelList?.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); 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, PopularizeLevelGOI = skugoi_AggregationDate_PopularizeLevel?.GOI ?? 0M,
ActualAmount = aggregationDate_SkuActualAmountList.FirstOrDefault(x => x.Sku == skuId)?.ActualAmount ?? 0M, ActualAmount = aggregationDate_SkuActualAmountList.FirstOrDefault(x => x.Sku == skuId)?.ActualAmount ?? 0M,
PopularizeAmount = skuroi_aggregationDate_PopularizeLevelROI?.Amount ?? 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); insertAggregationSkuDailyList.Add(skuDailyAggregation);
#endregion #endregion
@ -819,6 +824,8 @@ namespace SiNan.Business
//var aggregationDate_SkuPopularizeAmountList = StatisticsPopularizeAmountBySku(adSkuIdList, startDate_aggregationDate, endDate_aggregationDate); //var aggregationDate_SkuPopularizeAmountList = StatisticsPopularizeAmountBySku(adSkuIdList, startDate_aggregationDate, endDate_aggregationDate);
var aggregationDate_PopularizeLevelROIList = goiBusiness.StatisticsAdSkuLvelROI(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; var adSkuIndex = 0;
foreach (var adSku in adSkuList) foreach (var adSku in adSkuList)
{ {
@ -836,6 +843,10 @@ namespace SiNan.Business
x.BusinessType == adSku.BusinessType && x.BusinessType == adSku.BusinessType &&
x.CampaignId == adSku.CampaignId); 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() var adSkuDailyAggregation = new AggregationJDPopularizeAdSkuDaily()
{ {
Id = idGenerator.NewLong(), Id = idGenerator.NewLong(),
@ -852,9 +863,11 @@ namespace SiNan.Business
BusinessType = adSku.BusinessType, BusinessType = adSku.BusinessType,
SkuId = adSku.Sku, SkuId = adSku.Sku,
AdId = adSku.AdId, AdId = adSku.AdId,
PopularizeAmount = adSkuPopularizeROI?.Amount ?? 0M,
Clicks = adSkuGoi_AggregationDate_PopularizeLevel?.Clicks ?? 0, 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); insertAggregationAdSkuDailyList.Add(adSkuDailyAggregation);

8
SiNan.Business/GOIBusiness.cs

@ -58,7 +58,7 @@ namespace SiNan.Business
return list; return list;
} }
public IList<GOIBySku> StatisticsPopularizeLevelGOI(IList<string> skuIdList, DateTime? startDate, DateTime? endDate) public IList<GOIBySku> StatisticsPopularizeLevelGOI(IList<string> skuIdList, DateTime? startDate, DateTime? endDate, bool isDirect = false)
{ {
IList<GOIBySku> list = new List<GOIBySku>(); IList<GOIBySku> list = new List<GOIBySku>();
@ -97,7 +97,7 @@ namespace SiNan.Business
return list; return list;
} }
public IList<ROIBySku> StatisticsPopluarizeLvelROI(IList<string> skuIdList, DateTime? startDate, DateTime? endDate) public IList<ROIBySku> StatisticsPopluarizeLvelROI(IList<string> skuIdList, DateTime? startDate, DateTime? endDate, bool isDirect = false)
{ {
var costs = fsql.Select<JDPopularizeAdSku>() var costs = fsql.Select<JDPopularizeAdSku>()
.Where(jas => skuIdList.Contains(jas.Sku)) // &&jas.Date >= startDate && jas.Date <= endDate .Where(jas => skuIdList.Contains(jas.Sku)) // &&jas.Date >= startDate && jas.Date <= endDate
@ -119,6 +119,7 @@ namespace SiNan.Business
jr.CookieTime <= endDate && jr.CookieTime <= endDate &&
osku.Price > 0 && osku.Price > 0 &&
skuIdList.Contains(jr.PopularizeSku)) skuIdList.Contains(jr.PopularizeSku))
.WhereIf(isDirect, (jr, o, osku) => jr.PlaceOrderSku == jr.PopularizeSku)
.GroupBy((jr, o, osku) => jr.PopularizeSku) .GroupBy((jr, o, osku) => jr.PopularizeSku)
.ToList(g => new PopularizeAmountBySku .ToList(g => new PopularizeAmountBySku
{ {
@ -291,7 +292,7 @@ namespace SiNan.Business
return list; return list;
} }
public IList<ROIByAdSku> StatisticsAdSkuLvelROI(IList<string> skuIdList, DateTime? startDate, DateTime? endDate) public IList<ROIByAdSku> StatisticsAdSkuLvelROI(IList<string> skuIdList, DateTime? startDate, DateTime? endDate, bool isDirect = false)
{ {
var costs = fsql.Select<JDPopularizeAdSku>() var costs = fsql.Select<JDPopularizeAdSku>()
.Where(jas => skuIdList.Contains(jas.Sku)) // &&jas.Date >= startDate && jas.Date <= endDate .Where(jas => skuIdList.Contains(jas.Sku)) // &&jas.Date >= startDate && jas.Date <= endDate
@ -315,6 +316,7 @@ namespace SiNan.Business
jr.CookieTime <= endDate && jr.CookieTime <= endDate &&
osku.Price > 0 && osku.Price > 0 &&
skuIdList.Contains(jr.PopularizeSku)) skuIdList.Contains(jr.PopularizeSku))
.WhereIf(isDirect, (jr, o, osku) => jr.PlaceOrderSku == jr.PopularizeSku)
.GroupBy((jr, o, osku) => new { jr.PopularizeSku, jr.BusinessType, jr.CampaignId }) .GroupBy((jr, o, osku) => new { jr.PopularizeSku, jr.BusinessType, jr.CampaignId })
.ToList(g => new PopularizeAmountBySku .ToList(g => new PopularizeAmountBySku
{ {

12
SiNan.Model/Db/Aggregation/AggregationJDPopularizeAdSkuDaily.cs

@ -93,6 +93,18 @@ namespace SiNan.Model.Db
/// </summary> /// </summary>
[Column(DbType = "decimal(18,2)")] [Column(DbType = "decimal(18,2)")]
public decimal? PopularizeLevelROI { get; set; } = 0.00M; public decimal? PopularizeLevelROI { get; set; } = 0.00M;
/// <summary>
/// 直接推广营业额(SKU实收)
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? DirectPopularizeAmount { get; set; } = 0.00M;
/// <summary>
/// 直接推广维度ROI
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? DirectPopularizeLevelROI { get; set; } = 0.00M;
} }
} }

11
SiNan.Model/Db/Aggregation/AggregationJDPopularizeSkuDaily.cs

@ -79,6 +79,17 @@ namespace SiNan.Model.Db
[Column(DbType = "decimal(18,2)")] [Column(DbType = "decimal(18,2)")]
public decimal? PopularizeLevelROI { get; set; } = 0.00M; public decimal? PopularizeLevelROI { get; set; } = 0.00M;
/// <summary>
/// 直接推广营业额(SKU实收)
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? DirectPopularizeAmount { get; set; } = 0.00M;
/// <summary>
/// 直接推广维度ROI
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? DirectPopularizeLevelROI { get; set; } = 0.00M;
} }
} }

Loading…
Cancel
Save