连坤 林 2 years ago
parent
commit
60302404a4
  1. 33
      BBWY.Client/APIServices/ServiceOrderService.cs
  2. 1
      BBWY.Client/App.xaml.cs
  3. 27
      BBWY.Client/Models/APIModel/Response/ServiceOrder/ServiceOrderItemResponse.cs
  4. 274
      BBWY.Client/ViewModels/Order/OrderListViewModel.cs
  5. 116
      BBWY.Client/ViewModels/ServiceOrder/EditServiceOrderViewModel.cs
  6. 47
      BBWY.Client/ViewModels/ServiceOrder/ServiceOrderViewModel.cs
  7. 9
      BBWY.Client/ViewModels/ViewModelLocator.cs
  8. 38
      BBWY.Client/Views/Order/OrderList.xaml
  9. 12
      BBWY.Client/Views/Order/OrderList.xaml.cs
  10. 179
      BBWY.Client/Views/ServiceOrder/EditServiceOrder.xaml
  11. 28
      BBWY.Client/Views/ServiceOrder/EditServiceOrder.xaml.cs
  12. 24
      BBWY.Client/Views/ServiceOrder/ServiceOrderList.xaml
  13. 10
      BBWY.Server.API/Controllers/ServiceOrderController.cs
  14. 3
      BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs
  15. 54
      BBWY.Server.Business/ServiceOrder/ServiceOrderBusiness.cs
  16. 33
      BBWY.Server.Business/Sync/JD/JDServiceOrderSyncBusiness.cs
  17. 30
      BBWY.Server.Model/Db/Order/Serviceorder.cs
  18. 21
      BBWY.Server.Model/Dto/Request/ServiceOrder/EditQueryServiceOrderRequest.cs
  19. 29
      BBWY.Server.Model/Dto/Response/ServiceOrder/ServiceOrderItemResponse.cs
  20. 57
      BBWY.Test/Program.cs
  21. 7
      JD.API/Controllers/PlatformSDKController.cs
  22. 2
      JD.API/appsettings.json

33
BBWY.Client/APIServices/ServiceOrderService.cs

@ -39,6 +39,37 @@ namespace BBWY.Client.APIServices
endDate endDate
}, null, HttpMethod.Post); }, null, HttpMethod.Post);
} }
}
public ApiResponse<object> EditServiceOrder(long servicePId,
string orderId,
ServiceResult? serviceResult,
decimal? sdRefundFreight,
ReturnDirection? returnDirection,
string renewalOrderId,
decimal? reissueAfterSaleAmount,
string returnCheckRemark,
StorageType? renewalType,
string renewalPurchaseOrderId,
Platform? renewalPurchasePlatform,
decimal? reissueFreight,
decimal? reissueProductAmount)
{
return SendRequest<object>(globalContext.BBYWApiHost, "Api/ServiceOrder/EditServiceOrder", new
{
servicePId,
orderId,
serviceResult,
sdRefundFreight,
returnDirection,
renewalOrderId,
reissueAfterSaleAmount,
returnCheckRemark,
renewalType,
renewalPurchaseOrderId,
renewalPurchasePlatform,
reissueFreight,
reissueProductAmount
}, null, HttpMethod.Post);
}
}
} }

1
BBWY.Client/App.xaml.cs

@ -119,6 +119,7 @@ namespace BBWY.Client
serviceCollection.AddMapper(new MappingProfile()); serviceCollection.AddMapper(new MappingProfile());
serviceCollection.AddTransient<_1688PreviewPurchaseViewModel>(); serviceCollection.AddTransient<_1688PreviewPurchaseViewModel>();
serviceCollection.AddTransient<EditServiceOrderViewModel>();
#region 注册拳探SDK相关类 #region 注册拳探SDK相关类
serviceCollection.AddSingleton<QuanTanProductClient>(); serviceCollection.AddSingleton<QuanTanProductClient>();

27
BBWY.Client/Models/APIModel/Response/ServiceOrder/ServiceOrderItemResponse.cs

@ -238,6 +238,31 @@ namespace BBWY.Client.Models
/// </summary> /// </summary>
public DateTime? QualityInspectionInStoreTime { get; set; } public DateTime? QualityInspectionInStoreTime { get; set; }
/// <summary>
/// 换新单号
/// </summary>
public string RenewalOrderId { get; set; }
/// <summary>
/// 退货检查备注
/// </summary>
public string ReturnCheckRemark { get; set; }
/// <summary>
/// 线下换新方式
/// </summary>
public StorageType? RenewalType { get; set; }
/// <summary>
/// 线下换新采购单号
/// </summary>
public string RenewalPurchaseOrderId { get; set; }
/// <summary>
/// 线下换新采购平台
/// </summary>
public Platform? RenewalPurchasePlatform { get; set; }
#region Sku #region Sku
public string Logo { get; set; } public string Logo { get; set; }
@ -251,6 +276,8 @@ namespace BBWY.Client.Models
public decimal Price { get; set; } public decimal Price { get; set; }
#endregion #endregion
public StorageType? StorageType { get; set; }
} }
public class ServiceOrderResponse public class ServiceOrderResponse

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

