|
|
@ -16,6 +16,8 @@ namespace BBWYB.Server.Business |
|
|
|
private PurchaseProductAPIService purchaseProductAPIService; |
|
|
|
private RestApiService restApiService; |
|
|
|
|
|
|
|
private IList<Enums.OrderState?> invalidOrderStateList; |
|
|
|
|
|
|
|
public PurchaseSchemeBusiness(IFreeSql fsql, |
|
|
|
NLogManager nLogManager, |
|
|
|
IIdGenerator idGenerator, |
|
|
@ -24,6 +26,7 @@ namespace BBWYB.Server.Business |
|
|
|
{ |
|
|
|
this.purchaseProductAPIService = purchaseProductAPIService; |
|
|
|
this.restApiService = restApiService; |
|
|
|
this.invalidOrderStateList = new List<Enums.OrderState?>() { Enums.OrderState.待付款, Enums.OrderState.已取消 }; |
|
|
|
} |
|
|
|
|
|
|
|
private void ExtractNewPurchaser<T>(IList<T> purchaserSchemeList, IList<Purchaser> addPurchaserList) where T : InputPurchaseSchemeRequest |
|
|
@ -645,6 +648,9 @@ namespace BBWYB.Server.Business |
|
|
|
if (purchaseSchemeList.Count > 0) |
|
|
|
{ |
|
|
|
var purchaseSchemeIdList = purchaseSchemeList.Select(p => p.Id).ToList(); |
|
|
|
var spuIdList = purchaseSchemeList.Select(ps => ps.ProductId).Distinct().ToList(); |
|
|
|
var skuIdList = purchaseSchemeList.Select(ps => ps.SkuId).Distinct().ToList(); |
|
|
|
var recentDate = DateTime.Now.Date.AddDays(-30); |
|
|
|
|
|
|
|
var purchaseSchemeProductList = fsql.Select<PurchaseSchemeProduct, Purchaser>() |
|
|
|
.InnerJoin((psp, p) => psp.PurchaserId == p.Id) |
|
|
@ -671,6 +677,30 @@ namespace BBWYB.Server.Business |
|
|
|
var purchaseSchemeProductSkuList = fsql.Select<PurchaseSchemeProductSku>().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)) |
|
|
|
.ToList().Map<List<PurchaseSchemeProductSkuResponse>>(); |
|
|
|
|
|
|
|
var recent30daySpuItemCountGroups = fsql.Select<OrderSku, Order>() |
|
|
|
.LeftJoin((osku, o) => osku.OrderId == o.Id) |
|
|
|
.Where((osku, o) => spuIdList.Contains(osku.ProductId) && |
|
|
|
!invalidOrderStateList.Contains(o.OrderState) && |
|
|
|
o.StartTime >= recentDate) |
|
|
|
.GroupBy((osku, o) => osku.ProductId) |
|
|
|
.ToList(g => new |
|
|
|
{ |
|
|
|
ProductId = g.Key, |
|
|
|
ItemTotal = g.Sum(g.Value.Item1.ItemTotal) |
|
|
|
}); |
|
|
|
|
|
|
|
var recent30daySkuItemCountGroups = fsql.Select<OrderSku, Order>() |
|
|
|
.LeftJoin((osku, o) => osku.OrderId == o.Id) |
|
|
|
.Where((osku, o) => skuIdList.Contains(osku.SkuId) && |
|
|
|
!invalidOrderStateList.Contains(o.OrderState) && |
|
|
|
o.StartTime >= recentDate) |
|
|
|
.GroupBy((osku, o) => osku.SkuId) |
|
|
|
.ToList(g => new |
|
|
|
{ |
|
|
|
SkuId = g.Key, |
|
|
|
ItemTotal = g.Sum(g.Value.Item1.ItemTotal) |
|
|
|
}); |
|
|
|
|
|
|
|
foreach (var scheme in purchaseSchemeList) |
|
|
|
{ |
|
|
|
var schemeProductList = purchaseSchemeProductList.Where(ps => ps.SkuPurchaseSchemeId == scheme.Id); |
|
|
@ -747,6 +777,11 @@ namespace BBWYB.Server.Business |
|
|
|
} |
|
|
|
} |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 近30天spu/sku销量
|
|
|
|
scheme.Recent30DaySpuItemCount = Convert.ToInt64(recent30daySpuItemCountGroups.FirstOrDefault(x => x.ProductId == scheme.ProductId)?.ItemTotal ?? 0); |
|
|
|
scheme.Recent30DaySkuItemCount = Convert.ToInt64(recent30daySkuItemCountGroups.FirstOrDefault(x => x.SkuId == scheme.SkuId)?.ItemTotal ?? 0); |
|
|
|
#endregion
|
|
|
|
} |
|
|
|
} |
|
|
|
return purchaseSchemeList; |
|
|
|