Browse Source

修复订单优惠明细接口统计问题

AddValidOverTime
shanji 2 years ago
parent
commit
820e4e2921
  1. 19
      BBWY.Client/APIServices/OrderService.cs
  2. 1
      BBWY.Client/App.xaml.cs
  3. 204
      BBWY.Client/Models/APIModel/Response/Order/OrderCouponDetailResponse.cs
  4. 42
      BBWY.Client/ViewModels/Order/OrderCouponDetailViewModel.cs
  5. 9
      BBWY.Client/ViewModels/Order/OrderListViewModel.cs
  6. 10
      BBWY.Client/ViewModels/ViewModelLocator.cs
  7. 144
      BBWY.Client/Views/Order/OrderCouponDetailWindow.xaml
  8. 18
      BBWY.Client/Views/Order/OrderCouponDetailWindow.xaml.cs
  9. 6
      BBWY.Client/Views/Order/OrderListControl.xaml
  10. 4
      BBWY.Server.Business/Order/OrderBusiness.cs

19
BBWY.Client/APIServices/OrderService.cs

@ -310,5 +310,24 @@ namespace BBWY.Client.APIServices
endTime = endDate endTime = endDate
}, null, HttpMethod.Post); }, null, HttpMethod.Post);
} }
/// <summary>
/// 获取订单优惠详情
/// </summary>
/// <param name="orderId"></param>
/// <param name="shop"></param>
/// <returns></returns>
public ApiResponse<OrderCouponDetailResponse> GetOrderCouponDetail(string orderId, Shop shop)
{
return SendRequest<OrderCouponDetailResponse>(globalContext.BBYWApiHost, "api/order/GetOrderCouponDetail", new
{
orderId,
shop.ShopId,
shop.Platform,
shop.AppKey,
shop.AppSecret,
shop.AppToken
}, null, HttpMethod.Post);
}
} }
} }

1
BBWY.Client/App.xaml.cs

@ -126,6 +126,7 @@ namespace BBWY.Client
serviceCollection.AddTransient<PackServiceViewModel>(); serviceCollection.AddTransient<PackServiceViewModel>();
serviceCollection.AddTransient<PackDetailViewModel>(); serviceCollection.AddTransient<PackDetailViewModel>();
serviceCollection.AddTransient<UpdatePurchaseTaskViewModel>(); serviceCollection.AddTransient<UpdatePurchaseTaskViewModel>();
serviceCollection.AddTransient<OrderCouponDetailViewModel>();
#region 注册拳探SDK相关类 #region 注册拳探SDK相关类
serviceCollection.AddSingleton<QuanTanProductClient>(); serviceCollection.AddSingleton<QuanTanProductClient>();
#endregion #endregion

204
BBWY.Client/Models/APIModel/Response/Order/OrderCouponDetailResponse.cs