@ -47,7 +47,7 @@ namespace BBWY.Client.ViewModels
private bool onlyUnhandle; private bool onlyUnhandle;
private Random random; private Random random;
public GlobalContext globalContext { get; set; } public GlobalContext globalContext { get; set; }
private bool? includeAfterOrder; //private bool? includeAfterOrder;
private bool includeExceptionOrder; private bool includeExceptionOrder;
//private decimal currentConditionsTotalProfit; //private decimal currentConditionsTotalProfit;
private string searchServiceId; private string searchServiceId;
@ -90,7 +90,7 @@ namespace BBWY.Client.ViewModels
public bool ExcludeSD { get => excludeSD; set { Set(ref excludeSD, value); } } public bool ExcludeSD { get => excludeSD; set { Set(ref excludeSD, value); } }
public bool ExcludeCanceled { get => excludeCanceled; set { Set(ref excludeCanceled, value); } } public bool ExcludeCanceled { get => excludeCanceled; set { Set(ref excludeCanceled, value); } }
public bool? IncludeAfterOrder { get => includeAfterOrder; set { Set(ref includeAfterOrder, value); } } //public bool? IncludeAfterOrder { get => includeAfterOrder; set { Set(ref includeAfterOrder, value); } }
public string SearchServiceId { get => searchServiceId; set { Set(ref searchServiceId, value); } } public string SearchServiceId { get => searchServiceId; set { Set(ref searchServiceId, value); } }
/// <summary> /// <summary>
@ -128,13 +128,13 @@ namespace BBWY.Client.ViewModels
public ICommand EditVenderRemarkCommand { get; set; } public ICommand EditVenderRemarkCommand { get; set; }
public ICommand SetIncludeAfterOrderCommand { get; set; } //public ICommand SetIncludeAfterOrderCommand { get; set; }
public ICommand FindAfterSaleOrderCommand { get; set; } //public ICommand FindAfterSaleOrderCommand { get; set; }
public ICommand EditAfterSaleOrderCommand { get; set; } //public ICommand EditAfterSaleOrderCommand { get; set; }
public ICommand EditAfterSaleOrderRefundPurchaseAmountCommand { get; set; } //public ICommand EditAfterSaleOrderRefundPurchaseAmountCommand { get; set; }
public ICommand SetIncludeExceptionOrderCommand { get; set; } public ICommand SetIncludeExceptionOrderCommand { get; set; }
@ -227,11 +227,11 @@ namespace BBWY.Client.ViewModels
OutStockCommand = new RelayCommand<Order>((o) => OutStock(o)); OutStockCommand = new RelayCommand<Order>((o) => OutStock(o));
EditVenderRemarkCommand = new RelayCommand<Order>(EditVenderRemark); EditVenderRemarkCommand = new RelayCommand<Order>(EditVenderRemark);
ExportCommand = new RelayCommand(Export); ExportCommand = new RelayCommand(Export);
SetIncludeAfterOrderCommand = new RelayCommand(SetIncludeAfterOrder); //SetIncludeAfterOrderCommand = new RelayCommand(SetIncludeAfterOrder);
SetIncludeExceptionOrderCommand = new RelayCommand(SetIncludeExceptionOrder); SetIncludeExceptionOrderCommand = new RelayCommand(SetIncludeExceptionOrder);
EditAfterSaleOrderCommand = new RelayCommand<AfterSaleOrder>(EditAfterSaleOrder); //EditAfterSaleOrderCommand = new RelayCommand<AfterSaleOrder>(EditAfterSaleOrder);
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);
SearchOrderCommand.Execute(null); SearchOrderCommand.Execute(null);
} }
@ -254,7 +254,7 @@ namespace BBWY.Client.ViewModels
StartDate = DateTime.Now.Date; StartDate = DateTime.Now.Date;
} }
PageIndex = 1; PageIndex = 1;
IncludeAfterOrder = null; //IncludeAfterOrder = null;
IncludeExceptionOrder = false; IncludeExceptionOrder = false;
} }
@ -300,23 +300,23 @@ namespace BBWY.Client.ViewModels
Task.Factory.StartNew(() => LoadOrder(1)); Task.Factory.StartNew(() => LoadOrder(1));
} }
public void SetIncludeAfterOrder() //public void SetIncludeAfterOrder()
{ //{
InitSearchParam(); // InitSearchParam();
IncludeAfterOrder = true; // IncludeAfterOrder = true;
Task.Factory.StartNew(() => LoadOrder(1)); // Task.Factory.StartNew(() => LoadOrder(1));
} //}
public void SetIncludeAfterOrder(string orderId, string skuId, DateTime startDate, DateTime endDate) //public void SetIncludeAfterOrder(string orderId, string skuId, DateTime startDate, DateTime endDate)
{ //{
InitSearchParam(); // InitSearchParam();
SearchOrderId = orderId; // SearchOrderId = orderId;
SearchSku = skuId; // SearchSku = skuId;
StartDate = startDate; // StartDate = startDate;
EndDate = endDate; // EndDate = endDate;
IncludeAfterOrder = true; // IncludeAfterOrder = true;
Task.Factory.StartNew(() => LoadOrder(1)); // Task.Factory.StartNew(() => LoadOrder(1));
} //}
public void RefreshOrder(string orderId, bool isRemoveOrder = false) public void RefreshOrder(string orderId, bool isRemoveOrder = false)
{ {
@ -389,10 +389,10 @@ namespace BBWY.Client.ViewModels
/// <param name="pageIndex"></param> /// <param name="pageIndex"></param>
private void LoadOrder(int pageIndex) private void LoadOrder(int pageIndex)
{ {
if (IncludeAfterOrder == true) //if (IncludeAfterOrder == true)
LoadAfterSaleOrder(pageIndex); // LoadAfterSaleOrder(pageIndex);
else //else
LoadNormalOrder(pageIndex); LoadNormalOrder(pageIndex);
if (!IsSDGroup) if (!IsSDGroup)
{ {
@ -401,7 +401,7 @@ namespace BBWY.Client.ViewModels
} }
else else
{ {
Task.Factory.StartNew(() => LoadSDGroupPersonStatistics()); Task.Factory.StartNew(() => LoadSDGroupPersonStatistics());
} }
} }
@ -437,7 +437,7 @@ namespace BBWY.Client.ViewModels
var orderList = response.Data.Items.Map<IList<Order>>(); var orderList = response.Data.Items.Map<IList<Order>>();
App.Current.Dispatcher.Invoke(() => App.Current.Dispatcher.Invoke(() =>
{ {
OrderList.Clear(); OrderList.Clear();
foreach (var order in orderList) foreach (var order in orderList)
{ {
@ -861,22 +861,22 @@ namespace BBWY.Client.ViewModels
var manualEditCostOrderSkuList = manualCalculationCost.ManualEditCostOrderSkuList; var manualEditCostOrderSkuList = manualCalculationCost.ManualEditCostOrderSkuList;
IsLoading = true; IsLoading = true;
Task.Factory.StartNew(() => orderService.ManualCalculationCost(orderId, Task.Factory.StartNew(() => orderService.ManualCalculationCost(orderId,
isSetStorageType, isSetStorageType,
storageType, storageType,
manualEditCostOrderSkuList, manualEditCostOrderSkuList,
globalContext.User.Shop.PlatformCommissionRatio ?? 0.05M)).ContinueWith(r => globalContext.User.Shop.PlatformCommissionRatio ?? 0.05M)).ContinueWith(r =>
{ {
var response = r.Result; var response = r.Result;
if (!response.Success) if (!response.Success)
{ {
IsLoading = false; IsLoading = false;
App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "手动计算成本")); App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "手动计算成本"));
return; return;
} }
//LoadOrder(PageIndex); //手动计算成功刷新订单列表 //LoadOrder(PageIndex); //手动计算成功刷新订单列表
RefreshOrder(orderId, isSetStorageType); RefreshOrder(orderId, isSetStorageType);
}); });
} }
private void OutStock(Order o) private void OutStock(Order o)
@ -919,15 +919,15 @@ namespace BBWY.Client.ViewModels
private void SyncOrder() private void SyncOrder()
{ {
IsLoading = true; IsLoading = true;
Task.Factory.StartNew(() => orderService.SyncOrder(globalContext.User.Shop.ShopId, StartDate, EndDate)).ContinueWith(r => Task.Factory.StartNew(() => orderService.SyncOrder(globalContext.User.Shop.ShopId, StartDate, EndDate)).ContinueWith(r =>
{ {
IsLoading = false; IsLoading = false;
var response = r.Result; var response = r.Result;
if (response.Success) if (response.Success)
App.Current.Dispatcher.Invoke(() => MessageBox.Show("同步任务创建成功,该任务会执行一段时间,请稍后查询订单列表观察同步结果", "同步订单")); App.Current.Dispatcher.Invoke(() => MessageBox.Show("同步任务创建成功,该任务会执行一段时间,请稍后查询订单列表观察同步结果", "同步订单"));
else else
App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "同步订单")); App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "同步订单"));
}); });
} }
private void EditVenderRemark(Order order) private void EditVenderRemark(Order order)
@ -1022,84 +1022,84 @@ namespace BBWY.Client.ViewModels
}); });
} }
private void EditAfterSaleOrder(AfterSaleOrder afterSaleOrder) //private void EditAfterSaleOrder(AfterSaleOrder afterSaleOrder)
{ //{
var w = new EditAfterSaleOrderSku(afterSaleOrder); // var w = new EditAfterSaleOrderSku(afterSaleOrder);
w.Closed += EditAfterSaleOrderSku_Closed; // w.Closed += EditAfterSaleOrderSku_Closed;
w.ShowDialog(); // w.ShowDialog();
} //}
private void EditAfterSaleOrderSku_Closed(object sender, EventArgs e) //private void EditAfterSaleOrderSku_Closed(object sender, EventArgs e)
{ //{
var w = sender as EditAfterSaleOrderSku; // var w = sender as EditAfterSaleOrderSku;
if (w.DialogResult != true) // if (w.DialogResult != true)
return; // return;
//
var afterSaleOrder = w.SaleOrder; // var afterSaleOrder = w.SaleOrder;
IsLoading = true; // IsLoading = true;
Task.Factory.StartNew(() => afterOrderService.EditAfterSaleOrder(afterSaleOrder.Id, // Task.Factory.StartNew(() => afterOrderService.EditAfterSaleOrder(afterSaleOrder.Id,
afterSaleOrder.OrderId, // afterSaleOrder.OrderId,
afterSaleOrder.ProductResult.Value, // afterSaleOrder.ProductResult.Value,
afterSaleOrder.ServiceResult.Value, // afterSaleOrder.ServiceResult.Value,
afterSaleOrder.ProductHealth.Value, // afterSaleOrder.ProductHealth.Value,
afterSaleOrder.ReissueAfterSaleAmount, // afterSaleOrder.ReissueAfterSaleAmount,
afterSaleOrder.ReissueFreight, // afterSaleOrder.ReissueFreight,
afterSaleOrder.ReissueProductAmount, // afterSaleOrder.ReissueProductAmount,
afterSaleOrder.SDRefundFreight)).ContinueWith(t => // afterSaleOrder.SDRefundFreight)).ContinueWith(t =>
{ // {
var response = t.Result; // var response = t.Result;
if (!response.Success) // if (!response.Success)
{ // {
IsLoading = false; // IsLoading = false;
App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "修改售后")); // App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "修改售后"));
return; // return;
} // }
RefreshAfterOrder(afterSaleOrder.Id); // RefreshAfterOrder(afterSaleOrder.Id);
}); // });
} //}
private void EditAfterSaleOrderRefundPurchaseAmount(AfterSaleOrder afterSaleOrder) //private void EditAfterSaleOrderRefundPurchaseAmount(AfterSaleOrder afterSaleOrder)
{ //{
var w = new EditAfterSaleOrderRefundPurchaseAmount(afterSaleOrder); // var w = new EditAfterSaleOrderRefundPurchaseAmount(afterSaleOrder);
w.Closed += EditAfterSaleOrderRefundPurchaseAmount_Closed; // w.Closed += EditAfterSaleOrderRefundPurchaseAmount_Closed;
w.ShowDialog(); // w.ShowDialog();
} //}
private void EditAfterSaleOrderRefundPurchaseAmount_Closed(object sender, EventArgs e) //private void EditAfterSaleOrderRefundPurchaseAmount_Closed(object sender, EventArgs e)
{ //{
var w = sender as EditAfterSaleOrderRefundPurchaseAmount; // var w = sender as EditAfterSaleOrderRefundPurchaseAmount;
if (w.DialogResult != true) // if (w.DialogResult != true)
return; // return;
//
var afterSaleOrder = w.SaleOrder; // var afterSaleOrder = w.SaleOrder;
IsLoading = true; // IsLoading = true;
Task.Factory.StartNew(() => afterOrderService.EditAfterSaleOrderRefundPurchaseAmount(afterSaleOrder.Id, // Task.Factory.StartNew(() => afterOrderService.EditAfterSaleOrderRefundPurchaseAmount(afterSaleOrder.Id,
afterSaleOrder.OrderId, // afterSaleOrder.OrderId,
afterSaleOrder.RefundPurchaseAmount.Value, // afterSaleOrder.RefundPurchaseAmount.Value,
afterSaleOrder.RefundMerchantOrderNo, // afterSaleOrder.RefundMerchantOrderNo,
afterSaleOrder.RefundAlipayOrderNo)) // afterSaleOrder.RefundAlipayOrderNo))
.ContinueWith(t => // .ContinueWith(t =>
{ // {
var response = t.Result; // var response = t.Result;
if (!response.Success) // if (!response.Success)
{ // {
IsLoading = false; // IsLoading = false;
App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "修改采购退款")); // App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "修改采购退款"));
return; // return;
} // }
RefreshAfterOrder(afterSaleOrder.Id); // RefreshAfterOrder(afterSaleOrder.Id);
}); // });
} //}
private void FindAfterSaleOrder(object param) //private void FindAfterSaleOrder(object param)
{ //{
var paramList = (object[])param; // var paramList = (object[])param;
var orderId = paramList[0].ToString(); // var orderId = paramList[0].ToString();
var skuId = paramList[1].ToString(); // var skuId = paramList[1].ToString();
var startDate = DateTime.Parse(paramList[2].ToString()).Date; // var startDate = DateTime.Parse(paramList[2].ToString()).Date;
var endDate = DateTime.Now.Date; // var endDate = DateTime.Now.Date;
SetIncludeAfterOrder(orderId, skuId, startDate, endDate); // SetIncludeAfterOrder(orderId, skuId, startDate, endDate);
} //}
private void OpenSkuDetail(object param) private void OpenSkuDetail(object param)
{ {

116
BBWY.Client/ViewModels/ServiceOrder/EditServiceOrderViewModel.cs

@ -0,0 +1,116 @@
using BBWY.Client.APIServices;
using BBWY.Client.Models;
using GalaSoft.MvvmLight.Command;
using HandyControl.Controls;
using System.Threading.Tasks;
using System.Windows.Input;
namespace BBWY.Client.ViewModels
{
public class EditServiceOrderViewModel : BaseVM
{
private ServiceOrderService serviceOrderService;
/// <summary>
/// 主键Id
/// </summary>
private long servicePId;
private string orderId;
private ServiceResult? serviceResult;
private decimal? sdRefundFreight;
private ReturnDirection? returnDirection;
private string renewalOrderId;
private decimal? reissueAfterSaleAmount;
private string returnCheckRemark;
private StorageType? renewalType;
private string renewalPurchaseOrderId;
private Platform? renewalPurchasePlatform;
private decimal? reissueFreight;
private decimal? reissueProductAmount;
private bool isLoading;
public ServiceResult? ServiceResult { get => serviceResult; set { Set(ref serviceResult, value); } }
public decimal? SDRefundFreight { get => sdRefundFreight; set { Set(ref sdRefundFreight, value); } }
public ReturnDirection? ReturnDirection { get => returnDirection; set { Set(ref returnDirection, value); } }
public string RenewalOrderId { get => renewalOrderId; set { Set(ref renewalOrderId, value); } }
/// <summary>
/// 售后补发成本
/// </summary>
public decimal? ReissueAfterSaleAmount { get => reissueAfterSaleAmount; set { Set(ref reissueAfterSaleAmount, value); } }
/// <summary>
/// 退货检查备注
/// </summary>
public string ReturnCheckRemark { get => returnCheckRemark; set { Set(ref returnCheckRemark, value); } }
public StorageType? RenewalType { get => renewalType; set { Set(ref renewalType, value); } }
public string RenewalPurchaseOrderId { get => renewalPurchaseOrderId; set { Set(ref renewalPurchaseOrderId, value); } }
public Platform? RenewalPurchasePlatform { get => renewalPurchasePlatform; set { Set(ref renewalPurchasePlatform, value); } }
public ICommand SaveCommand { get; set; }
public decimal? ReissueFreight { get => reissueFreight; set { Set(ref reissueFreight, value); } }
public decimal? ReissueProductAmount { get => reissueProductAmount; set { Set(ref reissueProductAmount, value); } }
public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } }
public EditServiceOrderViewModel(ServiceOrderService serviceOrderService)
{
this.serviceOrderService = serviceOrderService;
SaveCommand = new RelayCommand(Save);
}
public void SetData(ServiceOrder serviceOrder)
{
this.servicePId = serviceOrder.Id;
this.orderId = serviceOrder.OrderId;
this.ServiceResult = serviceOrder.ServiceResult;
this.SDRefundFreight = serviceOrder.SDRefundFreight;
this.ReturnDirection = serviceOrder.ReturnDirection;
this.RenewalOrderId = serviceOrder.RenewalOrderId;
this.ReissueAfterSaleAmount = serviceOrder.ReissueAfterSaleAmount;
this.ReturnCheckRemark = serviceOrder.ReturnCheckRemark;
this.RenewalType = serviceOrder.RenewalType;
this.RenewalPurchaseOrderId = serviceOrder.RenewalPurchaseOrderId;
this.RenewalPurchasePlatform = serviceOrder.RenewalPurchasePlatform;
this.ReissueFreight = serviceOrder.ReissueFreight;
this.ReissueProductAmount = serviceOrder.ReissueProductAmount;
}
private void Save()
{
if (IsLoading)
return;
IsLoading = true;
Task.Factory.StartNew(() => serviceOrderService.EditServiceOrder(servicePId,
orderId,
ServiceResult,
SDRefundFreight,
ReturnDirection,
RenewalOrderId,
ReissueAfterSaleAmount,
ReturnCheckRemark,
RenewalType,
RenewalPurchaseOrderId,
RenewalPurchasePlatform,
ReissueFreight,
ReissueProductAmount)).ContinueWith(t =>
{
IsLoading = false;
var r = t.Result;
if (!r.Success)
{
App.Current.Dispatcher.Invoke(() => MessageBox.Show(r.Msg, "提示"));
return;
}
//closeEditServiceOrder
GalaSoft.MvvmLight.Messaging.Messenger.Default.Send(true, "closeEditServiceOrder");
});
}
}
}

