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
{