连坤 林 2 years ago
parent
commit
3ad42e81a8
  1. 75
      BBWY.Client/APIServices/ServiceOrderService.cs
  2. 1
      BBWY.Client/App.xaml.cs
  3. 289
      BBWY.Client/Models/APIModel/Response/ServiceOrder/ServiceOrderItemResponse.cs
  4. 58
      BBWY.Client/Models/Enums.cs
  5. 1
      BBWY.Client/Models/MappingProfile.cs
  6. 21
      BBWY.Client/Models/PackTask/ConsumableModel.cs
  7. 19
      BBWY.Client/Models/PackTask/PackTaskModel.cs
  8. 37
      BBWY.Client/Models/ServiceOrder/ServiceOrder.cs
  9. 3
      BBWY.Client/ViewModels/MainViewModel.cs
  10. 218
      BBWY.Client/ViewModels/Order/OrderListViewModel.cs
  11. 2
      BBWY.Client/ViewModels/PackTask/ConsumableViewModel.cs
  12. 6
      BBWY.Client/ViewModels/PackTask/TaskListViewModel.cs
  13. 20
      BBWY.Client/ViewModels/PackTask/WareHouseListViewModel.cs
  14. 116
      BBWY.Client/ViewModels/ServiceOrder/EditServiceOrderViewModel.cs
  15. 286
      BBWY.Client/ViewModels/ServiceOrder/ServiceOrderViewModel.cs
  16. 23
      BBWY.Client/ViewModels/ViewModelLocator.cs
  17. 950
      BBWY.Client/Views/Order/OrderList.xaml
  18. 12
      BBWY.Client/Views/Order/OrderList.xaml.cs
  19. 2
      BBWY.Client/Views/PackTask/Consumable.xaml
  20. 4
      BBWY.Client/Views/PackTask/LookCerWindow.xaml
  21. 1
      BBWY.Client/Views/PackTask/PersonList.xaml
  22. 58
      BBWY.Client/Views/PackTask/PrintWindow.xaml.cs
  23. 4
      BBWY.Client/Views/PackTask/ServiceWindow.xaml
  24. 179
      BBWY.Client/Views/ServiceOrder/EditServiceOrder.xaml
  25. 28
      BBWY.Client/Views/ServiceOrder/EditServiceOrder.xaml.cs
  26. 478
      BBWY.Client/Views/ServiceOrder/ServiceOrderList.xaml
  27. 26
      BBWY.Client/Views/ServiceOrder/ServiceOrderList.xaml.cs
  28. 20
      BBWY.Server.API/Controllers/OrderSyncController.cs
  29. 38
      BBWY.Server.API/Controllers/ServiceOrderController.cs
  30. 21
      BBWY.Server.API/Controllers/ServiceOrderSyncController.cs
  31. 3
      BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs
  32. 6
      BBWY.Server.Business/BBWY.Server.Business.csproj
  33. 2
      BBWY.Server.Business/PlatformSDK/LogisticsCompanyConverter.cs
  34. 2
      BBWY.Server.Business/PlatformSDK/PlatformSDKBusiness.cs
  35. 100
      BBWY.Server.Business/ServiceOrder/ServiceOrderBusiness.cs
  36. 186
      BBWY.Server.Business/Sync/JD/JDServiceOrderSyncBusiness.cs
  37. 124
      BBWY.Server.Business/Sync/OrderSyncBusiness.cs
  38. 4
      BBWY.Server.Business/TaskSchedulerManager.cs
  39. 6
      BBWY.Server.Model/Db/Order/ExpressOrder.cs
  40. 97
      BBWY.Server.Model/Db/Order/Serviceorder.cs
  41. 21
      BBWY.Server.Model/Db/Order/WaitPayOrder.cs
  42. 30
      BBWY.Server.Model/Dto/Request/ServiceOrder/ClientQueryServiceOrderRequest.cs
  43. 21
      BBWY.Server.Model/Dto/Request/ServiceOrder/EditQueryServiceOrderRequest.cs
  44. 2
      BBWY.Server.Model/Dto/Request/Sync/OrderPublishRequest.cs
  45. 291
      BBWY.Server.Model/Dto/Response/ServiceOrder/ServiceOrderItemResponse.cs
  46. 58
      BBWY.Server.Model/Enums.cs
  47. 72
      BBWY.Test/Program.cs
  48. 5
      JD.API/Controllers/PlatformSDKController.cs
  49. 2
      JD.API/appsettings.json

75
BBWY.Client/APIServices/ServiceOrderService.cs

@ -0,0 +1,75 @@
using BBWY.Client.Models;
using BBWY.Common.Http;
using BBWY.Common.Models;
using System;
using System.Net.Http;
namespace BBWY.Client.APIServices
{
public class ServiceOrderService : BaseApiService, IDenpendency
{
public ServiceOrderService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext)
{
}
public ApiResponse<ServiceOrderResponse> GetList(string orderId,
string sku,
string spu,
string serviceId,
string shopId,
ServiceOrderState? serviceOrderState,
ReturnDirection? returnDirection,
int pageIndex,
int pageSize,
DateTime? startDate,
DateTime? endDate)
{
return SendRequest<ServiceOrderResponse>(globalContext.BBYWApiHost, "Api/ServiceOrder/GetList", new
{
orderId,
sku,
spu,
serviceId,
shopId,
serviceOrderState,
returnDirection,
pageIndex,
pageSize,
startDate,
endDate
}, 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.AddTransient<_1688PreviewPurchaseViewModel>();
serviceCollection.AddTransient<EditServiceOrderViewModel>();
#region 注册拳探SDK相关类
serviceCollection.AddSingleton<QuanTanProductClient>();

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

@ -0,0 +1,289 @@
using System;
using System.Collections.Generic;
namespace BBWY.Client.Models
{
public class ServiceOrderItemResponse
{
public long Id { get; set; }
/// <summary>
/// 售后成本(不含退款采购成本)
/// </summary>
public decimal? AfterTotalCost { get; set; } = 0.00M;
/// <summary>
/// 申请时间
/// </summary>
public DateTime? ApplyTime { get; set; }
/// <summary>
/// 耗材费
/// </summary>
public decimal? ConsumableAmount { get; set; } = 0.00M;
public DateTime? CreateTime { get; set; }
/// <summary>
/// 发货快递费
/// </summary>
public decimal? DeliveryExpressFreight { get; set; } = 0.00M;
/// <summary>
/// 头程费
/// </summary>
public decimal? FirstFreight { get; set; } = 0.00M;
/// <summary>
/// 退货拍摄图(名称)
/// </summary>
public string ImageName { get; set; }
/// <summary>
/// 入仓操作费
/// </summary>
public decimal? InStorageAmount { get; set; } = 0.00M;
/// <summary>
/// 是否订阅快递100
/// </summary>
public bool? IsSubscribeKuaiDi100 { get; set; }
/// <summary>
/// 是否需要订阅快递100
/// </summary>
public bool? IsNeedSubscribeKuaiDi100 { get; set; }
public string OrderId { get; set; }
/// <summary>
/// 出仓操作费
/// </summary>
public decimal? OutStorageAmount { get; set; } = 0.00M;
/// <summary>
/// 产品外观 (严重损=0 轻微损=1 新=2)
/// </summary>
public ProductAppearance? ProductAppearance { get; set; }
/// <summary>
/// 产品功能 (坏=0 好=1)
/// </summary>
public ProductFunction? ProductFunction { get; set; }
/// <summary>
/// 商品健康状态 (残次品=0 良品=1)
/// </summary>
public NewProductHealth? ProductHealth { get; set; }
public string ProductId { get; set; }
/// <summary>
/// 产品包装(无=0 非新=1 新=2)
/// </summary>
public ProductPackage? ProductPackage { get; set; }
/// <summary>
/// 采购方式
/// </summary>
public PurchaseMethod? PurchaseMethod { get; set; }
/// <summary>
/// 采购单号
/// </summary>
public string PurchaseOrderId { get; set; }
/// <summary>
/// 采购单主键
/// </summary>
public long? PurchaseOrderPKId { get; set; }
/// <summary>
/// 采购平台
/// </summary>
public Platform? PurchasePlatform { get; set; }
/// <summary>
/// 退款支付宝订单号
/// </summary>
public string RefundAlipayOrderNo { get; set; }
/// <summary>
/// 退款金额
/// </summary>
public decimal? RefundAmount { get; set; } = 0.00M;
/// <summary>
/// 退货入仓操作费
/// </summary>
public decimal? RefundInStorageAmount { get; set; } = 0.00M;
/// <summary>
/// 退款商户订单号
/// </summary>
public string RefundMerchantOrderNo { get; set; }
/// <summary>
/// 退款采购成本
/// </summary>
public decimal? RefundPurchaseAmount { get; set; } = 0.00M;
/// <summary>
/// 退款时间
/// </summary>
public DateTime? RefundTime { get; set; }
/// <summary>
/// 售后补发成本
/// </summary>
public decimal? ReissueAfterSaleAmount { get; set; } = 0.00M;
/// <summary>
/// 补发快递费
/// </summary>
public decimal? ReissueFreight { get; set; } = 0.00M;
/// <summary>
/// 补发货款成本
/// </summary>
public decimal? ReissueProductAmount { get; set; } = 0.00M;
/// <summary>
/// 退货去向(退货仓=0,采购商=1,原返=2,无退货=3)
/// </summary>
public ReturnDirection? ReturnDirection { get; set; }
/// <summary>
/// SD退货运费
/// </summary>
public decimal? SDRefundFreight { get; set; } = 0.00M;
/// <summary>
/// 服务单号
/// </summary>
public string ServiceId { get; set; }
/// <summary>
/// 服务单租备注
/// </summary>
public string ServiceOrderRemark { get; set; }
/// <summary>
/// 服务单处理结果
/// </summary>
public ServiceResult? ServiceResult { get; set; }
public string ShopId { get; set; }
public string SkuId { get; set; }
/// <summary>
/// SKU销售件数
/// </summary>
public int? SkuItemCount { get; set; }
/// <summary>
/// 服务单状态 待收货 = 10005,取消 = 10011,完成 = 10010
/// </summary>
public ServiceOrderState? Status { get; set; }
/// <summary>
/// 变更时间
/// </summary>
public DateTime? StatusUpdateTime { get; set; }
/// <summary>
/// 仓储费
/// </summary>
public decimal? StorageAmount { get; set; } = 0.00M;
/// <summary>
/// 服务单物流状态(0=待质检,1=已入库,2=派送中,3=运输中)
/// </summary>
public TransportState? TransportDetails { get; set; }
/// <summary>
/// 仓库组备注
/// </summary>
public string WareHouseGrounpRemark { get; set; }
/// <summary>
/// 快递单号
/// </summary>
public string WayBillNo { get; set; }
/// <summary>
/// 快递公司名称
/// </summary>
public string ExpressName { get; set; }
/// <summary>
/// 质检入库时间
/// </summary>
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
public string Logo { get; set; }
public string Title { get; set; }
//public string ContactName { get; set; }
//public string Mobile { get; set; }
public int ItemTotal { get; set; }
public decimal Price { get; set; }
#endregion
public StorageType? StorageType { get; set; }
}
public class ServiceOrderResponse
{
public IList<ServiceOrderItemResponse> Items { get; set; }
public long Count { get; set; }
}
}

58
BBWY.Client/Models/Enums.cs

@ -254,7 +254,7 @@
{
= 0,
= 1,
=2
= 2
}
public enum Increment
@ -317,4 +317,60 @@
}
/// <summary>
/// 服务单状态
/// </summary>
public enum ServiceOrderState
{
= 10005,
= 10011,
= 10010
}
public enum ReturnDirection
{
退 = 0, = 1, = 2, 退 = 3
}
/// <summary>
/// 运输状态 0=待质检,1=已入库,2=派送中,3=运输中
/// </summary>
public enum TransportState
{
= 0, = 1, = 2, = 3
}
/// <summary>
/// 商品健康状态 残次品=0 良品=1
/// </summary>
public enum NewProductHealth
{
= 0, = 1
}
/// <summary>
/// 产品功能 坏=0 好=1
/// </summary>
public enum ProductFunction
{
= 0, = 1
}
/// <summary>
/// 产品外观 (严重损=0 轻微损=1 新=2)
/// </summary>
public enum ProductAppearance
{
= 0, = 1, = 2
}
/// <summary>
/// 产品包装(无=0 非新=1 新=2)
/// </summary>
public enum ProductPackage
{
= 0, = 1, = 2
}
}

1
BBWY.Client/Models/MappingProfile.cs

@ -30,6 +30,7 @@ namespace BBWY.Client.Models
CreateMap<ToDayOrderAchievementResponse, ToDayOrderAchievement>();
CreateMap<SDGroupPersonStatisticsResponse, SDGroupPersonStatistics>();
CreateMap<BillCorrectionOrderResponse, BillCorrectionOrder>();
CreateMap<ServiceOrderItemResponse, ServiceOrder>();
}
}
}

21
BBWY.Client/Models/PackTask/ConsumableModel.cs

