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
+ {
+
+ }
+}