diff --git a/SiNan.Business/AggregationBusiness.cs b/SiNan.Business/AggregationBusiness.cs index fcdbcc1..9e255cd 100644 --- a/SiNan.Business/AggregationBusiness.cs +++ b/SiNan.Business/AggregationBusiness.cs @@ -27,6 +27,66 @@ namespace SiNan.Business this.taskSchedulerManager = taskSchedulerManager; } + + + private IList StatisticsActualAmountBySpu(IList spuList, DateTime startDate, DateTime endDate) + { + var list = fsql.Select().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 StatisticsActualAmountBySku(IList skuList, DateTime startDate, DateTime endDate) + { + var list = fsql.Select().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 StatisticsPopularizeAmountBySku(IList skuList, DateTime startDate, DateTime endDate) + { + var list = fsql.Select() + .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 StatisticsActualAmountBySpu(IList spuList, DateTime startDate, DateTime endDate) - { - var list = fsql.Select().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 StatisticsActualAmountBySku(IList skuList, DateTime startDate, DateTime endDate) - { - var list = fsql.Select().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 insertAggregationAdSkuDailyList = new List(); 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); diff --git a/SiNan.Business/TodayGOIBusiness.cs b/SiNan.Business/TodayGOIBusiness.cs index 0d4138f..3281923 100644 --- a/SiNan.Business/TodayGOIBusiness.cs +++ b/SiNan.Business/TodayGOIBusiness.cs @@ -1,4 +1,5 @@ -using SiNan.Common.Log; +using SiNan.Common.Http; +using SiNan.Common.Log; using SiNan.Common.Models; using Yitter.IdGenerator; @@ -6,9 +7,11 @@ namespace SiNan.Business { public class TodayGOIBusiness : BaseBusiness, IDenpendency { - public TodayGOIBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) - { + private RestApiService restApiService; + public TodayGOIBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, RestApiService restApiService) : base(fsql, nLogManager, idGenerator) + { + this.restApiService = restApiService; } diff --git a/SiNan.Model/Core/ActualAmountBySpu.cs b/SiNan.Model/Core/ActualAmountBySpu.cs index bff8539..c33f215 100644 --- a/SiNan.Model/Core/ActualAmountBySpu.cs +++ b/SiNan.Model/Core/ActualAmountBySpu.cs @@ -15,4 +15,19 @@ public string Sku { get; set; } } + + public class PopularizeAmountBySku + { + /// + /// 实收金额 + /// + public decimal ActualAmount { get; set; } + + public string Sku { get; set; } + + /// + /// 业务线(快车:2 京速推:134217728) + /// + public int? BusinessType { get; set; } + } } diff --git a/SiNan.Model/Db/Aggregation/AggregationJDPopularizeAdSkuDaily.cs b/SiNan.Model/Db/Aggregation/AggregationJDPopularizeAdSkuDaily.cs index d575883..786e6d4 100644 --- a/SiNan.Model/Db/Aggregation/AggregationJDPopularizeAdSkuDaily.cs +++ b/SiNan.Model/Db/Aggregation/AggregationJDPopularizeAdSkuDaily.cs @@ -79,6 +79,11 @@ namespace SiNan.Model.Db [Column(StringLength = 50)] public string SkuId { get; set; } + /// + /// 推广营业额(SKU实收) + /// + [Column(DbType = "decimal(18,2)")] + public decimal? PopularizeAmount { get; set; }=0.00M; } }