diff --git a/BBWY.Server.Business/Extensions/OrderCostExtension.cs b/BBWY.Server.Business/Extensions/OrderCostExtension.cs index 2111990c..56fb2b72 100644 --- a/BBWY.Server.Business/Extensions/OrderCostExtension.cs +++ b/BBWY.Server.Business/Extensions/OrderCostExtension.cs @@ -1,8 +1,6 @@ using BBWY.Server.Model.Db; -using System; using System.Collections.Generic; using System.Linq; -using System.Text; namespace BBWY.Server.Business.Extensions { diff --git a/BBWY.Server.Business/Order/OrderBusiness.cs b/BBWY.Server.Business/Order/OrderBusiness.cs index 1f6cb950..369e264f 100644 --- a/BBWY.Server.Business/Order/OrderBusiness.cs +++ b/BBWY.Server.Business/Order/OrderBusiness.cs @@ -1112,14 +1112,16 @@ namespace BBWY.Server.Business { var select = fsql.Select() .InnerJoin((osku, o, ocd, po, p) => osku.OrderId == o.Id) - .InnerJoin((osku, o, ocd, po, p) => osku.OrderId == ocd.OrderId && osku.SkuId == ocd.SkuId) - .InnerJoin((osku, o, ocd, po, p) => ocd.PurchaseOrderPKId == po.Id) + .LeftJoin((osku, o, ocd, po, p) => osku.OrderId == ocd.OrderId && osku.SkuId == ocd.SkuId) + .LeftJoin((osku, o, ocd, po, p) => ocd.PurchaseOrderPKId == po.Id) .LeftJoin((osku, o, ocd, po, p) => osku.ProductId == p.Id) .WhereIf(request.ShopIds != null && request.ShopIds.Count() > 0, (osku, o, ocd, po, p) => request.ShopIds.Contains(o.ShopId)) .WhereIf(request.PurchasePlatform != null, (osku, o, ocd, po, p) => po.PurchasePlatform == request.PurchasePlatform) .Where((osku, o, ocd, po, p) => o.StartTime >= request.StartTime && o.StartTime <= request.EndTime && - o.OrderState != Enums.OrderState.已取消) + o.OrderState != Enums.OrderState.已取消 && + o.IsGift == false && + osku.Price > 0) .OrderByDescending((osku, o, ocd, po, p) => o.StartTime); return select; } diff --git a/BBWY.Server.Business/ServiceOrder/ServiceOrderBusiness.cs b/BBWY.Server.Business/ServiceOrder/ServiceOrderBusiness.cs index 50a40375..44fd5375 100644 --- a/BBWY.Server.Business/ServiceOrder/ServiceOrderBusiness.cs +++ b/BBWY.Server.Business/ServiceOrder/ServiceOrderBusiness.cs @@ -58,6 +58,27 @@ namespace BBWY.Server.Business ShopId = s.ShopId, RenewalOrderId = s.RenewalOrderId, ReturnCheckRemark = s.ReturnCheckRemark, + AfterTotalCost = s.AfterTotalCost, + ConsumableAmount = s.ConsumableAmount, + DeliveryExpressFreight = s.DeliveryExpressFreight, + FirstFreight = s.FirstFreight, + InStorageAmount = s.InStorageAmount, + OutStorageAmount = s.OutStorageAmount, + PurchaseOrderPKId = s.PurchaseOrderPKId, + RefundAlipayOrderNo = s.RefundAlipayOrderNo, + RefundAmount = s.RefundAmount, + RefundInStorageAmount = s.RefundInStorageAmount, + RefundPurchaseAmount = s.RefundPurchaseAmount, + ReissueAfterSaleAmount = s.ReissueAfterSaleAmount, + StorageAmount = s.StorageAmount, + SDRefundFreight = s.SDRefundFreight, + RenewalType = s.RenewalType, + RenewalPurchasePlatform = s.RenewalPurchasePlatform, + RenewalPurchaseOrderId = s.RenewalPurchaseOrderId, + ReissueProductAmount = s.ReissueProductAmount, + ReissueFreight = s.ReissueFreight, + RefundTime = s.RefundTime, + RefundMerchantOrderNo = s.RefundMerchantOrderNo, Title = osku.Title, ItemTotal = osku.ItemTotal.Value, @@ -81,23 +102,85 @@ namespace BBWY.Server.Business public void EditServiceOrder(EditQueryServiceOrderRequest request) { + var dbso = fsql.Select(request.ServicePId).ToOne(); + if (dbso == null) + throw new BusinessException("服务端不存在"); + dbso.ServiceResult = request.ServiceResult; + dbso.ReturnDirection = request.ReturnDirection; + dbso.RenewalOrderId = request.RenewalOrderId; + dbso.ReturnCheckRemark = request.ReturnCheckRemark; + dbso.RenewalType = request.RenewalType; + dbso.RenewalPurchaseOrderId = request.RenewalPurchaseOrderId; + dbso.RenewalPurchasePlatform = request.RenewalPurchasePlatform; - fsql.Transaction(() => + dbso.ReissueAfterSaleAmount = request.ReissueAfterSaleAmount; + dbso.ConsumableAmount = 0M; + dbso.DeliveryExpressFreight = 0M; + dbso.FirstFreight = 0M; + dbso.InStorageAmount = 0M; + dbso.OutStorageAmount = 0M; + dbso.RefundInStorageAmount = 0M; + dbso.ReissueFreight = 0M; + dbso.ReissueProductAmount = 0M; + dbso.StorageAmount = 0M; + dbso.AfterTotalCost = 0M; + dbso.SDRefundFreight = 0M; + + if (request.ServiceResult == Model.Enums.ServiceResult.退货 || + request.ServiceResult == Model.Enums.ServiceResult.原返 || + request.ServiceResult == Model.Enums.ServiceResult.线下换新 || + request.ServiceResult == Model.Enums.ServiceResult.仅退款) + { + //if(request.ReturnDirection == Model.Enums.ReturnDirection.退货仓) + dbso.ReissueAfterSaleAmount = request.ReissueAfterSaleAmount; + } + else if (request.ServiceResult == Model.Enums.ServiceResult.换新) + { + var dbOrderCostDetail = fsql.Select().Where(ocd => ocd.OrderId == request.OrderId && + ocd.SkuId == dbso.SkuId && + ocd.IsEnabled == true).ToOne(); + if (dbOrderCostDetail != null) + { + var dbPurchaseOrder = dbOrderCostDetail != null ? fsql.Select(dbOrderCostDetail.PurchaseOrderPKId).ToOne() : null; + dbso.ConsumableAmount = dbOrderCostDetail.ConsumableAmount; + dbso.DeliveryExpressFreight = dbOrderCostDetail.DeliveryExpressFreight; + dbso.FirstFreight = dbOrderCostDetail.FirstFreight; + dbso.ReissueProductAmount = dbOrderCostDetail.SkuAmount; + dbso.ReissueFreight = dbOrderCostDetail.PurchaseFreight; + dbso.StorageAmount = dbOrderCostDetail.StorageAmount; + dbso.InStorageAmount = dbOrderCostDetail.InStorageAmount; + dbso.OutStorageAmount = dbOrderCostDetail.OutStorageAmount; + } + } + else if (request.ServiceResult == Model.Enums.ServiceResult.商品补发) { - fsql.Update(request.ServicePId).Set(s => s.ServiceResult, request.ServiceResult) - .Set(s => s.SDRefundFreight, request.SDRefundFreight) - .Set(s => s.ReturnDirection, request.ReturnDirection) - .Set(s => s.RenewalOrderId, request.RenewalOrderId) - .Set(s => s.ReissueAfterSaleAmount, request.ReissueAfterSaleAmount) - .Set(s => s.ReturnCheckRemark, request.ReturnCheckRemark) - .Set(s => s.RenewalType, request.RenewalType) - .Set(s => s.RenewalPurchaseOrderId, request.RenewalPurchaseOrderId) - .Set(s => s.RenewalPurchasePlatform, request.RenewalPurchasePlatform) - .Set(s => s.ReissueFreight, request.ReissueFreight) - .Set(s => s.ReissueProductAmount, request.ReissueProductAmount) - .ExecuteAffrows(); - }); + dbso.ReissueAfterSaleAmount = request.ReissueAfterSaleAmount; + dbso.ReissueProductAmount = request.ReissueProductAmount; + dbso.ReissueFreight = request.ReissueFreight; + } + else if (request.ServiceResult == Model.Enums.ServiceResult.SD退货) + { + dbso.ReissueAfterSaleAmount = 0M; + dbso.SDRefundFreight = request.SDRefundFreight; + } + dbso.AfterTotalCost = dbso.ReissueAfterSaleAmount + + dbso.ReissueFreight.Value + + dbso.ReissueProductAmount.Value + + dbso.ConsumableAmount.Value + + dbso.DeliveryExpressFreight.Value + + dbso.FirstFreight.Value + + dbso.InStorageAmount.Value + + dbso.OutStorageAmount.Value + + dbso.RefundInStorageAmount.Value + //退货入仓操作费 没有计算 + dbso.StorageAmount + + dbso.SDRefundFreight; + + + fsql.Transaction(() => + { + fsql.Update().SetSource(dbso).ExecuteAffrows(); + }); } } } diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 3724745c..afcaed0d 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -221,7 +221,9 @@ namespace BBWY.Server.Business List insertOrderSkuList = new List(); List insertOrderCouponList = new List(); + IList> updateOrderList = new List>(); + IList> updateOrderSkuList = new List>(); IList> updatePurchaseOrderList = new List>(); #endregion @@ -254,6 +256,7 @@ namespace BBWY.Server.Business var dbOrderConsigneeList = fsql.Select().Where(oc => interfaceOrderIdList.Contains(oc.OrderId)).ToList(); //数据库订单收货信息 var dbOrderCostList = fsql.Select().Where(oc => interfaceOrderIdList.Contains(oc.OrderId)).ToList(); //数据库订单成本信息 var dbOrderCouponList = fsql.Select().Where(oc => interfaceOrderIdList.Contains(oc.OrderId)).ToList(); //数据库订单优惠信息 + var dbOrderSkuList = fsql.Select().Where(osku => interfaceOrderIdList.Contains(osku.OrderId)).ToList(); //数据库sku信息 List dbOrderCostDetailList = null; //数据库成本明细 if (interfaceCanceledOrderIdList.Count() > 0 && @@ -379,6 +382,23 @@ namespace BBWY.Server.Business { if (storageType != null && dbOrder.StorageType != storageType) dbOrder.StorageType = storageType; + + var currentDbOrderSkuList = dbOrderSkuList.Where(osku => osku.OrderId == orderId).ToList(); + + + var itemInfoList = orderJToken["itemInfoList"] as JArray; + foreach (var orderSkuJToken in itemInfoList) + { + //var itemTotal = orderSkuJToken.Value("itemTotal"); + //var jdPrice = orderSkuJToken.Value("jdPrice"); + var wareId = orderSkuJToken.Value("wareId"); + var skuId = orderSkuJToken.Value("skuId"); + var dbOsku = currentDbOrderSkuList.FirstOrDefault(osku => osku.SkuId == skuId); + if (dbOsku != null && dbOsku.ProductId != wareId) + { + updateOrderSkuList.Add(fsql.Update(dbOsku.Id).Set(osku => osku.ProductId, wareId)); + } + } } #endregion @@ -693,6 +713,12 @@ namespace BBWY.Server.Business foreach (var update in updateOrderList) update.ExecuteAffrows(); } + + if (updateOrderSkuList.Count() > 0) + { + foreach (var update in updateOrderSkuList) + update.ExecuteAffrows(); + } }); } diff --git a/BBWY.Server.Business/Sync/ProductSyncBusiness.cs b/BBWY.Server.Business/Sync/ProductSyncBusiness.cs index 5cfffc36..d12574e0 100644 --- a/BBWY.Server.Business/Sync/ProductSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/ProductSyncBusiness.cs @@ -259,13 +259,14 @@ namespace BBWY.Server.Business.Sync } #endregion - #region 找出状态变化的产品 - var stateChangeProductList = productList.Where(p => dbProductList.Any(dp => dp.Id == p.Id && dp.State != p.State)).ToList(); + #region 找出变化的产品 (状态,标题) + var stateChangeProductList = productList.Where(p => dbProductList.Any(dp => dp.Id == p.Id && (dp.State != p.State || dp.Title != p.Title))).ToList(); if (stateChangeProductList.Count() > 0) { foreach (var product in stateChangeProductList) { - var update = fsql.Update(product.Id).Set(p => p.State, product.State); + var update = fsql.Update(product.Id).Set(p => p.State, product.State) + .Set(p => p.Title, product.Title); updateProductList.Add(update); } } @@ -303,12 +304,13 @@ namespace BBWY.Server.Business.Sync #endregion #region 找出状态变化的SKU - var stateChangeProductSkuList = productSkuList.Where(p => dbProductSkuList.Any(dp => dp.Id == p.Id && dp.State != p.State)).ToList(); + var stateChangeProductSkuList = productSkuList.Where(p => dbProductSkuList.Any(dp => dp.Id == p.Id && (dp.State != p.State || dp.Title != p.Title))).ToList(); if (stateChangeProductSkuList.Count() > 0) { foreach (var productSku in stateChangeProductSkuList) { - var update = fsql.Update(productSku.Id).Set(p => p.State, productSku.State); + var update = fsql.Update(productSku.Id).Set(p => p.State, productSku.State) + .Set(p => p.Title, productSku.Title); updateProductSkuList.Add(update); } }