|
@ -95,6 +95,31 @@ namespace SiNan.Business |
|
|
return list; |
|
|
return list; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private GOIByShop StatisticsPopularizeLevelGOI(long shopId, DateTime? startDate, DateTime? endDate) |
|
|
|
|
|
{ |
|
|
|
|
|
var cost = fsql.Select<JDPopularizeAdSku>() |
|
|
|
|
|
.Where(jas => jas.ShopId == shopId) // &&jas.Date >= startDate && jas.Date <= endDate
|
|
|
|
|
|
.WhereIf(startDate != null, jas => jas.Date >= startDate) |
|
|
|
|
|
.WhereIf(endDate != null, jas => jas.Date <= endDate) |
|
|
|
|
|
.Sum(jas => jas.Cost); |
|
|
|
|
|
|
|
|
|
|
|
var profit = fsql.Select<JDOrderPopularizeRelation, OrderCostDetail, Order>() |
|
|
|
|
|
.InnerJoin((jr, ocd, o) => jr.OrderId == ocd.OrderId) |
|
|
|
|
|
.InnerJoin((jr, ocd, o) => jr.OrderId == o.Id) |
|
|
|
|
|
.Where((jr, ocd, o) => jr.ShopId == shopId) |
|
|
|
|
|
.WhereIf(startDate != null, (jr, ocd, o) => jr.CookieTime >= startDate) |
|
|
|
|
|
.WhereIf(endDate != null, (jr, ocd, o) => jr.CookieTime <= endDate) |
|
|
|
|
|
.Where((jr, ocd, o) => ocd.IsEnabled == true && o.OrderState != Enums.OrderState.已取消) |
|
|
|
|
|
.Sum((jr, ocd, o) => ocd.SkuGrossProfit); |
|
|
|
|
|
|
|
|
|
|
|
return new GOIByShop() |
|
|
|
|
|
{ |
|
|
|
|
|
ShopId = shopId, |
|
|
|
|
|
Cost = cost, |
|
|
|
|
|
Profit = profit, |
|
|
|
|
|
}; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
public IList<GOIByLevel> CalculationCampaignLevelGOI(IList<long?> campaignIdList, DateTime startDate, DateTime endDate) |
|
|
public IList<GOIByLevel> CalculationCampaignLevelGOI(IList<long?> campaignIdList, DateTime startDate, DateTime endDate) |
|
|
{ |
|
|
{ |
|
|
var costs = fsql.Select<JDPopularizeCampaign>().Where(x => campaignIdList.Contains(x.CampaignId.Value) && |
|
|
var costs = fsql.Select<JDPopularizeCampaign>().Where(x => campaignIdList.Contains(x.CampaignId.Value) && |
|
@ -520,5 +545,36 @@ namespace SiNan.Business |
|
|
TotalDeficit = totalDeficit |
|
|
TotalDeficit = totalDeficit |
|
|
}; |
|
|
}; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public ListResponse<GOIBySpu> QueryPopularizeLevelGOIBySpuId(QueryPopularizeLevelGOIBySpuIdRequest request) |
|
|
|
|
|
{ |
|
|
|
|
|
var list = new List<GOIBySpu>(); |
|
|
|
|
|
request.EndTime = request.EndTime.Date.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
var productSkuList = fsql.Select<ProductSku>().Where(ps => request.SpuIdList.Contains(ps.ProductId)).ToList(); |
|
|
|
|
|
var skuIdList = productSkuList.Select(ps => ps.ProductId).Distinct().ToList(); |
|
|
|
|
|
var goiList = StatisticsPopularizeLevelGOI(skuIdList, request.StartTime, request.EndTime); |
|
|
|
|
|
foreach (var spu in request.SpuIdList) |
|
|
|
|
|
{ |
|
|
|
|
|
var currentSpuSkuIdList = productSkuList.Where(ps => ps.ProductId == spu).Select(ps => ps.Id).ToList(); |
|
|
|
|
|
var currentGoiList = goiList.Where(g => currentSpuSkuIdList.Contains(g.Sku)); |
|
|
|
|
|
var goi = new GOIBySpu() |
|
|
|
|
|
{ |
|
|
|
|
|
Spu = spu, |
|
|
|
|
|
Cost = currentGoiList.Sum(g => g.Cost), |
|
|
|
|
|
Profit = currentGoiList.Sum(g => g.Profit), |
|
|
|
|
|
}; |
|
|
|
|
|
} |
|
|
|
|
|
return new ListResponse<GOIBySpu>() |
|
|
|
|
|
{ |
|
|
|
|
|
Count = list.Count, |
|
|
|
|
|
ItemList = list |
|
|
|
|
|
}; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public GOIByShop QueryPopularizeLevelGOIByShopId(QueryPopularizeLevelGOIByShopIdRequest request) |
|
|
|
|
|
{ |
|
|
|
|
|
request.EndTime = request.EndTime.Date.AddDays(1).AddSeconds(-1); |
|
|
|
|
|
return StatisticsPopularizeLevelGOI(request.ShopId, request.StartTime, request.EndTime); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|