|
|
@ -303,5 +303,107 @@ namespace BBWY.Server.Business.Statistics |
|
|
|
} |
|
|
|
return list; |
|
|
|
} |
|
|
|
|
|
|
|
public IList<JDSkuLevelGOIResponse> CalculationSkuLevelGOI(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 _7dSkuCosts = fsql.Select<JDPopularizeAdSku>().Where(x => gOIRequest.LevelIdList.Contains(x.Sku) && |
|
|
|
x.BusinessType == 134217728 && |
|
|
|
x.Date >= _7dStartDate && |
|
|
|
x.Date <= _7dEndDate) |
|
|
|
.GroupBy(x => x.Sku) |
|
|
|
.ToList(g => new |
|
|
|
{ |
|
|
|
Cost = g.Sum(g.Value.Cost), |
|
|
|
Sku = g.Key |
|
|
|
}); |
|
|
|
|
|
|
|
var _7dSkuProfits = fsql.Select<JDOrderPopularizeRelation, OrderCost>().InnerJoin((jr, oc) => jr.OrderId == oc.OrderId) |
|
|
|
.Where((jr, oc) => gOIRequest.LevelIdList.Contains(jr.PopularizeSku) && |
|
|
|
jr.BusinessType == 134217728 && |
|
|
|
jr.OrderTime >= _7dStartDate && |
|
|
|
jr.OrderTime <= _7dEndTime) |
|
|
|
.GroupBy((jr, oc) => jr.PopularizeSku) |
|
|
|
.ToList(g => new |
|
|
|
{ |
|
|
|
Sku = g.Key, |
|
|
|
Profit = g.Sum(g.Value.Item2.Profit) |
|
|
|
}); |
|
|
|
|
|
|
|
var _30dSkuCosts = fsql.Select<JDPopularizeAdSku>().Where(x => gOIRequest.LevelIdList.Contains(x.Sku) && |
|
|
|
x.BusinessType == 134217728 && |
|
|
|
x.Date >= _30dStartDate && |
|
|
|
x.Date <= _30dEndDate) |
|
|
|
.GroupBy(x => x.Sku) |
|
|
|
.ToList(g => new |
|
|
|
{ |
|
|
|
Cost = g.Sum(g.Value.Cost), |
|
|
|
Sku = g.Key |
|
|
|
}); |
|
|
|
|
|
|
|
var _30dSkuProfits = fsql.Select<JDOrderPopularizeRelation, OrderCost>().InnerJoin((jr, oc) => jr.OrderId == oc.OrderId) |
|
|
|
.Where((jr, oc) => gOIRequest.LevelIdList.Contains(jr.PopularizeSku) && |
|
|
|
jr.BusinessType == 134217728 && |
|
|
|
jr.OrderTime >= _30dStartDate && |
|
|
|
jr.OrderTime <= _30dEndTime) |
|
|
|
.GroupBy((jr, oc) => jr.PopularizeSku) |
|
|
|
.ToList(g => new |
|
|
|
{ |
|
|
|
Sku = g.Key, |
|
|
|
Profit = g.Sum(g.Value.Item2.Profit) |
|
|
|
}); |
|
|
|
|
|
|
|
var customDaysSkuCosts = fsql.Select<JDPopularizeAdSku>().Where(x => gOIRequest.LevelIdList.Contains(x.Sku) && |
|
|
|
x.BusinessType == 134217728 && |
|
|
|
x.Date >= gOIRequest.StartDate && |
|
|
|
x.Date <= gOIRequest.EndDate) |
|
|
|
.GroupBy(x => x.Sku) |
|
|
|
.ToList(g => new |
|
|
|
{ |
|
|
|
Cost = g.Sum(g.Value.Cost), |
|
|
|
Sku = g.Key |
|
|
|
}); |
|
|
|
|
|
|
|
var customDaysSkuProfits = fsql.Select<JDOrderPopularizeRelation, OrderCost>().InnerJoin((jr, oc) => jr.OrderId == oc.OrderId) |
|
|
|
.Where((jr, oc) => gOIRequest.LevelIdList.Contains(jr.PopularizeSku) && |
|
|
|
jr.BusinessType == 134217728 && |
|
|
|
jr.OrderTime >= gOIRequest.StartDate && |
|
|
|
jr.OrderTime <= customEndTime) |
|
|
|
.GroupBy((jr, oc) => jr.PopularizeSku) |
|
|
|
.ToList(g => new |
|
|
|
{ |
|
|
|
Sku = g.Key, |
|
|
|
Profit = g.Sum(g.Value.Item2.Profit) |
|
|
|
}); |
|
|
|
|
|
|
|
var list = new List<JDSkuLevelGOIResponse>(); |
|
|
|
foreach (var levelId in gOIRequest.LevelIdList) |
|
|
|
{ |
|
|
|
var goiResponse = new JDSkuLevelGOIResponse() |
|
|
|
{ |
|
|
|
LevelId = levelId, |
|
|
|
BusinessType = gOIRequest.BusinessType |
|
|
|
}; |
|
|
|
goiResponse._7GOI.Cost = _7dSkuCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; |
|
|
|
goiResponse._7GOI.Profit = _7dSkuProfits.FirstOrDefault(x => x.Sku == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
goiResponse._30GOI.Cost = _30dSkuCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; |
|
|
|
goiResponse._30GOI.Profit = _30dSkuProfits.FirstOrDefault(x => x.Sku == levelId)?.Profit ?? 0M; |
|
|
|
|
|
|
|
goiResponse.CustomDaysGOI.Cost = customDaysSkuCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; |
|
|
|
goiResponse.CustomDaysGOI.Profit = customDaysSkuProfits.FirstOrDefault(x => x.Sku == levelId)?.Profit ?? 0M; |
|
|
|
list.Add(goiResponse); |
|
|
|
} |
|
|
|
return list; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|