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