@ -0,0 +1,204 @@
using System.Collections.Generic;
namespace BBWY.Client.Models
{
public class OrderCouponDetailGroupItemResponse
{
/// <summary>
/// 发起方
/// </summary>
public string Initiator { get; set; }
/// <summary>
/// 优惠券或活动类型
/// </summary>
public string CouponOrPromotionType { get; set; }
/// <summary>
/// 优惠金额
/// </summary>
public decimal? PreferentialAmount { get; set; }
/// <summary>
/// 商家承担金额
/// </summary>
public decimal? UndertakenByMerchantAmount { get; set; }
/// <summary>
/// 平台承担金额
/// </summary>
public decimal? UndertakenByPlatformAmount { get; set; }
}
public class OrderCouponDetailGroupResponse
{
/// <summary>
/// 发起方
/// </summary>
public string Initiator { get; set; }
/// <summary>
/// 优惠明细集合
/// </summary>
public IList<OrderCouponDetailGroupItemResponse> ItemList { get; set; }
}
public class OrderCouponDetailResponse
{ /// <summary>
/// 合计优惠金额
/// </summary>
public decimal TotalPreferentialAmount { get; set; }
/// <summary>
/// 合计商家承担金额
/// </summary>
public decimal? TotalUndertakenByMerchantAmount { get; set; }
/// <summary>
/// 合计平台承担金额
/// </summary>
public decimal? TotalUndertakenByPlatformAmount { get; set; }
public IList<OrderCouponDetailGroupResponse> GroupList { get; set; }
/// <summary>
/// 合计单品金额
/// </summary>
public decimal? TotalItemPrice { get; set; }
/// <summary>
/// 合计基础优惠
/// </summary>
public decimal? TotalBaseDiscount { get; set; }
/// <summary>
/// 合计满减
/// </summary>
public decimal? TotalManJian { get; set; }
/// <summary>
/// 合计商家运费
/// </summary>
public decimal? TotalVenderFee { get; set; }
/// <summary>
/// 合计基础运费
/// </summary>
public decimal? TotalBaseFee { get; set; }
/// <summary>
/// 合计偏远运费
/// </summary>
public decimal? TotalRemoteFee { get; set; }
/// <summary>
/// 合计优惠券
/// </summary>
public decimal? TotalCoupon { get; set; }
/// <summary>
/// 合计京豆
/// </summary>
public decimal? TotalJingDou { get; set; }
/// <summary>
/// 合计余额
/// </summary>
public decimal? TotalBalance { get; set; }
/// <summary>
/// 合计超级红包
/// </summary>
public decimal? TotalSuperRedEnvelope { get; set; }
/// <summary>
/// 合计plus会员95折优惠
/// </summary>
public decimal? TotalPlus95 { get; set; }
/// <summary>
/// 合计退换货无忧
/// </summary>
public decimal? TotalTuiHuanHuoWuYou { get; set; }
/// <summary>
/// 合计全球购税费
/// </summary>
public decimal? TotalTaxFee { get; set; }
/// <summary>
/// 合计落地配服务
/// </summary>
public decimal? TotalLuoDiPeiService { get; set; }
/// <summary>
/// 合计应付金额
/// </summary>
public decimal? TotalShouldPay { get; set; }
/// <summary>
/// 合计京券
/// </summary>
public decimal? TotalJingQuan { get; set; }
/// <summary>
/// 合计东券
/// </summary>
public decimal? TotalDongQuan { get; set; }
/// <summary>
/// 合计限品类京券
/// </summary>
public decimal? TotalXianPinLeiJingQuan { get; set; }
/// <summary>
/// 合计限品类东券
/// </summary>
public decimal? TotalXianPinLeiDongQuan { get; set; }
/// <summary>
/// 合计按比例平台承担优惠券
/// </summary>
public decimal? TotalPingTaiChengDanYouHuiQuan { get; set; }
/// <summary>
/// 合计礼金优惠
/// </summary>
public decimal? TotalLiJinYouHui { get; set; }
/// <summary>
/// 合计支付营销优惠
/// </summary>
public decimal? TotalZhiFuYingXiaoYouHui { get; set; }
/// <summary>
/// 合计京东支付优惠
/// </summary>
public decimal? TotalJdZhiFuYouHui { get; set; }
/// <summary>
/// 合计全球购一般税
/// </summary>
public decimal? TotalGlobalGeneralTax { get; set; }
/// <summary>
/// 合计全球购一般包税
/// </summary>
public decimal? TotalGlobalGeneralIncludeTax { get; set; }
/// <summary>
/// 合计京享礼金
/// </summary>
public decimal? TotalJingXiangLiJin { get; set; }
/// <summary>
/// 合计跨店满减促销
/// </summary>
public decimal? TotalPromotionDiscount { get; set; }
/// <summary>
/// 合计满期赠促销
/// </summary>
public decimal? TotalExpiryGiftDiscount { get; set; }
}
}

42
BBWY.Client/ViewModels/Order/OrderCouponDetailViewModel.cs

@ -0,0 +1,42 @@
using BBWY.Client.APIServices;
using BBWY.Client.Models;
using System.Threading.Tasks;
using System.Windows;
namespace BBWY.Client.ViewModels
{
public class OrderCouponDetailViewModel : BaseVM
{
private string orderId;
private OrderService orderService;
private Shop shop;
public OrderCouponDetailViewModel(OrderService orderService)
{
this.orderService = orderService;
}
public string OrderId { get => orderId; set { Set(ref orderId, value); } }
public OrderCouponDetailResponse Coupon { get => coupon; set { Set(ref coupon, value); } }
private OrderCouponDetailResponse coupon;
public void SetData(string orderId, Shop shop)
{
this.OrderId = orderId;
this.shop = shop;
Task.Factory.StartNew(() => orderService.GetOrderCouponDetail(orderId, shop))
.ContinueWith(t =>
{
var r = t.Result;
if (!r.Success)
{
MessageBox.Show(r.Msg, "优惠券明细");
return;
}
this.Coupon = r.Data;
});
}
}
}

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

