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.
125 lines
5.6 KiB
125 lines
5.6 KiB
2 years ago
|
using BBWY.Server.Model.Dto;
|
||
|
using BBWYB.Common.Log;
|
||
|
using BBWYB.Common.Models;
|
||
|
using BBWYB.Server.Model.Dto;
|
||
|
using FreeSql;
|
||
|
using Yitter.IdGenerator;
|
||
|
using BBWYB.Server.Model.Db;
|
||
|
using System.Linq.Expressions;
|
||
|
|
||
|
namespace BBWYB.Server.Business.Order
|
||
|
{
|
||
|
public class OrderBusiness : BaseBusiness, IDenpendency
|
||
|
{
|
||
|
public OrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator)
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
private ISelect<Model.Db.Order, OrderConsignee, OrderCost> GetOrderListQueryConditions(QueryOrderRequest request)
|
||
|
{
|
||
|
var select = fsql.Select<Model.Db.Order, OrderConsignee, OrderCost>().LeftJoin((o, ocs, oct) => o.Id == ocs.OrderId)
|
||
|
.LeftJoin((o, ocs, oct) => o.Id == oct.OrderId);
|
||
|
if (!string.IsNullOrEmpty(request.OrderId))
|
||
|
{
|
||
|
select = select.Where((o, ocs, oct) => o.Id == request.OrderId);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (!string.IsNullOrEmpty(request.Sku) || !string.IsNullOrEmpty(request.ProductId))
|
||
|
{
|
||
|
var childSelect = fsql.Select<OrderSku>().As("osku")
|
||
|
.WhereIf(!string.IsNullOrEmpty(request.Sku), osku => osku.SkuId == request.Sku)
|
||
|
.WhereIf(!string.IsNullOrEmpty(request.ProductId), osku => osku.ProductId == request.ProductId);
|
||
|
select = select.Where((o, ocs, oct) => childSelect.Where(osku => osku.OrderId == o.Id).Any());
|
||
|
}
|
||
|
|
||
|
select = select.WhereIf(request.OrderState != null, (o, ocs, oct) => o.OrderState == request.OrderState)
|
||
|
.WhereIf(request.StartDate != null, (o, ocs, oct) => o.StartTime >= request.StartDate)
|
||
|
.WhereIf(request.EndDate != null, (o, ocs, oct) => o.StartTime <= request.EndDate)
|
||
|
.WhereIf(!string.IsNullOrEmpty(request.ClientOrderId), (o, ocs, oct) => o.ClientOrderId == request.ClientOrderId)
|
||
|
.WhereIf(!string.IsNullOrEmpty(request.SourceShopName), (o, ocs, oct) => o.SourceShopName == request.SourceShopName)
|
||
|
.WhereIf(!string.IsNullOrEmpty(request.SourceSku), (o, ocs, oct) => o.SourceSku == request.SourceSku);
|
||
|
}
|
||
|
|
||
|
select = select.WhereIf(request.ShopId != null, (o, ocs, oct) => o.ShopId == request.ShopId);
|
||
|
|
||
|
//select = select.Where((o, ocs, oct) => o.ShopId == searchOrderRequest.ShopId);
|
||
|
|
||
|
return select;
|
||
|
}
|
||
|
|
||
|
private Expression<Func<Model.Db.Order, OrderConsignee, OrderCost, Order>> GetOrderListField()
|
||
|
{
|
||
|
return (o, ocs, oct, sh) => new Order()
|
||
|
{
|
||
|
Id = o.Id,
|
||
|
BuyerRemark = o.BuyerRemark,
|
||
|
EndTime = o.EndTime,
|
||
|
FreightPrice = o.FreightPrice,
|
||
|
ModifyTime = o.ModifyTime,
|
||
|
OrderPayment = o.OrderPayment,
|
||
|
OrderSellerPrice = o.OrderSellerPrice,
|
||
|
OrderState = o.OrderState,
|
||
|
OrderTotalPrice = o.OrderTotalPrice,
|
||
|
OrderType = o.OrderType,
|
||
|
PayType = o.PayType,
|
||
|
Platform = o.Platform,
|
||
|
ShopId = o.ShopId,
|
||
|
StartTime = o.StartTime,
|
||
|
StorageType = o.StorageType,
|
||
|
StoreId = o.StoreId,
|
||
|
StoreOrder = o.StoreOrder,
|
||
|
VenderRemark = o.VenderRemark,
|
||
|
PurchaseRemark = o.PurchaseRemark,
|
||
|
WaybillNo = o.WaybillNo,
|
||
|
Flag = o.Flag,
|
||
|
SDType = o.SDType,
|
||
|
SDKey = o.SDKey,
|
||
|
SDOperator = o.SDOperator,
|
||
|
SDPayBillNo = o.SDPayBillNo,
|
||
|
SDPayChannel = o.SDPayChannel,
|
||
|
IsAfterSaleOrder = o.IsAfterSaleOrder,
|
||
|
SellerPreferentialAmount = o.SellerPreferentialAmount,
|
||
|
PreferentialAmount = o.PreferentialAmount,
|
||
|
|
||
|
ContactName = ocs.ContactName,
|
||
|
Address = ocs.Address,
|
||
|
Province = ocs.Province,
|
||
|
County = ocs.County,
|
||
|
Town = ocs.Town,
|
||
|
City = ocs.City,
|
||
|
IsDecode = ocs.IsDecode,
|
||
|
Mobile = ocs.Mobile,
|
||
|
TelePhone = ocs.TelePhone,
|
||
|
|
||
|
DeliveryExpressFreight = oct.DeliveryExpressFreight,
|
||
|
PlatformCommissionAmount = oct.PlatformCommissionAmount,
|
||
|
PlatformCommissionRatio = oct.PlatformCommissionRatio,
|
||
|
//PreferentialAmount = oct.PreferentialAmount,
|
||
|
Profit = oct.Profit,
|
||
|
PurchaseAmount = oct.PurchaseAmount,
|
||
|
IsManualEdited = oct.IsManualEdited,
|
||
|
SDCommissionAmount = oct.SDCommissionAmount,
|
||
|
SDOrderAmount = oct.SDOrderAmount,
|
||
|
RefundAmount = oct.RefundAmount,
|
||
|
RefundPurchaseAmount = oct.RefundPurchaseAmount,
|
||
|
AfterTotalCost = oct.AfterTotalCost,
|
||
|
|
||
|
StoreName = sh.Name
|
||
|
};
|
||
|
}
|
||
|
|
||
|
public OrderListResponse GetOrderList(QueryOrderRequest request)
|
||
|
{
|
||
|
var select = GetOrderListQueryConditions(request).OrderByDescending((o, ocs, oct) => o.StartTime)
|
||
|
.Count(out var total)
|
||
|
.Page(request.PageIndex, request.PageSize);
|
||
|
return new OrderListResponse()
|
||
|
{
|
||
|
Count = total
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
}
|