47
BBWY.Client/ViewModels/ServiceOrder/ServiceOrderViewModel.cs

@ -1,6 +1,7 @@
using BBWY.Client.APIServices; using BBWY.Client.APIServices;
using BBWY.Client.Helpers; using BBWY.Client.Helpers;
using BBWY.Client.Models; using BBWY.Client.Models;
using BBWY.Client.Views.ServiceOrder;
using BBWY.Common.Extensions; using BBWY.Common.Extensions;
using BBWY.Common.Http; using BBWY.Common.Http;
using BBWY.Common.Models; using BBWY.Common.Models;
@ -57,6 +58,8 @@ namespace BBWY.Client.ViewModels
public ICommand PreviewImgCommand { get; set; } public ICommand PreviewImgCommand { get; set; }
public ICommand EditServiceOrderCommand { get; set; }
public IList<ServiceOrder> ServiceOrderList { get; set; } public IList<ServiceOrder> ServiceOrderList { get; set; }
public long ServiceOrderCount { get => serviceOrderCount; set { Set(ref serviceOrderCount, value); } } public long ServiceOrderCount { get => serviceOrderCount; set { Set(ref serviceOrderCount, value); } }
@ -91,6 +94,7 @@ namespace BBWY.Client.ViewModels
NavigateToDetailCommand = new RelayCommand<string>(NavigateToDetail); NavigateToDetailCommand = new RelayCommand<string>(NavigateToDetail);
OnPageIndexChangedCommand = new RelayCommand<PageArgs>(OnPageIndexChanged); OnPageIndexChangedCommand = new RelayCommand<PageArgs>(OnPageIndexChanged);
PreviewImgCommand = new RelayCommand<string>(PreviewImg); PreviewImgCommand = new RelayCommand<string>(PreviewImg);
EditServiceOrderCommand = new RelayCommand<ServiceOrder>(OpenEditServiceOrder);
ServiceOrderList = new ObservableCollection<ServiceOrder>() { new ServiceOrder(), new ServiceOrder(), new ServiceOrder() }; ServiceOrderList = new ObservableCollection<ServiceOrder>() { new ServiceOrder(), new ServiceOrder(), new ServiceOrder() };
PageSize = 10; PageSize = 10;
GlobalContext = globalContext; GlobalContext = globalContext;
@ -159,10 +163,9 @@ namespace BBWY.Client.ViewModels
{ {
s.ProductPackage = ProductPackage.; s.ImageName = "20230317071208762563,8d58b491-7859-4187-9f43-4fd177a0f25f,b0df0763-9cf4-40ca-a1fc-57695e4b8d33"; s.ProductPackage = ProductPackage.; s.ImageName = "20230317071208762563,8d58b491-7859-4187-9f43-4fd177a0f25f,b0df0763-9cf4-40ca-a1fc-57695e4b8d33";
} }
s.Init();
#endregion #endregion
s.Init();
ServiceOrderList.Add(s); ServiceOrderList.Add(s);
} }
}); });
@ -206,7 +209,7 @@ namespace BBWY.Client.ViewModels
return; return;
} }
CallWindowsPhoto(localPath); CallWindowsPhoto(localPath);
}; };
Task.Factory.StartNew(() => downloader.DownloadFile(fullUrl, Path.GetTempPath(), fileName, null)); Task.Factory.StartNew(() => downloader.DownloadFile(fullUrl, Path.GetTempPath(), fileName, null));
} }
else else
@ -241,5 +244,43 @@ namespace BBWY.Client.ViewModels
App.Current.Dispatcher.Invoke(() => MessageBox.Show($"打开照片查看器失败 {ex.Message}")); App.Current.Dispatcher.Invoke(() => MessageBox.Show($"打开照片查看器失败 {ex.Message}"));
} }
} }
private void OpenEditServiceOrder(ServiceOrder serviceOrder)
{
var w = new EditServiceOrder(serviceOrder);
var r = w.ShowDialog();
if (r == true)
{
IsLoading = true;
Task.Factory.StartNew(() => RefreshServiceOrder(serviceOrder));
}
}
private void RefreshServiceOrder(long servicePId)
{
var order = ServiceOrderList.FirstOrDefault(s => s.Id == servicePId);
RefreshServiceOrder(order);
}
private void RefreshServiceOrder(ServiceOrder serviceOrder)
{
var serviceOrderResponse = serviceOrderService.GetList(string.Empty, string.Empty, string.Empty, serviceOrder.ServiceId, serviceOrder.ShopId, null, null, 1, 1, null, null);
IsLoading = false;
if (!serviceOrderResponse.Success)
{
Application.Current.Dispatcher.Invoke(() => MessageBox.Show(serviceOrderResponse.Msg, "刷新服务单"));
return;
}
var newServiceOrder = serviceOrderResponse.Data.Items.FirstOrDefault().Map<ServiceOrder>();
newServiceOrder.Init();
Application.Current.Dispatcher.Invoke(() =>
{
var orderIndex = ServiceOrderList.IndexOf(serviceOrder);
ServiceOrderList.Remove(serviceOrder);
ServiceOrderList.Insert(orderIndex, newServiceOrder);
});
}
} }
} }

