步步为盈
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.

76 lines
3.5 KiB

using BBWY.Common.Models;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto;
using Yitter.IdGenerator;
namespace BBWY.Server.Business
{
public class AfterSaleOrderBusiness : BaseBusiness, IDenpendency
{
public AfterSaleOrderBusiness(IFreeSql fsql, NLog.ILogger logger, IIdGenerator idGenerator) : base(fsql, logger, idGenerator)
{
}
public AfterSaleOrderListResponse GetAfterSaleOrderList(SearchAfterSaleOrderRequest request)
{
var select = fsql.Select<AfterSaleOrder, OrderSku, OrderConsignee>().InnerJoin((aso, osku, oc) => aso.OrderId == osku.OrderId && aso.SkuId == osku.SkuId)
.InnerJoin((aso, osku, oc) => aso.OrderId == oc.OrderId);
if (!string.IsNullOrEmpty(request.ServiceId))
{
select = select.Where((aso, osku, o) => aso.ServiceId == request.ServiceId);
}
else
{
select = select.WhereIf(request.StartDate != null, (aso, osku, oc) => aso.ApplyTime >= request.StartDate)
.WhereIf(request.EndDate != null, (aso, osku, oc) => aso.ApplyTime <= request.EndDate)
.WhereIf(!string.IsNullOrEmpty(request.Spu), (aso, osku, oc) => aso.ProductId == request.Spu)
.WhereIf(!string.IsNullOrEmpty(request.Sku), (aso, osku, oc) => aso.SkuId == request.Sku)
.WhereIf(!string.IsNullOrEmpty(request.OrderId), (aso, osku, oc) => aso.OrderId == request.OrderId);
}
select = select.Where((aso, osku, oc) => aso.ShopId == request.ShopId)
.OrderByDescending((aso, osku, oc) => aso.ApplyTime)
.Count(out var total)
.Page(request.PageIndex, request.PageSize);
var list = select.ToList((aso, osku, oc) => new AfterSaleOrderResponse
{
Id = aso.Id,
ApplyTime = aso.ApplyTime,
ConsumableAmount = aso.ConsumableAmount,
CreateTime = aso.CreateTime,
DeliveryExpressFreight = aso.DeliveryExpressFreight,
FirstFreight = aso.FirstFreight,
InStorageAmount = aso.InStorageAmount,
Logo = osku.Logo,
OrderId = aso.OrderId,
OutStorageAmount = aso.OutStorageAmount,
ProductHealth = aso.ProductHealth,
ProductId = aso.ProductId,
ProductResult = aso.ProductResult,
RefundAmount = aso.RefundAmount,
RefundInStorageAmount = aso.RefundInStorageAmount,
RefundPurchaseAmount = aso.RefundPurchaseAmount,
RefundTime = aso.RefundTime,
ReissueAfterSaleAmount = aso.ReissueAfterSaleAmount,
ReissueFreight = aso.ReissueFreight,
ReissueProductAmount = aso.ReissueProductAmount,
ServiceId = aso.ServiceId,
ServiceResult = aso.ServiceResult,
ShopId = aso.ShopId,
SkuId = aso.SkuId,
Title = osku.Title,
ContactName = oc.ContactName,
Mobile = oc.Mobile,
ItemTotal = osku.ItemTotal.Value,
Price = osku.Price.Value
});
return new AfterSaleOrderListResponse()
{
Count = total,
Items = list
};
}
}
}