shanji 3 years ago
parent
commit
8ee963092f
  1. 5
      BBWY.Client/Models/APIModel/Response/Order/OrderResponse.cs
  2. 7
      BBWY.Client/ViewModels/Order/OrderListViewModel.cs
  3. 10
      BBWY.Client/Views/Order/OrderList.xaml
  4. 1
      BBWY.Server.Business/Order/OrderBusiness.cs
  5. 12
      BBWY.Server.Business/Statistics/StatisticsBusiness.cs
  6. 8
      BBWY.Server.Model/Db/Order/Order.cs

5
BBWY.Client/Models/APIModel/Response/Order/OrderResponse.cs

@ -181,5 +181,10 @@ namespace BBWY.Client.Models
public int Count { get; set; } public int Count { get; set; }
public IList<OrderResponse> Items { get; set; } public IList<OrderResponse> Items { get; set; }
/// <summary>
/// 当前条件汇总利润
/// </summary>
public decimal CurrentConditionsTotalProfit { get; set; }
} }
} }

7
BBWY.Client/ViewModels/Order/OrderListViewModel.cs

@ -45,6 +45,7 @@ namespace BBWY.Client.ViewModels
private Random random; private Random random;
private GlobalContext globalContext; private GlobalContext globalContext;
private bool? includeAfterOrder; private bool? includeAfterOrder;
private decimal currentConditionsTotalProfit;
public IList<Order> OrderList { get; set; } public IList<Order> OrderList { get; set; }
@ -108,6 +109,11 @@ namespace BBWY.Client.ViewModels
public ICommand EditAfterSaleOrderCommand { get; set; } public ICommand EditAfterSaleOrderCommand { get; set; }
/// <summary>
/// 当前条件利润汇总
/// </summary>
public decimal CurrentConditionsTotalProfit { get => currentConditionsTotalProfit; set { Set(ref currentConditionsTotalProfit, value); } }
public OrderListViewModel(OrderService orderService, StatisticsService statisticsService, GlobalContext globalContext, ChoosePurchaseSchemeViewModel choosePurchaseSchemeViewModel) public OrderListViewModel(OrderService orderService, StatisticsService statisticsService, GlobalContext globalContext, ChoosePurchaseSchemeViewModel choosePurchaseSchemeViewModel)
{ {
random = new Random(); random = new Random();
@ -273,6 +279,7 @@ namespace BBWY.Client.ViewModels
return; return;
} }
OrderCount = response.Data.Count; OrderCount = response.Data.Count;
CurrentConditionsTotalProfit = response.Data.CurrentConditionsTotalProfit;
var orderList = response.Data.Items.Map<IList<Order>>(); var orderList = response.Data.Items.Map<IList<Order>>();
App.Current.Dispatcher.Invoke(() => App.Current.Dispatcher.Invoke(() =>
{ {

10
BBWY.Client/Views/Order/OrderList.xaml

@ -1009,13 +1009,21 @@
<c:PageControl PageIndex="{Binding PageIndex}" <c:PageControl PageIndex="{Binding PageIndex}"
PageSize="{Binding PageSize}" PageSize="{Binding PageSize}"
RecordCount="{Binding OrderCount}" RecordCount="{Binding OrderCount}"
Grid.Row="8"> Grid.Row="8"
HorizontalAlignment="Left">
<b:Interaction.Triggers> <b:Interaction.Triggers>
<b:EventTrigger EventName="OnPageIndexChanged"> <b:EventTrigger EventName="OnPageIndexChanged">
<b:InvokeCommandAction Command="{Binding OrderPageIndexChangedCommand}" PassEventArgsToCommand="True"/> <b:InvokeCommandAction Command="{Binding OrderPageIndexChangedCommand}" PassEventArgsToCommand="True"/>
</b:EventTrigger> </b:EventTrigger>
</b:Interaction.Triggers> </b:Interaction.Triggers>
</c:PageControl> </c:PageControl>
<TextBlock Grid.Row="8"
HorizontalAlignment="Right" VerticalAlignment="Center"
Margin="0,0,5,0">
<Run Text="当前条件利润汇总"/>
<Run Text="{Binding CurrentConditionsTotalProfit,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</TextBlock>
</Grid> </Grid>
</Grid> </Grid>
</Page> </Page>

1
BBWY.Server.Business/Order/OrderBusiness.cs

@ -1263,6 +1263,7 @@ namespace BBWY.Server.Business
StartTime = orderJToken.Value<DateTime>("orderStartTime"), StartTime = orderJToken.Value<DateTime>("orderStartTime"),
ModifyTime = modifyTime, ModifyTime = modifyTime,
OrderPayment = orderJToken.Value<decimal>("orderPayment"), OrderPayment = orderJToken.Value<decimal>("orderPayment"),
SellerPreferentialAmount = orderJToken.Value<decimal>("sellerDiscount"),
OrderSellerPrice = orderJToken.Value<decimal>("orderSellerPrice"), OrderSellerPrice = orderJToken.Value<decimal>("orderSellerPrice"),
OrderTotalPrice = orderJToken.Value<decimal>("orderTotalPrice"), OrderTotalPrice = orderJToken.Value<decimal>("orderTotalPrice"),
OrderType = (Enums.OrderType)orderJToken.Value<int>("orderType"), OrderType = (Enums.OrderType)orderJToken.Value<int>("orderType"),

12
BBWY.Server.Business/Statistics/StatisticsBusiness.cs

@ -55,6 +55,8 @@ namespace BBWY.Server.Business
public XingXinagSearchResponse XingXiangStatistics(XingXiangSearchOrderRequest xingXiangSearchOrderRequest) public XingXinagSearchResponse XingXiangStatistics(XingXiangSearchOrderRequest xingXiangSearchOrderRequest)
{ {
var mdsShop = freeSqlMultiDBManager.MDSfsql.Select<Shops>().Where(s => s.ShopId == xingXiangSearchOrderRequest.ShopId.ToString()).ToOne();
var platformCommissionRatio = mdsShop.PlatformCommissionRatio ?? 0.05M;
var beginTime = xingXiangSearchOrderRequest.SearchDate.Date; var beginTime = xingXiangSearchOrderRequest.SearchDate.Date;
var endTime = xingXiangSearchOrderRequest.SearchDate.Date.AddDays(1).AddSeconds(-1); var endTime = xingXiangSearchOrderRequest.SearchDate.Date.AddDays(1).AddSeconds(-1);
IList<XingXiangItemResponse> detailList = null; IList<XingXiangItemResponse> detailList = null;
@ -66,6 +68,7 @@ namespace BBWY.Server.Business
.Where((o, oc) => !invalidOrderStateList.Contains(o.OrderState.Value)) .Where((o, oc) => !invalidOrderStateList.Contains(o.OrderState.Value))
.WhereIf(xingXiangSearchOrderRequest.SpuList != null && xingXiangSearchOrderRequest.SpuList.Count() > 0, .WhereIf(xingXiangSearchOrderRequest.SpuList != null && xingXiangSearchOrderRequest.SpuList.Count() > 0,
(o, oc) => fsql.Select<OrderSku>().As("osku").Where(osku => xingXiangSearchOrderRequest.SpuList.Contains(osku.ProductId) && osku.OrderId == o.Id).Any()) (o, oc) => fsql.Select<OrderSku>().As("osku").Where(osku => xingXiangSearchOrderRequest.SpuList.Contains(osku.ProductId) && osku.OrderId == o.Id).Any())
.OrderByDescending((o, oc) => o.StartTime)
.ToList((o, oc) => new Order() .ToList((o, oc) => new Order()
{ {
Id = o.Id, Id = o.Id,
@ -78,7 +81,8 @@ namespace BBWY.Server.Business
SDCommissionAmount = oc.SDCommissionAmount, SDCommissionAmount = oc.SDCommissionAmount,
DeliveryExpressFreight = oc.DeliveryExpressFreight, DeliveryExpressFreight = oc.DeliveryExpressFreight,
PreferentialAmount = oc.PreferentialAmount, PreferentialAmount = oc.PreferentialAmount,
OrderSellerPrice = o.OrderSellerPrice OrderSellerPrice = o.OrderSellerPrice,
SellerPreferentialAmount = o.SellerPreferentialAmount
}); });
if (orderList.Count() == 0) if (orderList.Count() == 0)
@ -106,9 +110,9 @@ namespace BBWY.Server.Business
var profit = 0M; var profit = 0M;
var sdCost = 0M; var sdCost = 0M;
var prodcutAmount = group.Sum(osku => osku.Price * osku.ItemTotal) ?? 0; //货款 var prodcutAmount = group.Sum(osku => osku.Price * osku.ItemTotal) ?? 0; //货款
var preferentialAmount = order.PreferentialAmount / skuCount * group.Count(); //该SPU分摊的商家优惠金额 var skuSellerPreferentialAmount = order.SellerPreferentialAmount / skuCount * group.Count(); //该SPU分摊的商家优惠金额
prodcutAmount -= preferentialAmount; prodcutAmount -= skuSellerPreferentialAmount;
var commissionAmount = prodcutAmount * 0.05M; //该SPU的平台扣点金额 var commissionAmount = prodcutAmount * platformCommissionRatio; //该SPU的平台扣点金额
var freightPriceByUser = order.FreightPrice == 0 ? 0 : order.FreightPrice / skuCount * group.Count(); //该SPU分摊的用户承担运费 var freightPriceByUser = order.FreightPrice == 0 ? 0 : order.FreightPrice / skuCount * group.Count(); //该SPU分摊的用户承担运费
var currentOrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id && ocd.ProductId == spuId).ToList(); var currentOrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id && ocd.ProductId == spuId).ToList();
var purchaseAmount = currentOrderCostDetailList.Count() > 0 ? currentOrderCostDetailList.Sum(ocd => ocd.TotalCost) : 0; var purchaseAmount = currentOrderCostDetailList.Count() > 0 ? currentOrderCostDetailList.Sum(ocd => ocd.TotalCost) : 0;

8
BBWY.Server.Model/Db/Order/Order.cs

@ -52,11 +52,17 @@ namespace BBWY.Server.Model.Db
public decimal OrderSellerPrice { get; set; } = 0.00M; public decimal OrderSellerPrice { get; set; } = 0.00M;
/// <summary> /// <summary>
/// 商家优惠金额 /// 平台补贴
/// </summary> /// </summary>
[Column(DbType = "decimal(20,2)")] [Column(DbType = "decimal(20,2)")]
public decimal PreferentialAmount { get; set; } = 0.00M; public decimal PreferentialAmount { get; set; } = 0.00M;
/// <summary>
/// 商家优惠金额(商家承担)
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal SellerPreferentialAmount { get; set; } = 0.00M;
/// <summary> /// <summary>
/// 订单状态 /// 订单状态
/// </summary> /// </summary>

Loading…
Cancel
Save