9
BBWY.Client/ViewModels/ViewModelLocator.cs

@ -229,5 +229,14 @@ namespace BBWY.Client.ViewModels
return s.ServiceProvider.GetRequiredService<BillCorrectionViewModel>(); return s.ServiceProvider.GetRequiredService<BillCorrectionViewModel>();
} }
} }
public EditServiceOrderViewModel EditServiceOrder
{
get
{
using var s = sp.CreateScope();
return s.ServiceProvider.GetRequiredService<EditServiceOrderViewModel>();
}
}
} }
} }

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

@ -86,10 +86,10 @@
<c:BButton Content="近30天" Width="50" Height="25" Margin="5,0,0,0" <c:BButton Content="近30天" Width="50" Height="25" Margin="5,0,0,0"
Command="{Binding SetSearchDateCommand}" Command="{Binding SetSearchDateCommand}"
CommandParameter="{StaticResource d30}"/> CommandParameter="{StaticResource d30}"/>
<TextBlock Text="服务单" VerticalAlignment="Center" Margin="5,0,0,0" <!--<TextBlock Text="服务单" VerticalAlignment="Center" Margin="5,0,0,0"
Visibility="{Binding IncludeAfterOrder,ConverterParameter=true:Visible:Collapsed,Converter={StaticResource objConverter}}"/> Visibility="{Binding IncludeAfterOrder,ConverterParameter=true:Visible:Collapsed,Converter={StaticResource objConverter}}"/>-->
<c:BTextBox Width="150" Margin="5,0,0,0" Text="{Binding SearchServiceId}" WaterRemark="精确匹配" <!--<c:BTextBox Width="150" Margin="5,0,0,0" Text="{Binding SearchServiceId}" WaterRemark="精确匹配"
Visibility="{Binding IncludeAfterOrder,ConverterParameter=true:Visible:Collapsed,Converter={StaticResource objConverter}}"/> Visibility="{Binding IncludeAfterOrder,ConverterParameter=true:Visible:Collapsed,Converter={StaticResource objConverter}}"/>-->
<TextBlock Text="快递单" VerticalAlignment="Center" Margin="5,0,0,0" <TextBlock Text="快递单" VerticalAlignment="Center" Margin="5,0,0,0"
Visibility="{Binding Visibility,ElementName=listbox_order}"/> Visibility="{Binding Visibility,ElementName=listbox_order}"/>
<c:BTextBox Width="150" Margin="5,0,0,0" Text="{Binding SearchWaybill}" WaterRemark="前缀模糊匹配" <c:BTextBox Width="150" Margin="5,0,0,0" Text="{Binding SearchWaybill}" WaterRemark="前缀模糊匹配"
@ -140,17 +140,15 @@
Visibility="{Binding IsSDGroup,ConverterParameter=true:Collapsed:Visible,Converter={StaticResource objConverter}}"> Visibility="{Binding IsSDGroup,ConverterParameter=true:Collapsed:Visible,Converter={StaticResource objConverter}}">
<c:BButton.Background> <c:BButton.Background>
<MultiBinding Converter="{StaticResource mobjConverter}" <MultiBinding Converter="{StaticResource mobjConverter}"
ConverterParameter=";;false:&amp;:#8080FF:#F2F2F2:6"> ConverterParameter=";false:&amp;:#8080FF:#F2F2F2:6">
<Binding Path="OrderState"/> <Binding Path="OrderState"/>
<Binding Path="IncludeAfterOrder"/>
<Binding Path="IncludeExceptionOrder"/> <Binding Path="IncludeExceptionOrder"/>
</MultiBinding> </MultiBinding>
</c:BButton.Background> </c:BButton.Background>
<c:BButton.Foreground> <c:BButton.Foreground>
<MultiBinding Converter="{StaticResource mobjConverter}" <MultiBinding Converter="{StaticResource mobjConverter}"
ConverterParameter=";;false:&amp;:White:#4A4A4A:6"> ConverterParameter=";false:&amp;:White:#4A4A4A:6">
<Binding Path="OrderState"/> <Binding Path="OrderState"/>
<Binding Path="IncludeAfterOrder"/>
<Binding Path="IncludeExceptionOrder"/> <Binding Path="IncludeExceptionOrder"/>
</MultiBinding> </MultiBinding>
</c:BButton.Foreground> </c:BButton.Foreground>
@ -216,7 +214,7 @@
</TextBlock> </TextBlock>
</c:BButton.Content> </c:BButton.Content>
</c:BButton> </c:BButton>
<c:BButton Width="100" <!--<c:BButton Width="100"
Background="{Binding IncludeAfterOrder,Converter={StaticResource objConverter},ConverterParameter=true:#8080FF:#F2F2F2}" Background="{Binding IncludeAfterOrder,Converter={StaticResource objConverter},ConverterParameter=true:#8080FF:#F2F2F2}"
Foreground="{Binding IncludeAfterOrder,Converter={StaticResource objConverter},ConverterParameter=true:White:#4A4A4A}" Foreground="{Binding IncludeAfterOrder,Converter={StaticResource objConverter},ConverterParameter=true:White:#4A4A4A}"
Command="{Binding SetIncludeAfterOrderCommand}" Command="{Binding SetIncludeAfterOrderCommand}"
@ -226,7 +224,7 @@
<Run Text="{Binding AfterSaleOrderUnhandleCount,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}" <Run Text="{Binding AfterSaleOrderUnhandleCount,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"
Foreground="{StaticResource Text.Pink}"/> Foreground="{StaticResource Text.Pink}"/>
</TextBlock> </TextBlock>
</c:BButton> </c:BButton>-->
</StackPanel> </StackPanel>
<Border x:Name="bd_statistics" Grid.RowSpan="3" HorizontalAlignment="Right" Padding="15,0" TextBlock.Foreground="{StaticResource Text.Color}"> <Border x:Name="bd_statistics" Grid.RowSpan="3" HorizontalAlignment="Right" Padding="15,0" TextBlock.Foreground="{StaticResource Text.Color}">
@ -400,18 +398,18 @@
</StackPanel> </StackPanel>
</Border> </Border>
<Border Grid.Row="4" Background="{StaticResource Border.Background}" <Border Grid.Row="4" Background="{StaticResource Border.Background}">
Visibility="{Binding Visibility,ElementName=listbox_afterSaleOrder}">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<CheckBox Content="仅显示未处理" Margin="5,0,0,0" IsChecked="{Binding OnlyUnhandle}"/> <CheckBox Content="仅显示未处理" Margin="5,0,0,0" IsChecked="{Binding OnlyUnhandle}"/>
</StackPanel> </StackPanel>
</Border> </Border>
<local:OrderListControl x:Name="listbox_order" Grid.Row="6" Grid.RowSpan="2"
Visibility="{Binding IncludeAfterOrder,Converter={StaticResource objConverter},ConverterParameter=true:Collapsed:Visible}"/> <!--Visibility="{Binding IncludeAfterOrder,Converter={StaticResource objConverter},ConverterParameter=true:Collapsed:Visible}"-->
<local:OrderListControl x:Name="listbox_order" Grid.Row="6" Grid.RowSpan="2"/>
<Border Grid.Row="6" BorderBrush="{StaticResource Border.Brush}" BorderThickness="1,1,1,0" <!--<Border Grid.Row="6" BorderBrush="{StaticResource Border.Brush}" BorderThickness="1,1,1,0"
Background="#F2F2F2" Background="#F2F2F2"
Visibility="{Binding Visibility,ElementName=listbox_afterSaleOrder}"> Visibility="{Binding Visibility,ElementName=listbox_afterSaleOrder}">
<Grid> <Grid>
@ -598,7 +596,7 @@
<RowDefinition/> <RowDefinition/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<!--Row 1--> --><!--Row 1--><!--
<Grid Grid.ColumnSpan="2" Background="{StaticResource Border.Background}"> <Grid Grid.ColumnSpan="2" Background="{StaticResource Border.Background}">
<TextBlock Text="商品成本"/> <TextBlock Text="商品成本"/>
</Grid> </Grid>
@ -615,7 +613,7 @@
<TextBlock Text="退款采购成本"/> <TextBlock Text="退款采购成本"/>
</Grid> </Grid>
<!--Row 2--> --><!--Row 2--><!--
<Grid Grid.Row="1" Background="{StaticResource Border.Background}"> <Grid Grid.Row="1" Background="{StaticResource Border.Background}">
<TextBlock Text="商品成本"/> <TextBlock Text="商品成本"/>
</Grid> </Grid>
@ -646,7 +644,7 @@
<Grid Grid.Row="1" Grid.Column="9" Background="{StaticResource Border.Background}"> <Grid Grid.Row="1" Grid.Column="9" Background="{StaticResource Border.Background}">
<TextBlock Text="售后补偿"/> <TextBlock Text="售后补偿"/>
</Grid> </Grid>
<!--Row 3--> --><!--Row 3--><!--
<TextBlock Grid.Row="2" Text="{Binding ReissueProductAmount}" <TextBlock Grid.Row="2" Text="{Binding ReissueProductAmount}"
Visibility="{Binding ReissueProductAmount,ConverterParameter=0|0.0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/> Visibility="{Binding ReissueProductAmount,ConverterParameter=0|0.0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
@ -675,7 +673,7 @@
Visibility="{Binding RefundPurchaseAmount,ConverterParameter=0|0.0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/> Visibility="{Binding RefundPurchaseAmount,ConverterParameter=0|0.0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
<!--Line--> --><!--Line--><!--
<Border Width="1" Grid.Column="1" Grid.RowSpan="3" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/> <Border Width="1" Grid.Column="1" Grid.RowSpan="3" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" Grid.Column="7" Grid.RowSpan="3" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/> <Border Width="1" Grid.Column="7" Grid.RowSpan="3" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" Grid.Column="9" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/> <Border Width="1" Grid.Column="9" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
@ -751,7 +749,7 @@
</Grid> </Grid>
</DataTemplate> </DataTemplate>
</ListBox.ItemTemplate> </ListBox.ItemTemplate>
</ListBox> </ListBox>-->
<c:PageControl PageIndex="{Binding PageIndex}" <c:PageControl PageIndex="{Binding PageIndex}"
PageSize="{Binding PageSize}" PageSize="{Binding PageSize}"

12
BBWY.Client/Views/Order/OrderList.xaml.cs

@ -24,12 +24,12 @@ namespace BBWY.Client.Views.Order
scrollviewer_OrderList.Dispatcher.Invoke(() => scrollviewer_OrderList.ScrollToTop()); scrollviewer_OrderList.Dispatcher.Invoke(() => scrollviewer_OrderList.ScrollToTop());
}); });
Messenger.Default.Register<string>(this, "AfterSaleOrderList_ScrollToTop", (x) => //Messenger.Default.Register<string>(this, "AfterSaleOrderList_ScrollToTop", (x) =>
{ //{
if (scrollveewer_AfterSaleOrderList == null) // if (scrollveewer_AfterSaleOrderList == null)
scrollveewer_AfterSaleOrderList = listbox_afterSaleOrder.FindFirstVisualChild<ScrollViewer>(); // scrollveewer_AfterSaleOrderList = listbox_afterSaleOrder.FindFirstVisualChild<ScrollViewer>();
scrollviewer_OrderList.Dispatcher.Invoke(() => scrollveewer_AfterSaleOrderList.ScrollToTop()); // scrollviewer_OrderList.Dispatcher.Invoke(() => scrollveewer_AfterSaleOrderList.ScrollToTop());
}); //});
} }
private void OrderList_Unloaded(object sender, System.Windows.RoutedEventArgs e) private void OrderList_Unloaded(object sender, System.Windows.RoutedEventArgs e)

