shanji 3 years ago
parent
commit
8f3ace1dd1
  1. 20
      BBWY.Client/APIServices/AfterOrderService.cs
  2. 10
      BBWY.Client/Models/APIModel/Response/AfterSaleOrder/AfterSaleOrderResponse.cs
  3. 10
      BBWY.Client/Models/AfterSaleOrder/AfterSaleOrder.cs
  4. 52
      BBWY.Client/ViewModels/Order/OrderListViewModel.cs
  5. 50
      BBWY.Client/Views/Order/EditAfterSaleOrderRefundPurchaseAmount.xaml
  6. 29
      BBWY.Client/Views/Order/EditAfterSaleOrderRefundPurchaseAmount.xaml.cs
  7. 2
      BBWY.Client/Views/Order/EditAfterSaleOrderSku.xaml
  8. 22
      BBWY.Server.API/Controllers/AfterSaleOrderController.cs
  9. 28
      BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs
  10. 11
      BBWY.Server.Model/Db/Order/AfterSaleOrder.cs
  11. 15
      BBWY.Server.Model/Dto/Request/AfterSaleOrder/EditAfterSaleOrderRefundPurchaseAmountRequest.cs

20
BBWY.Client/APIServices/AfterOrderService.cs

@ -42,7 +42,7 @@ namespace BBWY.Client.APIServices
return SendRequest<AfterSaleOrderResponse>(globalContext.BBYWApiHost, $"api/AfterSaleOrder/GetAfterSaleOrderById/{afterSaleOrderId}", null, null, HttpMethod.Get);
}
public ApiResponse<object> EditAfterSaleOrderSku(long afterSaleOrderId,
public ApiResponse<object> EditAfterSaleOrder(long afterSaleOrderId,
string orderId,
ProductResult productResult,
ServiceResult serviceResult,
@ -51,7 +51,7 @@ namespace BBWY.Client.APIServices
decimal reissueFreight,
decimal reissueProductAmount)
{
return SendRequest<object>(globalContext.BBYWApiHost, "Api/Order/EditAfterSaleOrderSku", new
return SendRequest<object>(globalContext.BBYWApiHost, "Api/AfterSaleOrder/EditAfterSaleOrder", new
{
Id = afterSaleOrderId,
orderId,
@ -63,5 +63,21 @@ namespace BBWY.Client.APIServices
reissueProductAmount
}, null, HttpMethod.Post);
}
public ApiResponse<object> EditAfterSaleOrderRefundPurchaseAmount(long afterSaleOrderId,
string orderId,
decimal refundPurchaseAmount,
string refundMerchantOrderNo,
string refundAlipayOrderNo)
{
return SendRequest<object>(globalContext.BBYWApiHost, "Api/AfterSaleOrder/EditAfterSaleOrderRefundPurchaseAmount", new
{
Id = afterSaleOrderId,
orderId,
refundPurchaseAmount,
refundMerchantOrderNo,
refundAlipayOrderNo
}, null, HttpMethod.Post);
}
}
}

10
BBWY.Client/Models/APIModel/Response/AfterSaleOrder/AfterSaleOrderResponse.cs

@ -121,5 +121,15 @@ namespace BBWY.Client.Models
public decimal AfterTotalCost { get; set; } = 0.0M;
public decimal StorageAmount { get; set; } = 0.0M;
/// <summary>
/// 退款商户订单号
/// </summary>
public string RefundMerchantOrderNo { get; set; }
/// <summary>
/// 退款支付宝订单号
/// </summary>
public string RefundAlipayOrderNo { get; set; }
}
}

10
BBWY.Client/Models/AfterSaleOrder/AfterSaleOrder.cs

