|
|
@ -40,11 +40,11 @@ namespace BBWY.Server.Business |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public IList<XingXinagSearchResponse> XingXiangStatistics(XingXiangSearchOrderRequest xingXiangSearchOrderRequest) |
|
|
|
public XingXinagSearchResponse XingXiangStatistics(XingXiangSearchOrderRequest xingXiangSearchOrderRequest) |
|
|
|
{ |
|
|
|
var beginTime = xingXiangSearchOrderRequest.SearchDate.Date; |
|
|
|
var endTime = xingXiangSearchOrderRequest.SearchDate.Date.AddDays(1).AddSeconds(-1); |
|
|
|
IList<XingXinagSearchResponse> list = null; |
|
|
|
IList<XingXiangItemResponse> detailList = null; |
|
|
|
|
|
|
|
//查询订单
|
|
|
|
var orderList = fsql.Select<Order>().Where(o => o.ShopId == xingXiangSearchOrderRequest.ShopId) |
|
|
@ -61,8 +61,8 @@ namespace BBWY.Server.Business |
|
|
|
//查询成本明细
|
|
|
|
var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => orderIdList.Contains(ocd.OrderId)).ToList(); |
|
|
|
|
|
|
|
list = new List<XingXinagSearchResponse>(); |
|
|
|
|
|
|
|
detailList = new List<XingXiangItemResponse>(); |
|
|
|
var totalSDOrderCost = 0M; |
|
|
|
foreach (var order in orderList) |
|
|
|
{ |
|
|
|
var skuCount = orderSkuList.Count(osku => osku.OrderId == order.Id); |
|
|
@ -73,33 +73,48 @@ namespace BBWY.Server.Business |
|
|
|
foreach (var group in currentOrderSkuGroups) |
|
|
|
{ |
|
|
|
var spuId = group.Key; |
|
|
|
var procutAmount = group.Sum(osku => osku.Price * osku.ItemTotal) ?? 0; //货款
|
|
|
|
var commissionAmount = procutAmount * 0.05M; //该SPU的平台扣点金额
|
|
|
|
var prodcutAmount = group.Sum(osku => osku.Price * osku.ItemTotal) ?? 0; //货款
|
|
|
|
var commissionAmount = prodcutAmount * 0.05M; //该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 = procutAmount + freightPriceByUser - purchaseAmount - deliveryFreight - commissionAmount; |
|
|
|
var xxRespose = list.FirstOrDefault(xx => xx.Spu == spuId); |
|
|
|
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); |
|
|
|
} |
|
|
|
var xxRespose = detailList.FirstOrDefault(xx => xx.Spu == spuId); |
|
|
|
if (xxRespose == null) |
|
|
|
{ |
|
|
|
xxRespose = new XingXinagSearchResponse() { Spu = spuId, Profit = 0M }; |
|
|
|
list.Add(xxRespose); |
|
|
|
xxRespose = new XingXiangItemResponse() { Spu = spuId, Profit = 0M }; |
|
|
|
detailList.Add(xxRespose); |
|
|
|
} |
|
|
|
xxRespose.Profit += profit; |
|
|
|
if (order.StorageType == Enums.StorageType.SD) |
|
|
|
{ |
|
|
|
var sdCommissionAmount = order.SDCommissionAmount.Value / skuCount * group.Count(); |
|
|
|
xxRespose.SDOrderCount++; |
|
|
|
xxRespose.SDOrderAmount += procutAmount; |
|
|
|
xxRespose.SDOrderCost += purchaseAmount + deliveryFreight + commissionAmount + sdCommissionAmount; |
|
|
|
xxRespose.SDOrderAmount += prodcutAmount; |
|
|
|
xxRespose.SDOrderCost += Math.Abs(profit); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return list; |
|
|
|
var sdOrderList = orderList.Where(o => o.StorageType == Enums.StorageType.SD); |
|
|
|
|
|
|
|
return new XingXinagSearchResponse() |
|
|
|
{ |
|
|
|
ItemList = detailList, |
|
|
|
TotalSDOrderAmount = sdOrderList.Count() > 0 ? sdOrderList.Sum(o => o.OrderSellerPrice) : 0M, |
|
|
|
TotalSDOrderCount = sdOrderList.Count(), |
|
|
|
TotalSDOrderCost = totalSDOrderCost |
|
|
|
}; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|