Browse Source

B端改价

updatebug
shanji 2 years ago
parent
commit
9e5e456d77
  1. 26
      BBWYB.Client/APIServices/OrderService.cs
  2. 4
      BBWYB.Client/APIServices/ProductService.cs
  3. 6
      BBWYB.Client/APIServices/PurchaseOrderService.cs
  4. 10
      BBWYB.Client/APIServices/PurchaseService.cs
  5. 2
      BBWYB.Client/APIServices/ShopService.cs
  6. 2
      BBWYB.Client/App.xaml.cs
  7. 2
      BBWYB.Client/GlobalContext.cs
  8. 56
      BBWYB.Client/ViewModels/Order/EditPriceViewModel.cs
  9. 13
      BBWYB.Client/ViewModels/Order/OrderViewModel.cs
  10. 53
      BBWYB.Client/Views/Order/EditPrice.xaml
  11. 30
      BBWYB.Client/Views/Order/EditPrice.xaml.cs
  12. 3
      BBWYB.Client/Views/Purchase/OnlinePurchase.xaml.cs

26
BBWYB.Client/APIServices/OrderService.cs

@ -2,6 +2,8 @@
using BBWYB.Common.Http;
using BBWYB.Common.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
namespace BBWYB.Client.APIServices
@ -27,7 +29,7 @@ namespace BBWYB.Client.APIServices
long? shopId,
bool excludeCanceled)
{
return SendRequest<OrderListResponse>(globalContext.BBYWApiHost, "api/order/getorderlist", new
return SendRequest<OrderListResponse>(globalContext.BBWYApiHost, "api/order/getorderlist", new
{
orderId,
shopId,
@ -47,7 +49,7 @@ namespace BBWYB.Client.APIServices
public ApiResponse<object> CancelOrder(string orderId, string remark)
{
return SendRequest<object>(globalContext.BBYWApiHost, "api/order/CancelOrder", new
return SendRequest<object>(globalContext.BBWYApiHost, "api/order/CancelOrder", new
{
orderId,
remark,
@ -57,5 +59,25 @@ namespace BBWYB.Client.APIServices
globalContext.User.Shop.Platform
}, null, HttpMethod.Post);
}
public ApiResponse<object> EditPrice(string orderId, IList<OrderSkuEditPrice> orderSkuList)
{
return SendRequest<object>(globalContext.BBWYApiHost, "api/order/EditPrice", new
{
orderId,
EditItems = orderSkuList.Select(osku => new
{
OrderSkuId = osku.Id,
SkuId = osku.SkuId,
Price = osku.NewPrice,
Freight = osku.FreightAmount,
Quantity = osku.ItemTotal
}),
globalContext.User.Shop.AppKey,
globalContext.User.Shop.AppSecret,
globalContext.User.Shop.AppToken,
globalContext.User.Shop.Platform
}, null, HttpMethod.Post);
}
}
}

4
BBWYB.Client/APIServices/ProductService.cs

@ -12,7 +12,7 @@ namespace BBWYB.Client.APIServices
public ApiResponse<ProductListResponse> GetProductList(string spu, string productName, string productItem, int pageIndex)
{
return SendRequest<ProductListResponse>(globalContext.BBYWApiHost,
return SendRequest<ProductListResponse>(globalContext.BBWYApiHost,
"api/product/GetProductList",
new
{
@ -31,7 +31,7 @@ namespace BBWYB.Client.APIServices
public ApiResponse<ProductSkuListResponse> GetProductSkuList(string spu, string sku)
{
return SendRequest<ProductSkuListResponse>(globalContext.BBYWApiHost,
return SendRequest<ProductSkuListResponse>(globalContext.BBWYApiHost,
"api/product/GetProductSkuList",
new
{

6
BBWYB.Client/APIServices/PurchaseOrderService.cs

@ -65,7 +65,7 @@ namespace BBWYB.Client.APIServices
public ApiResponse<PreviewOrderResponse> PreviewPurchaseOrder(Consignee consignee, IList<ProductSkuWithScheme> productSkuWithSchemeList, PurchaseOrderMode purchaseOrderMode)
{
var cargoParamGroupList = CombineCargoParamGroup(productSkuWithSchemeList);
return SendRequest<PreviewOrderResponse>(globalContext.BBYWApiHost, "api/PurchaseOrder/PreviewPurchaseOrder", new
return SendRequest<PreviewOrderResponse>(globalContext.BBWYApiHost, "api/PurchaseOrder/PreviewPurchaseOrder", new
{
purchaseOrderMode,
consignee,
@ -94,7 +94,7 @@ namespace BBWYB.Client.APIServices
string extensions)
{
var cargoParamGroupList = CombineCargoParamGroup(productSkuWithSchemeList);
return SendRequest<object>(globalContext.BBYWApiHost, "api/purchaseOrder/CreatePurchaseOrder", new
return SendRequest<object>(globalContext.BBWYApiHost, "api/purchaseOrder/CreatePurchaseOrder", new
{
purchaseOrderMode,
consignee,
@ -118,7 +118,7 @@ namespace BBWYB.Client.APIServices
/// <returns></returns>
public ApiResponse<IList<AuditPurchaseOrderResponse>> GetAuditPurchaseOrderList(IList<long> shopIdList, DateTime startDate, DateTime endDate)
{
return SendRequest<IList<AuditPurchaseOrderResponse>>(globalContext.BBYWApiHost, "Api/PurchaseOrder/GetAuditPurchaseOrderList", new
return SendRequest<IList<AuditPurchaseOrderResponse>>(globalContext.BBWYApiHost, "Api/PurchaseOrder/GetAuditPurchaseOrderList", new
{
startDate,
endDate,

10
BBWYB.Client/APIServices/PurchaseService.cs

@ -25,7 +25,7 @@ namespace BBWYB.Client.APIServices
long? schemeId = null,
Platform? purchasePlatform = null)
{
return SendRequest<IList<PurchaseSchemeResponse>>(globalContext.BBYWApiHost,
return SendRequest<IList<PurchaseSchemeResponse>>(globalContext.BBWYApiHost,
"api/PurchaseScheme/GetPurchaseSchemeList",
new
{
@ -47,7 +47,7 @@ namespace BBWYB.Client.APIServices
/// <returns></returns>
public ApiResponse<IList<Purchaser>> GetSharePurchaser(IList<string> skuIdList, long shopId)
{
return SendRequest<IList<Purchaser>>(globalContext.BBYWApiHost,
return SendRequest<IList<Purchaser>>(globalContext.BBWYApiHost,
"api/PurchaseScheme/GetSharePurchaser",
new { skuIdList, shopId },
null,
@ -56,7 +56,7 @@ namespace BBWYB.Client.APIServices
public ApiResponse<object> EditPurchaseScheme(IList<PurchaseScheme> addPurchaseSchemeList, IList<PurchaseScheme> editPurchaseSchemeList)
{
return SendRequest<object>(globalContext.BBYWApiHost,
return SendRequest<object>(globalContext.BBWYApiHost,
"api/purchasescheme/EditPurchaseScheme",
new
{
@ -69,7 +69,7 @@ namespace BBWYB.Client.APIServices
public ApiResponse<object> DeletePurchaser(string productId, string purchaserId)
{
return SendRequest<object>(globalContext.BBYWApiHost,
return SendRequest<object>(globalContext.BBWYApiHost,
"api/purchasescheme/DeletePurchaser",
new { productId, purchaserId },
null,
@ -78,7 +78,7 @@ namespace BBWYB.Client.APIServices
public ApiResponse<object> DeletePurchaseScheme(long schemeId)
{
return SendRequest<object>(globalContext.BBYWApiHost, $"api/purchasescheme/DeletePurchaseScheme/{schemeId}", null, null, HttpMethod.Delete);
return SendRequest<object>(globalContext.BBWYApiHost, $"api/purchasescheme/DeletePurchaseScheme/{schemeId}", null, null, HttpMethod.Delete);
}
}
}

2
BBWYB.Client/APIServices/ShopService.cs

@ -12,7 +12,7 @@ namespace BBWYB.Client.APIServices
public ApiResponse<long> SaveShopSetting(long shopId,
PurchaseAccount purchaseAccount)
{
return SendRequest<long>(globalContext.BBYWApiHost, "api/vender/SaveShopSetting", new
return SendRequest<long>(globalContext.BBWYApiHost, "api/vender/SaveShopSetting", new
{
shopId,
PurchaseAccountId = purchaseAccount.Id,

2
BBWYB.Client/App.xaml.cs

@ -59,7 +59,7 @@ namespace BBWYB.Client
var applicationPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var builder = new ConfigurationBuilder().SetBasePath(applicationPath).AddJsonFile("appsettings.json", false, true);
Configuration = builder.Build();
gl.BBYWApiHost = Configuration.GetSection("BBWYApiHost").Value;
gl.BBWYApiHost = Configuration.GetSection("BBWYApiHost").Value;
gl.MDSApiHost = Configuration.GetSection("MDSApiHost").Value;
IServiceCollection serviceCollection = new ServiceCollection();

2
BBWYB.Client/GlobalContext.cs

@ -24,7 +24,7 @@ namespace BBWYB.Client
//public IJdClient JdClient { get; set; }
#region APIHost
public string BBYWApiHost { get; set; }
public string BBWYApiHost { get; set; }
public string MDSApiHost { get; set; }
#endregion

56
BBWYB.Client/ViewModels/Order/EditPriceViewModel.cs

@ -1,5 +1,9 @@
using BBWYB.Client.Models;
using BBWYB.Client.APIServices;
using BBWYB.Client.Models;
using BBWYB.Client.Views.Order;
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
@ -10,21 +14,27 @@ namespace BBWYB.Client.ViewModels
{
public class EditPriceViewModel : BaseVM
{
private OrderService orderService;
public IList<OrderSkuEditPrice> OrderSkuList { get; set; }
private Order order;
private decimal freightAmount;
private bool isResponseFreightChanged;
public ICommand DistributFreightCommand { get; set; }
public ICommand SaveCommand { get; set; }
public decimal FreightAmount { get => freightAmount; set { SetProperty(ref freightAmount, value); } }
public EditPriceViewModel()
public EditPriceViewModel(OrderService orderService)
{
OrderSkuList = new ObservableCollection<OrderSkuEditPrice>();
DistributFreightCommand = new RelayCommand(DistributFreight);
SaveCommand = new RelayCommand(Save);
this.orderService = orderService;
}
private void SetData(Order order)
public void SetData(Order order)
{
this.order = order;
foreach (var orderSku in order.ItemList)
@ -67,6 +77,46 @@ namespace BBWYB.Client.ViewModels
if (!isResponseFreightChanged)
return;
isResponseFreightChanged = false;
var waitDistributFreight = FreightAmount - OrderSkuList.Where(osku => !osku.IsResponseFreightChanged).Sum(osku => osku.FreightAmount);
var waitDistributSkuList = OrderSkuList.Where(osku => osku.IsResponseFreightChanged);
var totalItemCount = waitDistributSkuList.Sum(osku => osku.ItemTotal);
foreach (var orderSku in waitDistributSkuList)
{
var quantityRatio = 1M * orderSku.ItemTotal / totalItemCount;
var currentFreightAmount = waitDistributFreight * quantityRatio;
orderSku.FreightAmount = currentFreightAmount;
orderSku.IsResponseFreightChanged = true;
}
isResponseFreightChanged = true;
}
private void Save()
{
if (FreightAmount <= 0)
{
MessageBox.Show("运费不正确", "提示");
return;
}
if (OrderSkuList.Any(osku => osku.FreightAmount <= 0 || osku.NewPrice <= 0))
{
MessageBox.Show("运费或单价不正确", "提示");
return;
}
if (Math.Abs(FreightAmount - OrderSkuList.Sum(osku => osku.FreightAmount)) > 1)
{
MessageBox.Show("运费超出误差范围", "提示");
return;
}
var response = orderService.EditPrice(this.order.Id, OrderSkuList);
if (!response.Success)
{
MessageBox.Show(response.Msg, "提示");
return;
}
WeakReferenceMessenger.Default.Send(new Message_EditPrice_Close(null));
}
}
}

13
BBWYB.Client/ViewModels/Order/OrderViewModel.cs

@ -62,6 +62,10 @@ namespace BBWYB.Client.ViewModels
public ICommand CancelOrderCommand { get; set; }
public ICommand EditPriceCommand { get; set; }
public OrderViewModel(GlobalContext globalContext, OrderService orderService)
{
OrderList = new ObservableCollection<Order>();
@ -84,6 +88,7 @@ namespace BBWYB.Client.ViewModels
});
OnlinePurchaseCommand = new RelayCommand<Order>(OnlinePurchase);
CancelOrderCommand = new RelayCommand<string>(CancelOrder);
EditPriceCommand = new RelayCommand<Order>(OpenEditPrice);
PageIndex = 1;
PageSize = 10;
EndDate = DateTime.Now;
@ -236,6 +241,14 @@ namespace BBWYB.Client.ViewModels
RefreshOrder(orderId);
});
}
private void OpenEditPrice(Order order)
{
var edit = new EditPrice(order);
if (edit.ShowDialog() == true)
{
RefreshOrder(order.Id);
}
}
}
}

53
BBWYB.Client/Views/Order/EditPrice.xaml

@ -57,6 +57,59 @@
</Grid>
</Border>
<ListBox x:Name="listbox_ordersku" Grid.Row="3" Margin="5,0" BorderBrush="{StaticResource Border.Brush}" BorderThickness="1,0,1,1"
ItemsSource="{Binding OrderSkuList}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Width="{Binding ActualWidth,ElementName=listbox_ordersku}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="300"/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="1"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="2"/>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="90"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<c:BAsyncImage UrlSource="{Binding Logo}"
Width="80" DecodePixelWidth="80"
VerticalAlignment="Top" Margin="0,5,0,5"
Cursor="Hand"/>
<StackPanel Grid.Column="1" Orientation="Vertical" Margin="0,5,0,5">
<TextBlock>
<Run Text="SKU:"/>
<Run Text="{Binding SkuId}"/>
</TextBlock>
<TextBlock TextTrimming="CharacterEllipsis">
<TextBlock.ToolTip>
<ToolTip Style="{StaticResource OrderCouponToolipStyle}">
<TextBlock Text="{Binding Title}"/>
</ToolTip>
</TextBlock.ToolTip>
<Run Text="SKU名称:"/>
<Run Text="{Binding Title}"/>
</TextBlock>
<TextBlock TextWrapping="Wrap">
<Run Text="数量:"/>
<Run Text="{Binding ItemTotal}"/>
</TextBlock>
</StackPanel>
</Grid>
<TextBlock Text="{Binding Price}" Grid.Column="1" Style="{StaticResource middleTextBlock}"/>
<c:BTextBox Text="{Binding NewPrice}" Grid.Column="2" Style="{StaticResource middleTextBlock}"/>
<c:BTextBox Text="{Binding FreightAmount}" Grid.Column="2" Style="{StaticResource middleTextBlock}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<c:BButton Content="保存" Grid.Row="4" HorizontalAlignment="Right" Margin="0,0,5,0" Width="80"/>
</Grid>

30
BBWYB.Client/Views/Order/EditPrice.xaml.cs

@ -1,4 +1,7 @@
using BBWYB.Client.Models;
using BBWYB.Client.ViewModels;
using CommunityToolkit.Mvvm.Messaging;
using CommunityToolkit.Mvvm.Messaging.Messages;
using SJ.Controls;
namespace BBWYB.Client.Views.Order
@ -11,6 +14,33 @@ namespace BBWYB.Client.Views.Order
public EditPrice(Models.Order order)
{
InitializeComponent();
(this.DataContext as EditPriceViewModel).SetData(order);
this.Loaded += EditPrice_Loaded;
this.Unloaded += EditPrice_Unloaded;
}
private void EditPrice_Unloaded(object sender, System.Windows.RoutedEventArgs e)
{
WeakReferenceMessenger.Default.UnregisterAll(this);
}
private void EditPrice_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
WeakReferenceMessenger.Default.Register<Message_EditPrice_Close>(this, (o, x) =>
{
this.Dispatcher.Invoke(() =>
{
this.DialogResult = true;
this.Close();
});
});
}
}
public class Message_EditPrice_Close : ValueChangedMessage<object>
{
public Message_EditPrice_Close(object value) : base(value)
{
}
}
}

3
BBWYB.Client/Views/Purchase/OnlinePurchase.xaml.cs

@ -30,12 +30,9 @@ namespace BBWYB.Client.Views.Purchase
{
//Messenger.Default.Register<object>(this, "OnlinePurchase_Close", (x) => this.Dispatcher.Invoke(() => this.Close()));
WeakReferenceMessenger.Default.Register<Message_OnlinePurchase_Close>(this, (o, x) =>
{
this.Dispatcher.Invoke(() =>
{
this.Dispatcher.Invoke(() => this.Close());
});
});
}
}

Loading…
Cancel
Save