@ -107,6 +107,16 @@ namespace BBWY.Client.Models
public decimal StorageAmount { get; set; } = 0.0M;
/// <summary>
/// 退款商户订单号
/// </summary>
public string RefundMerchantOrderNo { get; set; }
/// <summary>
/// 退款支付宝订单号
/// </summary>
public string RefundAlipayOrderNo { get; set; }
public object Clone()
{
return this.MemberwiseClone();

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

@ -114,13 +114,14 @@ namespace BBWY.Client.ViewModels
public ICommand EditAfterSaleOrderCommand { get; set; }
public ICommand EditAfterSaleOrderRefundPurchaseAmountCommand { get; set; }
/// <summary>
/// 当前条件利润汇总
/// </summary>
public decimal CurrentConditionsTotalProfit { get => currentConditionsTotalProfit; set { Set(ref currentConditionsTotalProfit, value); } }
public OrderListViewModel(OrderService orderService, StatisticsService statisticsService, AfterOrderService afterOrderService, GlobalContext globalContext, ChoosePurchaseSchemeViewModel choosePurchaseSchemeViewModel)
{
random = new Random();
@ -180,6 +181,7 @@ namespace BBWY.Client.ViewModels
ExportCommand = new RelayCommand(Export);
SetIncludeAfterOrderCommand = new RelayCommand(SetIncludeAfterOrder);
EditAfterSaleOrderCommand = new RelayCommand<AfterSaleOrder>(EditAfterSaleOrder);
EditAfterSaleOrderRefundPurchaseAmountCommand = new RelayCommand<AfterSaleOrder>(EditAfterSaleOrderRefundPurchaseAmount);
SearchOrderCommand.Execute(null);
}
@ -813,21 +815,20 @@ namespace BBWY.Client.ViewModels
private void EditAfterSaleOrder(AfterSaleOrder afterSaleOrder)
{
var editAfterSaleOrderSku = new EditAfterSaleOrderSku(afterSaleOrder);
editAfterSaleOrderSku.Closed += EditAfterSaleOrderSku_Closed;
editAfterSaleOrderSku.ShowDialog();
var w = new EditAfterSaleOrderSku(afterSaleOrder);
w.Closed += EditAfterSaleOrderSku_Closed;
w.ShowDialog();
}
private void EditAfterSaleOrderSku_Closed(object sender, EventArgs e)
{
var editAfterSaleOrderSku = sender as EditAfterSaleOrderSku;
if (editAfterSaleOrderSku.DialogResult != true)
var w = sender as EditAfterSaleOrderSku;
if (w.DialogResult != true)
return;
var afterSaleOrder = editAfterSaleOrderSku.SaleOrder;
var afterSaleOrder = w.SaleOrder;
IsLoading = true;
Task.Factory.StartNew(() => afterOrderService.EditAfterSaleOrderSku(afterSaleOrder.Id,
Task.Factory.StartNew(() => afterOrderService.EditAfterSaleOrder(afterSaleOrder.Id,
afterSaleOrder.OrderId,
afterSaleOrder.ProductResult.Value,
afterSaleOrder.ServiceResult.Value,
@ -846,5 +847,38 @@ namespace BBWY.Client.ViewModels
RefreshAfterOrder(afterSaleOrder.Id);
});
}
private void EditAfterSaleOrderRefundPurchaseAmount(AfterSaleOrder afterSaleOrder)
{
var w = new EditAfterSaleOrderRefundPurchaseAmount(afterSaleOrder);
w.Closed += EditAfterSaleOrderRefundPurchaseAmount_Closed;
w.ShowDialog();
}
private void EditAfterSaleOrderRefundPurchaseAmount_Closed(object sender, EventArgs e)
{
var w = sender as EditAfterSaleOrderRefundPurchaseAmount;
if (w.DialogResult != true)
return;
var afterSaleOrder = w.SaleOrder;
IsLoading = true;
Task.Factory.StartNew(() => afterOrderService.EditAfterSaleOrderRefundPurchaseAmount(afterSaleOrder.Id,
afterSaleOrder.OrderId,
afterSaleOrder.RefundPurchaseAmount.Value,
afterSaleOrder.RefundMerchantOrderNo,
afterSaleOrder.RefundAlipayOrderNo))
.ContinueWith(t =>
{
var response = t.Result;
if (!response.Success)
{
IsLoading = false;
App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "修改采购退款"));
return;
}
RefreshAfterOrder(afterSaleOrder.Id);
});
}
}
}

50
BBWY.Client/Views/Order/EditAfterSaleOrderRefundPurchaseAmount.xaml

