|
|
@ -47,10 +47,26 @@ namespace BBWY.Server.Business |
|
|
|
IList<XingXiangItemResponse> detailList = null; |
|
|
|
|
|
|
|
//查询订单
|
|
|
|
var orderList = fsql.Select<Order>().Where(o => o.ShopId == xingXiangSearchOrderRequest.ShopId) |
|
|
|
.Where(o => o.StartTime >= beginTime && o.StartTime <= endTime) |
|
|
|
.Where(o => !invalidOrderStateList.Contains(o.OrderState.Value)) |
|
|
|
.ToList(); |
|
|
|
var orderList = fsql.Select<Order, OrderCost>().InnerJoin((o, oc) => o.Id == oc.OrderId) |
|
|
|
.Where((o, oc) => o.ShopId == xingXiangSearchOrderRequest.ShopId) |
|
|
|
.Where((o, oc) => o.StartTime >= beginTime && o.StartTime <= endTime) |
|
|
|
.Where((o, oc) => !invalidOrderStateList.Contains(o.OrderState.Value)) |
|
|
|
.WhereIf(xingXiangSearchOrderRequest.SpuList != null && xingXiangSearchOrderRequest.SpuList.Count() > 0, |
|
|
|
(o, oc) => fsql.Select<OrderSku>().As("osku").Where(osku => xingXiangSearchOrderRequest.SpuList.Contains(osku.ProductId) && osku.OrderId == o.Id).Any()) |
|
|
|
.ToList((o, oc) => new Order() |
|
|
|
{ |
|
|
|
Id = o.Id, |
|
|
|
FreightPrice = o.FreightPrice, |
|
|
|
OrderState = o.OrderState, |
|
|
|
OrderTotalPrice = o.OrderTotalPrice, |
|
|
|
StartTime = o.StartTime, |
|
|
|
StorageType = o.StorageType, |
|
|
|
ShopId = o.ShopId, |
|
|
|
SDCommissionAmount = oc.SDCommissionAmount, |
|
|
|
DeliveryExpressFreight = oc.DeliveryExpressFreight, |
|
|
|
PreferentialAmount = oc.PreferentialAmount, |
|
|
|
OrderSellerPrice = o.OrderSellerPrice |
|
|
|
}); |
|
|
|
|
|
|
|
if (orderList.Count() == 0) |
|
|
|
return null; |
|
|
@ -73,22 +89,28 @@ namespace BBWY.Server.Business |
|
|
|
foreach (var group in currentOrderSkuGroups) |
|
|
|
{ |
|
|
|
var spuId = group.Key; |
|
|
|
|
|
|
|
var profit = 0M; |
|
|
|
var sdCost = 0M; |
|
|
|
var prodcutAmount = group.Sum(osku => osku.Price * osku.ItemTotal) ?? 0; //货款
|
|
|
|
var preferentialAmount = order.PreferentialAmount / skuCount * group.Count(); //该SPU分摊的商家优惠金额
|
|
|
|
prodcutAmount -= preferentialAmount; |
|
|
|
var commissionAmount = prodcutAmount * 0.05M; //该SPU的平台扣点金额
|
|
|
|
var freightPriceByUser = order.FreightPrice == 0 ? 0 : order.FreightPrice / skuCount * group.Count(); //该SPU分配的用户承担运费
|
|
|
|
|
|
|
|
var freightPriceByUser = order.FreightPrice == 0 ? 0 : order.FreightPrice / skuCount * group.Count(); //该SPU分摊的用户承担运费
|
|
|
|
var currentOrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == spuId).ToList(); |
|
|
|
var purchaseAmount = currentOrderCostDetailList.Count() > 0 ? currentOrderCostDetailList.Sum(ocd => ocd.TotalCost) : 0; |
|
|
|
var deliveryFreight = currentOrderCostDetailList.Count() > 0 ? currentOrderCostDetailList.Sum(ocd => ocd.DeliveryExpressFreight) : 0; |
|
|
|
|
|
|
|
var profit = 0M; |
|
|
|
if (order.StorageType != Enums.StorageType.SD) |
|
|
|
{ |
|
|
|
profit = prodcutAmount + freightPriceByUser - purchaseAmount - deliveryFreight - commissionAmount; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
var sdCommissionAmount = order.SDCommissionAmount.Value / skuCount * group.Count(); |
|
|
|
profit = 0 - sdCommissionAmount - commissionAmount - deliveryFreight; |
|
|
|
totalSDOrderCost += Math.Abs(profit); |
|
|
|
profit = 0; |
|
|
|
sdCost = sdCommissionAmount + commissionAmount + order.DeliveryExpressFreight ?? 0M; |
|
|
|
totalSDOrderCost += sdCost; |
|
|
|
} |
|
|
|
var xxRespose = detailList.FirstOrDefault(xx => xx.Spu == spuId); |
|
|
|
if (xxRespose == null) |
|
|
@ -101,7 +123,7 @@ namespace BBWY.Server.Business |
|
|
|
{ |
|
|
|
xxRespose.SDOrderCount++; |
|
|
|
xxRespose.SDOrderAmount += prodcutAmount; |
|
|
|
xxRespose.SDOrderCost += Math.Abs(profit); |
|
|
|
xxRespose.SDOrderCost += sdCost; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|