@ -135,6 +135,8 @@ namespace BBWY.Client.ViewModels
public ICommand OpenSkuDetailCommand { get; set; } public ICommand OpenSkuDetailCommand { get; set; }
public ICommand OpenOrderCouponDetailCommand { get; set; }
/// <summary> /// <summary>
/// 当前条件利润汇总 /// 当前条件利润汇总
/// </summary> /// </summary>
@ -214,6 +216,7 @@ namespace BBWY.Client.ViewModels
//EditAfterSaleOrderRefundPurchaseAmountCommand = new RelayCommand<AfterSaleOrder>(EditAfterSaleOrderRefundPurchaseAmount); //EditAfterSaleOrderRefundPurchaseAmountCommand = new RelayCommand<AfterSaleOrder>(EditAfterSaleOrderRefundPurchaseAmount);
//FindAfterSaleOrderCommand = new RelayCommand<object>(FindAfterSaleOrder); //FindAfterSaleOrderCommand = new RelayCommand<object>(FindAfterSaleOrder);
OpenSkuDetailCommand = new RelayCommand<object>(OpenSkuDetail); OpenSkuDetailCommand = new RelayCommand<object>(OpenSkuDetail);
OpenOrderCouponDetailCommand = new RelayCommand<string>(OpenOrderCouponDetail);
SearchOrderCommand.Execute(null); SearchOrderCommand.Execute(null);
} }
/// <summary> /// <summary>
@ -1106,5 +1109,11 @@ namespace BBWY.Client.ViewModels
} }
} }
private void OpenOrderCouponDetail(string orderId)
{
var w = new OrderCouponDetailWindow(orderId, globalContext.User.Shop);
w.ShowDialog();
}
} }
} }

10
BBWY.Client/ViewModels/ViewModelLocator.cs

@ -20,7 +20,7 @@ namespace BBWY.Client.ViewModels
public bool IsCreateOrderList { get; private set; } public bool IsCreateOrderList { get; private set; }
public bool IsCreateBatchPurchaseOrderList { get; private set; } public bool IsCreateBatchPurchaseOrderList { get; private set; }
@ -385,6 +385,14 @@ namespace BBWY.Client.ViewModels
} }
} }
public OrderCouponDetailViewModel OrderCouponDetailVM
{
get
{
using var s = sp.CreateScope();
return s.ServiceProvider.GetRequiredService<OrderCouponDetailViewModel>();
}
}
//public ShopSealBoxListViewModel ShopSealBoxListVM //public ShopSealBoxListViewModel ShopSealBoxListVM
//{ //{

144
BBWY.Client/Views/Order/OrderCouponDetailWindow.xaml