@ -0,0 +1,50 @@
<c:BWindow x:Class="BBWY.Client.Views.Order.EditAfterSaleOrderRefundPurchaseAmount"
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:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls"
xmlns:local="clr-namespace:BBWY.Client.Views.Order"
mc:Ignorable="d"
Title="EditAfterSaleOrderRefundPurchaseAmount" Height="300" Width="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition/>
<RowDefinition Height="40"/>
</Grid.RowDefinitions>
<Border BorderThickness="0,0,0,1" BorderBrush="{StaticResource MainMenu.BorderBrush}"
Background="{StaticResource Border.Background}">
<TextBlock Text="{Binding SaleOrder.SkuId,StringFormat=\{0\} 售后信息}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<Grid Grid.Row="1" Margin="0,10,0,0">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="退款金额" HorizontalAlignment="Right" VerticalAlignment="Center"/>
<TextBlock Text="支付宝订单号" Grid.Row="1" HorizontalAlignment="Right" VerticalAlignment="Center"/>
<TextBlock Text="商户订单号" Grid.Row="2" HorizontalAlignment="Right" VerticalAlignment="Center"/>
<c:BTextBox Grid.Column="1" Width="190" HorizontalAlignment="Left" Margin="5,0,0,0"
Text="{Binding SaleOrder.RefundPurchaseAmount}"/>
<c:BTextBox Grid.Row="1" Grid.Column="1" Width="190" HorizontalAlignment="Left" Margin="5,0,0,0"
Text="{Binding SaleOrder.RefundAlipayOrderNo}"/>
<c:BTextBox Grid.Row="2" Grid.Column="1" Width="190" HorizontalAlignment="Left" Margin="5,0,0,0"
Text="{Binding SaleOrder.RefundMerchantOrderNo}"/>
<TextBlock Grid.Row="3" Grid.Column="1" Text="支付或商户订单号至少填一个" VerticalAlignment="Center" Margin="5,0,0,0"/>
</Grid>
<c:BButton x:Name="btn_Save" Content="保存" Grid.Row="2" Width="60" HorizontalAlignment="Right" Margin="0,0,8,0"
Click="btn_Save_Click"/>
</Grid>
</c:BWindow>

29
BBWY.Client/Views/Order/EditAfterSaleOrderRefundPurchaseAmount.xaml.cs

@ -0,0 +1,29 @@
using BBWY.Client.Models;
using BBWY.Controls;
using System.Windows;
namespace BBWY.Client.Views.Order
{
/// <summary>
/// EditAfterSaleOrderRefundPurchaseAmount.xaml 的交互逻辑
/// </summary>
public partial class EditAfterSaleOrderRefundPurchaseAmount : BWindow
{
public AfterSaleOrder SaleOrder { get; set; }
public EditAfterSaleOrderRefundPurchaseAmount(AfterSaleOrder afterSaleOrder)
{
InitializeComponent();
this.SaleOrder = afterSaleOrder;
this.DataContext = this;
}
private void btn_Save_Click(object sender, System.Windows.RoutedEventArgs e)
{
if (string.IsNullOrEmpty(SaleOrder.RefundAlipayOrderNo) && string.IsNullOrEmpty(SaleOrder.RefundMerchantOrderNo))
return;
this.DialogResult = true;
this.Close();
}
}
}

2
BBWY.Client/Views/Order/EditAfterSaleOrderSku.xaml

@ -38,7 +38,7 @@
<Border BorderThickness="0,0,0,1" BorderBrush="{StaticResource MainMenu.BorderBrush}"
Background="{StaticResource Border.Background}">
<TextBlock Text="{Binding SaleOrder.SkuId,StringFormat=\{0\} 售后信息}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="{Binding SaleOrder.ServiceId,StringFormat=\{0\} 售后信息}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<Grid Grid.Row="1">

22
BBWY.Server.API/Controllers/AfterSaleOrderController.cs

