Browse Source

星象接口查询

qianyi
shanji 3 years ago
parent
commit
f466a3bd2e
  1. 12
      BBWY.Server.API/Controllers/StatisticsController.cs
  2. 55
      BBWY.Server.Business/Statistics/StatisticsBusiness.cs
  3. 2
      BBWY.Server.Model/Dto/Response/Order/XingXinagSearchResponse.cs

12
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);
}
/// <summary>
/// 星象SPU查询统计
/// </summary>
/// <param name="xingXiangSearchOrderRequest"></param>
/// <returns></returns>
[HttpPost]
public IList<XingXinagSearchResponse> XingXiangStatistics([FromBody] XingXiangSearchOrderRequest xingXiangSearchOrderRequest)
{
return statisticsBusiness.XingXiangStatistics(xingXiangSearchOrderRequest);
}
}
}

55
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<XingXinagSearchResponse> XingXiangStatistics(XingXiangSearchOrderRequest xingXiangSearchOrderRequest)
{
var beginTime = xingXiangSearchOrderRequest.SearchDate.Date;
var endTime = xingXiangSearchOrderRequest.SearchDate.Date.AddDays(1).AddSeconds(-1);
IList<XingXinagSearchResponse> list = null;
//查询订单
var select = fsql.Select<Order>().Where(o => o.ShopId == xingXiangSearchOrderRequest.ShopId)
.Where(o => o.StartTime >= beginTime && o.StartTime <= endTime);
var childSelect = fsql.Select<OrderSku>().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<OrderSku>().Where(osku => orderIdList.Contains(osku.OrderId)).ToList();
//查询成本明细
var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => orderIdList.Contains(ocd.OrderId)).ToList();
list = new List<XingXinagSearchResponse>();
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;
}
}
}

2
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
{

Loading…
Cancel
Save