179
BBWY.Client/Views/ServiceOrder/EditServiceOrder.xaml

@ -0,0 +1,179 @@
<c:BWindow x:Class="BBWY.Client.Views.ServiceOrder.EditServiceOrder"
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.ServiceOrder"
mc:Ignorable="d"
xmlns:clientModel="clr-namespace:BBWY.Client.Models"
xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
Style="{StaticResource bwstyle}"
DataContext="{Binding EditServiceOrder,Source={StaticResource Locator}}"
Title="EditServiceOrder" Height="450" Width="340">
<c:BWindow.Resources>
<ObjectDataProvider x:Key="serviceResultProvider" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="clientModel:ServiceResult"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<ObjectDataProvider x:Key="returnDirectionProvider" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="clientModel:ReturnDirection"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<ObjectDataProvider x:Key="storageTypeProvider" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="clientModel:StorageType"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<ObjectDataProvider x:Key="platformProvider" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="clientModel:Platform"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</c:BWindow.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition Height="40"/>
</Grid.RowDefinitions>
<Border BorderThickness="0,0,0,1" BorderBrush="{StaticResource MainMenu.BorderBrush}"
Background="{StaticResource Border.Background}">
<TextBlock Text="售后信息" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<StackPanel Grid.Row="1" Margin="5">
<Grid Height="25">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="处理结果:" VerticalAlignment="Center" HorizontalAlignment="Right"/>
<ComboBox ItemsSource="{Binding Source={StaticResource serviceResultProvider}}"
SelectedItem="{Binding ServiceResult,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Grid.Column="1"
HorizontalAlignment="Left"
VerticalContentAlignment="Center"
Width="160"
Margin="5,0,0,0"/>
</Grid>
<Grid Height="25" Margin="0,5,0,0"
Visibility="{Binding ServiceResult,ConverterParameter=换新|线下换新|退货:Visible:Collapsed,Converter={StaticResource objConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="退货去向:" VerticalAlignment="Center" HorizontalAlignment="Right"/>
<ComboBox ItemsSource="{Binding Source={StaticResource returnDirectionProvider}}"
SelectedItem="{Binding ReturnDirection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Grid.Column="1"
HorizontalAlignment="Left"
VerticalContentAlignment="Center"
Width="160"
Margin="5,0,0,0"/>
</Grid>
<Grid Height="25" Margin="0,5,0,0"
Visibility="{Binding ServiceResult,ConverterParameter=SD退货:Visible:Collapsed,Converter={StaticResource objConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="SD退货运费:" VerticalAlignment="Center" HorizontalAlignment="Right"/>
<c:BTextBox Text="{Binding SDRefundFreight}" Width="160" Grid.Column="1" HorizontalAlignment="Left"
Height="25" Margin="5,0,0,0"/>
</Grid>
<Grid Height="25" Margin="0,5,0,0"
Visibility="{Binding ServiceResult,ConverterParameter=换新:Visible:Collapsed,Converter={StaticResource objConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="换新单号:" VerticalAlignment="Center" HorizontalAlignment="Right"/>
<c:BTextBox Text="{Binding RenewalOrderId}" Width="160" Grid.Column="1" HorizontalAlignment="Left"
Height="25" Margin="5,0,0,0"/>
</Grid>
<Grid Height="25" Margin="0,5,0,0"
Visibility="{Binding ServiceResult,ConverterParameter=换新|线下换新|退货|商品补发|原返|仅退款:Visible:Collapsed,Converter={StaticResource objConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="售后补偿:" VerticalAlignment="Center" HorizontalAlignment="Right"/>
<c:BTextBox Text="{Binding ReissueAfterSaleAmount}" Width="160" Grid.Column="1" HorizontalAlignment="Left"
Height="25" Margin="5,0,0,0"/>
</Grid>
<Grid Height="25" Margin="0,5,0,0"
Visibility="{Binding ServiceResult,ConverterParameter=线下换新:Visible:Collapsed,Converter={StaticResource objConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="换新方式:" VerticalAlignment="Center" HorizontalAlignment="Right"/>
<ComboBox ItemsSource="{Binding Source={StaticResource storageTypeProvider}}"
SelectedItem="{Binding RenewalType,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Grid.Column="1"
HorizontalAlignment="Left"
VerticalContentAlignment="Center"
Width="160"
Margin="5,0,0,0"/>
</Grid>
<Grid Height="25" Margin="0,5,0,0"
Visibility="{Binding ServiceResult,ConverterParameter=线下换新:Visible:Collapsed,Converter={StaticResource objConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
<ColumnDefinition Width="80"/>
</Grid.ColumnDefinitions>
<TextBlock Text="采购单号:" VerticalAlignment="Center" HorizontalAlignment="Right"/>
<c:BTextBox Text="{Binding RenewalPurchaseOrderId}" Width="160" Grid.Column="1" HorizontalAlignment="Left"
Height="25" Margin="5,0,0,0"/>
<ComboBox ItemsSource="{Binding Source={StaticResource platformProvider}}"
SelectedItem="{Binding RenewalPurchasePlatform,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Grid.Column="2"
HorizontalAlignment="Left"
VerticalContentAlignment="Center"
MinWidth="70"/>
</Grid>
<Grid Height="25" Margin="0,5,0,0"
Visibility="{Binding ServiceResult,ConverterParameter=商品补发:Visible:Collapsed,Converter={StaticResource objConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="补发快递费:" VerticalAlignment="Center" HorizontalAlignment="Right"/>
<c:BTextBox Text="{Binding ReissueFreight}" Width="160" Grid.Column="1" HorizontalAlignment="Left"
Height="25" Margin="5,0,0,0"/>
</Grid>
<Grid Height="25" Margin="0,5,0,0"
Visibility="{Binding ServiceResult,ConverterParameter=商品补发:Visible:Collapsed,Converter={StaticResource objConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="补发货款成本:" VerticalAlignment="Center" HorizontalAlignment="Right"/>
<c:BTextBox Text="{Binding ReissueProductAmount}" Width="160" Grid.Column="1" HorizontalAlignment="Left"
Height="25" Margin="5,0,0,0"/>
</Grid>
</StackPanel>
<Grid Grid.Row="2" Margin="5,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="退货检查备注:" Margin="0,3"/>
<TextBox Grid.Row="1" AcceptsReturn="True"
TextWrapping="Wrap" Padding="3"
Text="{Binding ReturnCheckRemark}"/>
</Grid>
<c:BButton Content="保存" Width="80" HorizontalAlignment="Right" Grid.Row="3"
Command="{Binding SaveCommand}" Margin="0,0,5,0"/>
</Grid>
</c:BWindow>