@ -31,9 +31,29 @@ namespace BBWY.Server.API.Controllers
/// <param name="afterSaleOrderId"></param>
/// <returns></returns>
[HttpGet]
public AfterSaleOrderResponse GetAfterSaleOrderById([FromRoute]long afterSaleOrderId)
public AfterSaleOrderResponse GetAfterSaleOrderById([FromRoute] long afterSaleOrderId)
{
return afterSaleOrderBusiness.GetAfterSaleOrderById(afterSaleOrderId);
}
/// <summary>
/// 手动更新服务单成本
/// </summary>
/// <param name="editAfterSaleOrderRequest"></param>
[HttpPost]
public void EditAfterSaleOrder(EditAfterSaleOrderRequest editAfterSaleOrderRequest)
{
afterSaleOrderBusiness.EditAfterSaleOrder(editAfterSaleOrderRequest);
}
/// <summary>
/// 手动更新退款采购成本
/// </summary>
/// <param name="request"></param>
[HttpPost]
public void EditAfterSaleOrderRefundPurchaseAmount([FromBody] EditAfterSaleOrderRefundPurchaseAmountRequest request)
{
afterSaleOrderBusiness.EditAfterSaleOrderRefundPurchaseAmount(request);
}
}
}

28
BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs

@ -49,7 +49,9 @@ namespace BBWY.Server.Business
Mobile = oc.Mobile,
ItemTotal = osku.ItemTotal.Value,
Price = osku.Price.Value,
AfterTotalCost = aso.AfterTotalCost
AfterTotalCost = aso.AfterTotalCost,
RefundAlipayOrderNo = aso.RefundAlipayOrderNo,
RefundMerchantOrderNo = aso.RefundMerchantOrderNo
};
}
@ -132,7 +134,7 @@ namespace BBWY.Server.Business
else
dbAfterSaleOrder.DeliveryExpressFreight = editAfterSaleOrderRequest.ReissueFreight; //代发单更新快递费
}
else if (dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult.)
else if (dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult. && dbOrderCostDetail != null)
{
dbAfterSaleOrder.ConsumableAmount = dbOrderCostDetail.ConsumableAmount;
dbAfterSaleOrder.DeliveryExpressFreight = dbOrderCostDetail.DeliveryExpressFreight;
@ -188,6 +190,28 @@ namespace BBWY.Server.Business
});
}
/// <summary>
/// 手动更新退款信息
/// </summary>
/// <param name="request"></param>
public void EditAfterSaleOrderRefundPurchaseAmount(EditAfterSaleOrderRefundPurchaseAmountRequest request)
{
var afterSaleOrderList = fsql.Select<AfterSaleOrder>().Where(aso => aso.OrderId == request.OrderId).ToList();
var dbAfterSaleOrder = afterSaleOrderList.FirstOrDefault(aso => aso.Id == request.Id);
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne();
var dbOrderCost = fsql.Select<OrderCost>(request.OrderId).ToOne();
dbAfterSaleOrder.RefundAlipayOrderNo = request.RefundAlipayOrderNo;
dbAfterSaleOrder.RefundMerchantOrderNo = request.RefundMerchantOrderNo;
dbAfterSaleOrder.RefundPurchaseAmount = request.RefundPurchaseAmount;
dbOrderCost.CalculationOrderProfitAndCost(dbOrder, afterSaleOrderList);
fsql.Transaction(() =>
{
fsql.Update<OrderCost>().SetSource(dbOrderCost).ExecuteAffrows();
fsql.Update<AfterSaleOrder>().SetSource(dbAfterSaleOrder).ExecuteAffrows();
});
}
}
}

11
BBWY.Server.Model/Db/Order/AfterSaleOrder.cs

@ -139,6 +139,17 @@ namespace BBWY.Server.Model.Db
[Column(DbType = "decimal(20,2)")]
public decimal StorageAmount { get; set; } = 0.0M;
/// <summary>
/// 退款商户订单号
/// </summary>
[Column(StringLength = 100)]
public string RefundMerchantOrderNo { get; set; }
/// <summary>
/// 退款支付宝订单号
/// </summary>
[Column(StringLength = 100)]
public string RefundAlipayOrderNo { get; set; }
}
}

15
BBWY.Server.Model/Dto/Request/AfterSaleOrder/EditAfterSaleOrderRefundPurchaseAmountRequest.cs

@ -0,0 +1,15 @@
namespace BBWY.Server.Model.Dto
{
public class EditAfterSaleOrderRefundPurchaseAmountRequest
{
public long Id { get; set; }
public string OrderId { get; set; }
public decimal RefundPurchaseAmount { get; set; }
public string RefundMerchantOrderNo { get; set; }
public string RefundAlipayOrderNo { get; set; }
}
}
Loading…
Cancel
Save