步步为盈
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
2.3 KiB

3 years ago
using BBWY.Common.Models;
using BBWY.Server.Model;
3 years ago
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto;
using System;
using System.Collections.Generic;
3 years ago
using Yitter.IdGenerator;
namespace BBWY.Server.Business
{
public class StatisticsBusiness : BaseBusiness, IDenpendency
{
private IList<Enums.OrderState> invalidOrderStateList;
3 years ago
public StatisticsBusiness(IFreeSql fsql, NLog.ILogger logger, IIdGenerator idGenerator) : base(fsql, logger, idGenerator)
{
invalidOrderStateList = new List<Enums.OrderState>() { Enums.OrderState., Enums.OrderState. };
3 years ago
}
public OrderAchievementResponse GetOrderAchievementStatistics(OrderAchievementRequest request)
3 years ago
{
request.EndTime = request.EndTime.Date.AddDays(1).AddSeconds(-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()
3 years ago
{
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;
}
}
}