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().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, 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, AfterTotalCost = aso.AfterTotalCost }); return new AfterSaleOrderListResponse() { Count = total, Items = list }; } } }