|
@ -405,5 +405,840 @@ namespace BBWY.Server.Business.Statistics |
|
|
} |
|
|
} |
|
|
return list; |
|
|
return list; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public IList<JDProductAndPopularizeLevelGOIResponse> CalculationCampaignLevelProductGOI(GOIRequest gOIRequest) |
|
|
|
|
|
{ |
|
|
|
|
|
var _7dEndDate = DateTime.Now.Date.AddDays(-1); |
|
|
|
|
|
var _7dStartDate = _7dEndDate.AddDays(-6); |
|
|
|
|
|
var _7dEndTime = _7dEndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
var _30dEndDate = DateTime.Now.Date.AddDays(-1); |
|
|
|
|
|
var _30dStartDate = _30dEndDate.AddDays(-29); |
|
|
|
|
|
var _30dEndTime = _30dEndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
var customEndTime = gOIRequest.EndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _7dCampaignCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.CampaignId.Value) && |
|
|
|
|
|
jas2.Date >= _7dStartDate && jas2.Date <= _7dEndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.CampaignId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
CampaignId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _7dCampaignProfits = fsql.Select<JDPopularizeAdSku, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jas, ocd) => jas.Sku == ocd.SkuId) |
|
|
|
|
|
.Where((jas, ocd) => gOIRequest.LevelIdList.Contains(jas.CampaignId.Value) && |
|
|
|
|
|
ocd.IsEnabled && |
|
|
|
|
|
ocd.CreateTime >= _7dStartDate && |
|
|
|
|
|
ocd.CreateTime <= _7dEndTime) |
|
|
|
|
|
.GroupBy((jas, ocd) => jas.CampaignId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item2.SkuGrossProfit), |
|
|
|
|
|
CampaignId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _30dCampaignCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.CampaignId.Value) && |
|
|
|
|
|
jas2.Date >= _30dStartDate && jas2.Date <= _30dEndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.CampaignId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
CampaignId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _30dCampaignProfits = fsql.Select<JDPopularizeAdSku, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jas, ocd) => jas.Sku == ocd.SkuId) |
|
|
|
|
|
.Where((jas, ocd) => gOIRequest.LevelIdList.Contains(jas.CampaignId.Value) && |
|
|
|
|
|
ocd.IsEnabled && |
|
|
|
|
|
ocd.CreateTime >= _30dStartDate && |
|
|
|
|
|
ocd.CreateTime <= _30dEndTime) |
|
|
|
|
|
.GroupBy((jas, ocd) => jas.CampaignId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item2.SkuGrossProfit), |
|
|
|
|
|
CampaignId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _customCampaignCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.CampaignId.Value) && |
|
|
|
|
|
jas2.Date >= gOIRequest.StartDate && jas2.Date <= gOIRequest.EndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.CampaignId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
CampaignId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _customCampaignProfits = fsql.Select<JDPopularizeAdSku, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jas, ocd) => jas.Sku == ocd.SkuId) |
|
|
|
|
|
.Where((jas, ocd) => gOIRequest.LevelIdList.Contains(jas.CampaignId.Value) && |
|
|
|
|
|
ocd.IsEnabled && |
|
|
|
|
|
ocd.CreateTime >= gOIRequest.StartDate && |
|
|
|
|
|
ocd.CreateTime <= customEndTime) |
|
|
|
|
|
.GroupBy((jas, ocd) => jas.CampaignId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item2.SkuGrossProfit), |
|
|
|
|
|
CampaignId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var list = new List<JDProductAndPopularizeLevelGOIResponse>(); |
|
|
|
|
|
foreach (var levelId in gOIRequest.LevelIdList) |
|
|
|
|
|
{ |
|
|
|
|
|
var goiResponse = new JDProductAndPopularizeLevelGOIResponse() |
|
|
|
|
|
{ |
|
|
|
|
|
LevelId = levelId |
|
|
|
|
|
}; |
|
|
|
|
|
goiResponse._7GOI.Cost = _7dCampaignCosts.FirstOrDefault(x => x.CampaignId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse._7GOI.Profit = _7dCampaignProfits.FirstOrDefault(x => x.CampaignId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
|
|
|
|
goiResponse._30GOI.Cost = _30dCampaignCosts.FirstOrDefault(x => x.CampaignId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse._30GOI.Profit = _30dCampaignProfits.FirstOrDefault(x => x.CampaignId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
|
|
|
|
goiResponse.CustomDaysGOI.Cost = _customCampaignCosts.FirstOrDefault(x => x.CampaignId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse.CustomDaysGOI.Profit = _customCampaignProfits.FirstOrDefault(x => x.CampaignId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
list.Add(goiResponse); |
|
|
|
|
|
} |
|
|
|
|
|
return list; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public IList<JDProductAndPopularizeLevelGOIResponse> CalculationAdGroupLevelProductGOI(GOIRequest gOIRequest) |
|
|
|
|
|
{ |
|
|
|
|
|
var _7dEndDate = DateTime.Now.Date.AddDays(-1); |
|
|
|
|
|
var _7dStartDate = _7dEndDate.AddDays(-6); |
|
|
|
|
|
var _7dEndTime = _7dEndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
var _30dEndDate = DateTime.Now.Date.AddDays(-1); |
|
|
|
|
|
var _30dStartDate = _30dEndDate.AddDays(-29); |
|
|
|
|
|
var _30dEndTime = _30dEndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
var customEndTime = gOIRequest.EndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _7dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value) && |
|
|
|
|
|
jas2.Date >= _7dStartDate && jas2.Date <= _7dEndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _7dProfits = fsql.Select<JDPopularizeAdSku, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jas, ocd) => jas.Sku == ocd.SkuId) |
|
|
|
|
|
.Where((jas, ocd) => gOIRequest.LevelIdList.Contains(jas.AdGroupId.Value) && |
|
|
|
|
|
ocd.IsEnabled && |
|
|
|
|
|
ocd.CreateTime >= _7dStartDate && |
|
|
|
|
|
ocd.CreateTime <= _7dEndTime) |
|
|
|
|
|
.GroupBy((jas, ocd) => jas.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item2.SkuGrossProfit), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _30dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value) && |
|
|
|
|
|
jas2.Date >= _30dStartDate && jas2.Date <= _30dEndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _30dProfits = fsql.Select<JDPopularizeAdSku, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jas, ocd) => jas.Sku == ocd.SkuId) |
|
|
|
|
|
.Where((jas, ocd) => gOIRequest.LevelIdList.Contains(jas.AdGroupId.Value) && |
|
|
|
|
|
ocd.IsEnabled && |
|
|
|
|
|
ocd.CreateTime >= _30dStartDate && |
|
|
|
|
|
ocd.CreateTime <= _30dEndTime) |
|
|
|
|
|
.GroupBy((jas, ocd) => jas.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item2.SkuGrossProfit), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _customCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value) && |
|
|
|
|
|
jas2.Date >= gOIRequest.StartDate && jas2.Date <= gOIRequest.EndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _customProfits = fsql.Select<JDPopularizeAdSku, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jas, ocd) => jas.Sku == ocd.SkuId) |
|
|
|
|
|
.Where((jas, ocd) => gOIRequest.LevelIdList.Contains(jas.AdGroupId.Value) && |
|
|
|
|
|
ocd.IsEnabled && |
|
|
|
|
|
ocd.CreateTime >= gOIRequest.StartDate && |
|
|
|
|
|
ocd.CreateTime <= customEndTime) |
|
|
|
|
|
.GroupBy((jas, ocd) => jas.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item2.SkuGrossProfit), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var list = new List<JDProductAndPopularizeLevelGOIResponse>(); |
|
|
|
|
|
foreach (var levelId in gOIRequest.LevelIdList) |
|
|
|
|
|
{ |
|
|
|
|
|
var goiResponse = new JDProductAndPopularizeLevelGOIResponse() |
|
|
|
|
|
{ |
|
|
|
|
|
LevelId = levelId |
|
|
|
|
|
}; |
|
|
|
|
|
goiResponse._7GOI.Cost = _7dCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse._7GOI.Profit = _7dProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
|
|
|
|
goiResponse._30GOI.Cost = _30dCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse._30GOI.Profit = _30dProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
|
|
|
|
goiResponse.CustomDaysGOI.Cost = _customCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
list.Add(goiResponse); |
|
|
|
|
|
} |
|
|
|
|
|
return list; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public IList<JDProductAndPopularizeLevelGOIResponse> CalculationAdLevelProductGOI(GOIRequest gOIRequest) |
|
|
|
|
|
{ |
|
|
|
|
|
var _7dEndDate = DateTime.Now.Date.AddDays(-1); |
|
|
|
|
|
var _7dStartDate = _7dEndDate.AddDays(-6); |
|
|
|
|
|
var _7dEndTime = _7dEndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
var _30dEndDate = DateTime.Now.Date.AddDays(-1); |
|
|
|
|
|
var _30dStartDate = _30dEndDate.AddDays(-29); |
|
|
|
|
|
var _30dEndTime = _30dEndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
var customEndTime = gOIRequest.EndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _7dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdId.Value) && |
|
|
|
|
|
jas2.Date >= _7dStartDate && jas2.Date <= _7dEndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.AdId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
AdId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _7dProfits = fsql.Select<JDPopularizeAdSku, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jas, ocd) => jas.Sku == ocd.SkuId) |
|
|
|
|
|
.Where((jas, ocd) => gOIRequest.LevelIdList.Contains(jas.AdId.Value) && |
|
|
|
|
|
ocd.IsEnabled && |
|
|
|
|
|
ocd.CreateTime >= _7dStartDate && |
|
|
|
|
|
ocd.CreateTime <= _7dEndTime) |
|
|
|
|
|
.GroupBy((jas, ocd) => jas.AdId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item2.SkuGrossProfit), |
|
|
|
|
|
AdId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _30dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdId.Value) && |
|
|
|
|
|
jas2.Date >= _30dStartDate && jas2.Date <= _30dEndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.AdId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
AdId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _30dProfits = fsql.Select<JDPopularizeAdSku, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jas, ocd) => jas.Sku == ocd.SkuId) |
|
|
|
|
|
.Where((jas, ocd) => gOIRequest.LevelIdList.Contains(jas.AdId.Value) && |
|
|
|
|
|
ocd.IsEnabled && |
|
|
|
|
|
ocd.CreateTime >= _30dStartDate && |
|
|
|
|
|
ocd.CreateTime <= _30dEndTime) |
|
|
|
|
|
.GroupBy((jas, ocd) => jas.AdId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item2.SkuGrossProfit), |
|
|
|
|
|
AdId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _customCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdId.Value) && |
|
|
|
|
|
jas2.Date >= gOIRequest.StartDate && jas2.Date <= gOIRequest.EndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.AdId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
AdId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _customProfits = fsql.Select<JDPopularizeAdSku, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jas, ocd) => jas.Sku == ocd.SkuId) |
|
|
|
|
|
.Where((jas, ocd) => gOIRequest.LevelIdList.Contains(jas.AdId.Value) && |
|
|
|
|
|
ocd.IsEnabled && |
|
|
|
|
|
ocd.CreateTime >= gOIRequest.StartDate && |
|
|
|
|
|
ocd.CreateTime <= customEndTime) |
|
|
|
|
|
.GroupBy((jas, ocd) => jas.AdId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item2.SkuGrossProfit), |
|
|
|
|
|
AdId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var list = new List<JDProductAndPopularizeLevelGOIResponse>(); |
|
|
|
|
|
foreach (var levelId in gOIRequest.LevelIdList) |
|
|
|
|
|
{ |
|
|
|
|
|
var goiResponse = new JDProductAndPopularizeLevelGOIResponse() |
|
|
|
|
|
{ |
|
|
|
|
|
LevelId = levelId |
|
|
|
|
|
}; |
|
|
|
|
|
goiResponse._7GOI.Cost = _7dCosts.FirstOrDefault(x => x.AdId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse._7GOI.Profit = _7dProfits.FirstOrDefault(x => x.AdId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
|
|
|
|
goiResponse._30GOI.Cost = _30dCosts.FirstOrDefault(x => x.AdId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse._30GOI.Profit = _30dProfits.FirstOrDefault(x => x.AdId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
|
|
|
|
goiResponse.CustomDaysGOI.Cost = _customCosts.FirstOrDefault(x => x.AdId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.AdId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
list.Add(goiResponse); |
|
|
|
|
|
} |
|
|
|
|
|
return list; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public IList<JDSkuLevelProductAndPopularizeGOIResponse> CalculationSkuLevelProductGOI(SkuGOIRequest gOIRequest) |
|
|
|
|
|
{ |
|
|
|
|
|
var _7dEndDate = DateTime.Now.Date.AddDays(-1); |
|
|
|
|
|
var _7dStartDate = _7dEndDate.AddDays(-6); |
|
|
|
|
|
var _7dEndTime = _7dEndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
var _30dEndDate = DateTime.Now.Date.AddDays(-1); |
|
|
|
|
|
var _30dStartDate = _30dEndDate.AddDays(-29); |
|
|
|
|
|
var _30dEndTime = _30dEndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
var customEndTime = gOIRequest.EndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _7dCosts = fsql.Select<JDPopularizeAdSku>() |
|
|
|
|
|
.Where(jas => gOIRequest.LevelIdList.Contains(jas.Sku) && |
|
|
|
|
|
jas.Date >= _7dStartDate && jas.Date <= _7dEndDate) |
|
|
|
|
|
.GroupBy(jas => jas.Sku) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Cost), |
|
|
|
|
|
Sku = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _7dProfits = fsql.Select<JDPopularizeAdSku, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jas, ocd) => jas.Sku == ocd.SkuId) |
|
|
|
|
|
.Where((jas, ocd) => gOIRequest.LevelIdList.Contains(jas.Sku) && |
|
|
|
|
|
ocd.IsEnabled && |
|
|
|
|
|
ocd.CreateTime >= _7dStartDate && |
|
|
|
|
|
ocd.CreateTime <= _7dEndTime) |
|
|
|
|
|
.GroupBy((jas, ocd) => jas.Sku) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item2.SkuGrossProfit), |
|
|
|
|
|
Sku = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _30dCosts = fsql.Select<JDPopularizeAdSku>() |
|
|
|
|
|
.Where(jas => gOIRequest.LevelIdList.Contains(jas.Sku) && |
|
|
|
|
|
jas.Date >= _30dStartDate && jas.Date <= _30dEndDate) |
|
|
|
|
|
.GroupBy(jas => jas.Sku) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Cost), |
|
|
|
|
|
Sku = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _30dProfits = fsql.Select<JDPopularizeAdSku, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jas, ocd) => jas.Sku == ocd.SkuId) |
|
|
|
|
|
.Where((jas, ocd) => gOIRequest.LevelIdList.Contains(jas.Sku) && |
|
|
|
|
|
ocd.IsEnabled && |
|
|
|
|
|
ocd.CreateTime >= _30dStartDate && |
|
|
|
|
|
ocd.CreateTime <= _30dEndTime) |
|
|
|
|
|
.GroupBy((jas, ocd) => jas.Sku) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item2.SkuGrossProfit), |
|
|
|
|
|
Sku = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _customCosts = fsql.Select<JDPopularizeAdSku>() |
|
|
|
|
|
.Where(jas => gOIRequest.LevelIdList.Contains(jas.Sku) && |
|
|
|
|
|
jas.Date >= gOIRequest.StartDate && jas.Date <= gOIRequest.EndDate) |
|
|
|
|
|
.GroupBy(jas => jas.Sku) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Cost), |
|
|
|
|
|
Sku = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _customProfits = fsql.Select<JDPopularizeAdSku, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jas, ocd) => jas.Sku == ocd.SkuId) |
|
|
|
|
|
.Where((jas, ocd) => gOIRequest.LevelIdList.Contains(jas.Sku) && |
|
|
|
|
|
ocd.IsEnabled && |
|
|
|
|
|
ocd.CreateTime >= gOIRequest.StartDate && |
|
|
|
|
|
ocd.CreateTime <= customEndTime) |
|
|
|
|
|
.GroupBy((jas, ocd) => jas.Sku) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item2.SkuGrossProfit), |
|
|
|
|
|
Sku = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var list = new List<JDSkuLevelProductAndPopularizeGOIResponse>(); |
|
|
|
|
|
foreach (var levelId in gOIRequest.LevelIdList) |
|
|
|
|
|
{ |
|
|
|
|
|
var goiResponse = new JDSkuLevelProductAndPopularizeGOIResponse() |
|
|
|
|
|
{ |
|
|
|
|
|
LevelId = levelId |
|
|
|
|
|
}; |
|
|
|
|
|
goiResponse._7GOI.Cost = _7dCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse._7GOI.Profit = _7dProfits.FirstOrDefault(x => x.Sku == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
|
|
|
|
goiResponse._30GOI.Cost = _30dCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse._30GOI.Profit = _30dProfits.FirstOrDefault(x => x.Sku == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
|
|
|
|
goiResponse.CustomDaysGOI.Cost = _customCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.Sku == levelId)?.Profit ?? 0M; |
|
|
|
|
|
list.Add(goiResponse); |
|
|
|
|
|
} |
|
|
|
|
|
return list; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public IList<JDProductAndPopularizeLevelGOIResponse> CalculationCampaignLevelPopularizeGOI(GOIRequest gOIRequest) |
|
|
|
|
|
{ |
|
|
|
|
|
var _7dEndDate = DateTime.Now.Date.AddDays(-1); |
|
|
|
|
|
var _7dStartDate = _7dEndDate.AddDays(-6); |
|
|
|
|
|
var _7dEndTime = _7dEndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
var _30dEndDate = DateTime.Now.Date.AddDays(-1); |
|
|
|
|
|
var _30dStartDate = _30dEndDate.AddDays(-29); |
|
|
|
|
|
var _30dEndTime = _30dEndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
var customEndTime = gOIRequest.EndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _7dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.CampaignId.Value) && |
|
|
|
|
|
jas2.Date >= _7dStartDate && jas2.Date <= _7dEndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.CampaignId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
CampaignId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _7dProfits = fsql.Select<JDPopularizeAdSku, JDOrderPopularizeRelation, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) |
|
|
|
|
|
.Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.CampaignId.Value) && |
|
|
|
|
|
jr.CookieTime >= _7dStartDate && jr.CookieTime <= _7dEndDate && |
|
|
|
|
|
ocd.IsEnabled == true) |
|
|
|
|
|
.GroupBy((jad, jr, ocd) => jad.CampaignId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item3.SkuGrossProfit), |
|
|
|
|
|
CampaignId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _30dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.CampaignId.Value) && |
|
|
|
|
|
jas2.Date >= _30dStartDate && jas2.Date <= _30dEndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.CampaignId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
CampaignId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _30dProfits = fsql.Select<JDPopularizeAdSku, JDOrderPopularizeRelation, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) |
|
|
|
|
|
.Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.CampaignId.Value) && |
|
|
|
|
|
jr.CookieTime >= _30dStartDate && jr.CookieTime <= _30dEndDate && |
|
|
|
|
|
ocd.IsEnabled == true) |
|
|
|
|
|
.GroupBy((jad, jr, ocd) => jad.CampaignId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item3.SkuGrossProfit), |
|
|
|
|
|
CampaignId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _customCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.CampaignId.Value) && |
|
|
|
|
|
jas2.Date >= gOIRequest.StartDate && jas2.Date <= gOIRequest.EndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.CampaignId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
CampaignId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _customProfits = fsql.Select<JDPopularizeAdSku, JDOrderPopularizeRelation, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) |
|
|
|
|
|
.Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.CampaignId.Value) && |
|
|
|
|
|
jr.CookieTime >= gOIRequest.StartDate && jr.CookieTime <= customEndTime && |
|
|
|
|
|
ocd.IsEnabled == true) |
|
|
|
|
|
.GroupBy((jad, jr, ocd) => jad.CampaignId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item3.SkuGrossProfit), |
|
|
|
|
|
CampaignId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var list = new List<JDProductAndPopularizeLevelGOIResponse>(); |
|
|
|
|
|
foreach (var levelId in gOIRequest.LevelIdList) |
|
|
|
|
|
{ |
|
|
|
|
|
var goiResponse = new JDProductAndPopularizeLevelGOIResponse() |
|
|
|
|
|
{ |
|
|
|
|
|
LevelId = levelId |
|
|
|
|
|
}; |
|
|
|
|
|
goiResponse._7GOI.Cost = _7dCosts.FirstOrDefault(x => x.CampaignId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse._7GOI.Profit = _7dProfits.FirstOrDefault(x => x.CampaignId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
|
|
|
|
goiResponse._30GOI.Cost = _30dCosts.FirstOrDefault(x => x.CampaignId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse._30GOI.Profit = _30dProfits.FirstOrDefault(x => x.CampaignId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
|
|
|
|
goiResponse.CustomDaysGOI.Cost = _customCosts.FirstOrDefault(x => x.CampaignId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.CampaignId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
list.Add(goiResponse); |
|
|
|
|
|
} |
|
|
|
|
|
return list; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public IList<JDProductAndPopularizeLevelGOIResponse> CalculationAdGroupLevelPopularizeGOI(GOIRequest gOIRequest) |
|
|
|
|
|
{ |
|
|
|
|
|
var _7dEndDate = DateTime.Now.Date.AddDays(-1); |
|
|
|
|
|
var _7dStartDate = _7dEndDate.AddDays(-6); |
|
|
|
|
|
var _7dEndTime = _7dEndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
var _30dEndDate = DateTime.Now.Date.AddDays(-1); |
|
|
|
|
|
var _30dStartDate = _30dEndDate.AddDays(-29); |
|
|
|
|
|
var _30dEndTime = _30dEndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
var customEndTime = gOIRequest.EndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _7dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value) && |
|
|
|
|
|
jas2.Date >= _7dStartDate && jas2.Date <= _7dEndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _7dProfits = fsql.Select<JDPopularizeAdSku, JDOrderPopularizeRelation, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) |
|
|
|
|
|
.Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.AdGroupId.Value) && |
|
|
|
|
|
jr.CookieTime >= _7dStartDate && jr.CookieTime <= _7dEndDate && |
|
|
|
|
|
ocd.IsEnabled == true) |
|
|
|
|
|
.GroupBy((jad, jr, ocd) => jad.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item3.SkuGrossProfit), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _30dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value) && |
|
|
|
|
|
jas2.Date >= _30dStartDate && jas2.Date <= _30dEndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _30dProfits = fsql.Select<JDPopularizeAdSku, JDOrderPopularizeRelation, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) |
|
|
|
|
|
.Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.AdGroupId.Value) && |
|
|
|
|
|
jr.CookieTime >= _30dStartDate && jr.CookieTime <= _30dEndDate && |
|
|
|
|
|
ocd.IsEnabled == true) |
|
|
|
|
|
.GroupBy((jad, jr, ocd) => jad.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item3.SkuGrossProfit), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _customCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value) && |
|
|
|
|
|
jas2.Date >= gOIRequest.StartDate && jas2.Date <= gOIRequest.EndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _customProfits = fsql.Select<JDPopularizeAdSku, JDOrderPopularizeRelation, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) |
|
|
|
|
|
.Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.AdGroupId.Value) && |
|
|
|
|
|
jr.CookieTime >= gOIRequest.StartDate && jr.CookieTime <= customEndTime && |
|
|
|
|
|
ocd.IsEnabled == true) |
|
|
|
|
|
.GroupBy((jad, jr, ocd) => jad.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item3.SkuGrossProfit), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var list = new List<JDProductAndPopularizeLevelGOIResponse>(); |
|
|
|
|
|
foreach (var levelId in gOIRequest.LevelIdList) |
|
|
|
|
|
{ |
|
|
|
|
|
var goiResponse = new JDProductAndPopularizeLevelGOIResponse() |
|
|
|
|
|
{ |
|
|
|
|
|
LevelId = levelId |
|
|
|
|
|
}; |
|
|
|
|
|
goiResponse._7GOI.Cost = _7dCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse._7GOI.Profit = _7dProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
|
|
|
|
goiResponse._30GOI.Cost = _30dCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse._30GOI.Profit = _30dProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
|
|
|
|
goiResponse.CustomDaysGOI.Cost = _customCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
list.Add(goiResponse); |
|
|
|
|
|
} |
|
|
|
|
|
return list; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public IList<JDProductAndPopularizeLevelGOIResponse> CalculationAdLevelPopularizeGOI(GOIRequest gOIRequest) |
|
|
|
|
|
{ |
|
|
|
|
|
var _7dEndDate = DateTime.Now.Date.AddDays(-1); |
|
|
|
|
|
var _7dStartDate = _7dEndDate.AddDays(-6); |
|
|
|
|
|
var _7dEndTime = _7dEndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
var _30dEndDate = DateTime.Now.Date.AddDays(-1); |
|
|
|
|
|
var _30dStartDate = _30dEndDate.AddDays(-29); |
|
|
|
|
|
var _30dEndTime = _30dEndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
var customEndTime = gOIRequest.EndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _7dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdId.Value) && |
|
|
|
|
|
jas2.Date >= _7dStartDate && jas2.Date <= _7dEndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.AdId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _7dProfits = fsql.Select<JDPopularizeAdSku, JDOrderPopularizeRelation, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) |
|
|
|
|
|
.Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.AdId.Value) && |
|
|
|
|
|
jr.CookieTime >= _7dStartDate && jr.CookieTime <= _7dEndDate && |
|
|
|
|
|
ocd.IsEnabled == true) |
|
|
|
|
|
.GroupBy((jad, jr, ocd) => jad.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item3.SkuGrossProfit), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _30dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value) && |
|
|
|
|
|
jas2.Date >= _30dStartDate && jas2.Date <= _30dEndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _30dProfits = fsql.Select<JDPopularizeAdSku, JDOrderPopularizeRelation, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) |
|
|
|
|
|
.Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.AdGroupId.Value) && |
|
|
|
|
|
jr.CookieTime >= _30dStartDate && jr.CookieTime <= _30dEndDate && |
|
|
|
|
|
ocd.IsEnabled == true) |
|
|
|
|
|
.GroupBy((jad, jr, ocd) => jad.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item3.SkuGrossProfit), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _customCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>() |
|
|
|
|
|
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) |
|
|
|
|
|
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value) && |
|
|
|
|
|
jas2.Date >= gOIRequest.StartDate && jas2.Date <= gOIRequest.EndDate) |
|
|
|
|
|
.GroupBy((jas1, jas2) => jas1.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Item2.Cost), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _customProfits = fsql.Select<JDPopularizeAdSku, JDOrderPopularizeRelation, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) |
|
|
|
|
|
.InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) |
|
|
|
|
|
.Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.AdGroupId.Value) && |
|
|
|
|
|
jr.CookieTime >= gOIRequest.StartDate && jr.CookieTime <= customEndTime && |
|
|
|
|
|
ocd.IsEnabled == true) |
|
|
|
|
|
.GroupBy((jad, jr, ocd) => jad.AdGroupId) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item3.SkuGrossProfit), |
|
|
|
|
|
AdGroupId = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var list = new List<JDProductAndPopularizeLevelGOIResponse>(); |
|
|
|
|
|
foreach (var levelId in gOIRequest.LevelIdList) |
|
|
|
|
|
{ |
|
|
|
|
|
var goiResponse = new JDProductAndPopularizeLevelGOIResponse() |
|
|
|
|
|
{ |
|
|
|
|
|
LevelId = levelId |
|
|
|
|
|
}; |
|
|
|
|
|
goiResponse._7GOI.Cost = _7dCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse._7GOI.Profit = _7dProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
|
|
|
|
goiResponse._30GOI.Cost = _30dCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse._30GOI.Profit = _30dProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
|
|
|
|
goiResponse.CustomDaysGOI.Cost = _customCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; |
|
|
|
|
|
list.Add(goiResponse); |
|
|
|
|
|
} |
|
|
|
|
|
return list; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public IList<JDSkuLevelProductAndPopularizeGOIResponse> CalculationSkuLevelPopularizeGOI(SkuGOIRequest gOIRequest) |
|
|
|
|
|
{ |
|
|
|
|
|
var _7dEndDate = DateTime.Now.Date.AddDays(-1); |
|
|
|
|
|
var _7dStartDate = _7dEndDate.AddDays(-6); |
|
|
|
|
|
var _7dEndTime = _7dEndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
var _30dEndDate = DateTime.Now.Date.AddDays(-1); |
|
|
|
|
|
var _30dStartDate = _30dEndDate.AddDays(-29); |
|
|
|
|
|
var _30dEndTime = _30dEndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
var customEndTime = gOIRequest.EndDate.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _7dCosts = fsql.Select<JDPopularizeAdSku>() |
|
|
|
|
|
.Where(jas => gOIRequest.LevelIdList.Contains(jas.Sku) && |
|
|
|
|
|
jas.Date >= _7dStartDate && jas.Date <= _7dEndDate) |
|
|
|
|
|
.GroupBy(jas => jas.Sku) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Cost), |
|
|
|
|
|
Sku = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _7dProfits = fsql.Select<JDOrderPopularizeRelation, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jr, ocd) => jr.OrderId == ocd.OrderId) |
|
|
|
|
|
.Where((jr, ocd) => gOIRequest.LevelIdList.Contains(jr.PopularizeSku) && |
|
|
|
|
|
ocd.IsEnabled && |
|
|
|
|
|
jr.CookieTime >= _7dStartDate && |
|
|
|
|
|
jr.CookieTime <= _7dEndTime) |
|
|
|
|
|
.GroupBy((jr, ocd) => jr.PopularizeSku) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item2.SkuGrossProfit), |
|
|
|
|
|
Sku = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _30dCosts = fsql.Select<JDPopularizeAdSku>() |
|
|
|
|
|
.Where(jas => gOIRequest.LevelIdList.Contains(jas.Sku) && |
|
|
|
|
|
jas.Date >= _30dStartDate && jas.Date <= _30dEndDate) |
|
|
|
|
|
.GroupBy(jas => jas.Sku) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Cost), |
|
|
|
|
|
Sku = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _30dProfits = fsql.Select<JDOrderPopularizeRelation, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jr, ocd) => jr.OrderId == ocd.OrderId) |
|
|
|
|
|
.Where((jr, ocd) => gOIRequest.LevelIdList.Contains(jr.PopularizeSku) && |
|
|
|
|
|
ocd.IsEnabled && |
|
|
|
|
|
jr.CookieTime >= _30dStartDate && |
|
|
|
|
|
jr.CookieTime <= _30dEndTime) |
|
|
|
|
|
.GroupBy((jr, ocd) => jr.PopularizeSku) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item2.SkuGrossProfit), |
|
|
|
|
|
Sku = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _customCosts = fsql.Select<JDPopularizeAdSku>() |
|
|
|
|
|
.Where(jas => gOIRequest.LevelIdList.Contains(jas.Sku) && |
|
|
|
|
|
jas.Date >= gOIRequest.StartDate && jas.Date <= gOIRequest.EndDate) |
|
|
|
|
|
.GroupBy(jas => jas.Sku) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Cost = g.Sum(g.Value.Cost), |
|
|
|
|
|
Sku = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var _customProfits = fsql.Select<JDOrderPopularizeRelation, OrderCostDetail>() |
|
|
|
|
|
.InnerJoin((jr, ocd) => jr.OrderId == ocd.OrderId) |
|
|
|
|
|
.Where((jr, ocd) => gOIRequest.LevelIdList.Contains(jr.PopularizeSku) && |
|
|
|
|
|
ocd.IsEnabled && |
|
|
|
|
|
jr.CookieTime >= gOIRequest.StartDate && |
|
|
|
|
|
jr.CookieTime <= customEndTime) |
|
|
|
|
|
.GroupBy((jr, ocd) => jr.PopularizeSku) |
|
|
|
|
|
.ToList(g => new |
|
|
|
|
|
{ |
|
|
|
|
|
Profit = g.Sum(g.Value.Item2.SkuGrossProfit), |
|
|
|
|
|
Sku = g.Key |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var list = new List<JDSkuLevelProductAndPopularizeGOIResponse>(); |
|
|
|
|
|
foreach (var levelId in gOIRequest.LevelIdList) |
|
|
|
|
|
{ |
|
|
|
|
|
var goiResponse = new JDSkuLevelProductAndPopularizeGOIResponse() |
|
|
|
|
|
{ |
|
|
|
|
|
LevelId = levelId |
|
|
|
|
|
}; |
|
|
|
|
|
goiResponse._7GOI.Cost = _7dCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse._7GOI.Profit = _7dProfits.FirstOrDefault(x => x.Sku == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
|
|
|
|
goiResponse._30GOI.Cost = _30dCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse._30GOI.Profit = _30dProfits.FirstOrDefault(x => x.Sku == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
|
|
|
|
goiResponse.CustomDaysGOI.Cost = _customCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; |
|
|
|
|
|
goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.Sku == levelId)?.Profit ?? 0M; |
|
|
|
|
|
list.Add(goiResponse); |
|
|
|
|
|
} |
|
|
|
|
|
return list; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|