28
BBWY.Client/Views/ServiceOrder/EditServiceOrder.xaml.cs

@ -0,0 +1,28 @@
using BBWY.Client.ViewModels;
using BBWY.Controls;
namespace BBWY.Client.Views.ServiceOrder
{
/// <summary>
/// EditServiceOrder.xaml 的交互逻辑
/// </summary>
public partial class EditServiceOrder : BWindow
{
public EditServiceOrder(Models.ServiceOrder serviceOrder)
{
InitializeComponent();
(this.DataContext as EditServiceOrderViewModel).SetData(serviceOrder);
GalaSoft.MvvmLight.Messaging.Messenger.Default.Register<bool>(this, "closeEditServiceOrder", (r) =>
{
if (r)
{
this.Dispatcher.Invoke(() =>
{
this.DialogResult = true;
this.Close();
});
}
});
}
}
}

24
BBWY.Client/Views/ServiceOrder/ServiceOrderList.xaml

@ -236,7 +236,7 @@
<TextBlock VerticalAlignment="Center" Margin="10,0,0,0"> <TextBlock VerticalAlignment="Center" Margin="10,0,0,0">
<Run Text="仓储类型:"/> <Run Text="仓储类型:"/>
<Run Text="代发" Foreground="{StaticResource Text.Pink}"/> <Run Text="{Binding StorageType}" Foreground="{StaticResource Text.Pink}"/>
</TextBlock> </TextBlock>
<TextBlock Text="订单号:" Margin="10,0,0,0" VerticalAlignment="Center"/> <TextBlock Text="订单号:" Margin="10,0,0,0" VerticalAlignment="Center"/>
<c:BButton Content="{Binding OrderId}" Style="{StaticResource LinkButton}" <c:BButton Content="{Binding OrderId}" Style="{StaticResource LinkButton}"
@ -316,12 +316,12 @@
Background="Transparent" Background="Transparent"
Foreground="{StaticResource Text.Color}" Foreground="{StaticResource Text.Color}"
Grid.Column="1" Grid.Column="1"
Command="{Binding DataContext.EditAfterSaleOrderCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}" Command="{Binding DataContext.EditServiceOrderCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}"
CommandParameter="{Binding }"/> CommandParameter="{Binding }"/>
<Border Grid.Column="1" Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/> <Border Grid.Column="1" Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<TextBlock Text="{Binding WareHouseGrounpRemark}" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center" <TextBlock Text="{Binding ReturnCheckRemark}" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"
TextWrapping="Wrap"/> TextWrapping="Wrap"/>
<Border Grid.Column="2" Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/> <Border Grid.Column="2" Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
@ -397,22 +397,22 @@
<Border Grid.Column="3" Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/> <Border Grid.Column="3" Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<StackPanel Grid.Column="4" VerticalAlignment="Center" Margin="5,0,0,0" <StackPanel Grid.Column="4" VerticalAlignment="Center" Margin="5,0,0,0"
Visibility="{Binding PurchaseOrderId,ConverterParameter=#null:Collapsed:Visible,Converter={StaticResource objConverter}}"> Visibility="{Binding RenewalPurchaseOrderId,ConverterParameter=#null:Collapsed:Visible,Converter={StaticResource objConverter}}">
<TextBlock> <TextBlock>
<Run Text="采购平台:"/> <Run Text="采购平台:"/>
<Run Text="{Binding PurchasePlatform}"/> <Run Text="{Binding RenewalPurchasePlatform}"/>
</TextBlock> </TextBlock>
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<TextBlock Text="采购订单号:"/> <TextBlock Text="采购订单号:"/>
<c:BButton Content="{Binding PurchaseOrderId}" Style="{StaticResource LinkButton}" <c:BButton Content="{Binding RenewalPurchaseOrderId}" Style="{StaticResource LinkButton}"
Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}" Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}"
CommandParameter="{Binding PurchaseOrderId}" Margin="3,0,0,0"/> CommandParameter="{Binding RenewalPurchaseOrderId}" Margin="3,0,0,0"/>
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>
<Border Grid.Column="4" Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/> <Border Grid.Column="4" Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<StackPanel Orientation="Horizontal" Grid.Column="5" VerticalAlignment="Center" HorizontalAlignment="Center"> <StackPanel Orientation="Horizontal" Grid.Column="5" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,0,0,20">
<TextBlock> <TextBlock>
<Run Text="总耗损"/> <Run Text="总耗损"/>
<Run Text="{Binding AfterTotalCost}"/> <Run Text="{Binding AfterTotalCost}"/>
@ -421,6 +421,14 @@
</Path> </Path>
</StackPanel> </StackPanel>
<Border Height="1" Background="{StaticResource Border.Brush}" Grid.Column="5" VerticalAlignment="Bottom" Margin="0,0,0,27"/>
<c:BButton Content="设置" VerticalAlignment="Bottom"
HorizontalAlignment="Stretch"
Background="Transparent"
Foreground="{StaticResource Text.Color}"
Grid.Column="5"
Command="{Binding DataContext.EditServiceOrderCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}"
CommandParameter="{Binding }"/>
<Border Grid.Column="5" Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/> <Border Grid.Column="5" Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>

10
BBWY.Server.API/Controllers/ServiceOrderController.cs

@ -24,5 +24,15 @@ namespace BBWY.Server.API.Controllers
{ {
return serviceOrderBusiness.GetList(request); return serviceOrderBusiness.GetList(request);
} }
/// <summary>
/// 修改服务单
/// </summary>
/// <param name="request"></param>
[HttpPost]
public void EditServiceOrder([FromBody] EditQueryServiceOrderRequest request)
{
serviceOrderBusiness.EditServiceOrder(request);
}
} }
} }

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

