diff --git a/BBWY.Client/Views/Order/OrderList.xaml b/BBWY.Client/Views/Order/OrderList.xaml index 1278f717..3a2fb533 100644 --- a/BBWY.Client/Views/Order/OrderList.xaml +++ b/BBWY.Client/Views/Order/OrderList.xaml @@ -1187,9 +1187,9 @@ - + diff --git a/BBWY.Server.Business/Extensions/OrderCostExtension.cs b/BBWY.Server.Business/Extensions/OrderCostExtension.cs index 94f507ef..99602be0 100644 --- a/BBWY.Server.Business/Extensions/OrderCostExtension.cs +++ b/BBWY.Server.Business/Extensions/OrderCostExtension.cs @@ -24,5 +24,16 @@ namespace BBWY.Server.Business.Extensions orderCost.AfterTotalCost + orderCost.RefundPurchaseAmount; } + + public static void CalculationSDOrderProfitAndCost(this OrderCost orderCost, Order order, IList afterSaleOrders) + { + orderCost.AfterTotalCost = afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.AfterTotalCost); + orderCost.RefundAmount = afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.RefundAmount ?? 0M); + orderCost.RefundPurchaseAmount = afterSaleOrders.Count == 0M ? 0M : afterSaleOrders.Sum(aso => aso.RefundPurchaseAmount ?? 0); + + //退款之后平台扣点 + orderCost.PlatformCommissionAmount = (order.OrderSellerPrice - orderCost.RefundAmount) * (orderCost.PlatformCommissionRatio); + orderCost.Profit = (orderCost.SDCommissionAmount + orderCost.DeliveryExpressFreight + orderCost.PlatformCommissionAmount + orderCost.AfterTotalCost) * -1; + } } } diff --git a/BBWY.Server.Business/Order/OrderBusiness.cs b/BBWY.Server.Business/Order/OrderBusiness.cs index 8b8abd5a..6205d8cb 100644 --- a/BBWY.Server.Business/Order/OrderBusiness.cs +++ b/BBWY.Server.Business/Order/OrderBusiness.cs @@ -2,7 +2,6 @@ using BBWY.Common.Http; using BBWY.Common.Models; using BBWY.Server.Business.Extensions; -using BBWY.Server.Business.PlatformSDK.DataExtension; using BBWY.Server.Model; using BBWY.Server.Model.Db; using BBWY.Server.Model.Db.Mds; @@ -11,46 +10,31 @@ using FreeSql; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using NLog; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Net.Http; -using System.Threading.Tasks; using Yitter.IdGenerator; namespace BBWY.Server.Business { public class OrderBusiness : BasePlatformRelayBusiness, IDenpendency { - private ILogger logger; private IFreeSql fsql; private IIdGenerator idGenerator; - private TaskSchedulerManager taskSchedulerManager; - private MDSBusiness mdsBusiness; - private VenderBusiness venderBusiness; private Lazy freeSqlMultiDBManagerLazy; private FreeSqlMultiDBManager freeSqlMultiDBManager => freeSqlMultiDBManagerLazy.Value; public OrderBusiness(RestApiService restApiService, - ILogger logger, IFreeSql fsql, IIdGenerator idGenerator, IOptions options, - TaskSchedulerManager taskSchedulerManager, - MDSBusiness mdsBusiness, - VenderBusiness venderBusiness, IServiceProvider serviceProvider) : base(restApiService, options) { - this.logger = logger; this.fsql = fsql; this.idGenerator = idGenerator; - this.taskSchedulerManager = taskSchedulerManager; - this.mdsBusiness = mdsBusiness; - this.venderBusiness = venderBusiness; freeSqlMultiDBManagerLazy = new Lazy(() => serviceProvider.GetService()); } @@ -671,6 +655,8 @@ namespace BBWY.Server.Business IUpdate updateOrderCost = null; IInsert insertOrderCost = null; + var dbAfterSaleOrderList = fsql.Select().Where(aso => aso.OrderId == sdCalculationCostRequest.OrderId).ToList(); + orderUpdate = fsql.Update(sdCalculationCostRequest.OrderId).Set(o => o.SDType, sdCalculationCostRequest.SDType) .Set(o => o.Flag, sdCalculationCostRequest.Flag) .Set(o => o.VenderRemark, sdCalculationCostRequest.VenderRemark) @@ -697,15 +683,17 @@ namespace BBWY.Server.Business IsManualEdited = true, SDCommissionAmount = sdCalculationCostRequest.SDCommissionAmount }; - orderCost.PlatformCommissionAmount = dbOrder.OrderSellerPrice * orderCost.PlatformCommissionRatio; - orderCost.Profit = (orderCost.SDCommissionAmount + orderCost.DeliveryExpressFreight + orderCost.PlatformCommissionAmount) * -1; + //orderCost.PlatformCommissionAmount = dbOrder.OrderSellerPrice * orderCost.PlatformCommissionRatio; + //orderCost.Profit = (orderCost.SDCommissionAmount + orderCost.DeliveryExpressFreight + orderCost.PlatformCommissionAmount) * -1; + orderCost.CalculationSDOrderProfitAndCost(dbOrder, dbAfterSaleOrderList); insertOrderCost = fsql.Insert(orderCost); } else { orderCost.SDCommissionAmount = sdCalculationCostRequest.SDCommissionAmount; orderCost.DeliveryExpressFreight = sdCalculationCostRequest.DeliveryExpressFreight; - orderCost.Profit = (orderCost.SDCommissionAmount + orderCost.DeliveryExpressFreight + orderCost.PlatformCommissionAmount) * -1; + //orderCost.Profit = (orderCost.SDCommissionAmount + orderCost.DeliveryExpressFreight + orderCost.PlatformCommissionAmount) * -1; + orderCost.CalculationSDOrderProfitAndCost(dbOrder, dbAfterSaleOrderList); orderCost.IsManualEdited = true; updateOrderCost = fsql.Update().SetSource(orderCost); }