@ -46,7 +46,7 @@ namespace BBWY.Client.Models.PackTask
return;
}
ApiResponse<object> res = null;
if (Id > 0)
if (Id > 0)//修改
{
res = consumableService.Edit(new ConsuableRequest
{
@ -80,7 +80,11 @@ namespace BBWY.Client.Models.PackTask
if (res != null && res.Success)
{
var win = obj as System.Windows.Window;
if (ReflashDatas != null) ReflashDatas();
ViewModelLocator viewModel = new ViewModelLocator();
var con = viewModel.Consumable;
con.SearchConsumable();
//if (ReflashDatas != null) ReflashDatas();
win.Close();
}
else
@ -94,6 +98,9 @@ namespace BBWY.Client.Models.PackTask
var res = consumableService.Deleted(Id);
if (res.Success)
{
ViewModelLocator viewModel = new ViewModelLocator();
var con = viewModel.Consumable;
con.SearchConsumable();
list.Remove(this);
}
}
@ -102,7 +109,15 @@ namespace BBWY.Client.Models.PackTask
public void EditConsumable()
{
EditConsumable add = new EditConsumable(this);
EditConsumable add = new EditConsumable(new ConsumableModel(consumableService) {
Heigth=this.Heigth, Length=this.Length,
Id=this.Id, Name=this.Name, Weigth=this.Weigth,
Remark = this.Remark,
Width = this.Width ,
Price = this.Price
});
add.Show();
}

19
BBWY.Client/Models/PackTask/PackTaskModel.cs

@ -45,7 +45,7 @@ namespace BBWY.Client.Models
public ICommand UpdateTaskCommand { get; set; }
/// <summary>
/// 修改任务
/// 删除任务
/// </summary>
public ICommand DeletedTaskCommand { get; set; }
@ -158,12 +158,14 @@ namespace BBWY.Client.Models
{
if (CertificateModel == null)
{
new TipsWindow("该任务无设置合格证信息,无法打印!").ShowDialog();
new TipsWindow("该任务无设置合格证信息,无法打印!").Show();
return;
}
PrintWindow printWindow = new PrintWindow();
printWindow.certificateModel = certificateModel;
printWindow.CertificateModel = certificateModel;
printWindow.LoadData();
//printWindow.Datas = LoadCerLabelModels();
printWindow.Show();
}
@ -174,7 +176,7 @@ namespace BBWY.Client.Models
{
if (BarCodeModel == null)
{
new TipsWindow("该任务无设置条形码信息,无法打印!").ShowDialog();
new TipsWindow("该任务无设置条形码信息,无法打印!").Show();
return;
}
@ -189,6 +191,7 @@ namespace BBWY.Client.Models
SkuName = BarCodeModel.SkuName
};
printWindow.LoadData();
//printWindow.Datas = LoadBarLabelModels();
printWindow.Show();
}
@ -204,15 +207,11 @@ namespace BBWY.Client.Models
var model = packTaskService.UpdateTaskStatus(taskId, 1);
if (model != null && model.Success)
{
ViewModelLocator viewModelLocator = new ViewModelLocator();
var wareHouse = viewModelLocator.WareHouseList;
wareHouse.SearchTaskList();
this.TaskStatus = TaskStateType.;
// new TipsWindow("修改成功").Show();
new TipsWindow("修改成功").Show();
}
}
/*
/*
public Dictionary<string, string> LoadBarLabelModels()
{
Dictionary<string, string> data = new Dictionary<string, string>();

37
BBWY.Client/Models/ServiceOrder/ServiceOrder.cs

@ -0,0 +1,37 @@
using System.Collections.Generic;
namespace BBWY.Client.Models
{
public class ServiceOrder : ServiceOrderItemResponse
{
public ServiceOrder()
{
ThumbnailImageList = new List<string>();
}
/// <summary>
/// 是否显示商品情况
/// </summary>
public bool IsShowProductInfo
{
get
{
return ProductAppearance != null || ProductFunction != null || ProductHealth != null || ProductPackage != null;
}
}
public IList<string> ThumbnailImageList { get; set; }
public void Init()
{
if (!string.IsNullOrEmpty(ImageName))
{
var imageNameArray = ImageName.Split(',', System.StringSplitOptions.RemoveEmptyEntries);
foreach (var imgItemName in imageNameArray)
{
ThumbnailImageList.Add($"https://qiyue-qiku.oss-cn-beijing.aliyuncs.com/tuihuo/{imgItemName}.jpg?x-oss-process=image/resize,m_lfit,w_35/quality,q_100");
}
}
}
}
}

3
BBWY.Client/ViewModels/MainViewModel.cs

@ -159,7 +159,8 @@ namespace BBWY.Client.ViewModels
Name = "订单管理",
ChildList = new List<MenuModel>()
{
new MenuModel(){ Name="最近订单",Url="/Views/Order/OrderList.xaml" }
new MenuModel(){ Name="最近订单",Url="/Views/Order/OrderList.xaml" },
new MenuModel(){ Name="服务单管理",Url="/Views/ServiceOrder/ServiceOrderList.xaml" }
}
});

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

@ -47,7 +47,7 @@ namespace BBWY.Client.ViewModels
private bool onlyUnhandle;
private Random random;
public GlobalContext globalContext { get; set; }
private bool? includeAfterOrder;
//private bool? includeAfterOrder;
private bool includeExceptionOrder;
//private decimal currentConditionsTotalProfit;
private string searchServiceId;
@ -90,7 +90,7 @@ namespace BBWY.Client.ViewModels
public bool ExcludeSD { get => excludeSD; set { Set(ref excludeSD, 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); } }
/// <summary>
@ -128,13 +128,13 @@ namespace BBWY.Client.ViewModels
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; }
@ -227,11 +227,11 @@ namespace BBWY.Client.ViewModels
OutStockCommand = new RelayCommand<Order>((o) => OutStock(o));
EditVenderRemarkCommand = new RelayCommand<Order>(EditVenderRemark);
ExportCommand = new RelayCommand(Export);
SetIncludeAfterOrderCommand = new RelayCommand(SetIncludeAfterOrder);
//SetIncludeAfterOrderCommand = new RelayCommand(SetIncludeAfterOrder);
SetIncludeExceptionOrderCommand = new RelayCommand(SetIncludeExceptionOrder);
EditAfterSaleOrderCommand = new RelayCommand<AfterSaleOrder>(EditAfterSaleOrder);
EditAfterSaleOrderRefundPurchaseAmountCommand = new RelayCommand<AfterSaleOrder>(EditAfterSaleOrderRefundPurchaseAmount);
FindAfterSaleOrderCommand = new RelayCommand<object>(FindAfterSaleOrder);
//EditAfterSaleOrderCommand = new RelayCommand<AfterSaleOrder>(EditAfterSaleOrder);
//EditAfterSaleOrderRefundPurchaseAmountCommand = new RelayCommand<AfterSaleOrder>(EditAfterSaleOrderRefundPurchaseAmount);
//FindAfterSaleOrderCommand = new RelayCommand<object>(FindAfterSaleOrder);
OpenSkuDetailCommand = new RelayCommand<object>(OpenSkuDetail);
SearchOrderCommand.Execute(null);
}
@ -254,7 +254,7 @@ namespace BBWY.Client.ViewModels
StartDate = DateTime.Now.Date;
}
PageIndex = 1;
IncludeAfterOrder = null;
//IncludeAfterOrder = null;
IncludeExceptionOrder = false;
}
@ -300,23 +300,23 @@ namespace BBWY.Client.ViewModels
Task.Factory.StartNew(() => LoadOrder(1));
}
public void SetIncludeAfterOrder()
{
InitSearchParam();
IncludeAfterOrder = true;
Task.Factory.StartNew(() => LoadOrder(1));
}
public void SetIncludeAfterOrder(string orderId, string skuId, DateTime startDate, DateTime endDate)
{
InitSearchParam();
SearchOrderId = orderId;
SearchSku = skuId;
StartDate = startDate;
EndDate = endDate;
IncludeAfterOrder = true;
Task.Factory.StartNew(() => LoadOrder(1));
}
//public void SetIncludeAfterOrder()
//{
// InitSearchParam();
// IncludeAfterOrder = true;
// Task.Factory.StartNew(() => LoadOrder(1));
//}
//public void SetIncludeAfterOrder(string orderId, string skuId, DateTime startDate, DateTime endDate)
//{
// InitSearchParam();
// SearchOrderId = orderId;
// SearchSku = skuId;
// StartDate = startDate;
// EndDate = endDate;
// IncludeAfterOrder = true;
// Task.Factory.StartNew(() => LoadOrder(1));
//}
public void RefreshOrder(string orderId, bool isRemoveOrder = false)
{
@ -389,9 +389,9 @@ namespace BBWY.Client.ViewModels
/// <param name="pageIndex"></param>
private void LoadOrder(int pageIndex)
{
if (IncludeAfterOrder == true)
LoadAfterSaleOrder(pageIndex);
else
//if (IncludeAfterOrder == true)
// LoadAfterSaleOrder(pageIndex);
//else
LoadNormalOrder(pageIndex);
if (!IsSDGroup)
@ -1022,84 +1022,84 @@ namespace BBWY.Client.ViewModels
});
}
private void EditAfterSaleOrder(AfterSaleOrder afterSaleOrder)
{
var w = new EditAfterSaleOrderSku(afterSaleOrder);
w.Closed += EditAfterSaleOrderSku_Closed;
w.ShowDialog();
}
private void EditAfterSaleOrderSku_Closed(object sender, EventArgs e)
{
var w = sender as EditAfterSaleOrderSku;
if (w.DialogResult != true)
return;
var afterSaleOrder = w.SaleOrder;
IsLoading = true;
Task.Factory.StartNew(() => afterOrderService.EditAfterSaleOrder(afterSaleOrder.Id,
afterSaleOrder.OrderId,
afterSaleOrder.ProductResult.Value,
afterSaleOrder.ServiceResult.Value,
afterSaleOrder.ProductHealth.Value,
afterSaleOrder.ReissueAfterSaleAmount,
afterSaleOrder.ReissueFreight,
afterSaleOrder.ReissueProductAmount,
afterSaleOrder.SDRefundFreight)).ContinueWith(t =>
{
var response = t.Result;
if (!response.Success)
{
IsLoading = false;
App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "修改售后"));
return;
}
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);
});
}
private void FindAfterSaleOrder(object param)
{
var paramList = (object[])param;
var orderId = paramList[0].ToString();
var skuId = paramList[1].ToString();
var startDate = DateTime.Parse(paramList[2].ToString()).Date;
var endDate = DateTime.Now.Date;
SetIncludeAfterOrder(orderId, skuId, startDate, endDate);
}
//private void EditAfterSaleOrder(AfterSaleOrder afterSaleOrder)
//{
// var w = new EditAfterSaleOrderSku(afterSaleOrder);
// w.Closed += EditAfterSaleOrderSku_Closed;
// w.ShowDialog();
//}
//private void EditAfterSaleOrderSku_Closed(object sender, EventArgs e)
//{
// var w = sender as EditAfterSaleOrderSku;
// if (w.DialogResult != true)
// return;
//
// var afterSaleOrder = w.SaleOrder;
// IsLoading = true;
// Task.Factory.StartNew(() => afterOrderService.EditAfterSaleOrder(afterSaleOrder.Id,
// afterSaleOrder.OrderId,
// afterSaleOrder.ProductResult.Value,
// afterSaleOrder.ServiceResult.Value,
// afterSaleOrder.ProductHealth.Value,
// afterSaleOrder.ReissueAfterSaleAmount,
// afterSaleOrder.ReissueFreight,
// afterSaleOrder.ReissueProductAmount,
// afterSaleOrder.SDRefundFreight)).ContinueWith(t =>
// {
// var response = t.Result;
// if (!response.Success)
// {
// IsLoading = false;
// App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "修改售后"));
// return;
// }
// 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);
// });
//}
//private void FindAfterSaleOrder(object param)
//{
// var paramList = (object[])param;
// var orderId = paramList[0].ToString();
// var skuId = paramList[1].ToString();
// var startDate = DateTime.Parse(paramList[2].ToString()).Date;
// var endDate = DateTime.Now.Date;
// SetIncludeAfterOrder(orderId, skuId, startDate, endDate);
//}
private void OpenSkuDetail(object param)
{

2
BBWY.Client/ViewModels/PackTask/ConsumableViewModel.cs

@ -76,7 +76,7 @@ namespace BBWY.Client.ViewModels.PackTask
}
private void SearchConsumable()
public void SearchConsumable()
{
Task.Factory.StartNew(() =>
{

6
BBWY.Client/ViewModels/PackTask/TaskListViewModel.cs

@ -120,12 +120,6 @@ namespace BBWY.Client.ViewModels.PackTask
/// </summary>
public ObservableCollection<PackTaskModel> PackTaskList { get => packTaskList; set { Set(ref packTaskList, value); } }
//private ObservableCollection<FeesItemTypeDTO> feesItems;
///// <summary>
///// 动态数据表
///// </summary>
//public ObservableCollection<FeesItemTypeDTO> FeesItems { get => feesItems; set { Set(ref feesItems, value); } }
#endregion

20
BBWY.Client/ViewModels/PackTask/WareHouseListViewModel.cs

@ -204,13 +204,8 @@ namespace BBWY.Client.ViewModels.PackTask
SomeArrivedCount = packTaskResult.Data.SomeArrivedCount;
WorryCount = packTaskResult.Data.WorryCount;
});
}
}
private void LoadIndex(int pageIndex)
{
PageIndex = pageIndex;//
@ -218,8 +213,6 @@ namespace BBWY.Client.ViewModels.PackTask
}
#region 事件绑定
/// <summary>
@ -370,9 +363,6 @@ namespace BBWY.Client.ViewModels.PackTask
}));
}
}
else
{
@ -384,23 +374,14 @@ namespace BBWY.Client.ViewModels.PackTask
IsLoadCount();
IsLoading = false;
});
}
private void OpenSkuDetail(object param)
{
var paramList = (object[])param;
// var orderId = paramList[0].ToString();
var skuId = paramList[1].ToString();
var url = $"https://item.jd.com/{skuId}.html";
try
{
@ -411,7 +392,6 @@ namespace BBWY.Client.ViewModels.PackTask
Clipboard.SetText(url);
System.Windows.MessageBox.Show($"{ex.Message}\r\n调用浏览器失败,网页链接已复制到剪切板,请手动打开浏览器访问", "提示");
}
}

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");
});
}
}
}

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

@ -0,0 +1,286 @@
using BBWY.Client.APIServices;
using BBWY.Client.Helpers;
using BBWY.Client.Models;
using BBWY.Client.Views.ServiceOrder;
using BBWY.Common.Extensions;
using BBWY.Common.Http;
using BBWY.Common.Models;
using BBWY.Controls;
using GalaSoft.MvvmLight.Command;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
namespace BBWY.Client.ViewModels
{
public class ServiceOrderViewModel : BaseVM, IDenpendency
{
private ServiceOrderService serviceOrderService;
private IHttpClientFactory httpClientFactory;
private bool isLoading;
private ServiceOrderState? serviceOrderState;
private ReturnDirection? returnDirection;
private long serviceOrderCount;
private int pageIndex;
private int pageSize;
private string orderId;
private string spu;
private string sku;
private string serviceId;
private DateTime? startDate;
private DateTime? endDate;
public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } }
public ServiceOrderState? ServiceOrderState { get => serviceOrderState; set { Set(ref serviceOrderState, value); } }
public ReturnDirection? ReturnDirection { get => returnDirection; set { Set(ref returnDirection, value); } }
public ICommand SetServiceOrderStateCommand { get; set; }
public ICommand SetReturnDirectionCommand { get; set; }
public ICommand OnPageIndexChangedCommand { get; set; }
public ICommand CopyTextCommand { get; set; }
public ICommand SetSearchDateCommand { get; set; }
public ICommand SearchServiceOrderCommand { get; set; }
public ICommand NavigateToDetailCommand { get; set; }
public ICommand PreviewImgCommand { get; set; }
public ICommand EditServiceOrderCommand { get; set; }
public IList<ServiceOrder> ServiceOrderList { get; set; }
public long ServiceOrderCount { get => serviceOrderCount; set { Set(ref serviceOrderCount, value); } }
public int PageIndex { get => pageIndex; set { Set(ref pageIndex, value); } }
public int PageSize { get => pageSize; set { Set(ref pageSize, value); } }
public string OrderId { get => orderId; set { Set(ref orderId, value); } }
public string Spu { get => spu; set { Set(ref spu, value); } }
public string Sku { get => sku; set { Set(ref sku, value); } }
public string ServiceId { get => serviceId; set { Set(ref serviceId, value); } }
public DateTime? StartDate { get => startDate; set { Set(ref startDate, value); } }
public DateTime? EndDate { get => endDate; set { Set(ref endDate, value); } }
public GlobalContext GlobalContext { get; set; }
public ServiceOrderViewModel(ServiceOrderService serviceOrderService, GlobalContext globalContext, IHttpClientFactory httpClientFactory)
{
this.httpClientFactory = httpClientFactory;
this.serviceOrderService = serviceOrderService;
SetServiceOrderStateCommand = new RelayCommand<ServiceOrderState?>(SetServiceOrderState);
SetReturnDirectionCommand = new RelayCommand<ReturnDirection?>(SetReturnDirection);
CopyTextCommand = new RelayCommand<string>(s => { try { Clipboard.SetText(s); } catch (Exception ex) { } });
SetSearchDateCommand = new RelayCommand<int>(SetSearchDate);
SearchServiceOrderCommand = new RelayCommand(InitQueryServiceOrder);
NavigateToDetailCommand = new RelayCommand<string>(NavigateToDetail);
OnPageIndexChangedCommand = new RelayCommand<PageArgs>(OnPageIndexChanged);
PreviewImgCommand = new RelayCommand<string>(PreviewImg);
EditServiceOrderCommand = new RelayCommand<ServiceOrder>(OpenEditServiceOrder);
ServiceOrderList = new ObservableCollection<ServiceOrder>() { new ServiceOrder(), new ServiceOrder(), new ServiceOrder() };
PageSize = 10;
GlobalContext = globalContext;
EndDate = DateTime.Now.Date;
StartDate = DateTime.Now.Date.AddDays(-15);
InitQueryServiceOrder();
}
private void InitQueryServiceOrder()
{
PageIndex = 1;
Task.Factory.StartNew(() => QueryServiceOrder(PageIndex));
}
private void SetSearchDate(int d)
{
EndDate = d == 1 ? DateTime.Now.Date.AddDays(-1) : DateTime.Now;
StartDate = DateTime.Now.Date.AddDays(d * -1);
InitQueryServiceOrder();
}
private void SetServiceOrderState(ServiceOrderState? state)
{
this.ServiceOrderState = state;
//query
InitQueryServiceOrder();
}
private void SetReturnDirection(ReturnDirection? returnDirection)
{
this.ReturnDirection = returnDirection;
//query
InitQueryServiceOrder();
}
private void QueryServiceOrder(int pageIndex)
{
IsLoading = true;
var response = serviceOrderService.GetList(OrderId, Sku, Spu, ServiceId, GlobalContext.User.Shop.ShopId.ToString(), ServiceOrderState, ReturnDirection, pageIndex, PageSize, StartDate, EndDate);
if (!response.Success)
{
IsLoading = false;
App.Current.Dispatcher.Invoke(() =>
{
MessageBox.Show(response.Msg, "提示");
return;
});
}
IsLoading = false;
ServiceOrderCount = response.Data.Count;
App.Current.Dispatcher.Invoke(() => ServiceOrderList.Clear());
if (response.Data.Items == null || response.Data.Items.Count() == 0)
return;
var list = response.Data.Items.Map<IList<ServiceOrder>>();
App.Current.Dispatcher.Invoke(() =>
{
foreach (var s in list)
{
#region Test
//转换ImageName
//if (int.Parse(s.ServiceId) % 2 == 0)
//{
// s.ProductPackage = ProductPackage.新; s.ImageName = "20230317071208762563,8d58b491-7859-4187-9f43-4fd177a0f25f,b0df0763-9cf4-40ca-a1fc-57695e4b8d33";
//}
#endregion
s.Init();
ServiceOrderList.Add(s);
}
});
}
private void NavigateToDetail(string serviceId)
{
var url = $"https://sh.shop.jd.com/afs/detail/waitReceive?afsApplyId=undefined&afsServiceId={serviceId}";
try
{
//System.Diagnostics.Process.Start("explorer.exe", url);
ShellExecuteHelper.ShellExecute(IntPtr.Zero, "open", url, string.Empty, string.Empty, ShellExecuteHelper.ShowCommands.SW_SHOWNORMAL);
}
catch (Exception ex)
{
Clipboard.SetText(url);
MessageBox.Show($"{ex.Message}\r\n调用浏览器失败,网页链接已复制到剪切板,请手动打开浏览器访问", "提示");
}
}
private void OnPageIndexChanged(PageArgs pageArgs)
{
Task.Factory.StartNew(() => QueryServiceOrder(pageArgs.PageIndex));
}
private void PreviewImg(string thumbnailImg)
{
var fullUrl = thumbnailImg.Substring(0, thumbnailImg.IndexOf("?"));
var fileName = fullUrl.Substring(fullUrl.LastIndexOf("/") + 1);
var localPath = Path.Combine(Path.GetTempPath(), fileName);
if (!File.Exists(localPath))
{
IsLoading = true;
var downloader = new HttpDownloader(httpClientFactory);
downloader.OnDownloadComplated += (s, e) =>
{
IsLoading = false;
if (e.Error != null)
{
App.Current.Dispatcher.Invoke(() => MessageBox.Show(e.Error.Message));
return;
}
CallWindowsPhoto(localPath);
};
Task.Factory.StartNew(() => downloader.DownloadFile(fullUrl, Path.GetTempPath(), fileName, null));
}
else
{
CallWindowsPhoto(localPath);
}
}
private void CallWindowsPhoto(string path)
{
//建立新的系统进程
try
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
//设置图片的真实路径和文件名
process.StartInfo.FileName = path;
//设置进程运行参数,这里以最大化窗口方法显示图片。
process.StartInfo.Arguments = "rundl132.exe C://WINDOWS//system32//shimgvw.dll,ImageView_Fullscreen";
//此项为是否使用Shell执行程序,因系统默认为true,此项也可不设,但若设置必须为true
process.StartInfo.UseShellExecute = true;
//此处可以更改进程所打开窗体的显示样式,可以不设
process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
process.Start();
process.Close();
}
catch (Exception ex)
{
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);
});
}
}
}

23
BBWY.Client/ViewModels/ViewModelLocator.cs

@ -85,6 +85,18 @@ namespace BBWY.Client.ViewModels
}
}
}
public ServiceOrderViewModel ServiceOrderList
{
get
{
using (var s = sp.CreateScope())
{
return s.ServiceProvider.GetRequiredService<ServiceOrderViewModel>();
}
}
}
public ConsumableViewModel Consumable
{
get
@ -157,8 +169,6 @@ namespace BBWY.Client.ViewModels
public CreatePackTaskViewModel CreateTaskView
{
get
{
using (var s = sp.CreateScope())
@ -219,5 +229,14 @@ namespace BBWY.Client.ViewModels
return s.ServiceProvider.GetRequiredService<BillCorrectionViewModel>();
}
}
public EditServiceOrderViewModel EditServiceOrder
{
get
{
using var s = sp.CreateScope();
return s.ServiceProvider.GetRequiredService<EditServiceOrderViewModel>();
}
}
}
}

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

File diff suppressed because it is too large

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

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

2
BBWY.Client/Views/PackTask/Consumable.xaml

@ -155,7 +155,7 @@
</Grid>
<Grid Grid.Column="5">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<c:BButton Background="Transparent" Foreground="Blue" Content="编辑" Command="{Binding EditConsumableCommand}" Margin="0 0 10 0"/>
<c:BButton Background="Transparent" Foreground="Blue" Content="编辑" Command="{Binding EditConsumableCommand}" CommandParameter="" Margin="0 0 10 0"/>
<c:BButton Background="Transparent" Foreground="Blue" Content="删除" Command="{Binding DeletedConsumableCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox}, Path=ItemsSource}"
/>

4
BBWY.Client/Views/PackTask/LookCerWindow.xaml

@ -16,7 +16,9 @@
CloseButtonColor="{StaticResource WindowButtonColor}"
MinButtonVisibility="Collapsed"
MaxButtonVisibility="Collapsed"
RightButtonGroupMargin="0,5,5,0">
RightButtonGroupMargin="0,5,5,0"
ResizeMode="NoResize"
>
<!-- DataContext="{Binding CreateSetBarCodeView,Source={StaticResource Locator}}"-->
<Grid>
<Grid.RowDefinitions>

1
BBWY.Client/Views/PackTask/PersonList.xaml

@ -14,7 +14,6 @@
d:DesignHeight="450" d:DesignWidth="2048"
Title="TaskList">
<Page.Resources>
<sys:Int32 x:Key="d0">0</sys:Int32>
<sys:Int32 x:Key="d1">1</sys:Int32>
<sys:Int32 x:Key="d3">2</sys:Int32>

58
BBWY.Client/Views/PackTask/PrintWindow.xaml.cs

@ -30,7 +30,7 @@ namespace BBWY.Client.Views.PackTask
{
InitializeComponent();
var printingNames = System.Drawing.Printing.PrinterSettings.InstalledPrinters;//获取本机的打印机数据
var printingNames = PrinterSettings.InstalledPrinters;//获取本机的打印机数据
int index = -1;
int selectIndex = 0;
foreach (string name in printingNames)
@ -58,7 +58,7 @@ namespace BBWY.Client.Views.PackTask
/// </summary>
public void LoadData()
{
if (certificateModel==null)
if (CertificateModel==null)
{
cer.Visibility = Visibility.Collapsed;
}
@ -69,20 +69,20 @@ namespace BBWY.Client.Views.PackTask
CertificateModel data = new CertificateModel
{
Brand = certificateModel.Brand,
BrandName = certificateModel.BrandName,
ExcuteStander = certificateModel.ExcuteStander,
FactoryNumber = certificateModel.FactoryNumber,
IsLogo = certificateModel.IsLogo,
LabelModel = certificateModel.LabelModel,
ProductAdress = certificateModel.ProductAdress,
Id = certificateModel.Id,
ProductDate = certificateModel.ProductDate,
ProductNo = certificateModel.ProductNo,
ProductShop = certificateModel.ProductShop,
Shader = certificateModel.Shader,
SkuId = certificateModel.SkuId,
Reseller = certificateModel.Reseller
Brand = CertificateModel.Brand,
BrandName = CertificateModel.BrandName,
ExcuteStander = CertificateModel.ExcuteStander,
FactoryNumber = CertificateModel.FactoryNumber,
IsLogo =CertificateModel.IsLogo,
LabelModel = CertificateModel.LabelModel,
ProductAdress = CertificateModel.ProductAdress,
Id = CertificateModel.Id,
ProductDate = CertificateModel.ProductDate,
ProductNo = CertificateModel.ProductNo,
ProductShop = CertificateModel.ProductShop,
Shader = CertificateModel.Shader,
SkuId = CertificateModel.SkuId,
Reseller = CertificateModel.Reseller
};
StringBuilder sb = new StringBuilder();
@ -116,7 +116,7 @@ namespace BBWY.Client.Views.PackTask
}
}
if (barCodeModel == null)
if (BarCodeModel == null)
{
bar.Visibility = Visibility.Collapsed;
}
@ -124,8 +124,8 @@ namespace BBWY.Client.Views.PackTask
{
bar.Visibility = Visibility.Visible;
cer.Visibility = Visibility.Collapsed;
this.DataContext = barCodeModel;
if (barCodeModel.LabelModel == BarcodeLabelModel.barsimplify)
this.DataContext = BarCodeModel;
if (BarCodeModel.LabelModel == BarcodeLabelModel.barsimplify)
{//精简版
jingjian.Visibility = Visibility.Visible;
biaozhun.Visibility = Visibility.Collapsed;
@ -138,22 +138,18 @@ namespace BBWY.Client.Views.PackTask
}
}
public CertificateModel certificateModel { get; set; }
public CertificateModel CertificateModel { get; set; }
public BarCodeModel barCodeModel { get; set; }
public BarCodeModel BarCodeModel { get; set; }
private void BButton_Click(object sender, RoutedEventArgs e)
{
int printCount = Convert.ToInt32(tbCount.Text);
string printName = cbPrints.Text;//选择的要打印的打印机名称
Task.Factory.StartNew(() => {
try
{
//string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
//string path = appPath + $"/Resources/LabelNames/{LabelName}.btw";
int printCount = Convert.ToInt32(tbCount.Text);//份数
string printName = cbPrints.Text;//选择的要打印的打印机名称
PrintDocument pd = new PrintDocument();
PrintDocument document = new PrintDocument();
document.PrinterSettings.PrinterName = printName;
@ -180,13 +176,13 @@ namespace BBWY.Client.Views.PackTask
//args.Graphics.SetClip(bounds);//设置打印区域
Font font = new Font("宋体", 6, System.Drawing.FontStyle.Regular);
if (barCodeModel!=null)
if (BarCodeModel != null)
{
MyPrintHelper.PrintBarcode(ref args, barCodeModel, font);
MyPrintHelper.PrintBarcode(ref args, BarCodeModel, font);
}
if (certificateModel!=null)
if (CertificateModel !=null)
{
MyPrintHelper.PrintCertificate(ref args, certificateModel, font);
MyPrintHelper.PrintCertificate(ref args, CertificateModel, font);
}
}

4
BBWY.Client/Views/PackTask/ServiceWindow.xaml

@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BBWY.Client.Views.PackTask"
mc:Ignorable="d"
Title="TipsWindow" Height="769" Width="350"
Title="TipsWindow" Height="769" Width="360"
xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls"
xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
xmlns:ctr="clr-namespace:BBWY.Client.Converters"
@ -224,7 +224,7 @@
<c:BButton Grid.Row="2" Content="确定" HorizontalAlignment="Right" Width="100" VerticalAlignment="Stretch"
<c:BButton Grid.Row="2" Content="确定" Margin="0 0 20 0" HorizontalAlignment="Right" Width="100" VerticalAlignment="Stretch"
Command="{Binding UpLoadPackCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"
/>

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();
});
}
});
}
}
}

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

@ -0,0 +1,478 @@
<Page x:Class="BBWY.Client.Views.ServiceOrder.ServiceOrderList"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls"
xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
xmlns:local="clr-namespace:BBWY.Client.Views.ServiceOrder"
xmlns:cmodel="clr-namespace:BBWY.Client.Models"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="1920"
Title="ServiceOrderList"
DataContext="{Binding ServiceOrderList,Source={StaticResource Locator}}">
<Page.Resources>
<sys:Int32 x:Key="d0">0</sys:Int32>
<sys:Int32 x:Key="d1">1</sys:Int32>
<sys:Int32 x:Key="d3">2</sys:Int32>
<sys:Int32 x:Key="d7">6</sys:Int32>
<sys:Int32 x:Key="d15">14</sys:Int32>
<sys:Int32 x:Key="d30">29</sys:Int32>
<sys:Int32 x:Key="ddaishouhuo">10005</sys:Int32>
<sys:Int32 x:Key="dyiwancheng">10010</sys:Int32>
</Page.Resources>
<Grid>
<c:RoundWaitProgress Play="{Binding IsLoading}" Panel.ZIndex="999"/>
<Grid Margin="5,0">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="5"/>
<RowDefinition Height="30"/>
<RowDefinition Height="5"/>
<RowDefinition Height="30"/>
<RowDefinition Height="5"/>
<RowDefinition Height="30"/>
<RowDefinition/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<Grid Background="{StaticResource Border.Background}" HorizontalAlignment="Left" Height="75" Panel.ZIndex="999">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="5"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Margin="0,5,0,0" Height="30">
<StackPanel.Resources>
<Style TargetType="DatePickerTextBox">
<Setter Property="IsReadOnly" Value="True"/>
</Style>
</StackPanel.Resources>
<TextBlock Text="下单时间" VerticalAlignment="Center" Margin="5,0,0,0"/>
<DatePicker SelectedDate="{Binding StartDate}" Width="133.5" Height="30" VerticalContentAlignment="Center" FocusVisualStyle="{x:Null}" Margin="5,0,0,0"/>
<DatePicker SelectedDate="{Binding EndDate}" Width="133.5" Height="30" VerticalContentAlignment="Center" FocusVisualStyle="{x:Null}" Margin="5,0,0,0"/>
<TextBlock Text="订单号" VerticalAlignment="Center" Margin="5,0,0,0"/>
<c:BTextBox Width="150" Margin="5,0,0,0" Text="{Binding OrderId}" WaterRemark="精确匹配"/>
<TextBlock Text="SPU" VerticalAlignment="Center" Margin="5,0,0,0"/>
<c:BTextBox Width="150" Margin="5,0,0,0" WaterRemark="精确匹配" Text="{Binding ProductId}"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Grid.Row="2" Margin="0,0,0,5" Height="30">
<c:BButton Content="今天" Width="50" Height="25" Margin="5,0,0,0"
Command="{Binding SetSearchDateCommand}"
CommandParameter="{StaticResource d0}"/>
<c:BButton Content="昨天" Width="50" Height="25" Margin="5,0,0,0"
Command="{Binding SetSearchDateCommand}"
CommandParameter="{StaticResource d1}"/>
<c:BButton Content="近3天" Width="50" Height="25" Margin="5,0,0,0"
Command="{Binding SetSearchDateCommand}"
CommandParameter="{StaticResource d3}"/>
<c:BButton Content="近7天" Width="50" Height="24" Margin="5,0,0,0"
Command="{Binding SetSearchDateCommand}"
CommandParameter="{StaticResource d7}"/>
<c:BButton Content="近15天" Width="50" Height="25" Margin="5,0,0,0"
Command="{Binding SetSearchDateCommand}"
CommandParameter="{StaticResource d15}"/>
<c:BButton Content="近30天" Width="50" Height="25" Margin="5,0,0,0"
Command="{Binding SetSearchDateCommand}"
CommandParameter="{StaticResource d30}"/>
<TextBlock Text="服务单" VerticalAlignment="Center" Margin="5,0,0,0"/>
<c:BTextBox Width="150" Margin="5,0,0,0" Text="{Binding ServiceId}" WaterRemark="精确匹配"/>
<TextBlock Text="SKU" VerticalAlignment="Center" Margin="5,0,0,0"/>
<c:BTextBox Width="150" Margin="5,0,0,0" Text="{Binding Sku}" WaterRemark="精确匹配"/>
<c:BButton Content="同步" Width="50" Margin="5,0,0,0" Command="{Binding SyncOrderCommand}" ToolTipService.InitialShowDelay="0" ToolTipService.ShowDuration="10000"
Visibility="Collapsed">
<c:BButton.ToolTip>
<StackPanel>
<TextBlock Text="1.使用筛选条件中的开始时间和结束时间进行同步"/>
<TextBlock Text="2.从开始时间起每次同步3小时时长的订单直到到达结束时间"/>
<TextBlock Text="3.已存在未结束的同步任务将不会重复执行"/>
</StackPanel>
</c:BButton.ToolTip>
</c:BButton>
</StackPanel>
<Grid Grid.Column="1" Grid.RowSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Button Content="搜索" Width="50" VerticalAlignment="Stretch" Margin="5,0,0,0" Command="{Binding SearchServiceOrderCommand}"
Grid.RowSpan="2" Background="{StaticResource Button.Selected.Background}" BorderThickness="0" Foreground="White"/>
<Button Content="导出" Command="{Binding ExportCommand}" Width="50" Grid.Column="1"
Visibility="{Binding Visibility,ElementName=listbox_order}" Background="#1CC2A2" BorderThickness="0" Foreground="White"/>
<Button Content="同步" Command="{Binding SyncOrderCommand}" Width="50" Grid.Column="1" Grid.Row="1"
Visibility="{Binding Visibility,ElementName=listbox_order}" Background="#02A7F0" BorderThickness="0" Foreground="White"/>
</Grid>
</Grid>
<StackPanel Grid.Row="2" HorizontalAlignment="Left" Orientation="Horizontal">
<TextBlock Text="服务单状态" VerticalAlignment="Center"/>
<c:BButton Content="全部" Width="100" Margin="5,0,0,0"
Background="{Binding ServiceOrderState,Converter={StaticResource objConverter},ConverterParameter=#null:#8080FF:#F2F2F2}"
Foreground="{Binding ServiceOrderState,Converter={StaticResource objConverter},ConverterParameter=#null:White:#4A4A4A}"
Command="{Binding SetServiceOrderStateCommand}" CommandParameter="{x:Null}"/>
<c:BButton Content="待收货" Width="100"
Background="{Binding ServiceOrderState,Converter={StaticResource objConverter},ConverterParameter=待收货:#8080FF:#F2F2F2}"
Foreground="{Binding ServiceOrderState,Converter={StaticResource objConverter},ConverterParameter=待收货:White:#4A4A4A}"
Command="{Binding SetServiceOrderStateCommand}" CommandParameter="{x:Static cmodel:ServiceOrderState.待收货}"/>
<c:BButton Content="已完成" Width="100"
Background="{Binding ServiceOrderState,Converter={StaticResource objConverter},ConverterParameter=已完成:#8080FF:#F2F2F2}"
Foreground="{Binding ServiceOrderState,Converter={StaticResource objConverter},ConverterParameter=已完成:White:#4A4A4A}"
Command="{Binding SetServiceOrderStateCommand}" CommandParameter="{x:Static cmodel:ServiceOrderState.已完成}"/>
<TextBlock Text="退货去向" VerticalAlignment="Center" Margin="30,0,0,0"/>
<c:BButton Content="全部" Width="100" Margin="5,0,0,0"
Background="{Binding ReturnDirection,Converter={StaticResource objConverter},ConverterParameter=#null:#8080FF:#F2F2F2}"
Foreground="{Binding ReturnDirection,Converter={StaticResource objConverter},ConverterParameter=#null:White:#4A4A4A}"
Command="{Binding SetReturnDirectionCommand}" CommandParameter="{x:Null}"/>
<c:BButton Content="退货仓" Width="100"
Background="{Binding ReturnDirection,Converter={StaticResource objConverter},ConverterParameter=退货仓:#8080FF:#F2F2F2}"
Foreground="{Binding ReturnDirection,Converter={StaticResource objConverter},ConverterParameter=退货仓:White:#4A4A4A}"
Command="{Binding SetReturnDirectionCommand}" CommandParameter="{x:Static cmodel:ReturnDirection.退货仓}"/>
<c:BButton Content="采购商" Width="100"
Background="{Binding ReturnDirection,Converter={StaticResource objConverter},ConverterParameter=采购商:#8080FF:#F2F2F2}"
Foreground="{Binding ReturnDirection,Converter={StaticResource objConverter},ConverterParameter=采购商:White:#4A4A4A}"
Command="{Binding SetReturnDirectionCommand}" CommandParameter="{x:Static cmodel:ReturnDirection.采购商}"/>
<c:BButton Content="原返" Width="100"
Background="{Binding ReturnDirection,Converter={StaticResource objConverter},ConverterParameter=原返:#8080FF:#F2F2F2}"
Foreground="{Binding ReturnDirection,Converter={StaticResource objConverter},ConverterParameter=原返:White:#4A4A4A}"
Command="{Binding SetReturnDirectionCommand}" CommandParameter="{x:Static cmodel:ReturnDirection.原返}"/>
<c:BButton Content="无退货" Width="100"
Background="{Binding ReturnDirection,Converter={StaticResource objConverter},ConverterParameter=无退货:#8080FF:#F2F2F2}"
Foreground="{Binding ReturnDirection,Converter={StaticResource objConverter},ConverterParameter=无退货:White:#4A4A4A}"
Command="{Binding SetReturnDirectionCommand}" CommandParameter="{x:Static cmodel:ReturnDirection.无退货}"/>
</StackPanel>
<Border Grid.Row="4" Background="{StaticResource Border.Background}">
<StackPanel Orientation="Horizontal">
<CheckBox Content="仅显示采购单未退款" VerticalContentAlignment="Center"/>
</StackPanel>
</Border>
<Border Grid.Row="6" BorderBrush="{StaticResource Border.Brush}" BorderThickness="1,1,1,0"
Background="#F2F2F2"
Visibility="{Binding Visibility,ElementName=listbox_afterSaleOrder}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="360"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
<ColumnDefinition Width="190"/>
<ColumnDefinition/>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
<ColumnDefinition Width="100"/>
</Grid.ColumnDefinitions>
<TextBlock Text="商品信息" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="退货去向" Grid.Column="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="退货检查备注" Grid.Column="2" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="商品情况" Grid.Column="3" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="采购单" Grid.Column="4" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="售后成本" Grid.Column="5" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="退货物流" Grid.Column="6" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="操作" Grid.Column="7" Style="{StaticResource middleTextBlock}"/>
<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"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="3"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="4"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="5"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="6"/>
</Grid>
</Border>
<ListBox x:Name="listbox_serviceOrder"
Grid.Row="7"
ItemsSource="{Binding ServiceOrderList}"
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"
BorderBrush="{StaticResource Border.Brush}"
BorderThickness="1,1,1,0"
Foreground="{StaticResource Text.Color}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Width="{Binding ActualWidth,ElementName=listbox_serviceOrder,Converter={StaticResource widthConverter},ConverterParameter=-0}">
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition />
</Grid.RowDefinitions>
<Grid Background="#F2F2F2">
<StackPanel Orientation="Horizontal">
<Border BorderBrush="{StaticResource Text.Pink}" BorderThickness="1"
Background="White"
Padding="10,0"
Height="25"
Margin="5,0,0,0">
<TextBlock Text="{Binding Status}"
Foreground="{StaticResource Text.Pink}"
VerticalAlignment="Center"/>
</Border>
<TextBlock Text="{Binding ApplyTime,StringFormat=yyyy-MM-dd HH:mm:ss}" VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock VerticalAlignment="Center" Margin="10,0,0,0">
<Run Text="服务单类型:"/>
<Run Text="{Binding ServiceResult}" Foreground="{StaticResource Text.Pink}"/>
</TextBlock>
<TextBlock Text="服务单号:" Margin="10,0,0,0" VerticalAlignment="Center"/>
<c:BButton Content="{Binding ServiceId}" Style="{StaticResource LinkButton}"
Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}"
CommandParameter="{Binding ServiceId}" Margin="3,0,0,0"/>
<TextBlock VerticalAlignment="Center" Margin="10,0,0,0">
<Run Text="仓储类型:"/>
<Run Text="{Binding StorageType}" Foreground="{StaticResource Text.Pink}"/>
</TextBlock>
<TextBlock Text="订单号:" Margin="10,0,0,0" VerticalAlignment="Center"/>
<c:BButton Content="{Binding OrderId}" Style="{StaticResource LinkButton}"
Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}"
CommandParameter="{Binding OrderId}" Margin="3,0,0,0"/>
</StackPanel>
<Border VerticalAlignment="Bottom" Height="1" Background="{StaticResource Border.Brush}"/>
</Grid>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="360"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
<ColumnDefinition Width="190"/>
<ColumnDefinition/>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
<ColumnDefinition Width="100"/>
</Grid.ColumnDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="90"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<c:BAsyncImage UrlSource="{Binding Logo}"
Width="80" DecodePixelWidth="80"
VerticalAlignment="Top" Margin="0,5"/>
<StackPanel Grid.Column="1" Orientation="Vertical" Margin="0,5,0,5">
<TextBlock TextTrimming="CharacterEllipsis">
<TextBlock.ToolTip>
<ToolTip Style="{StaticResource OrderCouponToolipStyle}">
<TextBlock Text="{Binding Title}"/>
</ToolTip>
</TextBlock.ToolTip>
<Run Text="SKU名称:"/>
<Run Text="{Binding Title}"/>
</TextBlock>
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Horizontal">
<TextBlock Text="SPU:"/>
<c:BButton Content="{Binding ProductId}" Style="{StaticResource LinkButton}"
Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Page}}}"
CommandParameter="{Binding ProductId}"
Margin=" 5,0,0,0"/>
<TextBlock Text="SKU:" Margin="5,0,0,0"/>
<c:BButton Content="{Binding SkuId}" Style="{StaticResource LinkButton}"
Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Page}}}"
CommandParameter="{Binding SkuId}"
Margin=" 5,0,0,0"/>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock TextWrapping="Wrap">
<Run Text="单价:"/>
<Run Text="{Binding Price}"/>
</TextBlock>
<TextBlock TextWrapping="Wrap" Margin="5,0,0,0">
<Run Text="数量:"/>
<Run Text="{Binding ItemTotal}"/>
</TextBlock>
</StackPanel>
</StackPanel>
</Grid>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<TextBlock Text="{Binding ReturnDirection}" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,20"/>
<Border Height="1" Background="{StaticResource Border.Brush}" Grid.Column="1" VerticalAlignment="Bottom" Margin="0,0,0,27"/>
<c:BButton Content="修改" VerticalAlignment="Bottom"
HorizontalAlignment="Stretch"
Background="Transparent"
Foreground="{StaticResource Text.Color}"
Grid.Column="1"
Command="{Binding DataContext.EditServiceOrderCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}"
CommandParameter="{Binding }"/>
<Border Grid.Column="1" Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<TextBlock Text="{Binding ReturnCheckRemark}" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"
TextWrapping="Wrap"/>
<Border Grid.Column="2" Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Grid Grid.Column="3">
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<Grid Margin="5,5,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.55*"/>
<ColumnDefinition Width="0.45*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock
Visibility="{Binding IsShowProductInfo,Mode=OneWay,UpdateSourceTrigger=PropertyChanged,ConverterParameter=true:Visible:Collapsed,Converter={StaticResource objConverter}}">
<Run Text="商品状态:"/>
<Run Text="{Binding ProductHealth,ConverterParameter=#null:未填:#source,Converter={StaticResource objConverter}}" Foreground="{StaticResource Text.Pink}"/>
</TextBlock>
<TextBlock Grid.Column="1"
Visibility="{Binding IsShowProductInfo,Mode=OneWay,UpdateSourceTrigger=PropertyChanged,ConverterParameter=true:Visible:Collapsed,Converter={StaticResource objConverter}}">
<Run Text="商品功能:"/>
<Run Text="{Binding ProductFunction,ConverterParameter=#null:未填:#source,Converter={StaticResource objConverter}}" Foreground="{StaticResource Text.Pink}"/>
</TextBlock>
<TextBlock Grid.Row="1"
Visibility="{Binding IsShowProductInfo,Mode=OneWay,UpdateSourceTrigger=PropertyChanged,ConverterParameter=true:Visible:Collapsed,Converter={StaticResource objConverter}}">
<Run Text="商品外观:"/>
<Run Text="{Binding ProductAppearance,ConverterParameter=#null:未填:#source,Converter={StaticResource objConverter}}" Foreground="{StaticResource Text.Pink}"/>
</TextBlock>
<TextBlock Grid.Row="1" Grid.Column="1"
Visibility="{Binding IsShowProductInfo,Mode=OneWay,UpdateSourceTrigger=PropertyChanged,ConverterParameter=true:Visible:Collapsed,Converter={StaticResource objConverter}}">
<Run Text="商品包装:"/>
<Run Text="{Binding ProductPackage,ConverterParameter=#null:未填:#source,Converter={StaticResource objConverter}}" Foreground="{StaticResource Text.Pink}"/>
</TextBlock>
</Grid>
<ListBox ItemsSource="{Binding ThumbnailImageList}"
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"
Style="{StaticResource NoScrollViewListBoxStyle}"
Grid.Row="1">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="5,0,0,0" Cursor="Hand">
<c:BAsyncImage UrlSource="{Binding }"
DecodePixelWidth="35"
Width="35">
<b:Interaction.Triggers>
<b:EventTrigger EventName="PreviewMouseLeftButtonDown">
<b:InvokeCommandAction PassEventArgsToCommand="True"
CommandParameter="{Binding }"
Command="{Binding DataContext.PreviewImgCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}"/>
</b:EventTrigger>
</b:Interaction.Triggers>
</c:BAsyncImage>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
<Border Grid.Column="3" Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<StackPanel Grid.Column="4" VerticalAlignment="Center" Margin="5,0,0,0"
Visibility="{Binding RenewalPurchaseOrderId,ConverterParameter=#null:Collapsed:Visible,Converter={StaticResource objConverter}}">
<TextBlock>
<Run Text="采购平台:"/>
<Run Text="{Binding RenewalPurchasePlatform}"/>
</TextBlock>
<StackPanel Orientation="Horizontal">
<TextBlock Text="采购订单号:"/>
<c:BButton Content="{Binding RenewalPurchaseOrderId}" Style="{StaticResource LinkButton}"
Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}"
CommandParameter="{Binding RenewalPurchaseOrderId}" Margin="3,0,0,0"/>
</StackPanel>
</StackPanel>
<Border Grid.Column="4" Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<StackPanel Orientation="Horizontal" Grid.Column="5" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,0,0,20">
<TextBlock>
<Run Text="总耗损"/>
<Run Text="{Binding AfterTotalCost}"/>
</TextBlock>
<Path Style="{StaticResource path_question}" Width="14" Margin="5,0,0,0" Fill="{StaticResource Text.Pink}">
</Path>
</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}"/>
<StackPanel Grid.Column="6" VerticalAlignment="Center" Margin="5,0,0,0"
Visibility="{Binding WayBillNo,ConverterParameter=#null:Collapsed:Visible,Converter={StaticResource objConverter}}">
<TextBlock>
<Run Text="物流状态:"/>
<Run Text="{Binding TransportDetails}"/>
</TextBlock>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ExpressName,StringFormat=\{0\}:}"/>
<c:BButton Content="{Binding WayBillNo}" Style="{StaticResource LinkButton}"
Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}"
CommandParameter="{Binding WayBillNo}" Margin="3,0,0,0"/>
</StackPanel>
</StackPanel>
<Border Grid.Column="6" Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<StackPanel Orientation="Horizontal" Grid.Column="7" HorizontalAlignment="Center">
<c:BButton Style="{StaticResource LinkButton}" Content="查看详情"
Command="{Binding DataContext.NavigateToDetailCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}"
CommandParameter="{Binding ServiceId}"/>
</StackPanel>
</Grid>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<c:PageControl PageIndex="{Binding PageIndex}"
PageSize="{Binding PageSize}"
RecordCount="{Binding ServiceOrderCount}"
Grid.Row="8"
HorizontalAlignment="Left">
<b:Interaction.Triggers>
<b:EventTrigger EventName="OnPageIndexChanged">
<b:InvokeCommandAction Command="{Binding OnPageIndexChangedCommand}" PassEventArgsToCommand="True"/>
</b:EventTrigger>
</b:Interaction.Triggers>
</c:PageControl>
</Grid>
</Grid>
</Page>

26
BBWY.Client/Views/ServiceOrder/ServiceOrderList.xaml.cs

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace BBWY.Client.Views.ServiceOrder
{
/// <summary>
/// ServiceOrderList.xaml 的交互逻辑
/// </summary>
public partial class ServiceOrderList : Page
{
public ServiceOrderList()
{
InitializeComponent();
}
}
}

20
BBWY.Server.API/Controllers/OrderSyncController.cs

@ -59,7 +59,7 @@ namespace BBWY.Server.API.Controllers
}
/// <summary>
/// 订单推送
/// 接收订单推送
/// </summary>
/// <param name="request"></param>
[HttpPost]
@ -67,5 +67,23 @@ namespace BBWY.Server.API.Controllers
{
orderSyncBusiness.OrderPublish(request);
}
/// <summary>
/// 检查全店暂停订单
/// </summary>
[HttpPost]
public void CheckJDPauseOrder()
{
orderSyncBusiness.CheckJDPauseOrder(null);
}
/// <summary>
/// 检查全店暂停订单
/// </summary>
[HttpPost("{shopId}")]
public void CheckJDPauseOrder(long shopId)
{
orderSyncBusiness.CheckJDPauseOrder(shopId);
}
}
}

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

@ -0,0 +1,38 @@
using BBWY.Server.Business;
using BBWY.Server.Model.Dto;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace BBWY.Server.API.Controllers
{
public class ServiceOrderController : BaseApiController
{
private ServiceOrderBusiness serviceOrderBusiness { get; set; }
public ServiceOrderController(IHttpContextAccessor httpContextAccessor, ServiceOrderBusiness serviceOrderBusiness) : base(httpContextAccessor)
{
this.serviceOrderBusiness = serviceOrderBusiness;
}
/// <summary>
/// 查询服务单
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
public ServiceOrderResponse GetList([FromBody] ClientQueryServiceOrderRequest request)
{
return serviceOrderBusiness.GetList(request);
}
/// <summary>
/// 修改服务单
/// </summary>
/// <param name="request"></param>
[HttpPost]
public void EditServiceOrder([FromBody] EditQueryServiceOrderRequest request)
{
serviceOrderBusiness.EditServiceOrder(request);
}
}
}

21
BBWY.Server.API/Controllers/ServiceOrderSyncController.cs

@ -1,11 +1,11 @@
using BBWY.Server.Business.Sync;
using BBWY.Server.API.Filters;
using BBWY.Server.Business.Sync;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using System.Linq;
namespace BBWY.Server.API.Controllers
{
public class ServiceOrderSyncController : BaseApiController
{
private JDServiceOrderSyncBusiness jdServiceOrderSyncBusiness;
@ -15,11 +15,24 @@ namespace BBWY.Server.API.Controllers
this.jdServiceOrderSyncBusiness = jdServiceOrderSyncBusiness;
}
[Consumes("application/x-www-form-urlencoded")]
[HttpPost]
public void ReceiveKuaiDi100Push(string sign, string param)
public IActionResult ReceiveKuaiDi100Push([FromForm] string sign, [FromForm] string param)
{
var filters = ControllerContext.ActionDescriptor.FilterDescriptors;
var filterToRemove = filters.FirstOrDefault(f => f.Filter.GetType() == typeof(ResultFilter));
if (filterToRemove != null)
{
filters.Remove(filterToRemove);
}
jdServiceOrderSyncBusiness.ReceiveKuaiDi100Push(param);
return new JsonResult(new
{
result = true,
returnCode = "200",
message = "成功"
});
}
/// <summary>

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

@ -152,7 +152,8 @@ namespace BBWY.Server.Business
if (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.ReissueProductAmount = editAfterSaleOrderRequest.ReissueProductAmount;

6
BBWY.Server.Business/BBWY.Server.Business.csproj

@ -5,12 +5,6 @@
<GenerateDocumentationFile>True</GenerateDocumentationFile>
</PropertyGroup>
<ItemGroup>
<Compile Remove="新文件夹\**" />
<EmbeddedResource Remove="新文件夹\**" />
<None Remove="新文件夹\**" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="FreeSql" Version="2.6.100" />
<PackageReference Include="FreeSql.Provider.MySql" Version="2.6.100" />

2
BBWY.Server.Business/PlatformSDK/LogisticsCompanyConverter.cs

@ -21,7 +21,7 @@ namespace BBWY.Server.Business
new LogisticsCompanyRelationship(){SourceName="圆通速递(YTO)",TargetName="圆通快递"},
new LogisticsCompanyRelationship(){SourceName="邮政国内小包",TargetName="邮政快递包裹"},
new LogisticsCompanyRelationship(){SourceName="韵达快递",TargetName="韵达快递"},
new LogisticsCompanyRelationship(){SourceName="申通快递(STO)",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="申通快递(STO)",TargetName="申通快递",SecondTargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="顺丰速运",TargetName="顺丰快递"},
new LogisticsCompanyRelationship(){SourceName="百世快递",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="其他",TargetName="厂家自送"},

2
BBWY.Server.Business/PlatformSDK/PlatformSDKBusiness.cs

@ -188,7 +188,7 @@ namespace BBWY.Server.Business
throw new NotImplementedException();
}
public virtual JArray GetServiceOrderList(Model.Dto.QueryServiceOrderRequest request)
public virtual JArray GetServiceOrderList(QueryServiceOrderRequest request)
{
throw new NotImplementedException();
}

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

@ -0,0 +1,100 @@
using BBWY.Common.Models;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto;
using System;
using System.Collections.Generic;
using System.Text;
using Yitter.IdGenerator;
namespace BBWY.Server.Business
{
public class ServiceOrderBusiness : BaseBusiness, IDenpendency
{
public ServiceOrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator)
{
}
public ServiceOrderResponse GetList(ClientQueryServiceOrderRequest request)
{
var list = fsql.Select<ServiceOrder, Order, OrderSku>()
.InnerJoin((s, o, osku) => s.OrderId == o.Id)
.InnerJoin((s, o, osku) => s.OrderId == osku.OrderId && s.SkuId == osku.SkuId)
.Where((s, o, osku) => s.ShopId == request.ShopId)
.WhereIf(!string.IsNullOrEmpty(request.Sku), (s, o, osku) => s.SkuId == request.Sku)
.WhereIf(!string.IsNullOrEmpty(request.Spu), (s, o, osku) => s.ProductId == request.Spu)
.WhereIf(!string.IsNullOrEmpty(request.OrderId), (s, o, osku) => s.OrderId == request.OrderId)
.WhereIf(!string.IsNullOrEmpty(request.ServiceId), (s, o, osku) => s.ServiceId == request.ServiceId)
.WhereIf(request.ServiceOrderState != null, (s, o, osku) => s.Status == request.ServiceOrderState)
.WhereIf(request.ReturnDirection != null, (s, o, osku) => s.ReturnDirection == request.ReturnDirection)
.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)
.Page(request.PageIndex, request.PageSize)
.ToList((s, o, osku) => new ServiceOrderItemResponse
{
Id = s.Id,
ApplyTime = s.ApplyTime,
CreateTime = s.CreateTime,
ExpressName = s.ExpressName,
WayBillNo = s.WayBillNo,
ImageName = s.ImageName,
OrderId = s.OrderId,
SkuId = s.SkuId,
ProductId = s.ProductId,
ProductAppearance = s.ProductAppearance,
ProductFunction = s.ProductFunction,
ProductHealth = s.ProductHealth,
ProductPackage = s.ProductPackage,
ServiceResult = s.ServiceResult,
TransportDetails = s.TransportDetails,
WareHouseGrounpRemark = s.WareHouseGrounpRemark,
Status = s.Status,
ServiceId = s.ServiceId,
ShopId = s.ShopId,
RenewalOrderId = s.RenewalOrderId,
ReturnCheckRemark = s.ReturnCheckRemark,
Title = osku.Title,
ItemTotal = osku.ItemTotal.Value,
Logo = osku.Logo,
Price = osku.Price.Value,
SkuItemCount = osku.ItemTotal.Value,
ReturnDirection = s.ReturnDirection,
ServiceOrderRemark = s.ServiceOrderRemark,
StatusUpdateTime = s.StatusUpdateTime,
PurchaseOrderId = s.PurchaseOrderId,
PurchasePlatform = s.PurchasePlatform,
StorageType = o.StorageType
});
return new ServiceOrderResponse()
{
Count = total,
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();
});
}
}
}

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

@ -13,13 +13,19 @@ using Yitter.IdGenerator;
using System.Linq;
using BBWY.Server.Model.Db;
using FreeSql;
using BBWY.Common.Extensions;
namespace BBWY.Server.Business.Sync
{
public class JDServiceOrderSyncBusiness : BaseSyncBusiness, IDenpendency
{
private IList<LogisticsCompanyRelationship> jd_kd100_logisticsCompanyDictionary;
private IList<int> kuaiDi100PushStateList;
private IList<int> kuaiDi100PushStateList_zaitu;
private IList<int> kuaiDi100PushStateList_lanshou;
private IList<int> kuaiDi100PushStateList_qianshou;
private IList<int> kuaiDi100PushStateList_paijian;
private Dictionary<int, Enums.ServiceResult> processResultDic;
public JDServiceOrderSyncBusiness(RestApiService restApiService, IOptions<GlobalConfig> options, NLogManager nLogManager, IFreeSql fsql, IIdGenerator idGenerator, TaskSchedulerManager taskSchedulerManager, VenderBusiness venderBusiness, YunDingBusiness yunDingBusiness) : base(restApiService, options, nLogManager, fsql, idGenerator, taskSchedulerManager, venderBusiness, yunDingBusiness)
{
@ -48,13 +54,10 @@ jingdongkuaiyun 京东快运
huitongkuaidi
*/
kuaiDi100PushStateList = new List<int>()
{
0, //在途
1, //揽收
3, //签收
5, //派件
};
kuaiDi100PushStateList_zaitu = new List<int>() { 0, 1001, 1002, 1003 };
kuaiDi100PushStateList_lanshou = new List<int>() { 1, 101, 102, 103 };
kuaiDi100PushStateList_qianshou = new List<int>() { 3, 301, 302, 303, 304 };
kuaiDi100PushStateList_paijian = new List<int>() { 5, 501 };
jd_kd100_logisticsCompanyDictionary = new List<LogisticsCompanyRelationship>()
{
@ -80,6 +83,15 @@ huitongkuaidi 百世快递
new LogisticsCompanyRelationship(){ SourceName="百世快递",TargetName="百世快递",TargetCode="huitongkuaidi"},
new LogisticsCompanyRelationship(){ SourceName="百世快运",TargetName="百世快递",TargetCode="huitongkuaidi"},
};
processResultDic = new Dictionary<int, Enums.ServiceResult>()
{
{ 23,Enums.ServiceResult.},
{ 40,Enums.ServiceResult.退},
{ 60,Enums.ServiceResult.},
{ 90,Enums.ServiceResult.线},
{ 110,Enums.ServiceResult.}
};
}
public void SyncServiceOrder()
@ -92,6 +104,7 @@ huitongkuaidi 百世快递
System.Threading.CancellationToken.None,
TaskCreationOptions.LongRunning,
taskSchedulerManager.SyncServiceOrderTaskScheduler);
}
}
@ -112,16 +125,23 @@ huitongkuaidi 百世快递
var exceptServiceIdList = serviceIdList.Except(dbServiceIdList);
var apiOrderIdList = jtokenList.Where(j => exceptServiceIdList.Contains(j.Value<string>("serviceId"))).Select(j => j.Value<string>("orderId")).ToList();
var dbOrderSkuList = fsql.Select<OrderSku, Order>().InnerJoin((osku, o) => osku.OrderId == o.Id)
.Where((osku, o) => osku.ShopId == shopId && apiOrderIdList.Contains(osku.OrderId) && osku.Price != 0)
.ToList((osku, o) => new
{
Id = osku.Id,
ProductId = osku.ProductId,
SkuId = osku.SkuId,
OrderId = osku.OrderId,
ItemTotal = osku.ItemTotal,
StorageType = o.StorageType
var dbOrderSkuList = fsql.Select<OrderSku, Order, OrderCostDetail, PurchaseOrder>()
.InnerJoin((osku, o, ocd, po) => osku.OrderId == o.Id)
.LeftJoin((osku, o, ocd, po) => osku.OrderId == ocd.OrderId && osku.SkuId == ocd.SkuId)
.LeftJoin((osku, o, ocd, po) => ocd.PurchaseOrderPKId == po.Id)
.Where((osku, o, ocd, po) => o.ShopId == shopId && apiOrderIdList.Contains(osku.OrderId) && osku.Price != 0)
.ToList((osku, o, ocd, po) => new
{
osku.Id,
osku.ProductId,
osku.SkuId,
osku.OrderId,
osku.ItemTotal,
o.StorageType,
po.PurchasePlatform,
po.PurchaseMethod,
po.PurchaseOrderId,
ocd.PurchaseOrderPKId
});
List<ServiceOrder> insertServiceOrderList = new List<ServiceOrder>();
@ -130,8 +150,8 @@ huitongkuaidi 百世快递
foreach (var serviceOrderJToken in jtokenList)
{
var serviceId = serviceOrderJToken.Value<string>("serviceId");
var status = serviceOrderJToken.Value<int>("sserviceOrderJToken");
var statusUpdateTime = serviceOrderJToken.Value<DateTime>("updateTime");
var status = (Enums.ServiceOrderState)serviceOrderJToken.Value<int>("serviceStatus");
var statusUpdateTime = serviceOrderJToken.Value<long>("updateTime").StampToDateTime();
var dbServiceOrder = dbServiceOrderList.FirstOrDefault(s => s.ServiceId == serviceId);
if (dbServiceOrder == null)
{
@ -142,13 +162,9 @@ huitongkuaidi 百世快递
continue;
var isNeedSubscribeKuaiDi100 = false;
var isTuiHuoCang = false;
Enums.ServiceResult? serviceResult = null;
#region 待收货服务单,检查是否需要订阅快递100
if (status == 10005)
{
if (dbOsku.StorageType == Enums.StorageType.)
isNeedSubscribeKuaiDi100 = true;
else
if (status == Enums.ServiceOrderState.)
{
try
{
@ -169,12 +185,19 @@ huitongkuaidi 百世快递
if (!serviceOrderDetailResponse.Success)
throw new Exception($"获取服务单详情失败 {serviceOrderDetailResponse.Msg}");
//检查退货城市是否为泉州
isNeedSubscribeKuaiDi100 = serviceOrderDetailResponse.Data["returnWareAddress"].Value<int>("cityCode") == 2812;
var processResult = serviceOrderDetailResponse.Data.Value<int>("processResult");
if (processResultDic.ContainsKey(processResult))
serviceResult = processResultDic[processResult];
//检查退货城市是否为泉州鲤城区
isNeedSubscribeKuaiDi100 = (serviceOrderDetailResponse.Data["afsContactInfo"]?.Value<int>("cityCode") ?? 0) == 1332 &&
(serviceOrderDetailResponse.Data["afsContactInfo"]?.Value<int>("countyCode") ?? 0) == 42930;
isTuiHuoCang = isNeedSubscribeKuaiDi100;
}
catch { }
}
if (dbOsku.StorageType == Enums.StorageType.)
isNeedSubscribeKuaiDi100 = true;
}
#endregion
@ -192,7 +215,13 @@ huitongkuaidi 百世快递
StatusUpdateTime = statusUpdateTime,
IsSubscribeKuaiDi100 = false,
IsNeedSubscribeKuaiDi100 = isNeedSubscribeKuaiDi100,
ApplyTime = serviceOrderJToken.Value<DateTime>("applyTime"),
ApplyTime = serviceOrderJToken.Value<long>("applyTime").StampToDateTime(),
ServiceResult = serviceResult,
PurchaseMethod = dbOsku.PurchaseMethod,
PurchasePlatform = dbOsku.PurchasePlatform,
PurchaseOrderId = dbOsku.PurchaseOrderId,
PurchaseOrderPKId = dbOsku.PurchaseOrderPKId
};
if (isTuiHuoCang)
dbServiceOrder.ReturnDirection = 0;
@ -275,6 +304,7 @@ huitongkuaidi 百世快递
break;
}
if (jtokenList.Count() > 0)
SyncServiceOrder(shop, shopId, jtokenList, relayAPIHost, request.AppKey, request.AppSecret, request.AppToken);
}
catch (Exception ex)
@ -311,7 +341,7 @@ huitongkuaidi 百世快递
try
{
var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
var serviceOrderList = fsql.Select<ServiceOrder>().Where(s => s.ShopId == shop.Id &&
var serviceOrderList = fsql.Select<ServiceOrder>().Where(s => s.ShopId == shop.ShopId &&
s.IsNeedSubscribeKuaiDi100 == true &&
s.IsSubscribeKuaiDi100 == false)
.OrderByDescending(s => s.StatusUpdateTime)
@ -351,6 +381,11 @@ huitongkuaidi 百世快递
serviceOrder.WayBillNo = serviceOrderDeliveryResponse.Data.Value<string>("expressCode");
serviceOrder.ExpressName = serviceOrderDeliveryResponse.Data.Value<string>("expressCompany");
if (!string.IsNullOrEmpty(serviceOrder.WayBillNo) && serviceOrder.WayBillNo.StartsWith("JD") && string.IsNullOrEmpty(serviceOrder.ExpressName))
{
serviceOrder.ExpressName = "京东快递";
}
isUpdateDelivery = !string.IsNullOrEmpty(serviceOrder.WayBillNo) && !string.IsNullOrEmpty(serviceOrder.ExpressName);
}
#endregion
@ -403,7 +438,7 @@ huitongkuaidi 百世快递
.SetIf(isUpdateSubscribe, s => s.IsSubscribeKuaiDi100, true);
updateSerivceOrderList.Add(update);
if (isUpdateDelivery)
if (isUpdateDelivery && insertExpressOrderList.Count(e => e.WayBillNo == serviceOrder.WayBillNo) == 0)
{
insertExpressOrderList.Add(new ExpressOrder()
{
@ -419,6 +454,22 @@ huitongkuaidi 百世快递
}
}
if (insertExpressOrderList.Count() > 0)
{
var insertExpressOrderWayBillNoList = insertExpressOrderList.Select(e => e.WayBillNo).ToList();
var dbWayBillNoList = fsql.Select<ExpressOrder>().Where(e => insertExpressOrderWayBillNoList.Contains(e.WayBillNo)).ToList(e => e.WayBillNo);
if (dbWayBillNoList.Count() > 0)
{
for (var i = 0; i < insertExpressOrderList.Count(); i++)
{
if (dbWayBillNoList.Any(w => w == insertExpressOrderList[i].WayBillNo))
{
insertExpressOrderList.Remove(insertExpressOrderList[i]);
i--;
}
}
}
}
fsql.Transaction(() =>
{
@ -443,14 +494,16 @@ huitongkuaidi 百世快递
return result.TargetCode;
}
public void ReceiveKuaiDi100Push(string param)
{
nLogManager.Default().Info($"收到快递100推送 {param}");
JObject jobject = JObject.Parse(param);
var waybillNo = jobject["lastResult"].Value<string>("nu");
var state = jobject["lastResult"].Value<int>("state");
if (!kuaiDi100PushStateList.Contains(state))
if (!kuaiDi100PushStateList_lanshou.Contains(state) &&
!kuaiDi100PushStateList_zaitu.Contains(state) &&
!kuaiDi100PushStateList_paijian.Contains(state) &&
!kuaiDi100PushStateList_qianshou.Contains(state))
return;
var serviceOrderList = fsql.Select<ServiceOrder>().Where(s => s.WayBillNo == waybillNo).ToList();
@ -461,50 +514,49 @@ huitongkuaidi 百世快递
if (expressOrder == null)
throw new Exception($"快递单号{waybillNo} 未找到对应的快递单");
if (expressOrder.TransportStatus == 1) //已入库
DateTime? signTime = null;
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;
Enums.TransportState? newStatus = null;
IUpdate<ExpressOrder> updateExpressOrder = null;
List<IUpdate<ServiceOrder>> updateServiceOrderList = new List<IUpdate<ServiceOrder>>();
/*
0, //在途
1, //揽收
3, //签收
5, //派件
*/
var isUpdate = false;
var newStatus = 0;
DateTime? signTime = null;
if (state == 0 || state == 1)
if (kuaiDi100PushStateList_zaitu.Contains(state) || kuaiDi100PushStateList_lanshou.Contains(state))
{
//在途 //揽收
if (expressOrder.TransportStatus != 3)
if (expressOrder.TransportStatus != Enums.TransportState.)
{
isUpdate = true;
newStatus = 3;
newStatus = Enums.TransportState.;
}
}
else if (state == 3)
else if (kuaiDi100PushStateList_qianshou.Contains(state))
{
if (expressOrder.TransportStatus != 0)
if (expressOrder.TransportStatus != Enums.TransportState.)
{
isUpdate = true;
newStatus = 0;
var data = jobject["lastResult"]["data"].Children().FirstOrDefault(d => d.Value<int>("statusCode") == 3);
if (data != null)
signTime = DateTime.Parse(data.Value<string>("ftime"));
newStatus = Enums.TransportState.;
signTime = GetSignTime(jobject);
}
}
else if (state == 5)
else if (kuaiDi100PushStateList_paijian.Contains(state))
{
if (expressOrder.TransportStatus != 2)
if (expressOrder.TransportStatus != Enums.TransportState.)
{
isUpdate = true;
newStatus = 2;
newStatus = Enums.TransportState.;
}
}
@ -513,12 +565,13 @@ huitongkuaidi 百世快递
fsql.Transaction(() =>
{
fsql.Update<ExpressOrder>(expressOrder.Id).Set(e => e.TransportStatus, newStatus)
.SetIf(state == 3, e => e.SignTime, signTime)
.SetIf(kuaiDi100PushStateList_qianshou.Contains(state), e => e.SignTime, signTime)
.Set(e => e.UpdateTime, DateTime.Now)
.ExecuteAffrows(); //签收
foreach (var serviceOrder in serviceOrderList)
{
if (serviceOrder.TransportDetails == 1)
if (serviceOrder.TransportDetails == Enums.TransportState.)
continue;
fsql.Update<ServiceOrder>(serviceOrder.Id).Set(s => s.TransportDetails, newStatus)
.ExecuteAffrows();
@ -526,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;
}
}
}

124
BBWY.Server.Business/Sync/OrderSyncBusiness.cs

@ -735,7 +735,7 @@ namespace BBWY.Server.Business
var shopList = venderBusiness.GetShopList(platform: Enums.Platform.);
foreach (var shop in shopList)
{
Task.Factory.StartNew(() => SyncOrder(shop, string.Empty, isAuto: true), System.Threading.CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SyncOrderTaskScheduler);
Task.Factory.StartNew(() => SyncOrder(shop, string.Empty, isAuto: true), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SyncOrderTaskScheduler);
}
}
@ -809,86 +809,66 @@ namespace BBWY.Server.Business
return orderState;
}
/// <summary>
/// 接收订单推送
/// </summary>
/// <param name="request"></param>
public void OrderPublish(OrderPublishRequest request)
{
/*
if (erpOrderStatus.equals(("1"))){
status="新订单";
}else if (erpOrderStatus.equals(("2"))){
status="等待付款";
}else if (erpOrderStatus.equals(("3"))){
status="等待付款确认";
}else if (erpOrderStatus.equals(("4"))){
status="延迟付款确认";
}else if (erpOrderStatus.equals(("5"))){
status="暂停";
}else if (erpOrderStatus.equals(("6"))){
status="店长最终审核";
}else if (erpOrderStatus.equals(("7"))){
status="等待打印";
}else if (erpOrderStatus.equals(("8"))){
status="等待出库";
}else if (erpOrderStatus.equals(("9"))){
status="等待打包";
}else if (erpOrderStatus.equals(("10"))){
status="等待发货";
}else if (erpOrderStatus.equals(("11"))){
status="自提途中";
}else if (erpOrderStatus.equals(("12"))){
status="上门提货";
}else if (erpOrderStatus.equals(("13"))){
status="自提退货";
}else if (erpOrderStatus.equals(("14"))){
status="确认自提";
}else if (erpOrderStatus.equals(("15"))){
status="等待回执";
}else if (erpOrderStatus.equals(("16"))){
status="等待确认收货";
}else if (erpOrderStatus.equals(("17"))){
status="配送退货";
}else if (erpOrderStatus.equals(("18"))){
status="货到付款确认";
}else if (erpOrderStatus.equals(("19"))){
status="完成";
}else if (erpOrderStatus.equals(("20"))){
status="等待分期付款";
}else if (erpOrderStatus.equals(("21"))){
status="收款确认";
}else if (erpOrderStatus.equals(("22"))){
status="锁定";
}else if (erpOrderStatus.equals(("23"))){
status="等待退款";
}else if (erpOrderStatus.equals(("24"))){
status="等待客户回复";
}else if (erpOrderStatus.equals(("25"))){
status="厂商确认完成";
}else if (erpOrderStatus.equals(("29"))){
status="等待三方出库";
}else if (erpOrderStatus.equals(("30"))){
status="等待三方发货";
}else if (erpOrderStatus.equals(("31"))){
status="等待三方发货完成";
}else if (erpOrderStatus.equals(("26"))){
status="等待再审核";
}else if (erpOrderStatus.equals(("27"))){
status="对账中";
}else if (erpOrderStatus.equals(("28"))){
status="退款中";
}else if (erpOrderStatus.equals(("-1"))){
status="未知";
}else if (erpOrderStatus.equals(("NOT_PAY"))){
status="新订单";
}else if (erpOrderStatus.equals(
*/
nLogManager.Default().Info($"订单推送-{JsonConvert.SerializeObject(request)}");
if (request.erpOrderStatus != "5")
if (request.orderStatus != "TRADE_CREATED")
return;
var shop = venderBusiness.GetShopByVenderId(request.venderId);
if (shop == null)
return;
Task.Factory.StartNew(() => SyncOrder(shop, request.orderId, null, null, isAuto: false, Enums.SortTimeType.StartTime), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SyncOrderTaskScheduler);
var isExists = fsql.Select<WaitPayOrder>(request.orderId).Any();
if (!isExists)
{
fsql.Insert(new WaitPayOrder()
{
CreateTime = DateTime.Now,
Id = request.orderId,
ShopId = long.Parse(shop.ShopId)
}).ExecuteAffrows();
}
}
#region 同步暂停订单
public void CheckJDPauseOrder(long? shopId)
{
var shopList = venderBusiness.GetShopList(shopId);
var shopIds = shopList.Select(s => long.Parse(s.ShopId)).ToList();
var deleteRow = fsql.Select<WaitPayOrder>().Where(wo => shopIds.Contains(wo.ShopId.Value))
.Where(wo => fsql.Select<Order>().Where(o => o.Id == wo.Id).Any())
.ToDelete()
.ExecuteAffrows();
var waitPayOrderList = fsql.Select<WaitPayOrder>().Where(wo => shopIds.Contains(wo.ShopId.Value)).ToList();
if (waitPayOrderList.Count() == 0)
return;
foreach (var shop in shopList)
{
var currentWaitPayOrderList = waitPayOrderList.Where(wo => wo.ShopId == long.Parse(shop.ShopId)).ToList();
if (currentWaitPayOrderList.Count() > 0)
{
Task.Factory.StartNew(() => CheckJDPauseOrder(shop, currentWaitPayOrderList), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SyncOrderTaskScheduler);
}
}
}
private void CheckJDPauseOrder(ShopResponse shop, IList<WaitPayOrder> waitPayOrderList)
{
foreach (var w in waitPayOrderList)
{
SyncOrder(shop, w.Id);
}
}
#endregion
}
}

4
BBWY.Server.Business/TaskSchedulerManager.cs

@ -14,6 +14,8 @@ namespace BBWY.Server.Business
public LimitedConcurrencyLevelTaskScheduler SyncServiceOrderTaskScheduler { get; private set; }
public LimitedConcurrencyLevelTaskScheduler SyncPauseOrderTaskScheduler { get; private set; }
public LimitedConcurrencyLevelTaskScheduler PurchaseOrderCallbackTaskScheduler { get; private set; }
public LimitedConcurrencyLevelTaskScheduler JDPopularizeTaskScheduler { get; private set; }
@ -48,6 +50,8 @@ namespace BBWY.Server.Business
JDPromotionDelayTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
JDPromotionMonitorTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
JDPromotionAutoStartTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
SyncPauseOrderTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
}
}
}