@ -0,0 +1,144 @@
<c:BWindow x:Class="BBWY.Client.Views.Order.OrderCouponDetailWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BBWY.Client.Views.Order"
mc:Ignorable="d"
xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls"
Title="订单优惠明细" Height="600" Width="600"
Style="{StaticResource bwstyle}"
DataContext="{Binding OrderCouponDetailVM,Source={StaticResource Locator}}"
MinButtonVisibility="Collapsed"
MaxButtonVisibility="Collapsed">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border BorderBrush="{StaticResource MainMenu.BorderBrush}"
Background="{StaticResource Border.Background}">
<TextBlock Text="{Binding OrderId,StringFormat=\{0\}优惠明细}" Style="{StaticResource middleTextBlock}"/>
</Border>
<Grid Grid.Row="1" Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="40"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<Grid Background="{StaticResource Border.Background}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="0.2*"/>
</Grid.ColumnDefinitions>
<Border Width="1" Background="{StaticResource Border.Brush}"
HorizontalAlignment="Left"/>
<Border Height="1" Grid.ColumnSpan="5" Background="{StaticResource Border.Brush}" VerticalAlignment="Top"/>
<Border Width="1" Background="{StaticResource Border.Brush}" Grid.ColumnSpan="5" HorizontalAlignment="Right"/>
<Border Width="1" Background="{StaticResource Border.Brush}" Grid.Column="1" HorizontalAlignment="Left"/>
<Border Width="1" Background="{StaticResource Border.Brush}" Grid.Column="2" HorizontalAlignment="Left"/>
<Border Width="1" Background="{StaticResource Border.Brush}" Grid.Column="3" HorizontalAlignment="Left"/>
<Border Width="1" Background="{StaticResource Border.Brush}" Grid.Column="4" HorizontalAlignment="Left"/>
<TextBlock Text="发起方(推测)" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="促销/优惠券" Style="{StaticResource middleTextBlock}" Grid.Column="1"/>
<TextBlock Text="优惠金额" Style="{StaticResource middleTextBlock}" Grid.Column="2"/>
<TextBlock Text="商家承担" Style="{StaticResource middleTextBlock}" Grid.Column="3"/>
<TextBlock Text="平台承担" Style="{StaticResource middleTextBlock}" Grid.Column="4"/>
</Grid>
<ListBox x:Name="listbox_groups"
ItemsSource="{Binding Coupon.GroupList}"
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"
Style="{StaticResource NoScrollViewListBoxStyle}"
Grid.Row="1"
BorderBrush="{StaticResource Border.Brush}"
BorderThickness="1,1,1,0">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Width="{Binding ActualWidth,ElementName=listbox_groups,Converter={StaticResource widthConverter},ConverterParameter=2}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="0.8*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Initiator}" Style="{StaticResource middleTextBlock}"/>
<Border Height="1" Background="{StaticResource Border.Brush}" VerticalAlignment="Bottom"/>
<ListBox x:Name="listbox_couponItem" Grid.Column="1"
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"
Style="{StaticResource NoScrollViewListBoxStyle}"
ItemsSource="{Binding ItemList}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Width="{Binding ActualWidth,ElementName=listbox_couponItem}"
Height="30">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border Width="1" Background="{StaticResource Border.Brush}" HorizontalAlignment="Left" Margin="-1,0,0,0"/>
<Border Width="1" Background="{StaticResource Border.Brush}" HorizontalAlignment="Left" Margin="-1,0,0,0" Grid.Column="1"/>
<Border Width="1" Background="{StaticResource Border.Brush}" HorizontalAlignment="Left" Margin="-1,0,0,0" Grid.Column="2"/>
<Border Width="1" Background="{StaticResource Border.Brush}" HorizontalAlignment="Left" Grid.Column="3"/>
<Border Height="1" Background="{StaticResource Border.Brush}" VerticalAlignment="Bottom" Grid.ColumnSpan="4"/>
<TextBlock Text="{Binding CouponOrPromotionType}" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding PreferentialAmount}" Style="{StaticResource middleTextBlock}" Grid.Column="1"/>
<TextBlock Text="{Binding UndertakenByMerchantAmount}" Style="{StaticResource middleTextBlock}" Grid.Column="2"/>
<TextBlock Text="{Binding UndertakenByPlatformAmount}" Style="{StaticResource middleTextBlock}" Grid.Column="3"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Row="2" Background="{StaticResource Border.Background}" Margin="0,-0.8,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="0.2*"/>
<ColumnDefinition Width="0.2*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="合计" Grid.ColumnSpan="2" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding Coupon.TotalPreferentialAmount}" Grid.Column="2" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding Coupon.TotalUndertakenByMerchantAmount}" Grid.Column="3" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding Coupon.TotalUndertakenByPlatformAmount}" Grid.Column="4" Style="{StaticResource middleTextBlock}"/>
<Border Width="1"
Background="{StaticResource Border.Brush}"
Grid.Column="2"
HorizontalAlignment="Left"/>
<Border Width="1"
Background="{StaticResource Border.Brush}"
Grid.Column="3"
HorizontalAlignment="Left"/>
<Border Width="1"
Background="{StaticResource Border.Brush}"
Grid.Column="4"
HorizontalAlignment="Left"/>
<Border Width="1" Background="{StaticResource Border.Brush}"
HorizontalAlignment="Left"/>
<Border Height="1" Grid.ColumnSpan="5" Background="{StaticResource Border.Brush}" VerticalAlignment="Bottom"/>
<Border Width="1" Background="{StaticResource Border.Brush}" Grid.ColumnSpan="5" HorizontalAlignment="Right"/>
</Grid>
</Grid>
</Grid>
</Grid>
</c:BWindow>

