|
|
@ -1001,6 +1001,76 @@ namespace BBWY.Server.Business |
|
|
|
.ExecuteAffrows(); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 修改售后
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="editAfterSaleOrderSkuRequest"></param>
|
|
|
|
/// <exception cref="BusinessException"></exception>
|
|
|
|
public void EditAfterSaleOrderSku(EditAfterSaleOrderSkuRequest editAfterSaleOrderSkuRequest) |
|
|
|
{ |
|
|
|
var dbOrder = fsql.Select<Order>(editAfterSaleOrderSkuRequest.OrderId).ToOne(); |
|
|
|
if (dbOrder == null) |
|
|
|
throw new BusinessException("订单不存在"); |
|
|
|
var dbOrderCost = fsql.Select<OrderCost>(editAfterSaleOrderSkuRequest.OrderId).ToOne(); |
|
|
|
if (dbOrderCost == null) |
|
|
|
throw new BusinessException("缺少订单成本"); |
|
|
|
|
|
|
|
|
|
|
|
IInsert<AfterSaleOrder> insertAfterSaleOrder = null; |
|
|
|
IUpdate<AfterSaleOrder> updateAfterSaleOrder = null; |
|
|
|
IUpdate<OrderCost> updateOrderCost = null; |
|
|
|
|
|
|
|
var afterSaleOrderSkuList = fsql.Select<AfterSaleOrder>().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<AfterSaleOrder>().SetSource(dbAfterSaleOrderSku).IgnoreColumns(aso => new { aso.CreateTime }); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
editAfterSaleOrderSkuRequest.Id = idGenerator.NewLong(); |
|
|
|
var afterSaleOrder = editAfterSaleOrderSkuRequest.Map<AfterSaleOrder>(); |
|
|
|
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<OrderSku>().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<OrderCost>().SetSource(dbOrderCost).IgnoreColumns(oc => new { oc.CreateTime }); |
|
|
|
|
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
fsql.Update<Order>(editAfterSaleOrderSkuRequest.OrderId).Set(o => o.IsAfterSaleOrder, true).ExecuteAffrows(); |
|
|
|
updateOrderCost.ExecuteAffrows(); |
|
|
|
insertAfterSaleOrder?.ExecuteAffrows(); |
|
|
|
updateAfterSaleOrder?.ExecuteAffrows(); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 同步订单
|
|
|
|
/// </summary>
|
|
|
|