From f466a3bd2e96e9b3b5c4a86cf26653d86873aeba Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 16 Apr 2022 13:04:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=98=9F=E8=B1=A1=E6=8E=A5=E5=8F=A3=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/StatisticsController.cs | 12 ++++ .../Statistics/StatisticsBusiness.cs | 55 +++++++++++++++++++ .../Response/Order/XingXinagSearchResponse.cs | 2 +- 3 files changed, 68 insertions(+), 1 deletion(-) diff --git a/BBWY.Server.API/Controllers/StatisticsController.cs b/BBWY.Server.API/Controllers/StatisticsController.cs index 9aebfb87..0f22f7c7 100644 --- a/BBWY.Server.API/Controllers/StatisticsController.cs +++ b/BBWY.Server.API/Controllers/StatisticsController.cs @@ -2,6 +2,7 @@ using BBWY.Server.Model.Dto; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using System.Collections.Generic; namespace BBWY.Server.API.Controllers { @@ -25,5 +26,16 @@ namespace BBWY.Server.API.Controllers { return statisticsBusiness.GetOrderAchievementStatistics(request); } + + /// + /// 星象SPU查询统计 + /// + /// + /// + [HttpPost] + public IList XingXiangStatistics([FromBody] XingXiangSearchOrderRequest xingXiangSearchOrderRequest) + { + return statisticsBusiness.XingXiangStatistics(xingXiangSearchOrderRequest); + } } } diff --git a/BBWY.Server.Business/Statistics/StatisticsBusiness.cs b/BBWY.Server.Business/Statistics/StatisticsBusiness.cs index 7d379c78..7e91b2ef 100644 --- a/BBWY.Server.Business/Statistics/StatisticsBusiness.cs +++ b/BBWY.Server.Business/Statistics/StatisticsBusiness.cs @@ -4,6 +4,7 @@ using BBWY.Server.Model.Db; using BBWY.Server.Model.Dto; using System; using System.Collections.Generic; +using System.Linq; using Yitter.IdGenerator; namespace BBWY.Server.Business @@ -37,5 +38,59 @@ namespace BBWY.Server.Business }); return response; } + + + public IList XingXiangStatistics(XingXiangSearchOrderRequest xingXiangSearchOrderRequest) + { + var beginTime = xingXiangSearchOrderRequest.SearchDate.Date; + var endTime = xingXiangSearchOrderRequest.SearchDate.Date.AddDays(1).AddSeconds(-1); + IList list = null; + + //查询订单 + var select = fsql.Select().Where(o => o.ShopId == xingXiangSearchOrderRequest.ShopId) + .Where(o => o.StartTime >= beginTime && o.StartTime <= endTime); + var childSelect = fsql.Select().As("osku") + .Where(osku => xingXiangSearchOrderRequest.SpuList.Contains(osku.ProductId)); + select = select.Where(o => childSelect.Where(osku => osku.OrderId == o.Id).Any()); + var orderList = select.ToList(); + + if (orderList.Count() == 0) + return null; + + var orderIdList = orderList.Select(o => o.Id).ToList(); + //查询orderSku + var orderSkuList = fsql.Select().Where(osku => orderIdList.Contains(osku.OrderId)).ToList(); + //查询成本明细 + var orderCostDetailList = fsql.Select().Where(ocd => orderIdList.Contains(ocd.OrderId)).ToList(); + + list = new List(); + + foreach (var order in orderList) + { + var skuCount = orderSkuList.Count(osku => osku.OrderId == order.Id); + var currentOrderSkuGroups = orderSkuList.Where(osku => osku.OrderId == order.Id && + xingXiangSearchOrderRequest.SpuList.Contains(osku.ProductId)).GroupBy(osku => osku.ProductId); + 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 freightPriceByUser = order.FreightPrice == 0 ? 0 : order.FreightPrice / skuCount * group.Count(); //该SPU分配的用户承担运费 + + var currentOrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == spuId).ToList(); + var purchaseAmount = currentOrderCostDetailList.Sum(ocd => ocd.TotalCost); + var deliveryFreight = currentOrderCostDetailList.Sum(ocd => ocd.DeliveryExpressFreight); + + var profit = procutAmount + freightPriceByUser - purchaseAmount - deliveryFreight - commissionAmount; + var xxRespose = list.FirstOrDefault(xx => xx.Spu == spuId); + if (xxRespose == null) + xxRespose = new XingXinagSearchResponse() { Spu = spuId, Profit = 0M }; + xxRespose.Profit += profit; + } + } + + return list; + + } } } diff --git a/BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs b/BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs index d1164a2e..d803141d 100644 --- a/BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs +++ b/BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs @@ -1,4 +1,4 @@ -namespace BBWY.Server.Model.Dto.Response.Order +namespace BBWY.Server.Model.Dto { public class XingXinagSearchResponse {