Browse Source

1

updatebug
shanji 3 years ago
parent
commit
8452e2610d
  1. 124
      BBWYB.Server.Business/Order/OrderBusiness.cs
  2. 59
      BBWYB.Server.Business/Sync/OrderSyncBusiness.cs
  3. 18
      BBWYB.Server.Model/Db/Order/Order.cs
  4. 31
      BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs
  5. 79
      BBWYB.Server.Model/Dto/Response/Order/ConsigneeResponse.cs
  6. 15
      BBWYB.Server.Model/Dto/Response/Order/OrderCostDetailResponse.cs
  7. 9
      BBWYB.Server.Model/Dto/Response/Order/OrderCostResponse.cs
  8. 147
      BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs
  9. 24
      BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs

124
BBWYB.Server.Business/Order/OrderBusiness.cs

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

59
BBWYB.Server.Business/Sync/OrderSyncBusiness.cs

@ -4,6 +4,7 @@ using BBWYB.Server.Model;
using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Dto; using BBWYB.Server.Model.Dto;
using FreeSql; using FreeSql;
using Newtonsoft.Json.Linq;
using SDKAdapter; using SDKAdapter;
using SDKAdapter.OperationPlatform.Client; using SDKAdapter.OperationPlatform.Client;
using SDKAdapter.OperationPlatform.Models; using SDKAdapter.OperationPlatform.Models;
@ -74,6 +75,9 @@ namespace BBWYB.Server.Business.Sync
var dbOrderList = fsql.Select<Order>(qtOrderIdList).ToList(); var dbOrderList = fsql.Select<Order>(qtOrderIdList).ToList();
List<Order> insertOrderList = new List<Order>(); List<Order> insertOrderList = new List<Order>();
List<OrderSku> insertOrderSkuList = new List<OrderSku>();
List<OrderConsignee> insertOrderConsigneeList = new List<OrderConsignee>();
List<IUpdate<Order>> updateOrderList = new List<IUpdate<Order>>(); List<IUpdate<Order>> updateOrderList = new List<IUpdate<Order>>();
foreach (var qtOrder in qtOrderList.Items) foreach (var qtOrder in qtOrderList.Items)
@ -107,11 +111,58 @@ namespace BBWYB.Server.Business.Sync
StorageType = 0, StorageType = 0,
VenderRemark = qtOrder.VenderRemark, VenderRemark = qtOrder.VenderRemark,
WaybillNo = qtOrder.DeliveryResponse.WayBillNo, WaybillNo = qtOrder.DeliveryResponse.WayBillNo,
OrderState = orderState OrderState = orderState,
ClientOrderId = qtOrder.ClientOrderId
}; };
if (!string.IsNullOrEmpty(qtOrder.Extended))
{
try
{
var jobject = JObject.Parse(qtOrder.Extended);
dbOrder.SourceSku = jobject.Value<string>("SourceSku");
dbOrder.SourceShopName = jobject.Value<string>("SourceShopName");
}
catch (Exception ex)
{
}
}
if (!insertOrderList.Any(o => o.Id == dbOrder.Id)) if (!insertOrderList.Any(o => o.Id == dbOrder.Id))
insertOrderList.Add(dbOrder); insertOrderList.Add(dbOrder);
//订单sku
foreach (var qtOrderSku in qtOrder.OrderSkuList)
{
insertOrderSkuList.Add(new OrderSku()
{
Id = idGenerator.NewLong(),
CreateTime = DateTime.Now,
SkuId = qtOrderSku.SkuId,
ItemTotal = qtOrderSku.Quantity,
Logo = qtOrderSku.SkuLogo,
OrderId = qtOrder.OrderId,
Price = qtOrderSku.SkuPrice,
Title = qtOrderSku.SkuTitle,
ShopId = shopId,
ProductId = qtOrderSku.ProductId
});
}
//收货人
insertOrderConsigneeList.Add(new OrderConsignee()
{
OrderId = qtOrder.OrderId,
Address = qtOrder.Consignee.Address,
City = qtOrder.Consignee.City,
ContactName = qtOrder.Consignee.ContactName,
County = qtOrder.Consignee.County,
CreateTime = DateTime.Now,
Mobile = qtOrder.Consignee.Mobile,
Province = qtOrder.Consignee.Province,
TelePhone = qtOrder.Consignee.Mobile,
Town = qtOrder.Consignee.Town
});
} }
else else
{ {
@ -153,6 +204,12 @@ namespace BBWYB.Server.Business.Sync
if (insertOrderList.Count > 0) if (insertOrderList.Count > 0)
fsql.Insert(insertOrderList).ExecuteAffrows(); fsql.Insert(insertOrderList).ExecuteAffrows();
if (insertOrderSkuList.Count() > 0)
fsql.Insert(insertOrderSkuList).ExecuteAffrows();
if (insertOrderConsigneeList.Count() > 0)
fsql.Insert(insertOrderConsigneeList).ExecuteAffrows();
if (updateOrderList.Count() > 0) if (updateOrderList.Count() > 0)
foreach (var update in updateOrderList) foreach (var update in updateOrderList)
update.ExecuteAffrows(); update.ExecuteAffrows();

18
BBWYB.Server.Model/Db/Order/Order.cs

@ -148,6 +148,24 @@ namespace BBWYB.Server.Model.Db
[Column(StringLength = 100)] [Column(StringLength = 100)]
public string ExpressName { get; set; } public string ExpressName { get; set; }
/// <summary>
/// 来源Sku
/// </summary>
[Column(StringLength = 100)]
public string SourceSku { get; set; }
/// <summary>
/// 来源店铺名
/// </summary>
[Column(StringLength = 100)]
public string SourceShopName { get; set; }
/// <summary>
/// 业务端订单号
/// </summary>
[Column(StringLength = 100)]
public string ClientOrderId { get; set; }
} }
} }

31
BBWYB.Server.Model/Dto/Request/Order/QueryOrderRequest.cs

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

79
BBWYB.Server.Model/Dto/Response/Order/ConsigneeResponse.cs

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

15
BBWYB.Server.Model/Dto/Response/Order/OrderCostDetailResponse.cs

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

9
BBWYB.Server.Model/Dto/Response/Order/OrderCostResponse.cs

@ -0,0 +1,9 @@
using BBWY.Server.Model.Db;
namespace BBWY.Server.Model.Dto
{
public class OrderCostResponse : OrderCost
{
}
}

147
BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs

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

24
BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs

@ -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…
Cancel
Save