From 0111e132e3437f2d914bc666ea22a5186e0feb7c Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 16 Jul 2022 05:51:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=94=AE=E5=90=8E=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/OrderController.cs | 11 +++ BBWY.Server.Business/Order/OrderBusiness.cs | 70 +++++++++++++++++++ .../Order/EditAfterSaleOrderSkuRequest.cs | 9 +++ 3 files changed, 90 insertions(+) create mode 100644 BBWY.Server.Model/Dto/Request/Order/EditAfterSaleOrderSkuRequest.cs diff --git a/BBWY.Server.API/Controllers/OrderController.cs b/BBWY.Server.API/Controllers/OrderController.cs index 4c08874a..c07f8d0f 100644 --- a/BBWY.Server.API/Controllers/OrderController.cs +++ b/BBWY.Server.API/Controllers/OrderController.cs @@ -132,6 +132,17 @@ namespace BBWY.Server.API.Controllers orderBusiness.EditVenderRemark(editVenderRemarkRequest); } + /// + /// 修改售后 + /// + /// + [HttpPost] + public void EditAfterSaleOrderSku([FromBody] EditAfterSaleOrderSkuRequest editAfterSaleOrderSkuRequest) + { + orderBusiness.EditAfterSaleOrderSku(editAfterSaleOrderSkuRequest); + } + + /// /// 指定时间范围的订单同步 /// diff --git a/BBWY.Server.Business/Order/OrderBusiness.cs b/BBWY.Server.Business/Order/OrderBusiness.cs index 802031cd..4a7a1628 100644 --- a/BBWY.Server.Business/Order/OrderBusiness.cs +++ b/BBWY.Server.Business/Order/OrderBusiness.cs @@ -1001,6 +1001,76 @@ namespace BBWY.Server.Business .ExecuteAffrows(); } + /// + /// 修改售后 + /// + /// + /// + public void EditAfterSaleOrderSku(EditAfterSaleOrderSkuRequest editAfterSaleOrderSkuRequest) + { + var dbOrder = fsql.Select(editAfterSaleOrderSkuRequest.OrderId).ToOne(); + if (dbOrder == null) + throw new BusinessException("订单不存在"); + var dbOrderCost = fsql.Select(editAfterSaleOrderSkuRequest.OrderId).ToOne(); + if (dbOrderCost == null) + throw new BusinessException("缺少订单成本"); + + + IInsert insertAfterSaleOrder = null; + IUpdate updateAfterSaleOrder = null; + IUpdate updateOrderCost = null; + + var afterSaleOrderSkuList = fsql.Select().Where(aso => aso.OrderId == editAfterSaleOrderSkuRequest.OrderId).ToList(); + if (afterSaleOrderSkuList.Any(aso => aso.Id == editAfterSaleOrderSkuRequest.Id)) + { + var dbAfterSaleOrderSku = afterSaleOrderSkuList.FirstOrDefault(aso => aso.Id == editAfterSaleOrderSkuRequest.Id); + editAfterSaleOrderSkuRequest.Map(dbAfterSaleOrderSku); + updateAfterSaleOrder = fsql.Update().SetSource(dbAfterSaleOrderSku).IgnoreColumns(aso => new { aso.CreateTime }); + } + else + { + editAfterSaleOrderSkuRequest.Id = idGenerator.NewLong(); + var afterSaleOrder = editAfterSaleOrderSkuRequest.Map(); + afterSaleOrder.CreateTime = DateTime.Now; + insertAfterSaleOrder = fsql.Insert(afterSaleOrder); + afterSaleOrderSkuList.Add(afterSaleOrder); + } + + var refundAfterSaleOrderSkuIds = afterSaleOrderSkuList.Where(aso => aso.RefundAmount != 0).Select(aso => aso.SkuId); + + + dbOrderCost.RefundAmount = afterSaleOrderSkuList.Sum(aso => aso.RefundAmount ?? 0); + dbOrderCost.ReissueProductAmount = afterSaleOrderSkuList.Sum(aso => aso.ReissueProductAmount ?? 0); + dbOrderCost.ReissueFreight = afterSaleOrderSkuList.Sum(aso => aso.ReissueFreight ?? 0); + dbOrderCost.ReissueAfterSaleAmount = afterSaleOrderSkuList.Sum(aso => aso.ReissueAfterSaleAmount ?? 0); + + //退款采购货款 + var refundPurchaseAmount = fsql.Select().Where(osku => osku.OrderId == editAfterSaleOrderSkuRequest.OrderId && + refundAfterSaleOrderSkuIds.Contains(osku.SkuId)) + .Sum(osku => osku.Price * osku.ItemTotal); + + //退款之后平台扣点 + dbOrderCost.PlatformCommissionAmount = (dbOrder.OrderSellerPrice - dbOrderCost.RefundAmount) * (dbOrderCost?.PlatformCommissionRatio ?? 0.05M); + + //订单利润 + dbOrderCost.Profit = dbOrder.OrderSellerPrice + dbOrder.FreightPrice - dbOrderCost.RefundAmount - + (dbOrderCost.PurchaseAmount - refundPurchaseAmount) - + dbOrderCost.DeliveryExpressFreight - + dbOrderCost.PlatformCommissionAmount - + dbOrderCost.ReissueProductAmount - + dbOrderCost.ReissueFreight - + dbOrderCost.ReissueAfterSaleAmount; + updateOrderCost = fsql.Update().SetSource(dbOrderCost).IgnoreColumns(oc => new { oc.CreateTime }); + + fsql.Transaction(() => + { + fsql.Update(editAfterSaleOrderSkuRequest.OrderId).Set(o => o.IsAfterSaleOrder, true).ExecuteAffrows(); + updateOrderCost.ExecuteAffrows(); + insertAfterSaleOrder?.ExecuteAffrows(); + updateAfterSaleOrder?.ExecuteAffrows(); + }); + } + /// /// 同步订单 /// diff --git a/BBWY.Server.Model/Dto/Request/Order/EditAfterSaleOrderSkuRequest.cs b/BBWY.Server.Model/Dto/Request/Order/EditAfterSaleOrderSkuRequest.cs new file mode 100644 index 00000000..a1fbebfa --- /dev/null +++ b/BBWY.Server.Model/Dto/Request/Order/EditAfterSaleOrderSkuRequest.cs @@ -0,0 +1,9 @@ +using BBWY.Server.Model.Db; + +namespace BBWY.Server.Model.Dto +{ + public class EditAfterSaleOrderSkuRequest: AfterSaleOrder + { + + } +}