@ -152,7 +152,8 @@ namespace BBWY.Server.Business
if (dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult. || if (dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult. ||
dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult. || dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult. ||
dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult.线) dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult.线)
{ if (dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult.) {
if (dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult.)
dbAfterSaleOrder.ProductHealth = Model.Enums.ProductHealth.退; dbAfterSaleOrder.ProductHealth = Model.Enums.ProductHealth.退;
dbAfterSaleOrder.ReissueProductAmount = editAfterSaleOrderRequest.ReissueProductAmount; dbAfterSaleOrder.ReissueProductAmount = editAfterSaleOrderRequest.ReissueProductAmount;

54
BBWY.Server.Business/ServiceOrder/ServiceOrderBusiness.cs

@ -12,24 +12,27 @@ namespace BBWY.Server.Business
{ {
public ServiceOrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) public ServiceOrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator)
{ {
} }
public ServiceOrderResponse GetList(ClientQueryServiceOrderRequest request) public ServiceOrderResponse GetList(ClientQueryServiceOrderRequest request)
{ {
var list = fsql.Select<ServiceOrder, OrderSku>().InnerJoin((s, osku) => s.OrderId == osku.OrderId && s.SkuId == osku.SkuId) var list = fsql.Select<ServiceOrder, Order, OrderSku>()
.Where((s, osku) => s.ShopId == request.ShopId) .InnerJoin((s, o, osku) => s.OrderId == o.Id)
.WhereIf(!string.IsNullOrEmpty(request.Sku), (s, osku) => s.SkuId == request.Sku) .InnerJoin((s, o, osku) => s.OrderId == osku.OrderId && s.SkuId == osku.SkuId)
.WhereIf(!string.IsNullOrEmpty(request.Spu), (s, osku) => s.ProductId == request.Spu) .Where((s, o, osku) => s.ShopId == request.ShopId)
.WhereIf(!string.IsNullOrEmpty(request.OrderId), (s, osku) => s.OrderId == request.OrderId) .WhereIf(!string.IsNullOrEmpty(request.Sku), (s, o, osku) => s.SkuId == request.Sku)
.WhereIf(!string.IsNullOrEmpty(request.ServiceId), (s, osku) => s.ServiceId == request.ServiceId) .WhereIf(!string.IsNullOrEmpty(request.Spu), (s, o, osku) => s.ProductId == request.Spu)
.WhereIf(request.ServiceOrderState != null, (s, osku) => s.Status == request.ServiceOrderState) .WhereIf(!string.IsNullOrEmpty(request.OrderId), (s, o, osku) => s.OrderId == request.OrderId)
.WhereIf(request.ReturnDirection != null, (s, osku) => s.ReturnDirection == request.ReturnDirection) .WhereIf(!string.IsNullOrEmpty(request.ServiceId), (s, o, osku) => s.ServiceId == request.ServiceId)
.WhereIf(request.StartDate != null, (s, osku) => s.ApplyTime >= request.StartDate) .WhereIf(request.ServiceOrderState != null, (s, o, osku) => s.Status == request.ServiceOrderState)
.WhereIf(request.EndDate != null, (s, osku) => s.ApplyTime <= request.EndDate) .WhereIf(request.ReturnDirection != null, (s, o, osku) => s.ReturnDirection == request.ReturnDirection)
.OrderByDescending((s, osku) => s.ApplyTime) .WhereIf(request.StartDate != null, (s, o, osku) => s.ApplyTime >= request.StartDate)
.WhereIf(request.EndDate != null, (s, o, osku) => s.ApplyTime <= request.EndDate)
.OrderByDescending((s, o, osku) => s.ApplyTime)
.Count(out var total) .Count(out var total)
.Page(request.PageIndex, request.PageSize) .Page(request.PageIndex, request.PageSize)
.ToList((s, osku) => new ServiceOrderItemResponse .ToList((s, o, osku) => new ServiceOrderItemResponse
{ {
Id = s.Id, Id = s.Id,
ApplyTime = s.ApplyTime, ApplyTime = s.ApplyTime,
@ -50,6 +53,8 @@ namespace BBWY.Server.Business
Status = s.Status, Status = s.Status,
ServiceId = s.ServiceId, ServiceId = s.ServiceId,
ShopId = s.ShopId, ShopId = s.ShopId,
RenewalOrderId = s.RenewalOrderId,
ReturnCheckRemark = s.ReturnCheckRemark,
Title = osku.Title, Title = osku.Title,
ItemTotal = osku.ItemTotal.Value, ItemTotal = osku.ItemTotal.Value,
@ -60,7 +65,9 @@ namespace BBWY.Server.Business
ServiceOrderRemark = s.ServiceOrderRemark, ServiceOrderRemark = s.ServiceOrderRemark,
StatusUpdateTime = s.StatusUpdateTime, StatusUpdateTime = s.StatusUpdateTime,
PurchaseOrderId = s.PurchaseOrderId, PurchaseOrderId = s.PurchaseOrderId,
PurchasePlatform = s.PurchasePlatform PurchasePlatform = s.PurchasePlatform,
StorageType = o.StorageType
}); });
return new ServiceOrderResponse() return new ServiceOrderResponse()
{ {
@ -68,5 +75,26 @@ namespace BBWY.Server.Business
Items = list Items = list
}; };
} }
public void EditServiceOrder(EditQueryServiceOrderRequest request)
{
fsql.Transaction(() =>
{
fsql.Update<ServiceOrder>(request.ServicePId).Set(s => s.ServiceResult, request.ServiceResult)
.Set(s => s.SDRefundFreight, request.SDRefundFreight)
.Set(s => s.ReturnDirection, request.ReturnDirection)
.Set(s => s.RenewalOrderId, request.RenewalOrderId)
.Set(s => s.ReissueAfterSaleAmount, request.ReissueAfterSaleAmount)
.Set(s => s.ReturnCheckRemark, request.ReturnCheckRemark)
.Set(s => s.RenewalType, request.RenewalType)
.Set(s => s.RenewalPurchaseOrderId, request.RenewalPurchaseOrderId)
.Set(s => s.RenewalPurchasePlatform, request.RenewalPurchasePlatform)
.Set(s => s.ReissueFreight, request.ReissueFreight)
.Set(s => s.ReissueProductAmount, request.ReissueProductAmount)
.ExecuteAffrows();
});
}
} }
} }

33
BBWY.Server.Business/Sync/JD/JDServiceOrderSyncBusiness.cs

@ -514,15 +514,24 @@ huitongkuaidi 百世快递
if (expressOrder == null) if (expressOrder == null)
throw new Exception($"快递单号{waybillNo} 未找到对应的快递单"); throw new Exception($"快递单号{waybillNo} 未找到对应的快递单");
if (expressOrder.TransportStatus == Enums.TransportState.) //已入库
return;
IUpdate<ExpressOrder> updateExpressOrder = null; DateTime? signTime = null;
List<IUpdate<ServiceOrder>> updateServiceOrderList = new List<IUpdate<ServiceOrder>>(); if (expressOrder.TransportStatus == Enums.TransportState.)
{
if (kuaiDi100PushStateList_qianshou.Contains(state) && expressOrder.SignTime == null)
{
signTime = GetSignTime(jobject);
fsql.Update<ExpressOrder>(expressOrder.Id).Set(e => e.SignTime, signTime)
.Set(e => e.UpdateTime, DateTime.Now)
.ExecuteAffrows();
}
return;
}
var isUpdate = false; var isUpdate = false;
Enums.TransportState? newStatus = null; Enums.TransportState? newStatus = null;
DateTime? signTime = null; IUpdate<ExpressOrder> updateExpressOrder = null;
List<IUpdate<ServiceOrder>> updateServiceOrderList = new List<IUpdate<ServiceOrder>>();
if (kuaiDi100PushStateList_zaitu.Contains(state) || kuaiDi100PushStateList_lanshou.Contains(state)) if (kuaiDi100PushStateList_zaitu.Contains(state) || kuaiDi100PushStateList_lanshou.Contains(state))
{ {
@ -539,10 +548,7 @@ huitongkuaidi 百世快递
{ {
isUpdate = true; isUpdate = true;
newStatus = Enums.TransportState.; newStatus = Enums.TransportState.;
signTime = GetSignTime(jobject);
var data = jobject["lastResult"]["data"].Children().FirstOrDefault(d => d.Value<int>("statusCode") == 3);
if (data != null)
signTime = DateTime.Parse(data.Value<string>("ftime"));
} }
} }
else if (kuaiDi100PushStateList_paijian.Contains(state)) else if (kuaiDi100PushStateList_paijian.Contains(state))
@ -573,5 +579,14 @@ huitongkuaidi 百世快递
}); });
} }
} }
public DateTime? GetSignTime(JObject jobject)
{
DateTime? signTime = null;
var data = jobject["lastResult"]["data"].Children().FirstOrDefault(d => kuaiDi100PushStateList_qianshou.Contains(d.Value<int>("statusCode")));
if (data != null)
signTime = DateTime.Parse(data.Value<string>("ftime"));
return signTime;
}
} }
} }

