|
|
|
using BBWY.Common.Models;
|
|
|
|
using BBWY.Server.Model;
|
|
|
|
using BBWY.Server.Model.Db;
|
|
|
|
using BBWY.Server.Model.Dto;
|
|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using Yitter.IdGenerator;
|
|
|
|
|
|
|
|
namespace BBWY.Server.Business
|
|
|
|
{
|
|
|
|
public class StatisticsBusiness : BaseBusiness, IDenpendency
|
|
|
|
{
|
|
|
|
private IList<Enums.OrderState> invalidOrderStateList;
|
|
|
|
|
|
|
|
public StatisticsBusiness(IFreeSql fsql, NLog.ILogger logger, IIdGenerator idGenerator) : base(fsql, logger, idGenerator)
|
|
|
|
{
|
|
|
|
invalidOrderStateList = new List<Enums.OrderState>() { Enums.OrderState.待付款, Enums.OrderState.已取消 };
|
|
|
|
}
|
|
|
|
|
|
|
|
public OrderAchievementResponse GetOrderAchievementStatistics(OrderAchievementRequest request)
|
|
|
|
{
|
|
|
|
request.EndTime = request.EndTime.Date.AddDays(1);
|
|
|
|
var response = fsql.Select<Order, OrderCost>().LeftJoin((o, oc) => o.Id == oc.OrderId)
|
|
|
|
.Where((o, oc) => o.ShopId == request.ShopId &&
|
|
|
|
o.OrderState != null &&
|
|
|
|
!invalidOrderStateList.Contains(o.OrderState.Value) &&
|
|
|
|
o.StartTime >= request.StartTime &&
|
|
|
|
o.StartTime < request.EndTime)
|
|
|
|
.ToAggregate((o, oc) => new OrderAchievementResponse()
|
|
|
|
{
|
|
|
|
OrderCount = o.Count(),
|
|
|
|
Profit = oc.Sum(oc.Key.Profit),
|
|
|
|
SaleAmount = o.Sum(o.Key.OrderPayment),
|
|
|
|
DeliveryExpressFreight = oc.Sum(oc.Key.DeliveryExpressFreight),
|
|
|
|
PlatformCommissionAmount = oc.Sum(oc.Key.PlatformCommissionAmount),
|
|
|
|
PurchaseAmount = oc.Sum(oc.Key.PurchaseAmount)
|
|
|
|
});
|
|
|
|
return response;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|