9 changed files with 505 additions and 1 deletions
@ -0,0 +1,124 @@ |
|||||
|
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 |
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,31 @@ |
|||||
|
namespace BBWYB.Server.Model.Dto |
||||
|
{ |
||||
|
public class QueryOrderRequest |
||||
|
{ |
||||
|
/// 当订单号有值时会忽略其余所有条件
|
||||
|
/// </summary>
|
||||
|
public string OrderId { get; set; } |
||||
|
|
||||
|
public long? ShopId { get; set; } |
||||
|
|
||||
|
public DateTime? StartDate { get; set; } |
||||
|
|
||||
|
public DateTime? EndDate { get; set; } |
||||
|
|
||||
|
public Enums.OrderState? OrderState { get; set; } |
||||
|
|
||||
|
public int PageIndex { get; set; } |
||||
|
|
||||
|
public int PageSize { get; set; } |
||||
|
|
||||
|
public string ProductId { get; set; } |
||||
|
|
||||
|
public string Sku { get; set; } |
||||
|
|
||||
|
public string ClientOrderId { get; set; } |
||||
|
|
||||
|
public string SourceShopName { get; set; } |
||||
|
|
||||
|
public string SourceSku { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,79 @@ |
|||||
|
namespace BBWY.Server.Model.Dto |
||||
|
{ |
||||
|
public class ConsigneeResponse |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 联系人名称
|
||||
|
/// </summary>
|
||||
|
public string ContactName { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 座机
|
||||
|
/// </summary>
|
||||
|
public string TelePhone { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 手机
|
||||
|
/// </summary>
|
||||
|
public string Mobile { get; set; } |
||||
|
|
||||
|
public string Address { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 省
|
||||
|
/// </summary>
|
||||
|
public string Province { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 市
|
||||
|
/// </summary>
|
||||
|
public string City { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 县
|
||||
|
/// </summary>
|
||||
|
public string County { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 镇
|
||||
|
/// </summary>
|
||||
|
public string Town { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 是否解码
|
||||
|
/// </summary>
|
||||
|
public bool? IsDecode { get; set; } |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 收货人信息(不含省市区)
|
||||
|
/// </summary>
|
||||
|
public class ConsigneeSimpleResponse |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 联系人名称
|
||||
|
/// </summary>
|
||||
|
public string ContactName { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 座机
|
||||
|
/// </summary>
|
||||
|
public string TelePhone { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 手机
|
||||
|
/// </summary>
|
||||
|
public string Mobile { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 地址
|
||||
|
/// </summary>
|
||||
|
public string Address { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 买家账号
|
||||
|
/// </summary>
|
||||
|
public string BuyerAccount { get; set; } |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,15 @@ |
|||||
|
using BBWY.Server.Model.Db; |
||||
|
|
||||
|
namespace BBWY.Server.Model.Dto |
||||
|
{ |
||||
|
public class OrderCostDetailResponse : OrderCostDetail |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 总成本(包含销售运费)
|
||||
|
/// </summary>
|
||||
|
public decimal TotalCost2 |
||||
|
{ |
||||
|
get { return TotalCost + DeliveryExpressFreight; } |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
using BBWY.Server.Model.Db; |
||||
|
|
||||
|
namespace BBWY.Server.Model.Dto |
||||
|
{ |
||||
|
public class OrderCostResponse : OrderCost |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,147 @@ |
|||||
|
using BBWYB.Server.Model; |
||||
|
|
||||
|
namespace BBWY.Server.Model.Dto |
||||
|
{ |
||||
|
public class OrderResponse |
||||
|
{ |
||||
|
public string Id { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 商家Id
|
||||
|
/// </summary>
|
||||
|
public string ShopId { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 下单时间
|
||||
|
/// </summary>
|
||||
|
public DateTime StartTime { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 结单时间
|
||||
|
/// </summary>
|
||||
|
public DateTime? EndTime { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 修改时间
|
||||
|
/// </summary>
|
||||
|
public DateTime ModifyTime { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 订单平台
|
||||
|
/// </summary>
|
||||
|
public Enums.Platform Platform { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 订单类型
|
||||
|
/// </summary>
|
||||
|
public Enums.OrderType OrderType { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 支付方式
|
||||
|
/// </summary>
|
||||
|
public Enums.PayType PayType { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 订单状态
|
||||
|
/// </summary>
|
||||
|
public Enums.OrderState OrderState { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 订单总价
|
||||
|
/// </summary>
|
||||
|
public decimal OrderTotalPrice { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 订单货款金额
|
||||
|
/// </summary>
|
||||
|
public decimal OrderSellerPrice { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 用户应付金额
|
||||
|
/// </summary>
|
||||
|
public decimal OrderPayment { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 商品运费(用户付)
|
||||
|
/// </summary>
|
||||
|
public decimal FreightPrice { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 平台补贴
|
||||
|
/// </summary>
|
||||
|
public decimal PreferentialAmount { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 商家优惠金额
|
||||
|
/// </summary>
|
||||
|
public decimal SellerPreferentialAmount { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 买家备注
|
||||
|
/// </summary>
|
||||
|
public string BuyerRemark { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 商家备注
|
||||
|
/// </summary>
|
||||
|
public string VenderRemark { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 采购备注
|
||||
|
/// </summary>
|
||||
|
public string PurchaseRemark { get; set; } |
||||
|
|
||||
|
public Enums.StorageType? StorageType { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 运单号
|
||||
|
/// </summary>
|
||||
|
public string WaybillNo { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 快递公司名称
|
||||
|
/// </summary>
|
||||
|
public string ExpressName { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 来源Sku
|
||||
|
/// </summary>
|
||||
|
public string SourceSku { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 来源店铺名
|
||||
|
/// </summary>
|
||||
|
public string SourceShopName { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 业务端订单号
|
||||
|
/// </summary>
|
||||
|
public string ClientOrderId { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 收货人信息
|
||||
|
/// </summary>
|
||||
|
public ConsigneeResponse Consignee { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 产品信息
|
||||
|
/// </summary>
|
||||
|
public IList<OrderSkuResponse> ItemList { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 订单成本
|
||||
|
/// </summary>
|
||||
|
public OrderCostResponse OrderCost { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 订单成本明细列表
|
||||
|
/// </summary>
|
||||
|
public IList<OrderCostDetailResponse> OrderCostDetailList { get; set; } |
||||
|
} |
||||
|
|
||||
|
public class OrderListResponse |
||||
|
{ |
||||
|
public long Count { get; set; } |
||||
|
|
||||
|
public IList<OrderResponse> Items { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,24 @@ |
|||||
|
namespace BBWY.Server.Model.Dto |
||||
|
{ |
||||
|
public class OrderSkuResponse : ProductSkuResponse |
||||
|
{ |
||||
|
public string OrderId { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 购买数量
|
||||
|
/// </summary>
|
||||
|
public int ItemTotal { get; set; } |
||||
|
|
||||
|
public string ProductNo { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 代发信息Id
|
||||
|
/// </summary>
|
||||
|
public long? OrderDropShippingId { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 是否退款
|
||||
|
/// </summary>
|
||||
|
public bool IsRefund { get; set; } = false; |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue