diff --git a/BBWYB.Server.API/Controllers/OrderController.cs b/BBWYB.Server.API/Controllers/OrderController.cs new file mode 100644 index 0000000..b2c77dc --- /dev/null +++ b/BBWYB.Server.API/Controllers/OrderController.cs @@ -0,0 +1,27 @@ +using BBWYB.Server.Business.Order; +using BBWYB.Server.Model.Dto; +using Microsoft.AspNetCore.Mvc; + +namespace BBWYB.Server.API.Controllers +{ + + public class OrderController : BaseApiController + { + private OrderBusiness orderBusiness; + public OrderController(IHttpContextAccessor httpContextAccessor, OrderBusiness orderBusiness) : base(httpContextAccessor) + { + this.orderBusiness = orderBusiness; + } + + /// + /// 订单查询 + /// + /// + /// + [HttpPost] + public OrderListResponse GetOrderList(QueryOrderRequest request) + { + return orderBusiness.GetOrderList(request); + } + } +} diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 2edbbd0..281dea9 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -6,6 +6,8 @@ using FreeSql; using Yitter.IdGenerator; using BBWYB.Server.Model.Db; using System.Linq.Expressions; +using BBWYB.Common.Extensions; +using BBWYB.Server.Model; namespace BBWYB.Server.Business.Order { @@ -49,9 +51,9 @@ namespace BBWYB.Server.Business.Order return select; } - private Expression> GetOrderListField() + private Expression> GetOrderListField() { - return (o, ocs, oct, sh) => new Order() + return (o, ocs, oct) => new Model.Db.Order() { Id = o.Id, BuyerRemark = o.BuyerRemark, @@ -68,17 +70,10 @@ namespace BBWYB.Server.Business.Order 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, @@ -89,7 +84,7 @@ namespace BBWYB.Server.Business.Order County = ocs.County, Town = ocs.Town, City = ocs.City, - IsDecode = ocs.IsDecode, + //IsDecode = ocs.IsDecode, Mobile = ocs.Mobile, TelePhone = ocs.TelePhone, @@ -100,13 +95,10 @@ namespace BBWYB.Server.Business.Order 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 + //SDCommissionAmount = oct.SDCommissionAmount, + //SDOrderAmount = oct.SDOrderAmount, + //RefundAmount = oct.RefundAmount, + //RefundPurchaseAmount = oct.RefundPurchaseAmount, }; } @@ -115,9 +107,32 @@ namespace BBWYB.Server.Business.Order var select = GetOrderListQueryConditions(request).OrderByDescending((o, ocs, oct) => o.StartTime) .Count(out var total) .Page(request.PageIndex, request.PageSize); + + var orderSourceList = select.ToList(GetOrderListField()); + var orderList = orderSourceList.Map>(); + var orderIdList = orderList.Select(o => o.Id).ToList(); + + if (orderList.Count() > 0) + { + #region 处理Sku + var orderSkuList = fsql.Select().Where(osku => osku.Price != 0 && + orderIdList.Contains(osku.OrderId)).ToList(); + foreach (var order in orderList) + { + order.ItemList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); + } + #endregion + + #region 处理订单成本明细 + var orderCostDetailList = fsql.Select().Where(ocd => orderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true).ToList(); + foreach (var order in orderList) + order.OrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id).ToList(); + #endregion + } return new OrderListResponse() { - Count = total + Count = total, + Items = orderList }; } } diff --git a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs index 15ed45a..c8664c9 100644 --- a/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/OrderSyncBusiness.cs @@ -72,13 +72,13 @@ namespace BBWYB.Server.Business.Sync return; var qtOrderIdList = qtOrderList.Items.Select(qto => qto.OrderId).ToList(); - var dbOrderList = fsql.Select(qtOrderIdList).ToList(); + var dbOrderList = fsql.Select(qtOrderIdList).ToList(); - List insertOrderList = new List(); + List insertOrderList = new List(); List insertOrderSkuList = new List(); List insertOrderConsigneeList = new List(); - List> updateOrderList = new List>(); + List> updateOrderList = new List>(); foreach (var qtOrder in qtOrderList.Items) { @@ -87,7 +87,7 @@ namespace BBWYB.Server.Business.Sync if (dbOrder == null) { //新订单 - dbOrder = new Order() + dbOrder = new Model.Db.Order() { Id = qtOrder.OrderId, BuyerRemark = qtOrder.BuyerRemark, @@ -188,12 +188,12 @@ namespace BBWYB.Server.Business.Sync if (updateOrderState || updateWaybillNo || updateModifyTime || updateBuyerRemark || updateVenderRemark) { - var update = fsql.Update(dbOrder.Id).SetIf(updateOrderState, o => o.OrderState == orderState) - .SetIf(updateWaybillNo, o => o.WaybillNo, qtOrder.DeliveryResponse.WayBillNo) - .SetIf(updateExpressName, o => o.ExpressName, qtOrder.DeliveryResponse.ExpressName) - .SetIf(updateModifyTime, o => o.ModifyTime, qtOrder.ModifyTime) - .SetIf(updateBuyerRemark, o => o.BuyerRemark, qtOrder.BuyerRemark) - .SetIf(updateVenderRemark, o => o.VenderRemark, qtOrder.VenderRemark); + var update = fsql.Update(dbOrder.Id).SetIf(updateOrderState, o => o.OrderState == orderState) + .SetIf(updateWaybillNo, o => o.WaybillNo, qtOrder.DeliveryResponse.WayBillNo) + .SetIf(updateExpressName, o => o.ExpressName, qtOrder.DeliveryResponse.ExpressName) + .SetIf(updateModifyTime, o => o.ModifyTime, qtOrder.ModifyTime) + .SetIf(updateBuyerRemark, o => o.BuyerRemark, qtOrder.BuyerRemark) + .SetIf(updateVenderRemark, o => o.VenderRemark, qtOrder.VenderRemark); updateOrderList.Add(update); } } diff --git a/BBWYB.Server.Model/Db/Order/Order.cs b/BBWYB.Server.Model/Db/Order/Order.cs index 361cb3c..e7390f8 100644 --- a/BBWYB.Server.Model/Db/Order/Order.cs +++ b/BBWYB.Server.Model/Db/Order/Order.cs @@ -166,6 +166,72 @@ namespace BBWYB.Server.Model.Db [Column(StringLength = 100)] public string ClientOrderId { get; set; } + + #region 订单成本 + /// + /// 平台扣点金额 + /// + [Column(IsIgnore = true)] + public decimal? PlatformCommissionAmount { get; set; } + + /// + /// 平台扣点百分比 + /// + [Column(IsIgnore = true)] + public decimal? PlatformCommissionRatio { get; set; } + + /// + /// 利润 + /// + [Column(IsIgnore = true)] + public decimal? Profit { get; set; } + + /// + /// 采购金额 + /// + [Column(IsIgnore = true)] + public decimal? PurchaseAmount { get; set; } = 0.00M; + + /// + /// 发货快递费 + /// + [Column(IsIgnore = true)] + public decimal? DeliveryExpressFreight { get; set; } = 0.00M; + + /// + /// 是否手动编辑过成本 + /// + [Column(IsIgnore = true)] + public bool? IsManualEdited { get; set; } = false; + + #endregion + + #region 收货人信息 + [Column(IsIgnore = true)] + public string Address { get; set; } + + [Column(IsIgnore = true)] + public string City { get; set; } + + [Column(IsIgnore = true)] + public string ContactName { get; set; } + + [Column(IsIgnore = true)] + public string County { get; set; } + + [Column(IsIgnore = true)] + public string Mobile { get; set; } + + [Column(IsIgnore = true)] + public string Province { get; set; } + + [Column(IsIgnore = true)] + public string TelePhone { get; set; } + + [Column(IsIgnore = true)] + public string Town { get; set; } + #endregion + } } diff --git a/BBWYB.Server.Model/Db/Order/OrderCost.cs b/BBWYB.Server.Model/Db/Order/OrderCost.cs index 840e088..776a6c8 100644 --- a/BBWYB.Server.Model/Db/Order/OrderCost.cs +++ b/BBWYB.Server.Model/Db/Order/OrderCost.cs @@ -12,11 +12,6 @@ namespace BBWYB.Server.Model.Db [Column(StringLength = 50, IsPrimary = true, IsNullable = false)] public string OrderId { get; set; } - /// - /// 所有服务单的售后成本(不含退款采购成本) - /// - [Column(DbType = "decimal(18,2)")] - public decimal? AfterTotalCost { get; set; } = 0.00M; [Column(DbType = "datetime")] public DateTime? CreateTime { get; set; } @@ -62,49 +57,6 @@ namespace BBWYB.Server.Model.Db /// [Column(DbType = "decimal(20,2)")] public decimal? PurchaseAmount { get; set; } = 0.00M; - - /// - /// 退款金额 - /// - [Column(DbType = "decimal(20,2)")] - public decimal? RefundAmount { get; set; } = 0.00M; - - /// - /// 退款采购成本 - /// - [Column(DbType = "decimal(20,2)")] - public decimal? RefundPurchaseAmount { get; set; } = 0.00M; - - /// - /// 售后补发成本 - /// - [Column(DbType = "decimal(20,2)")] - public decimal? ReissueAfterSaleAmount { get; set; } = 0.00M; - - /// - /// 补发快递费 - /// - [Column(DbType = "decimal(20,2)")] - public decimal? ReissueFreight { get; set; } = 0.00M; - - /// - /// 补发货款成本 - /// - [Column(DbType = "decimal(20,2)")] - public decimal? ReissueProductAmount { get; set; } = 0.00M; - - /// - /// 刷单佣金 - /// - [Column(DbType = "decimal(20,2)")] - public decimal? SDCommissionAmount { get; set; } = 0.00M; - - /// - /// 刷单号费 - /// - [Column(DbType = "decimal(18,2)")] - public decimal? SDOrderAmount { get; set; } = 0.00M; - } } diff --git a/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs b/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs index 2afaf46..9fb06f8 100644 --- a/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs +++ b/BBWYB.Server.Model/Db/Order/OrderCostDetail.cs @@ -78,7 +78,14 @@ namespace BBWYB.Server.Model.Db [Column(DbType = "bigint(1)")] public long? PurchaseOrderPKId { get; set; } - + /// + /// 采购单Id + /// + [Column(StringLength = 100)] + public string PurchaseOrderId { get; set; } + + + public long? ShopId { get; set; } /// @@ -103,7 +110,13 @@ namespace BBWYB.Server.Model.Db public decimal? StorageAmount { get; set; } = 0.00M; /// - /// Sku合计成本(不含发货运费) + /// 采购成本(不含发货运费) + /// + [Column(DbType = "decimal(20,2)")] + public decimal? PurchaseAmount { get; set; } = 0.00M; + + /// + /// 成本总计 /// [Column(DbType = "decimal(20,2)")] public decimal? TotalCost { get; set; } = 0.00M; diff --git a/BBWYB.Server.Model/Dto/Response/Order/ConsigneeResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/ConsigneeResponse.cs index e818d7c..6e8f76e 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/ConsigneeResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/ConsigneeResponse.cs @@ -1,79 +1,10 @@ -namespace BBWY.Server.Model.Dto -{ - public class ConsigneeResponse - { - /// - /// 联系人名称 - /// - public string ContactName { get; set; } - - /// - /// 座机 - /// - public string TelePhone { get; set; } - - /// - /// 手机 - /// - public string Mobile { get; set; } - - public string Address { get; set; } - - /// - /// 省 - /// - public string Province { get; set; } - - /// - /// 市 - /// - public string City { get; set; } - - /// - /// 县 - /// - public string County { get; set; } +using BBWYB.Server.Model.Db; - /// - /// 镇 - /// - public string Town { get; set; } - - /// - /// 是否解码 - /// - public bool? IsDecode { get; set; } - } - - /// - /// 收货人信息(不含省市区) - /// - public class ConsigneeSimpleResponse +namespace BBWYB.Server.Model.Dto +{ + public class ConsigneeResponse : OrderConsignee { - /// - /// 联系人名称 - /// - public string ContactName { get; set; } - - /// - /// 座机 - /// - public string TelePhone { get; set; } - - /// - /// 手机 - /// - public string Mobile { get; set; } - - /// - /// 地址 - /// - public string Address { get; set; } - /// - /// 买家账号 - /// - public string BuyerAccount { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderCostDetailResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderCostDetailResponse.cs index 2f24ee1..2f7ab7c 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderCostDetailResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderCostDetailResponse.cs @@ -1,15 +1,11 @@ -using BBWY.Server.Model.Db; + -namespace BBWY.Server.Model.Dto +using BBWYB.Server.Model.Db; + +namespace BBWYB.Server.Model.Dto { public class OrderCostDetailResponse : OrderCostDetail { - /// - /// 总成本(包含销售运费) - /// - public decimal TotalCost2 - { - get { return TotalCost + DeliveryExpressFreight; } - } + } } diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderCostResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderCostResponse.cs index 8a2d31f..ebbbab1 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderCostResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderCostResponse.cs @@ -1,6 +1,7 @@ using BBWY.Server.Model.Db; +using BBWYB.Server.Model.Db; -namespace BBWY.Server.Model.Dto +namespace BBWYB.Server.Model.Dto { public class OrderCostResponse : OrderCost { diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs index 3e1b6e1..e9cfd6b 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs @@ -1,6 +1,4 @@ -using BBWYB.Server.Model; - -namespace BBWY.Server.Model.Dto +namespace BBWYB.Server.Model.Dto { public class OrderResponse { diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs index c2198e9..32a0b3c 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs @@ -1,24 +1,8 @@ -namespace BBWY.Server.Model.Dto +using BBWYB.Server.Model.Db; + +namespace BBWYB.Server.Model.Dto { - public class OrderSkuResponse : ProductSkuResponse + public class OrderSkuResponse : OrderSku { - public string OrderId { get; set; } - - /// - /// 购买数量 - /// - public int ItemTotal { get; set; } - - public string ProductNo { get; set; } - - /// - /// 代发信息Id - /// - public long? OrderDropShippingId { get; set; } - - /// - /// 是否退款 - /// - public bool IsRefund { get; set; } = false; } } diff --git a/BBWYB.Server.Model/MappingProfiles.cs b/BBWYB.Server.Model/MappingProfiles.cs index 9f29c5f..37472d5 100644 --- a/BBWYB.Server.Model/MappingProfiles.cs +++ b/BBWYB.Server.Model/MappingProfiles.cs @@ -1,4 +1,5 @@ using AutoMapper; +using BBWY.Server.Model.Dto; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; @@ -25,36 +26,27 @@ namespace BBWYB.Server.Model //CreateMap(); //CreateMap(); //CreateMap(); - //CreateMap(); - //CreateMap(); - //CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); //CreateMap(); - //CreateMap().ForMember(t => t.Id, opt => opt.MapFrom(f => f.SkuId)); - //CreateMap().ForMember(t => t.OrderStartTime, opt => opt.MapFrom(f => f.StartTime)) - // .ForMember(t => t.OrderEndTime, opt => opt.MapFrom(f => f.EndTime)) - // .ForMember(t => t.OrderModifyTime, opt => opt.MapFrom(f => f.ModifyTime)) - // .ForPath(t => t.Consignee.IsDecode, opt => opt.MapFrom(f => f.IsDecode)) - // .ForPath(t => t.Consignee.Province, opt => opt.MapFrom(f => f.Province)) - // .ForPath(t => t.Consignee.City, opt => opt.MapFrom(f => f.City)) - // .ForPath(t => t.Consignee.County, opt => opt.MapFrom(f => f.County)) - // .ForPath(t => t.Consignee.Town, opt => opt.MapFrom(f => f.Town)) - // .ForPath(t => t.Consignee.Address, opt => opt.MapFrom(f => f.Address)) - // .ForPath(t => t.Consignee.Mobile, opt => opt.MapFrom(f => f.Mobile)) - // .ForPath(t => t.Consignee.TelePhone, opt => opt.MapFrom(f => f.TelePhone)) - // .ForPath(t => t.Consignee.ContactName, opt => opt.MapFrom(f => f.ContactName)) - // .ForPath(t => t.OrderCost.OrderId, opt => opt.MapFrom(f => f.Id)) - // .ForPath(t => t.OrderCost.PurchaseAmount, opt => opt.MapFrom(f => f.PurchaseAmount ?? 0)) - // .ForPath(t => t.OrderCost.Profit, opt => opt.MapFrom(f => f.Profit ?? 0)) - // .ForPath(t => t.OrderCost.DeliveryExpressFreight, opt => opt.MapFrom(f => f.DeliveryExpressFreight ?? 0)) - // .ForPath(t => t.OrderCost.PlatformCommissionAmount, opt => opt.MapFrom(f => f.PlatformCommissionAmount ?? 0)) - // .ForPath(t => t.OrderCost.PlatformCommissionRatio, opt => opt.MapFrom(f => f.PlatformCommissionRatio ?? 0)) - // .ForPath(t => t.OrderCost.PreferentialAmount, opt => opt.MapFrom(f => f.PreferentialAmount)) - // .ForPath(t => t.OrderCost.IsManualEdited, opt => opt.MapFrom(f => f.IsManualEdited)) - // .ForPath(t => t.OrderCost.SDCommissionAmount, opt => opt.MapFrom(f => f.SDCommissionAmount)) - // .ForPath(t => t.OrderCost.SDOrderAmount, opt => opt.MapFrom(f => f.SDOrderAmount)) - // .ForPath(t => t.OrderCost.RefundAmount, opt => opt.MapFrom(f => f.RefundAmount)) - // .ForPath(t => t.OrderCost.RefundPurchaseAmount, opt => opt.MapFrom(f => f.RefundPurchaseAmount)) - // .ForPath(t => t.OrderCost.AfterTotalCost, opt => opt.MapFrom(f => f.AfterTotalCost)); + CreateMap().ForMember(t => t.Id, opt => opt.MapFrom(f => f.SkuId)); + CreateMap().ForPath(t => t.Consignee.Province, opt => opt.MapFrom(f => f.Province)) + .ForPath(t => t.Consignee.City, opt => opt.MapFrom(f => f.City)) + .ForPath(t => t.Consignee.County, opt => opt.MapFrom(f => f.County)) + .ForPath(t => t.Consignee.Town, opt => opt.MapFrom(f => f.Town)) + .ForPath(t => t.Consignee.Address, opt => opt.MapFrom(f => f.Address)) + .ForPath(t => t.Consignee.Mobile, opt => opt.MapFrom(f => f.Mobile)) + .ForPath(t => t.Consignee.TelePhone, opt => opt.MapFrom(f => f.TelePhone)) + .ForPath(t => t.Consignee.ContactName, opt => opt.MapFrom(f => f.ContactName)) + .ForPath(t => t.OrderCost.OrderId, opt => opt.MapFrom(f => f.Id)) + .ForPath(t => t.OrderCost.PurchaseAmount, opt => opt.MapFrom(f => f.PurchaseAmount ?? 0)) + .ForPath(t => t.OrderCost.Profit, opt => opt.MapFrom(f => f.Profit ?? 0)) + .ForPath(t => t.OrderCost.DeliveryExpressFreight, opt => opt.MapFrom(f => f.DeliveryExpressFreight ?? 0)) + .ForPath(t => t.OrderCost.PlatformCommissionAmount, opt => opt.MapFrom(f => f.PlatformCommissionAmount ?? 0)) + .ForPath(t => t.OrderCost.PlatformCommissionRatio, opt => opt.MapFrom(f => f.PlatformCommissionRatio ?? 0)) + .ForPath(t => t.OrderCost.PreferentialAmount, opt => opt.MapFrom(f => f.PreferentialAmount)) + .ForPath(t => t.OrderCost.IsManualEdited, opt => opt.MapFrom(f => f.IsManualEdited)); //CreateMap();