6
BBWY.Server.Model/Db/Order/ExpressOrder.cs

@ -11,7 +11,7 @@ namespace BBWY.Server.Model.Db
public partial class ExpressOrder
{
[Column(IsPrimary = true, IsIdentity = true)]
[Column(IsPrimary = true)]
public long Id { get; set; }
[Column(DbType = "datetime")]
@ -45,8 +45,8 @@ namespace BBWY.Server.Model.Db
/// <summary>
/// 物流状态(0=待质检,1=已入库,2=派送中,3=运输中)
/// </summary>
public int? TransportStatus { get; set; }
[Column(MapType = typeof(int?))]
public Enums.TransportState? TransportStatus { get; set; }
[Column(DbType = "datetime")]
public DateTime? UpdateTime { get; set; }

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

@ -1,21 +1,17 @@
using FreeSql.DatabaseModel;using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Newtonsoft.Json;
using FreeSql.DataAnnotations;
using System;
namespace BBWY.Server.Model.Db {
namespace BBWY.Server.Model.Db
{
/// <summary>
/// 服务单表(new)
/// </summary>
[ Table(Name = "serviceorder", DisableSyncStructure = true)]
public partial class ServiceOrder {
[Table(Name = "serviceorder", DisableSyncStructure = true)]
public partial class ServiceOrder
{
[Column(IsPrimary = true, IsIdentity = true)]
[Column(IsPrimary = true)]
public long Id { get; set; }
/// <summary>
@ -86,26 +82,21 @@ namespace BBWY.Server.Model.Db {
/// <summary>
/// 产品外观 (严重损=0 轻微损=1 新=2)
/// </summary>
public int? ProductAppearance { get; set; }
[Column(MapType = typeof(int?))]
public Enums.ProductAppearance? ProductAppearance { get; set; }
/// <summary>
/// 产品功能 (坏=0 好=1)
/// </summary>
public int? ProductFunction { get; set; }
[Column(MapType = typeof(int?))]
public Enums.ProductFunction? ProductFunction { get; set; }
/// <summary>
/// 商品健康状态 (残次品=0 良品=1)
/// </summary>
[Column(MapType = typeof(int?))]
public Enums.NewProductHealth? ProductHealth { get; set; }
public int? ProductHealth { get; set; }
/// <summary>
/// 商品情况(定义待变更);名称待定,以前的商品情况,叶总需要更换定义
/// </summary>
public int? ProductHealth2 { get; set; }
[Column(StringLength = 50)]
public string ProductId { get; set; }
@ -113,20 +104,22 @@ namespace BBWY.Server.Model.Db {
/// <summary>
/// 产品包装(无=0 非新=1 新=2)
/// </summary>
[Column(MapType = typeof(int?))]
public Enums.ProductPackage? ProductPackage { get; set; }
public int? ProductPackage { get; set; }
/*
/// <summary>
/// 商品处理方式;弃用
/// </summary>
public int? ProductResult { get; set; }
*/
/// <summary>
/// 采购方式
/// </summary>
public int? PurchaseMethod { get; set; }
[Column(MapType = typeof(int?))]
public Enums.PurchaseMethod? PurchaseMethod { get; set; }
/// <summary>
/// 采购单号
@ -143,8 +136,8 @@ namespace BBWY.Server.Model.Db {
/// <summary>
/// 采购平台
/// </summary>
public int? PurchasePlatform { get; set; }
[Column(MapType = typeof(int?))]
public Enums.Platform? PurchasePlatform { get; set; }
/// <summary>
/// 退款支付宝订单号
@ -203,8 +196,8 @@ namespace BBWY.Server.Model.Db {
/// <summary>
/// 退货去向(退货仓=0,采购商=1,原返=2,无退货=3)
/// </summary>
public int? ReturnDirection { get; set; }
[Column(MapType = typeof(int?))]
public Enums.ReturnDirection? ReturnDirection { get; set; }
/// <summary>
/// SD退货运费
@ -227,8 +220,8 @@ namespace BBWY.Server.Model.Db {
/// <summary>
/// 服务单处理结果
/// </summary>
public int? ServiceResult { get; set; }
[Column(MapType = typeof(int?))]
public Enums.ServiceResult? ServiceResult { get; set; }
[Column(StringLength = 20)]
public string ShopId { get; set; }
@ -243,10 +236,10 @@ namespace BBWY.Server.Model.Db {
public int? SkuItemCount { get; set; }
/// <summary>
/// 服务单状态
/// 服务单状态 待收货 = 10005,取消 = 10011,完成 = 10010
/// </summary>
public int? Status { get; set; }
[Column(MapType = typeof(int?))]
public Enums.ServiceOrderState? Status { get; set; }
/// <summary>
/// 变更时间
@ -263,8 +256,8 @@ namespace BBWY.Server.Model.Db {
/// <summary>
/// 服务单物流状态(0=待质检,1=已入库,2=派送中,3=运输中)
/// </summary>
public int? TransportDetails { get; set; }
[Column(MapType = typeof(int?))]
public Enums.TransportState? TransportDetails { get; set; }
/// <summary>
/// 仓库组备注
@ -290,6 +283,36 @@ namespace BBWY.Server.Model.Db {
/// </summary>
[Column(DbType = "datetime")]
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/Db/Order/WaitPayOrder.cs

@ -0,0 +1,21 @@
using FreeSql.DataAnnotations;
using System;
namespace BBWY.Server.Model.Db
{
[ Table(Name = "waitpayorder", DisableSyncStructure = true)]
public partial class WaitPayOrder
{
[Column(StringLength = 100, IsPrimary = true, IsNullable = false)]
public string Id { get; set; }
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
public long? ShopId { get; set; }
}
}

30
BBWY.Server.Model/Dto/Request/ServiceOrder/ClientQueryServiceOrderRequest.cs

@ -0,0 +1,30 @@

using System;
namespace BBWY.Server.Model.Dto
{
public class ClientQueryServiceOrderRequest
{
public string OrderId { get; set; }
public string Sku { get; set; }
public string Spu { get; set; }
public string ServiceId { get; set; }
public string ShopId { get; set; }
public Enums.ServiceOrderState? ServiceOrderState { get; set; }
public Enums.ReturnDirection? ReturnDirection { get; set; }
public int PageIndex { get; set; }
public int PageSize { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? EndDate { 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; }
}
}

2
BBWY.Server.Model/Dto/Request/Sync/OrderPublishRequest.cs

@ -2,7 +2,7 @@
{
public class OrderPublishRequest
{
public string erpOrderStatus { get; set; }
public string orderStatus { get; set; }
public string orderId { get; set; }

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

@ -0,0 +1,291 @@
using FreeSql.DataAnnotations;
using System;
using System.Collections.Generic;
namespace BBWY.Server.Model.Dto
{
public class ServiceOrderItemResponse
{
public long Id { get; set; }
/// <summary>
/// 售后成本(不含退款采购成本)
/// </summary>
public decimal? AfterTotalCost { get; set; } = 0.00M;
/// <summary>
/// 申请时间
/// </summary>
public DateTime? ApplyTime { get; set; }
/// <summary>
/// 耗材费
/// </summary>
public decimal? ConsumableAmount { get; set; } = 0.00M;
public DateTime? CreateTime { get; set; }
/// <summary>
/// 发货快递费
/// </summary>
public decimal? DeliveryExpressFreight { get; set; } = 0.00M;
/// <summary>
/// 头程费
/// </summary>
public decimal? FirstFreight { get; set; } = 0.00M;
/// <summary>
/// 退货拍摄图(名称)
/// </summary>
public string ImageName { get; set; }
/// <summary>
/// 入仓操作费
/// </summary>
public decimal? InStorageAmount { get; set; } = 0.00M;
/// <summary>
/// 是否订阅快递100
/// </summary>
public bool? IsSubscribeKuaiDi100 { get; set; }
/// <summary>
/// 是否需要订阅快递100
/// </summary>
public bool? IsNeedSubscribeKuaiDi100 { get; set; }
public string OrderId { get; set; }
/// <summary>
/// 出仓操作费
/// </summary>
public decimal? OutStorageAmount { get; set; } = 0.00M;
/// <summary>
/// 产品外观 (严重损=0 轻微损=1 新=2)
/// </summary>
public Enums.ProductAppearance? ProductAppearance { get; set; }
/// <summary>
/// 产品功能 (坏=0 好=1)
/// </summary>
public Enums.ProductFunction? ProductFunction { get; set; }
/// <summary>
/// 商品健康状态 (残次品=0 良品=1)
/// </summary>
public Enums.NewProductHealth? ProductHealth { get; set; }
public string ProductId { get; set; }
/// <summary>
/// 产品包装(无=0 非新=1 新=2)
/// </summary>
public Enums.ProductPackage? ProductPackage { get; set; }
/// <summary>
/// 采购方式
/// </summary>
public Enums.PurchaseMethod? PurchaseMethod { get; set; }
/// <summary>
/// 采购单号
/// </summary>
public string PurchaseOrderId { get; set; }
/// <summary>
/// 采购单主键
/// </summary>
public long? PurchaseOrderPKId { get; set; }
/// <summary>
/// 采购平台
/// </summary>
public Enums.Platform? PurchasePlatform { get; set; }
/// <summary>
/// 退款支付宝订单号
/// </summary>
public string RefundAlipayOrderNo { get; set; }
/// <summary>
/// 退款金额
/// </summary>
public decimal? RefundAmount { get; set; } = 0.00M;
/// <summary>
/// 退货入仓操作费
/// </summary>
public decimal? RefundInStorageAmount { get; set; } = 0.00M;
/// <summary>
/// 退款商户订单号
/// </summary>
public string RefundMerchantOrderNo { get; set; }
/// <summary>
/// 退款采购成本
/// </summary>
public decimal? RefundPurchaseAmount { get; set; } = 0.00M;
/// <summary>
/// 退款时间
/// </summary>
public DateTime? RefundTime { get; set; }
/// <summary>
/// 售后补发成本
/// </summary>
public decimal? ReissueAfterSaleAmount { get; set; } = 0.00M;
/// <summary>
/// 补发快递费
/// </summary>
public decimal? ReissueFreight { get; set; } = 0.00M;
/// <summary>
/// 补发货款成本
/// </summary>
public decimal? ReissueProductAmount { get; set; } = 0.00M;
/// <summary>
/// 退货去向(退货仓=0,采购商=1,原返=2,无退货=3)
/// </summary>
public Enums.ReturnDirection? ReturnDirection { get; set; }
/// <summary>
/// SD退货运费
/// </summary>
public decimal? SDRefundFreight { get; set; } = 0.00M;
/// <summary>
/// 服务单号
/// </summary>
public string ServiceId { get; set; }
/// <summary>
/// 服务单租备注
/// </summary>
public string ServiceOrderRemark { get; set; }
/// <summary>
/// 服务单处理结果
/// </summary>
public Enums.ServiceResult? ServiceResult { get; set; }
public string ShopId { get; set; }
public string SkuId { get; set; }
/// <summary>
/// SKU销售件数
/// </summary>
public int? SkuItemCount { get; set; }
/// <summary>
/// 服务单状态 待收货 = 10005,取消 = 10011,完成 = 10010
/// </summary>
public Enums.ServiceOrderState? Status { get; set; }
/// <summary>
/// 变更时间
/// </summary>
public DateTime? StatusUpdateTime { get; set; }
/// <summary>
/// 仓储费
/// </summary>
public decimal? StorageAmount { get; set; } = 0.00M;
/// <summary>
/// 服务单物流状态(0=待质检,1=已入库,2=派送中,3=运输中)
/// </summary>
public Enums.TransportState? TransportDetails { get; set; }
/// <summary>
/// 仓库组备注
/// </summary>
public string WareHouseGrounpRemark { get; set; }
/// <summary>
/// 快递单号
/// </summary>
public string WayBillNo { get; set; }
/// <summary>
/// 快递公司名称
/// </summary>
public string ExpressName { get; set; }
/// <summary>
/// 质检入库时间
/// </summary>
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
public string Logo { get; set; }
public string Title { get; set; }
//public string ContactName { get; set; }
//public string Mobile { get; set; }
public int ItemTotal { get; set; }
public decimal Price { get; set; }
#endregion
#region Order
public Enums.StorageType? StorageType { get; set; }
#endregion
}
public class ServiceOrderResponse
{
public IList<ServiceOrderItemResponse> Items { get; set; }
public long Count { get; set; }
}
}

58
BBWY.Server.Model/Enums.cs

@ -16,7 +16,7 @@
}
/// <summary>
/// 采购方式
/// 采购方式 线上采购 = 0,线下采购 = 1
/// </summary>
public enum PurchaseMethod
{
@ -255,5 +255,61 @@
{
= 0, = 1, = 2
}
/// <summary>
/// 服务单状态
/// </summary>
public enum ServiceOrderState
{
= 10005,
= 10011,
= 10010
}
public enum ReturnDirection
{
退 = 0, = 1, = 2, 退 = 3
}
/// <summary>
/// 运输状态 0=待质检,1=已入库,2=派送中,3=运输中
/// </summary>
public enum TransportState
{
= 0, = 1, = 2, = 3
}
/// <summary>
/// 商品健康状态 残次品=0 良品=1
/// </summary>
public enum NewProductHealth
{
= 0, = 1
}
/// <summary>
/// 产品功能 坏=0 好=1
/// </summary>
public enum ProductFunction
{
= 0, = 1
}
/// <summary>
/// 产品外观 (严重损=0 轻微损=1 新=2)
/// </summary>
public enum ProductAppearance
{
= 0, = 1, = 2
}
/// <summary>
/// 产品包装(无=0 非新=1 新=2)
/// </summary>
public enum ProductPackage
{
= 0, = 1, = 2
}
}
}

72
BBWY.Test/Program.cs

@ -45,73 +45,21 @@ namespace BBWY.Test
//var token = "44c19a1c1fbd4641957e6e8985ed1358jmtl"; //森王玩具
//var token = "4a0ddc095e054c7aa90adcaccb14f83cwzgr"; //可比车品
var dt1 = DateTime.Now;
List<string> list = new List<string>();
for (var i = 1; i <= 5000000; i++)
{
var str = tomMd5($"Mozilla/5.0 (Linux; Android 12; 21121210C Build/SKQ1.211006.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/13.8 SP-engine/2.46.0 baiduboxapp/13.8.1.10 (Baidu; P1 12) NABar/1.0 Edg/102.0.5005.63_{i}_192.158.241.{i}_28726526517321");
Console.WriteLine($"生成第{i}位指纹,长度{str.Length},{str}");
list.Add(str);
}
var dt2 = DateTime.Now;
Console.WriteLine($"总数量{list.Count},总耗时{(dt2 - dt1).TotalSeconds}秒");
//var dt1 = DateTime.Now;
//List<string> list = new List<string>();
//for (var i = 1; i <= 5000000; i++)
//{
// var str = tomMd5($"Mozilla/5.0 (Linux; Android 12; 21121210C Build/SKQ1.211006.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/13.8 SP-engine/2.46.0 baiduboxapp/13.8.1.10 (Baidu; P1 12) NABar/1.0 Edg/102.0.5005.63_{i}_192.158.241.{i}_28726526517321");
// Console.WriteLine($"生成第{i}位指纹,长度{str.Length},{str}");
// list.Add(str);
//}
//var dt2 = DateTime.Now;
//Console.WriteLine($"总数量{list.Count},总耗时{(dt2 - dt1).TotalSeconds}秒");
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));
Console.ReadKey();
}

5
JD.API/Controllers/PlatformSDKController.cs

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

2
JD.API/appsettings.json

@ -9,7 +9,7 @@
"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;",
},
"IsEnableSwagger": false,
"IsEnableSwagger": true,
"AllowedHosts": "*",
"ValidatePlatformKey": 1
}

Loading…
Cancel
Save