18
BBWY.Client/Views/Order/OrderCouponDetailWindow.xaml.cs

@ -0,0 +1,18 @@
using BBWY.Client.Models;
using BBWY.Client.ViewModels;
using BBWY.Controls;
namespace BBWY.Client.Views.Order
{
/// <summary>
/// OrderCouponDetailWindow.xaml 的交互逻辑
/// </summary>
public partial class OrderCouponDetailWindow : BWindow
{
public OrderCouponDetailWindow(string orderId, Shop shop)
{
InitializeComponent();
(this.DataContext as OrderCouponDetailViewModel).SetData(orderId, shop);
}
}
}

6
BBWY.Client/Views/Order/OrderListControl.xaml

@ -365,8 +365,10 @@
<Run Text="优惠金额"/> <Run Text="优惠金额"/>
<Run Text="{Binding PreferentialAmount}"/> <Run Text="{Binding PreferentialAmount}"/>
</TextBlock> </TextBlock>
<c:BButton Content="明细" Style="{StaticResource LinkButton}" Margin="5,0,0,0"
Command="{Binding DataContext.OpenOrderCouponDetailCommand,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}" CommandParameter="{Binding Id}"/>
<Path Style="{StaticResource path_question}" Width="14" Margin="5,0,0,0" Fill="{StaticResource Text.Pink}" ToolTipService.InitialShowDelay="0"> <!--<Path Style="{StaticResource path_question}" Width="14" Margin="5,0,0,0" Fill="{StaticResource Text.Pink}" ToolTipService.InitialShowDelay="0">
<Path.ToolTip> <Path.ToolTip>
<ToolTip Style="{StaticResource OrderCouponToolipStyle}"> <ToolTip Style="{StaticResource OrderCouponToolipStyle}">
<ListBox ItemsSource="{Binding OrderCouponList}" <ListBox ItemsSource="{Binding OrderCouponList}"
@ -382,7 +384,7 @@
</ListBox> </ListBox>
</ToolTip> </ToolTip>
</Path.ToolTip> </Path.ToolTip>
</Path> </Path>-->
</StackPanel> </StackPanel>
<StackPanel x:Name="sp_purchaseAmount" Orientation="Horizontal"> <StackPanel x:Name="sp_purchaseAmount" Orientation="Horizontal">

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

@ -1282,8 +1282,8 @@ namespace BBWY.Server.Business
ItemList = g.ToList() ItemList = g.ToList()
}).ToList(), }).ToList(),
TotalPreferentialAmount = itemList.Sum(x => x.PreferentialAmount ?? 0), TotalPreferentialAmount = itemList.Sum(x => x.PreferentialAmount ?? 0),
TotalUndertakenByMerchantAmount = itemList.Where(x => x.Initiator == "商家").Sum(x => x.PreferentialAmount ?? 0), TotalUndertakenByMerchantAmount = itemList.Where(x => x.Initiator == "商家").Sum(x => x.UndertakenByMerchantAmount ?? 0),
TotalUndertakenByPlatformAmount = itemList.Where(x => x.Initiator == "平台").Sum(x => x.PreferentialAmount ?? 0), TotalUndertakenByPlatformAmount = itemList.Where(x => x.Initiator == "平台").Sum(x => x.UndertakenByPlatformAmount ?? 0),
TotalBalance = couponDetailVoJToken.Value<decimal?>("totalBalance"), TotalBalance = couponDetailVoJToken.Value<decimal?>("totalBalance"),
TotalBaseDiscount = couponDetailVoJToken.Value<decimal?>("totalBaseDiscount"), TotalBaseDiscount = couponDetailVoJToken.Value<decimal?>("totalBaseDiscount"),
TotalBaseFee = couponDetailVoJToken.Value<decimal?>("totalBaseFee"), TotalBaseFee = couponDetailVoJToken.Value<decimal?>("totalBaseFee"),

Loading…
Cancel
Save