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>
/// <returns></returns>
[HttpPost]
public IList<XingXinagSearchResponse> XingXiangStatistics([FromBody] XingXiangSearchOrderRequest xingXiangSearchOrderRequest)
public XingXinagSearchResponse XingXiangStatistics([FromBody] XingXiangSearchOrderRequest 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 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
};
}
}

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
{
/// <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; }

Loading…
Cancel
Save