30
BBWY.Server.Model/Db/Order/Serviceorder.cs

@ -283,6 +283,36 @@ namespace BBWY.Server.Model.Db
/// </summary> /// </summary>
[Column(DbType = "datetime")] [Column(DbType = "datetime")]
public DateTime? QualityInspectionInStoreTime { get; set; } public DateTime? QualityInspectionInStoreTime { get; set; }
/// <summary>
/// 换新单号
/// </summary>
[Column(StringLength = 100)]
public string RenewalOrderId { get; set; }
/// <summary>
/// 退货检查备注
/// </summary>
[Column(StringLength = 255)]
public string ReturnCheckRemark { get; set; }
/// <summary>
/// 线下换新方式
/// </summary>
[Column(MapType = typeof(int?))]
public Enums.StorageType? RenewalType { get; set; }
/// <summary>
/// 线下换新采购单号
/// </summary>
[Column(StringLength = 50)]
public string RenewalPurchaseOrderId { get; set; }
/// <summary>
/// 线下换新采购平台
/// </summary>
[Column(MapType = typeof(int?))]
public Enums.Platform? RenewalPurchasePlatform { get; set; }
} }
} }

21
BBWY.Server.Model/Dto/Request/ServiceOrder/EditQueryServiceOrderRequest.cs

@ -0,0 +1,21 @@
namespace BBWY.Server.Model.Dto
{
public class EditQueryServiceOrderRequest
{
public long ServicePId { get; set; }
public string OrderId { get; set; }
public Enums.ServiceResult? ServiceResult { get; set; }
public decimal? SDRefundFreight { get; set; }
public Enums.ReturnDirection? ReturnDirection { get; set; }
public string RenewalOrderId { get; set; }
public decimal? ReissueAfterSaleAmount { get; set; }
public string ReturnCheckRemark { get; set; }
public Enums.StorageType? RenewalType { get; set; }
public string RenewalPurchaseOrderId { get; set; }
public Enums.Platform? RenewalPurchasePlatform { get; set; }
public decimal? ReissueFreight { get; set; }
public decimal? ReissueProductAmount { get; set; }
}
}

29
BBWY.Server.Model/Dto/Response/ServiceOrder/ServiceOrderItemResponse.cs

@ -238,6 +238,31 @@ namespace BBWY.Server.Model.Dto
/// </summary> /// </summary>
public DateTime? QualityInspectionInStoreTime { get; set; } public DateTime? QualityInspectionInStoreTime { get; set; }
/// <summary>
/// 换新单号
/// </summary>
public string RenewalOrderId { get; set; }
/// <summary>
/// 退货检查备注
/// </summary>
public string ReturnCheckRemark { get; set; }
/// <summary>
/// 线下换新方式
/// </summary>
public Enums.StorageType? RenewalType { get; set; }
/// <summary>
/// 线下换新采购单号
/// </summary>
public string RenewalPurchaseOrderId { get; set; }
/// <summary>
/// 线下换新采购平台
/// </summary>
public Enums.Platform? RenewalPurchasePlatform { get; set; }
#region Sku #region Sku
public string Logo { get; set; } public string Logo { get; set; }
@ -251,6 +276,10 @@ namespace BBWY.Server.Model.Dto
public decimal Price { get; set; } public decimal Price { get; set; }
#endregion #endregion
#region Order
public Enums.StorageType? StorageType { get; set; }
#endregion
} }
public class ServiceOrderResponse public class ServiceOrderResponse

57
BBWY.Test/Program.cs

@ -60,64 +60,7 @@ namespace BBWY.Test
var jdClient = GetJdClient(appkey, appSecret); var jdClient = GetJdClient(appkey, appSecret);
//var req = new AdsIbgUniversalJosServiceAdQueryRequest();
//req.accessPin = "可比玩具";
//req.businessType = "2";
//req.isDaily = "true";
//req.clickOrOrderDay = "0";
//req.pageSize = "100";
//req.page = "1";
//req.clickOrOrderCaliber = "1";
//req.startDay = "2023-03-10";
//req.endDay = "2023-03-10";
//req.giftFlag = "0";
//req.orderStatusCategory = "1";
//var res = jdClient.Execute(req, token, DateTime.Now.ToLocalTime());
/*
var req = new AscSyncListRequest();
req.buId = "10598776";
req.operatePin = "开发者测试";
req.operateNick = "开发者测试";
//req.serviceId = 1687549909;
//req.orderId = ;
//req.serviceStatus = ;
req.updateTimeBegin = DateTime.Parse("2023-03-01");
req.updateTimeEnd = DateTime.Now;
//req.freightUpdateDateBegin = ;
//req.freightUpdateDateEnd = ;
req.pageNumber = "1";
req.pageSize = "100";
var res = jdClient.Execute(req, token, DateTime.Now.ToLocalTime());
*/
//var req = new AscQueryViewRequest();
//req.buId = "10598776";
//req.operatePin = "开发测试";
//req.operateNick = "开发测试";
//req.serviceId = 1688379598;
//req.orderId = 262837096353;
//var res = jdClient.Execute(req, token, DateTime.Now.ToLocalTime());
////var res = jdClient.Execute(req, token, DateTime.Now.ToLocalTime());
//Console.WriteLine(JsonConvert.SerializeObject(res));
var tdeClient = new TDEClient("https://api.jd.com/routerjson", appkey, appSecret, token);
var returnWareAddress = "AATLKmlcVOJfnbZ2x4ekuBoGLTpp/eAJf9RDWWhUXsW4hRWT22+CAAuo7e08va+2KKQxGosPRWQ5t56PDp060VetknlcczPyKlymVNCdNRH2ew==";
var pickwareAddress = "AATLKmlcVOJfnbZ2x4ekuBoGSURp5cw04y0gSLeBBy/BLvilFS91R6ASk3Ft2GokuD4YtgjX4hQC8XwsEschrw9DBJQWaFUaacMYA/GyHhlpkw==";
Console.WriteLine($"returnWareAddress {tdeClient.DecryptString(returnWareAddress)}");
Console.WriteLine($"pickwareAddress {tdeClient.DecryptString(pickwareAddress)}");
Console.ReadKey(); Console.ReadKey();
} }

7
JD.API/Controllers/PlatformSDKController.cs

@ -288,6 +288,7 @@ namespace JD.API.API.Controllers
return platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.Platform).StartJDPromotionTask(request); return platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.Platform).StartJDPromotionTask(request);
} }
[HttpPost]
public void StartJDPromotionDelayTask([FromBody] StartPromotionTaskDelayRequest request) public void StartJDPromotionDelayTask([FromBody] StartPromotionTaskDelayRequest request)
{ {
platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.Platform).StartJDPromotionDelayTask(request); platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.Platform).StartJDPromotionDelayTask(request);
@ -340,7 +341,7 @@ namespace JD.API.API.Controllers
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public JArray GetServiceOrderList([FromBody] ClientQueryServiceOrderRequest request) public JArray GetServiceOrderList([FromBody] QueryServiceOrderRequest request)
{ {
return platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.Platform).GetServiceOrderList(request); return platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.Platform).GetServiceOrderList(request);
} }
@ -351,7 +352,7 @@ namespace JD.API.API.Controllers
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public JToken GetServiceOrderDetail(QueryServiceOrderDetailRequest request) public JToken GetServiceOrderDetail([FromBody] QueryServiceOrderDetailRequest request)
{ {
return platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.Platform).GetServiceOrderDetail(request); return platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.Platform).GetServiceOrderDetail(request);
} }
@ -362,7 +363,7 @@ namespace JD.API.API.Controllers
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public JToken GetServiceOrderDeliveryDetail(QueryServiceOrderDetailRequest request) public JToken GetServiceOrderDeliveryDetail([FromBody] QueryServiceOrderDetailRequest request)
{ {
return platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.Platform).GetServiceOrderDeliveryDetail(request); return platformSDKBusinessList.FirstOrDefault(p => p.Platform == request.Platform).GetServiceOrderDeliveryDetail(request);
} }

2
JD.API/appsettings.json

@ -9,7 +9,7 @@
"ConnectionStrings": { "ConnectionStrings": {
"DB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwy_test;charset=utf8;sslmode=none;", "DB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwy_test;charset=utf8;sslmode=none;",
}, },
"IsEnableSwagger": false, "IsEnableSwagger": true,
"AllowedHosts": "*", "AllowedHosts": "*",
"ValidatePlatformKey": 1 "ValidatePlatformKey": 1
} }

Loading…
Cancel
Save