|
|
|
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
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|