Browse Source

星象统计

qianyi
shanji 3 years ago
parent
commit
46e80f481e
  1. 2
      BBWY.Server.API/Controllers/StatisticsController.cs
  2. 43
      BBWY.Server.Business/Statistics/StatisticsBusiness.cs
  3. 27
      BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs

2
BBWY.Server.API/Controllers/StatisticsController.cs

@ -33,7 +33,7 @@ namespace BBWY.Server.API.Controllers
/// <param name="xingXiangSearchOrderRequest"></param> /// <param name="xingXiangSearchOrderRequest"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public IList<XingXinagSearchResponse> XingXiangStatistics([FromBody] XingXiangSearchOrderRequest xingXiangSearchOrderRequest) public XingXinagSearchResponse XingXiangStatistics([FromBody] XingXiangSearchOrderRequest xingXiangSearchOrderRequest)
{ {
return statisticsBusiness.XingXiangStatistics(xingXiangSearchOrderRequest); return statisticsBusiness.XingXiangStatistics(xingXiangSearchOrderRequest);
} }

43
BBWY.Server.Business/Statistics/StatisticsBusiness.cs

@ -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 beginTime = xingXiangSearchOrderRequest.SearchDate.Date;
var endTime = xingXiangSearchOrderRequest.SearchDate.Date.AddDays(1).AddSeconds(-1); 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) 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(); 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) foreach (var order in orderList)
{ {
var skuCount = orderSkuList.Count(osku => osku.OrderId == order.Id); var skuCount = orderSkuList.Count(osku => osku.OrderId == order.Id);
@ -73,33 +73,48 @@ namespace BBWY.Server.Business
foreach (var group in currentOrderSkuGroups) foreach (var group in currentOrderSkuGroups)
{ {
var spuId = group.Key; var spuId = group.Key;
var procutAmount = group.Sum(osku => osku.Price * osku.ItemTotal) ?? 0; //货款 var prodcutAmount = group.Sum(osku => osku.Price * osku.ItemTotal) ?? 0; //货款
var commissionAmount = procutAmount * 0.05M; //该SPU的平台扣点金额 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 currentOrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == spuId).ToList();
var purchaseAmount = currentOrderCostDetailList.Count() > 0 ? currentOrderCostDetailList.Sum(ocd => ocd.TotalCost) : 0; var purchaseAmount = currentOrderCostDetailList.Count() > 0 ? currentOrderCostDetailList.Sum(ocd => ocd.TotalCost) : 0;
var deliveryFreight = currentOrderCostDetailList.Count() > 0 ? currentOrderCostDetailList.Sum(ocd => ocd.DeliveryExpressFreight) : 0; var deliveryFreight = currentOrderCostDetailList.Count() > 0 ? currentOrderCostDetailList.Sum(ocd => ocd.DeliveryExpressFreight) : 0;
var profit = procutAmount + freightPriceByUser - purchaseAmount - deliveryFreight - commissionAmount; var profit = 0M;
var xxRespose = list.FirstOrDefault(xx => xx.Spu == spuId); 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) if (xxRespose == null)
{ {
xxRespose = new XingXinagSearchResponse() { Spu = spuId, Profit = 0M }; xxRespose = new XingXiangItemResponse() { Spu = spuId, Profit = 0M };
list.Add(xxRespose); detailList.Add(xxRespose);
} }
xxRespose.Profit += profit; xxRespose.Profit += profit;
if (order.StorageType == Enums.StorageType.SD) if (order.StorageType == Enums.StorageType.SD)
{ {
var sdCommissionAmount = order.SDCommissionAmount.Value / skuCount * group.Count();
xxRespose.SDOrderCount++; xxRespose.SDOrderCount++;
xxRespose.SDOrderAmount += procutAmount; xxRespose.SDOrderAmount += prodcutAmount;
xxRespose.SDOrderCost += purchaseAmount + deliveryFreight + commissionAmount + sdCommissionAmount; 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
};
} }
} }

27
BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs

@ -1,6 +1,31 @@
namespace BBWY.Server.Model.Dto using System.Collections.Generic;
namespace BBWY.Server.Model.Dto
{ {
public class XingXinagSearchResponse public class XingXinagSearchResponse
{
/// <summary>
/// 汇总刷单量
/// </summary>
public decimal TotalSDOrderCount { get; set; }
/// <summary>
/// 汇总刷单成本
/// </summary>
public decimal TotalSDOrderCost { get; set; }
/// <summary>
/// 汇总刷单成交额
/// </summary>
public decimal TotalSDOrderAmount { get; set; }
/// <summary>
/// Spu刷单明细
/// </summary>
public IList<XingXiangItemResponse> ItemList { get; set; }
}
public class XingXiangItemResponse
{ {
public string Spu { get; set; } public string Spu { get; set; }

Loading…
Cancel
Save