From 761e3f102f3cb3b81cd0c6c8c0e30ccc3b3b2e0e Mon Sep 17 00:00:00 2001 From: wule Date: Wed, 11 Nov 2026 14:50:05 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=BB=E5=8D=95=E7=9B=B8=E5=85=B3=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=9F=A5=E8=AF=A2=E5=85=A8=E9=83=A8=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=BC=82=E6=AD=A5=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs | 46 +- .../PDDMultiBuyerOrderReadCtrl.xaml.cs | 26 +- .../BuyerCtrls/TbBuyerOrderReadCtrl.xaml.cs | 22 +- .../Ctrls/OrderCtrls/OrderListCtrl.xaml.cs | 640 +++++++++--------- .../Ctrls/OrderCtrls/OrderTransitService.cs | 6 +- .../TransitReturnOrderWindow.xaml.cs | 24 +- Work/_29Tools/BLL/HttpResponseYkdBLL.cs | 72 +- 7 files changed, 441 insertions(+), 395 deletions(-) diff --git a/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs b/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs index 0d718c9..46dedc6 100644 --- a/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs @@ -574,7 +574,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls /// /// /// - List GetOrderInfo(string order_ids) + async Task> GetOrderInfo(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); @@ -599,7 +599,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (orders == null) orders = new List(); - var orderItems = OrderListCtrl.GetOrderItemInfo(order_ids); + var orderItems = await OrderListCtrl.GetOrderItemInfo(order_ids); foreach (var orderItem in orderItems) { var order = orders.FirstOrDefault(o => o.order_id == orderItem.order_id); @@ -761,7 +761,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls } // 装载同步单 - var syncOrderList = OrderListCtrl.GetSyncLogistics(out_order_nos); + var syncOrderList = await OrderListCtrl.GetSyncLogistics(out_order_nos); foreach (var syncOrder in syncOrderList) { if (!lstSyncLogistics.Contains(syncOrder)) @@ -781,7 +781,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls var order_id_lst = transitOrderList.Select(ts => ts.order_no).ToList(); order_id_lst.AddRange(orderExtList.Select(ts => ts.order_id)); var order_ids = string.Join(",", order_id_lst.Distinct()); - var orders = GetOrderInfo(order_ids); + var orders = await GetOrderInfo(order_ids); //var buyerAfterSales = GetOrderAfterSales(order_ids); @@ -1124,7 +1124,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls order_id_lst.AddRange(orderExtList.Select(ts => ts.order_id)); var order_ids = string.Join(",", order_id_lst.Distinct()); - var orders = GetOrderInfo(order_ids); + var orders = await GetOrderInfo(order_ids); foreach (var order in orders) { foreach (var orderItem in order.orderItems) @@ -2233,13 +2233,13 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (btn.DataContext is PddBuyerOrderLiteInfo buyerOrder) { btn.IsEnabled = false; - Task.Run(() => + Task.Run(async () => { var out_order_nos = buyerOrder.order_sn; var transitOrderList = GetOrderTransitWarehouseInfo(out_order_nos); var order_ids = string.Join(",", transitOrderList.Select(ts => ts.order_no)); - var orders = GetOrderInfo(order_ids); + var orders = await GetOrderInfo(order_ids); foreach (var order in orders) { foreach (var orderItem in order.orderItems) @@ -2584,7 +2584,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls } } - public void SetPickUpNo(PddPickInfo pddPickInfo) + public async Task SetPickUpNo(PddPickInfo pddPickInfo) { List orderSnTracks = new List(); foreach (var combine in pddPickInfo.combine_list) @@ -2600,7 +2600,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls return; //var syncOrderAllList = OrderListCtrl.GetSyncLogistics(string.Join(",", orderSnTracks.Select(o => o.order_sn))); - var syncOrderList = OrderListCtrl.GetSyncLogistics(string.Join(",", orderSnTracks.Select(o => o.order_sn)), 1); + var syncOrderList = await OrderListCtrl.GetSyncLogistics(string.Join(",", orderSnTracks.Select(o => o.order_sn)), 1); foreach (var sOrder in syncOrderList) { var orderSnTrack = orderSnTracks.FirstOrDefault(o => o.order_sn == sOrder.order_id); @@ -2681,7 +2681,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls } } - public void SendAsyncWaybillOrder(PddBuyerOrderLiteInfo order, bool showErrBox = false) + public async Task SendAsyncWaybillOrder(PddBuyerOrderLiteInfo order, bool showErrBox = false) { try { @@ -2692,7 +2692,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls } // 取最新订单状态 - var wxOrder = GetOrderInfo(order.ShopOrderIdStr).FirstOrDefault(); + var wxOrder = (await GetOrderInfo(order.ShopOrderIdStr))?.FirstOrDefault(); if (wxOrder == null) throw new Exception("买手单对应微信订单不存在!"); var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == wxOrder.shop_id.ToString()); @@ -2838,8 +2838,8 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls })); } - // 手动调用直发外采星系 - public static string SendAfterSaleE57NeedManual(PddBuyerOrderLiteInfo order, string statusText) + // 手动调用直发外采信息 + public static async Task SendAfterSaleE57NeedManualAsync(PddBuyerOrderLiteInfo order, string statusText) { Thread.Sleep(100); @@ -2857,21 +2857,21 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls var dataStr = JsonHelper.SerializeObject(obj); string url = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/updateByOrderIdAfterSaleStatus"; //成功 "0SUCCESS" - var exportRst = HttpResponseWXBLL.e57PostResponse(url, dataStr, ""); + var exportRst = await HttpResponseWXBLL.e57PostResponseAsync(url, dataStr); for (int i = 0; i < 3 && exportRst.Contains("操作超时"); i++) { Thread.Sleep(210000); - HttpResponseWXBLL.e57PostResponse(url, dataStr, ""); + exportRst = await HttpResponseWXBLL.e57PostResponseAsync(url, dataStr); } - if (exportRst.Contains("SUCCESS") || exportRst.Contains("更新外采订单的售后成功") || exportRst.Contains("0") || exportRst.Contains("200")) + if (exportRst.Contains("SUCCESS") || exportRst.Contains("更新外采订单的售后成功") || exportRst.Contains("\"code\":0") || exportRst.Contains("\"code\":200")) { order.OutAfterSaleStatusStr = statusText; return exportRst; } else { - BaseMsgWindow.ShowAnimateMessage("订单 " + order.ShopOrderIdStr + " 修改售后状态失败 服务端返回:" + BaseRegex.GetStringXmlByRegs(ref exportRst, exportRst, "msg"), "Error", 6); + BaseMsgWindow.ShowAnimateMessage("订单 " + order.ShopOrderIdStr + " 修改售后状态失败 服务端返回:" + BaseRegex.GetStringJsonByRegs(ref exportRst, exportRst, "msg"), "Error", 6); return exportRst; } } @@ -3011,13 +3011,13 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls /// /// /// - public string PddDirectAutoAfterSale(PddBuyerOrderLiteInfo order) + public async Task PddDirectAutoAfterSale(PddBuyerOrderLiteInfo order) { if (!order.order_status_prompt.Contains("待发货")) { if (order.OutAfterSaleStatusStr.IsNullOrEmpty()) { - var refundRst = SendAfterSaleE57NeedManual(order, "已发货,需手动申请售后"); + var refundRst = await SendAfterSaleE57NeedManualAsync(order, "已发货,需手动申请售后"); } return "{\"success\":false,\"msg\":\"仅未发货单可以自动退货\"}"; } @@ -3029,14 +3029,14 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls // 保存退款成功状态 order.order_status_prompt = "退款成功"; // 中转仓订单买手号售后信息 存到服务端 - var refundRst = SendAfterSaleE57NeedManual(order, "退款成功"); - if (refundRst.Contains("0") || refundRst.Contains("200")) + var refundRst = await SendAfterSaleE57NeedManualAsync(order, "退款成功"); + if (refundRst.Contains("\"code\":0") || refundRst.Contains("\"code\":200")) { order.sendStatus = "退款成功 买手退款信息更新成功"; } else { - var msg = BaseRegex.GetStringXml(ref refundRst, "msg"); + var msg = BaseRegex.GetStringJson(ref refundRst, "msg"); order.sendStatus = "退款成功 买手退款信息更新失败,服务端返回 " + msg; } lock (locker) @@ -3047,7 +3047,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls } else { - var error_msg = BaseRegex.GetStringXmlByRegs(ref afterSaleRst, afterSaleRst, "msg", "error_msg"); + var error_msg = BaseRegex.GetStringJsonByRegs(ref afterSaleRst, afterSaleRst, "msg", "error_msg"); if (string.IsNullOrEmpty(error_msg)) error_msg = afterSaleRst; return "{\"success\":false,\"msg\":\"" + error_msg + "\"}"; diff --git a/29WxOrderWpf/Ctrls/BuyerCtrls/PDDMultiBuyerOrderReadCtrl.xaml.cs b/29WxOrderWpf/Ctrls/BuyerCtrls/PDDMultiBuyerOrderReadCtrl.xaml.cs index 8d7dd29..c4577f1 100644 --- a/29WxOrderWpf/Ctrls/BuyerCtrls/PDDMultiBuyerOrderReadCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/BuyerCtrls/PDDMultiBuyerOrderReadCtrl.xaml.cs @@ -517,7 +517,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls /// /// /// - List GetOrderInfo(string order_ids) + async Task> GetOrderInfo(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); @@ -542,7 +542,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (orders == null) orders = new List(); - var orderItems = OrderListCtrl.GetOrderItemInfo(order_ids); + var orderItems = await OrderListCtrl.GetOrderItemInfo(order_ids); foreach (var orderItem in orderItems) { var order = orders.FirstOrDefault(o => o.order_id == orderItem.order_id); @@ -648,7 +648,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls pdd_afterSale.AfterSaleAddress = buyer_after_sale?.afterSaleAddress; } - void CefReadBuyerOrder(string url, string data) + async Task CefReadBuyerOrder(string url, string data) { if (data.Contains("轻奢壁挂式香皂盒置物架卫生间沥水家居可拆卸收纳盒翻盖肥皂盒")) { @@ -694,7 +694,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls } // 装载同步单 - var syncOrderList = OrderListCtrl.GetSyncLogistics(out_order_nos); + var syncOrderList = await OrderListCtrl.GetSyncLogistics(out_order_nos); foreach (var syncOrder in syncOrderList) { if (!lstSyncLogistics.Contains(syncOrder)) @@ -714,7 +714,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls var order_id_lst = transitOrderList.Select(ts => ts.order_no).ToList(); order_id_lst.AddRange(orderExtList.Select(ts => ts.order_id)); var order_ids = string.Join(",", order_id_lst.Distinct()); - var orders = GetOrderInfo(order_ids); + var orders = await GetOrderInfo(order_ids); //var buyerAfterSales = GetOrderAfterSales(order_ids); @@ -892,7 +892,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls })); } - Task.Run(() => + await Task.Run(() => { // 根据订单状态 取号/修改取号 if (order.WxSendTypeStr == "直发") @@ -1062,7 +1062,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls order_id_lst.AddRange(orderExtList.Select(ts => ts.order_id)); var order_ids = string.Join(",", order_id_lst.Distinct()); - var orders = GetOrderInfo(order_ids); + var orders = await GetOrderInfo(order_ids); foreach (var order in orders) { foreach (var orderItem in order.orderItems) @@ -1810,13 +1810,13 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (btn.DataContext is PddBuyerOrderLiteInfo buyerOrder) { btn.IsEnabled = false; - Task.Run(() => + Task.Run(async () => { var out_order_nos = buyerOrder.order_sn; var transitOrderList = GetOrderTransitWarehouseInfo(out_order_nos); var order_ids = string.Join(",", transitOrderList.Select(ts => ts.order_no)); - var orders = GetOrderInfo(order_ids); + var orders = await GetOrderInfo(order_ids); foreach (var order in orders) { foreach (var orderItem in order.orderItems) @@ -2149,7 +2149,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls } } - public void SetPickUpNo(PddPickInfo pddPickInfo) + public async Task SetPickUpNo(PddPickInfo pddPickInfo) { List orderSnTracks = new List(); foreach (var combine in pddPickInfo.combine_list) @@ -2165,7 +2165,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls return; //var syncOrderAllList = OrderListCtrl.GetSyncLogistics(string.Join(",", orderSnTracks.Select(o => o.order_sn))); - var syncOrderList = OrderListCtrl.GetSyncLogistics(string.Join(",", orderSnTracks.Select(o => o.order_sn)), 1); + var syncOrderList = await OrderListCtrl.GetSyncLogistics(string.Join(",", orderSnTracks.Select(o => o.order_sn)), 1); foreach (var sOrder in syncOrderList) { var orderSnTrack = orderSnTracks.FirstOrDefault(o => o.order_sn == sOrder.order_id); @@ -2246,7 +2246,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls } } - public void SendAsyncWaybillOrder(PddBuyerOrderLiteInfo order, bool showErrBox = false) + public async Task SendAsyncWaybillOrder(PddBuyerOrderLiteInfo order, bool showErrBox = false) { try { @@ -2257,7 +2257,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls } // 取最新订单状态 - var wxOrder = GetOrderInfo(order.ShopOrderIdStr).FirstOrDefault(); + var wxOrder = (await GetOrderInfo(order.ShopOrderIdStr)).FirstOrDefault(); if (wxOrder == null) throw new Exception("买手单对应微信订单不存在!"); var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == wxOrder.shop_id.ToString()); diff --git a/29WxOrderWpf/Ctrls/BuyerCtrls/TbBuyerOrderReadCtrl.xaml.cs b/29WxOrderWpf/Ctrls/BuyerCtrls/TbBuyerOrderReadCtrl.xaml.cs index 06e5e96..ca49090 100644 --- a/29WxOrderWpf/Ctrls/BuyerCtrls/TbBuyerOrderReadCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/BuyerCtrls/TbBuyerOrderReadCtrl.xaml.cs @@ -438,7 +438,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls /// /// /// - List GetOrderInfo(string order_ids) + async Task> GetOrderInfo(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); @@ -463,7 +463,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (orders == null) orders = new List(); - var orderItems = OrderListCtrl.GetOrderItemInfo(order_ids); + var orderItems = await OrderListCtrl.GetOrderItemInfo(order_ids); foreach (var orderItem in orderItems) { var order = orders.FirstOrDefault(o => o.order_id == orderItem.order_id); @@ -732,7 +732,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls var out_order_nos = string.Join(",", list.Select(bo => bo.order_sn)); // 装载同步单 - var syncOrderList = OrderListCtrl.GetSyncLogistics(out_order_nos); + var syncOrderList = await OrderListCtrl.GetSyncLogistics(out_order_nos); foreach (var syncOrder in syncOrderList) { if (!lstSyncLogistics.Contains(syncOrder)) @@ -754,7 +754,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls var order_id_lst = transitOrderList.Select(ts => ts.order_no).ToList(); order_id_lst.AddRange(orderExtList.Select(ts => ts.order_id)); var order_ids = string.Join(",", order_id_lst.Distinct()); - var orders = GetOrderInfo(order_ids); + var orders = await GetOrderInfo(order_ids); //var buyerAfterSales = GetOrderAfterSales(order_ids); @@ -1103,7 +1103,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls order_id_lst.AddRange(orderExtList.Select(ts => ts.order_id)); var order_ids = string.Join(",", order_id_lst.Distinct()); - var orders = GetOrderInfo(order_ids); + var orders = await GetOrderInfo(order_ids); foreach (var order in orders) { foreach (var orderItem in order.orderItems) @@ -1667,13 +1667,13 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (btn.DataContext is TbBuyerOrderLiteInfo buyerOrder) { btn.IsEnabled = false; - Task.Run(() => + Task.Run(async () => { var out_order_nos = buyerOrder.order_sn; var transitOrderList = GetOrderTransitWarehouseInfo(out_order_nos); var order_ids = string.Join(",", transitOrderList.Select(ts => ts.order_no)); - var orders = GetOrderInfo(order_ids); + var orders = await GetOrderInfo(order_ids); foreach (var order in orders) { foreach (var orderItem in order.orderItems) @@ -2011,7 +2011,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls } } - public void SetPickUpNo(TbPickInfo tbPickInfo) + public async Task SetPickUpNo(TbPickInfo tbPickInfo) { List orderSnTracks = new List(); foreach (var combine in tbPickInfo.combine_list) @@ -2027,7 +2027,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls return; //var syncOrderAllList = OrderListCtrl.GetSyncLogistics(string.Join(",", orderSnTracks.Select(o => o.order_sn))); - var syncOrderList = OrderListCtrl.GetSyncLogistics(string.Join(",", orderSnTracks.Select(o => o.order_sn)), 1); + var syncOrderList = await OrderListCtrl.GetSyncLogistics(string.Join(",", orderSnTracks.Select(o => o.order_sn)), 1); foreach (var sOrder in syncOrderList) { var orderSnTrack = orderSnTracks.FirstOrDefault(o => o.order_sn == sOrder.order_id); @@ -2108,7 +2108,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls } } - public void SendAsyncWaybillOrder(TbBuyerOrderLiteInfo order, bool showErrBox = false) + public async Task SendAsyncWaybillOrder(TbBuyerOrderLiteInfo order, bool showErrBox = false) { try { @@ -2119,7 +2119,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls } // 取最新订单状态 - var wxOrder = GetOrderInfo(order.ShopOrderIdStr).FirstOrDefault(); + var wxOrder = (await GetOrderInfo(order.ShopOrderIdStr)).FirstOrDefault(); if (wxOrder == null) throw new Exception("买手单对应微信订单不存在!"); var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == wxOrder.shop_id.ToString()); diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs index 586e462..e28041e 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs @@ -304,7 +304,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (!IsAutoReadOrder) { Thread.Sleep(1000); - Dispatcher.Invoke(new Action(() => + await Dispatcher.InvokeAsync(new Action(() => { btnSearch.Content = "自动读单暂停中"; imgLoading.Visibility = Visibility.Collapsed; @@ -314,7 +314,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (DateTime.Now > nextGetOrderTime) { - Dispatcher.Invoke(new Action(() => + await Dispatcher.InvokeAsync(new Action(() => { btnSearch.Content = "读单"; })); @@ -322,7 +322,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls nextGetOrderTime = DateTime.Now.AddMinutes(25); } Thread.Sleep(1000); - Dispatcher.Invoke(new Action(() => + await Dispatcher.InvokeAsync(new Action(() => { var ticks = nextGetOrderTime - DateTime.Now; btnSearch.Content = "读单 " + ticks.Minutes.ToString("00") + ":" + ticks.Seconds.ToString("00"); @@ -336,16 +336,18 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls /// /// 批量拉取订单 /// - /// 按过滤条件读取读取服务端订单,已废弃 - public async Task GetOrder(string orderIds = "", bool filterGetCondition = false) + public async Task GetOrder(string orderIds = "", bool showReadOrderMsg = true) { while (!MainWindow.Instance.hasReadShop) { await Task.Delay(100); } - BottomMsg = "开始读取订单..."; - StartProgress(); + if (showReadOrderMsg) + { + BottomMsg = "开始读取订单..."; + StartProgress(); + } Dispatcher.Invoke(new Action(() => { imgLoading.Visibility = Visibility.Visible; @@ -361,16 +363,17 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls while (true && (IsAutoReadOrder || !string.IsNullOrEmpty(orderIds))) { - BottomMsg = "当前正在读取订单...,第" + (page + 1) + "页" + (hasGetPage == false ? "" : ("/共" + totalPage + "页")); + if (showReadOrderMsg) + BottomMsg = "当前正在读取订单...,第" + (page + 1) + "页" + (hasGetPage == false ? "" : ("/共" + totalPage + "页")); if (page >= totalPage) { break; } - Dispatcher.Invoke(new Action(() => + await Dispatcher.InvokeAsync(() => { imgLoading.Visibility = Visibility.Visible; btnSearch.IsEnabled = false; - })); + }); page++; var url = BaseClass.Build29WxObjString("order/get_erp_order_list"); @@ -406,9 +409,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } await Task.Delay(200); - var html = GetHtml.PostUtf8(url, data); + var html = await GetHtml.PostUtf8Async(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) - html = GetHtml.PostUtf8(url, data); + html = await GetHtml.PostUtf8Async(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) { BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg")); @@ -439,17 +442,17 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls // 读取订单详情 if (string.IsNullOrEmpty(order_ids)) await Task.Delay(100); - List orderItems = GetOrderItemInfo(order_ids); + List orderItems = await GetOrderItemInfo(order_ids); // 读取售后单 if (string.IsNullOrEmpty(order_ids)) await Task.Delay(100); - List refunds = GetOrderRefundInfo(order_ids); + List refunds = await GetOrderRefundInfo(order_ids); // 读订单扩展 if (string.IsNullOrEmpty(order_ids)) await Task.Delay(100); - List orderItemExts = GetOrderItemExts(order_ids); + List orderItemExts = await GetOrderItemExts(order_ids); if (string.IsNullOrEmpty(order_ids)) { foreach (var oie in orderItemExts) @@ -461,39 +464,39 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } // 读取中转仓拍单订单 - var transitOrderList = GetTransitWarehouseList(order_ids); + var transitOrderList = await GetTransitWarehouseList(order_ids); // 额外订单包裹补发 - var transitExtraPackageList = GetTransitExtraPackageList(order_ids); + var transitExtraPackageList = await GetTransitExtraPackageList(order_ids); // 读取中转仓拍单订单售后状态 - var transitAfterSaleList = GetTransitWarehouseAfterSaleList(order_ids); + var transitAfterSaleList = await GetTransitWarehouseAfterSaleList(order_ids); // 读取分销退货(中转仓退货)订单 - var transitReturnOrderList = GetTransitReturnOrderList(order_ids); + var transitReturnOrderList = await GetTransitReturnOrderList(order_ids); // 读取暂时记录的买手订单,后面想办法放到中转订单库里去 - var pddBuyerOrders = GetPddBuyerOrders(order_ids); + var pddBuyerOrders = await GetPddBuyerOrders(order_ids); // 读取暂时记录的淘宝买手订单(格式与拼多多的一致,存在不同的表中),后面想办法放到中转订单库里去 - pddBuyerOrders.AddRange(GetTbBuyerOrders(order_ids)); + pddBuyerOrders.AddRange(await GetTbBuyerOrders(order_ids)); // 读取暂时记录的买手售后单,后面想办法放到中转订单库里去 - var pddBuyerAfterSales = GetPddBuyerAfterSales(order_ids); + var pddBuyerAfterSales = await GetPddBuyerAfterSales(order_ids); // 读取暂时记录的淘宝买手售后单(格式与拼多多的一致,存在不同的表中),后面想办法放到中转订单库里去 - pddBuyerAfterSales.AddRange(GetTbBuyerAfterSales(order_ids)); + pddBuyerAfterSales.AddRange(await GetTbBuyerAfterSales(order_ids)); // 同步单 var buyerOrderIds = string.Join(",", pddBuyerOrders.Select(o => o.order_sn)); - var syncLogistics = GetSyncLogistics(buyerOrderIds); + var syncLogistics = await GetSyncLogistics(buyerOrderIds); // 读取关联拍单商品 - var buyMapList = GetBuyProdMap(orderItems); + var buyMapList = await GetBuyProdMap(orderItems); // 读取关联拍单的所有sku - var buyMapSkusList = GetBuyProdMapSkus(orderItems); + var buyMapSkusList = await GetBuyProdMapSkus(orderItems); // 读取物流轨迹 - var ewaybillLst = GetEWaybillPath(order_ids); + var ewaybillLst = await GetEWaybillPath(order_ids); // 装载订单 foreach (JObject jObj in jArr) @@ -592,7 +595,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls orderExist = GlobalConfig.lstOrder.FirstOrDefault(o => o.order_id == order.order_id); } GlobalConfig.lstOrder.Add(order); - FilterOneOrder(order); + await FilterOneOrder(order); } catch (Exception ex) { @@ -604,22 +607,26 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } // 处理店铺后台物流异常单 - BottomMsg = "当前正在读取物流异常单..."; + if (showReadOrderMsg) + BottomMsg = "当前正在读取物流异常单..."; if (string.IsNullOrEmpty(orderIds)) await GetShopWaybillExceptionOrder(); // 处理拒收单 - BottomMsg = "当前正在处理拒收单..."; + if (showReadOrderMsg) + BottomMsg = "当前正在处理拒收单..."; if (string.IsNullOrEmpty(orderIds)) await AutoUpdateTransitRejectedToPddShop(); // 处理中转仓退货包裹 - BottomMsg = "当前正在处理拦截退回总店..."; + if (showReadOrderMsg) + BottomMsg = "当前正在处理拦截退回总店..."; if (string.IsNullOrEmpty(orderIds)) - AutoUpdateTransitPackageToPddShop(); + await AutoUpdateTransitPackageToPddShop(); // 处理退货仓分销退货 - BottomMsg = "当前正在处理分销退货..."; + if (showReadOrderMsg) + BottomMsg = "当前正在处理分销退货..."; if (string.IsNullOrEmpty(orderIds)) { await DoReturnOrderBuyerRefendSlient(); @@ -631,8 +638,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls hasReadOrder = true; CompleteProgress(); - BottomMsg = "订单读取完成"; - Dispatcher.Invoke(new Action(() => + if (showReadOrderMsg) + BottomMsg = "订单读取完成"; + await Dispatcher.InvokeAsync(new Action(() => { imgLoading.Visibility = Visibility.Collapsed; btnSearch.IsEnabled = true; @@ -666,7 +674,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls /// /// /// - public static List GetOrderItemInfo(string order_ids) + public static async Task> GetOrderItemInfo(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); @@ -674,9 +682,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var data = UserLogin.GetSignaturex(); data += "&erp_order_id_in=" + order_ids; data += "&page_size=" + 2500; - var html = GetHtml.PostUtf8(url, data); + var html = await GetHtml.PostUtf8Async(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) - html = GetHtml.PostUtf8(url, data); + html = await GetHtml.PostUtf8Async(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单详情读取失败 " + BaseRegex.GetStringJson(ref html, "msg"), "Error", 5); @@ -696,7 +704,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return orderItems; } - public static List GetOrderItemExts(string order_ids) + public static async Task> GetOrderItemExts(string order_ids) { List existOrderExtList = new List(); if (!string.IsNullOrEmpty(order_ids)) @@ -704,9 +712,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var url = BaseClass.Build29WxObjString("order/wx_get_order_item_ext_info"); var data = UserLogin.GetSignaturex(); data += "&wx_order_id_in=" + order_ids; - var html = GetHtml.PostUtf8(url, data); + var html = await GetHtml.PostUtf8Async(url, data); if (!html.Contains("\"code\":200")) - html = GetHtml.PostUtf8(url, data); + html = await GetHtml.PostUtf8Async(url, data); if (!html.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单扩展信息查询失败 " + BaseRegex.GetStringJson(ref html, "msg"), "Error", 5); @@ -727,7 +735,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls /// /// /// - public static List GetOrderRefundInfo(string order_ids) + public static async Task> GetOrderRefundInfo(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); @@ -735,9 +743,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var url2 = BaseClass.Build29WxObjString("order/get_erp_refund_list"); var data2 = UserLogin.GetSignaturex(); data2 += "&erp_order_id_in=" + order_ids; - var html2 = GetHtml.PostUtf8(url2, data2); + var html2 = await GetHtml.PostUtf8Async(url2, data2); if (string.IsNullOrEmpty(html2) || !html2.Contains("\"code\":200")) - html2 = GetHtml.PostUtf8(url2, data2); + html2 = await GetHtml.PostUtf8Async(url2, data2); if (string.IsNullOrEmpty(html2) || !html2.Contains("\"code\":200")) { //BaseMsgWindow.ShowError(MainWindow.Instance, "订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg")); @@ -748,7 +756,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return refunds; } - public static List GetTransitWarehouseList(string order_ids) + public static async Task> GetTransitWarehouseList(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); @@ -757,9 +765,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var data3 = UserLogin.GetSignaturex(); data3 += "&order_no=" + order_ids; data3 += "&page_size=5000"; - var html3 = GetHtml.PostUtf8(url3, data3); + var html3 = await GetHtml.PostUtf8Async(url3, data3); if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200")) - html3 = GetHtml.PostUtf8(url3, data3); + html3 = await GetHtml.PostUtf8Async(url3, data3); if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单读取失败 " + BaseRegex.GetStringJson(ref html3, "msg"), "Error", 5); @@ -776,7 +784,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return new List(); } - public static List GetTransitExtraPackageList(string order_ids) + public static async Task> GetTransitExtraPackageList(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); @@ -784,9 +792,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var url3 = BaseClass.Build29WxObjString("order/wx_get_transfer_extra_package"); var data3 = UserLogin.GetSignaturex(); data3 += "&order_no=" + order_ids; - var html3 = GetHtml.PostUtf8(url3, data3); + var html3 = await GetHtml.PostUtf8Async(url3, data3); if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200")) - html3 = GetHtml.PostUtf8(url3, data3); + html3 = await GetHtml.PostUtf8Async(url3, data3); if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单读取失败 " + BaseRegex.GetStringJson(ref html3, "msg"), "Error", 5); @@ -803,7 +811,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return new List(); } - public static List GetTransitWarehouseAfterSaleList(string order_ids) + public static async Task> GetTransitWarehouseAfterSaleList(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); @@ -812,9 +820,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var url5 = BaseClass.Build29WxObjString("order/wx_get_transit_warehouse_aftersale_list"); var data5 = UserLogin.GetSignaturex(); data5 += "&wx_order_id_in=" + order_ids; - var html5 = GetHtml.PostUtf8(url5, data5); + var html5 = await GetHtml.PostUtf8Async(url5, data5); if (string.IsNullOrEmpty(html5) || !html5.Contains("\"code\":200")) - html5 = GetHtml.PostUtf8(url5, data5); + html5 = await GetHtml.PostUtf8Async(url5, data5); if (string.IsNullOrEmpty(html5) || !html5.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("云仓售后订单读取失败 " + BaseRegex.GetStringJson(ref html5, "msg"), "Error", 5); @@ -833,7 +841,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return new List(); } - public static List GetTransitReturnOrderList(string order_ids) + public static async Task> GetTransitReturnOrderList(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); @@ -842,9 +850,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var url5 = BaseClass.Build29WxObjString("order/wx_get_erp_return_order_list"); var data5 = UserLogin.GetSignaturex(); data5 += "&erp_order_id_in=" + order_ids; - var html5 = GetHtml.PostUtf8(url5, data5); + var html5 = await GetHtml.PostUtf8Async(url5, data5); if (string.IsNullOrEmpty(html5) || !html5.Contains("\"code\":200")) - html5 = GetHtml.PostUtf8(url5, data5); + html5 = await GetHtml.PostUtf8Async(url5, data5); if (string.IsNullOrEmpty(html5) || !html5.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("云仓分销退货订单读取失败 " + BaseRegex.GetStringJson(ref html5, "msg"), "Error", 5); @@ -863,7 +871,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return new List(); } - public static List GetPddBuyerOrders(string order_ids) + public static async Task> GetPddBuyerOrders(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); @@ -871,9 +879,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var url4 = BaseClass.Build29WxObjString("order/wx_get_buyer_order_list"); var data4 = UserLogin.GetSignaturex(); data4 += "&wx_order_id_in=" + order_ids; - var html4 = GetHtml.PostUtf8(url4, data4); + var html4 = await GetHtml.PostUtf8Async(url4, data4); if (string.IsNullOrEmpty(html4) || !html4.Contains("\"code\":200")) - html4 = GetHtml.PostUtf8(url4, data4); + html4 = await GetHtml.PostUtf8Async(url4, data4); if (string.IsNullOrEmpty(html4) || !html4.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单读取失败(买手) " + BaseRegex.GetStringJson(ref html4, "msg"), "Error", 5); @@ -891,7 +899,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return new List(); } - public static List GetTbBuyerOrders(string order_ids) + public static async Task> GetTbBuyerOrders(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); @@ -899,9 +907,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var url4 = BaseClass.Build29WxObjString("order/wx_get_tb_buyer_order_list"); var data4 = UserLogin.GetSignaturex(); data4 += "&wx_order_id_in=" + order_ids; - var html4 = GetHtml.PostUtf8(url4, data4); + var html4 = await GetHtml.PostUtf8Async(url4, data4); if (string.IsNullOrEmpty(html4) || !html4.Contains("\"code\":200")) - html4 = GetHtml.PostUtf8(url4, data4); + html4 = await GetHtml.PostUtf8Async(url4, data4); if (string.IsNullOrEmpty(html4) || !html4.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单读取失败(买手) " + BaseRegex.GetStringJson(ref html4, "msg"), "Error", 5); @@ -919,7 +927,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return new List(); } - public static List GetPddBuyerAfterSales(string order_ids) + public static async Task> GetPddBuyerAfterSales(string order_ids) { var url6 = BaseClass.Build29WxObjString("order/wx_get_buyer_after_sale_list"); var data6 = UserLogin.GetSignaturex(); @@ -927,9 +935,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls List pddBuyerAfterSales = new List(); if (!string.IsNullOrEmpty(order_ids)) { - var html6 = GetHtml.PostUtf8(url6, data6); + var html6 = await GetHtml.PostUtf8Async(url6, data6); if (string.IsNullOrEmpty(html6) || !html6.Contains("\"code\":200")) - html6 = GetHtml.PostUtf8(url6, data6); + html6 = await GetHtml.PostUtf8Async(url6, data6); if (string.IsNullOrEmpty(html6) || !html6.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单读取失败(买手售后) " + BaseRegex.GetStringJson(ref html6, "msg"), "Error", 6); @@ -947,7 +955,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return new List(); } - public static List GetTbBuyerAfterSales(string order_ids) + public static async Task> GetTbBuyerAfterSales(string order_ids) { var url6 = BaseClass.Build29WxObjString("order/wx_get_tb_buyer_after_sale_list"); var data6 = UserLogin.GetSignaturex(); @@ -955,9 +963,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls List pddBuyerAfterSales = new List(); if (!string.IsNullOrEmpty(order_ids)) { - var html6 = GetHtml.PostUtf8(url6, data6); + var html6 = await GetHtml.PostUtf8Async(url6, data6); if (string.IsNullOrEmpty(html6) || !html6.Contains("\"code\":200")) - html6 = GetHtml.PostUtf8(url6, data6); + html6 = await GetHtml.PostUtf8Async(url6, data6); if (string.IsNullOrEmpty(html6) || !html6.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单读取失败(买手售后) " + BaseRegex.GetStringJson(ref html6, "msg"), "Error", 6); @@ -975,7 +983,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return new List(); } - public static List GetSyncLogistics(string buyer_order_ids, int? not_upload_pickup_status = null) + public static async Task> GetSyncLogistics(string buyer_order_ids, int? not_upload_pickup_status = null) { var url6 = BaseClass.Build29WxObjString("order/wx_get_sync_waybill"); var data6 = UserLogin.GetSignaturex(); @@ -985,9 +993,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls List pddBuyerAfterSales = new List(); if (!string.IsNullOrEmpty(buyer_order_ids)) { - var html6 = GetHtml.PostUtf8(url6, data6); + var html6 = await GetHtml.PostUtf8Async(url6, data6); if (string.IsNullOrEmpty(html6) || !html6.Contains("\"code\":200")) - html6 = GetHtml.PostUtf8(url6, data6); + html6 = await GetHtml.PostUtf8Async(url6, data6); if (string.IsNullOrEmpty(html6) || !html6.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单读取失败(买手售后) " + BaseRegex.GetStringJson(ref html6, "msg"), "Error", 6); @@ -1005,7 +1013,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return new List(); } - public static List GetEWaybillPath(string order_ids) + public static async Task> GetEWaybillPath(string order_ids) { List oms_wei_ewaybill_path_list = null; if (!string.IsNullOrEmpty(order_ids)) @@ -1015,9 +1023,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var url = BaseClass.Build29WxObjString("order/wx_get_erp_ewaybill_path_latest_list"); var data = UserLogin.GetSignaturex(); data += "&erp_order_id_in=" + order_ids; - var html = GetHtml.PostUtf8(url, data); + var html = await GetHtml.PostUtf8Async(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) - html = GetHtml.PostUtf8(url, data); + html = await GetHtml.PostUtf8Async(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("物流查询失败 " + BaseRegex.GetStringJson(ref html, "msg"), "Error", 6); @@ -1035,7 +1043,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return new List(); } - public static List GetBuyProdMap(List orderItems) + public static async Task> GetBuyProdMap(List orderItems) { //foreach (var item in orderItems.ToList()) //{ @@ -1060,9 +1068,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls + "&spu_codes=" + string.Join(",", orderItems.Select(oi => GetHtml.UrlEncodeUtf8(oi.out_product_id)).Distinct()) + "," + string.Join(",", orderItems.Select(oi => oi.product_id).Distinct()); dataMap += "&main_user_name=" + BaseClass.MainUserName; - var resultMap = GetHtml.PostUtf8(urlMap, dataMap); + var resultMap = await GetHtml.PostUtf8Async(urlMap, dataMap); if (string.IsNullOrEmpty(resultMap) || !resultMap.Contains("\"code\":200")) - resultMap = GetHtml.PostUtf8(urlMap, dataMap); + resultMap = await GetHtml.PostUtf8Async(urlMap, dataMap); if (string.IsNullOrEmpty(resultMap) || !resultMap.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单关联读取失败 " + BaseRegex.GetStringJson(ref resultMap, "msg"), "Error", 5); @@ -1087,7 +1095,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return GlobalConfig.BuyMapList.Where(m => orderItems.Any(oi => m.spu_code == oi.out_product_id || m.spu_code == oi.product_id)).ToList(); } - public static List GetBuyProdMapSkus(List orderItems) + public static async Task> GetBuyProdMapSkus(List orderItems) { var ois = orderItems?.Where(oi => !GlobalConfig.BuyMapSkusList.Any(bm => bm.spu_code == oi.out_product_id || bm.spu_code == oi.product_id)).ToList(); if (ois == null || ois.Count == 0) @@ -1099,10 +1107,10 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var dataMap = UserLogin.GetSignaturex() + "&spu_codes=" + string.Join(",", ois.Select(oi => GetHtml.UrlEncodeUtf8(oi.out_product_id)).Distinct()) + "," + string.Join(",", ois.Select(oi => oi.product_id).Distinct()); dataMap += "&main_user_name=" + BaseClass.MainUserName; - var resultSkusMap = GetHtml.PostUtf8(url, dataMap); + var resultSkusMap = await GetHtml.PostUtf8Async(url, dataMap); if (string.IsNullOrEmpty(resultSkusMap) || !resultSkusMap.Contains("\"code\":200")) { - resultSkusMap = GetHtml.PostUtf8(url, dataMap); + resultSkusMap = await GetHtml.PostUtf8Async(url, dataMap); } if (string.IsNullOrEmpty(resultSkusMap) || !resultSkusMap.Contains("\"code\":200")) { @@ -1151,9 +1159,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var data = UserLogin.GetSignaturex(); data += "&wx_order_id_in=" + wxOrderIdIn; data += "&wx_sku_id_in=" + wxSkuIdIn; - var html = GetHtml.PostUtf8(url, data); + var html = await GetHtml.PostUtf8Async(url, data); if (!html.Contains("\"code\":200")) - html = GetHtml.PostUtf8(url, data); + html = await GetHtml.PostUtf8Async(url, data); if (!html.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单扩展信息查询失败 " + BaseRegex.GetStringJson(ref html, "msg"), "Error", 5); @@ -1179,7 +1187,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls // 更新显示 InitOrderObservableProp(waybillExceptionOrder); - MainWindow.Instance.orderListCtrl.FilterOneOrder(waybillExceptionOrder, true); + await MainWindow.Instance.orderListCtrl.FilterOneOrder(waybillExceptionOrder, true); var orderId = waybillExceptionOrder.order_id; order_item_ext orderExt = new order_item_ext() { order_id = orderId, shop_app_id = shop.ShopId, shop_name = shop.ShopAccount, abnormal_text = "物流异常" }; @@ -1188,9 +1196,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var data1 = UserLogin.GetSignaturex(); data1 += "&wx_order_id=" + orderExt.order_id; data1 += "&abnormal_text="; - var html1 = GetHtml.PostUtf8(url1, data1); + var html1 = await GetHtml.PostUtf8Async(url1, data1); if (string.IsNullOrEmpty(html1) || !html1.Contains("\"code\":200")) - html1 = GetHtml.PostUtf8(url1, data1); + html1 = await GetHtml.PostUtf8Async(url1, data1); } } @@ -1221,7 +1229,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls data1 += "&shop_app_id=" + orderExt.shop_app_id; data1 += "&shop_name=" + orderExt.shop_name; data1 += "&abnormal_text=" + orderExt.abnormal_text; - var html1 = GetHtml.PostUtf8(url1, data1); + var html1 = await GetHtml.PostUtf8Async(url1, data1); if (string.IsNullOrEmpty(html1) || !html1.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单扩展信息写入失败 " + BaseRegex.GetStringJson(ref html1, "msg"), "Error", 5); @@ -1298,25 +1306,180 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls /// /// 中转仓拦截去总店填写退货物流信息(申请拦截退回总店以后回填退货物流) /// - public void AutoUpdateTransitPackageToPddShop() + public async Task AutoUpdateTransitPackageToPddShop() { - Task.Run(() => + foreach (var order in GlobalConfig.lstOrder) { - foreach (var order in GlobalConfig.lstOrder) + foreach (var orderItem in order.orderItems) { - foreach (var orderItem in order.orderItems) + //// 测试写死 + //if (orderItem.ItemOrder?.order_id == "3738160750339728384") + //{ + // orderItem.ItemTransitOrderAfterSale = new oms_wei_external_procurement_after_sale_info() + // { + // downstream_waybill = "315090716621027", + // }; + //} + // 260801-439070256640980 260801-439070256640980 + // string url = "https://mobile.yangkeduo.com/complaint.html?mode=128&after_sales_id=22059412840967&order_sn=260801-439070256640980" + if (orderItem.TransitRefundStatusStr.Contains("待用户发货") && !(orderItem.ItemTransitOrderAfterSale?.downstream_waybill).IsNullOrEmpty()) { - //// 测试写死 - //if (orderItem.ItemOrder?.order_id == "3738160750339728384") - //{ - // orderItem.ItemTransitOrderAfterSale = new oms_wei_external_procurement_after_sale_info() - // { - // downstream_waybill = "315090716621027", - // }; - //} - // 260801-439070256640980 260801-439070256640980 - // string url = "https://mobile.yangkeduo.com/complaint.html?mode=128&after_sales_id=22059412840967&order_sn=260801-439070256640980" - if (orderItem.TransitRefundStatusStr.Contains("待用户发货") && !(orderItem.ItemTransitOrderAfterSale?.downstream_waybill).IsNullOrEmpty()) + string orderSn = orderItem.ItemTransitOrderWithVoid.out_order_no; + if (orderSn.IsNullOrEmpty()) + continue; + string buyerNickName = orderItem.ItemTransitOrderWithVoid.buyer_account; + if (buyerNickName.IsNullOrEmpty()) + continue; + var buyer = GlobalConfig.PDDBuyerLoginList.ToList().FirstOrDefault(b => b.buyer_nick == buyerNickName); + if (buyer == null) + continue; + var afterSalesId = orderItem.PddBuyerAfterSale?.afterSalesId; + if (string.IsNullOrEmpty(afterSalesId)) + continue; + var waybillId = orderItem.ItemTransitOrderAfterSale.downstream_waybill; + + var chkRst = await AddReturnPddShopPackageInfocheckAsync(buyer, orderSn, afterSalesId, waybillId); + var type = 4; + if (chkRst.Contains("\"interactType\":0")) + type = 2; + var result = await AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString()); + if (!result.Contains("\"result\":\"ok\"")) + { + type = type == 4 ? 2 : 4; + result = await AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString()); + } + if (!result.Contains("\"result\":\"ok\"")) + { + result = await AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", "5"); + } + + if (result.Contains("\"result\":\"ok\"")) + { + orderItem.ItemTransitOrderWithVoid.refund_status = "商家处理中"; + } + else + { + orderItem.ItemTransitOrderWithVoid.refund_status = "待用户发货 自动退货失败"; + } + var pddBuyerOrderLiteInfo = new PddBuyerOrderLiteInfo() + { + ShopOrderIdStr = orderItem.order_id, + order_sn = orderSn, + }; + // 更新中转仓退货信息 + var e57Rst = PDDBuyerOrderReadCtrl.SendTransitAfterSaleE57(pddBuyerOrderLiteInfo, orderItem.ItemTransitOrderWithVoid.refund_status); + if (e57Rst.Contains("0") || e57Rst.Contains("200")) + { + BaseMsgWindow.ShowAnimateMessage("买手退款信息更新成功", "Msg", 5); + } + else + { + var msg = BaseRegex.GetStringXml(ref e57Rst, "msg"); + BaseMsgWindow.ShowAnimateMessage("买手退款信息更新失败,服务端返回 " + msg, "Error", 5); + } + // 赋值显示订单元素 + InitOrderItemObservableProp(orderItem); + await MainWindow.Instance.orderListCtrl.FilterOneOrder(order); + } + } + } + } + + /// + /// 退货仓去总店填写退货物流信息 + /// + public async Task AutoUpdateTransitReturnOrderToPddShop() + { + foreach (var order in GlobalConfig.lstOrder) + { + foreach (var orderItem in order.orderItems) + { + if (orderItem.order_id == "3739105285145538816") + { + } + if (order.OrderBuyType == "直发" || order.OrderBuyType == "云改直") + { + if (order.out_after_sale_status.ParseToString().Contains("待用户发货") && !(orderItem.DistribReturnOrderInfo?.real_logistics_express_code).IsNullOrEmpty()) + { + string orderSn = order.out_order_no; + if (orderSn.IsNullOrEmpty() || orderSn.StartsWith("tb_")) // 无外采或淘宝外采直接退出 + continue; + string buyerNickName = order.out_account; + if (buyerNickName.IsNullOrEmpty()) + continue; + var buyer = GlobalConfig.PDDBuyerLoginList.ToList().FirstOrDefault(b => b.buyer_nick == buyerNickName); + if (buyer == null) + continue; + var afterSalesId = orderItem.DirectPddBuyerAfterSale?.afterSalesId; + if (string.IsNullOrEmpty(afterSalesId)) + continue; + var waybillId = orderItem.DistribReturnOrderInfo?.real_logistics_express_code; + + var chkRst = await AddReturnPddShopPackageInfocheckAsync(buyer, orderSn, afterSalesId, waybillId); + var type = 4; + if (chkRst.Contains("\"interactType\":0")) + type = 2; + var result = await AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString()); + if (!result.Contains("\"result\":\"ok\"")) + { + type = type == 4 ? 2 : 4; + result = await AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString()); + } + if (!result.Contains("\"result\":\"ok\"")) + { + result = await AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", "5"); + } + + if (result.Contains("\"result\":\"ok\"")) + { + orderItem.DirectPddBuyerAfterSale.statusText = "商家处理中"; + order.out_after_sale_status = "商家处理中"; + } + else + { + orderItem.DirectPddBuyerAfterSale.statusText = "待用户发货 自动退货失败"; + order.out_after_sale_status = "待用户发货 自动退货失败"; + } + var pddBuyerOrderLiteInfo = new PddBuyerOrderLiteInfo() + { + ShopOrderIdStr = orderItem.order_id, + order_sn = orderSn, + }; + // 更新退货信息 + var e57Rst = await PDDBuyerOrderReadCtrl.SendAfterSaleE57NeedManualAsync(pddBuyerOrderLiteInfo, order.out_after_sale_status); + if (e57Rst.Contains("\"code\":0") || e57Rst.Contains("\"code\":200")) + { + var url3 = BaseClass.Build29WxObjString("order/wx_add_mdy_buyer_after_sale"); + var data3 = UserLogin.GetSignaturex(); + data3 += "&wx_order_id=" + orderItem.DirectPddBuyerAfterSale.wx_order_id; + data3 += "&wx_sku_id=" + orderItem.DirectPddBuyerAfterSale.wx_sku_id; + data3 += "&buyerId=" + orderItem.DirectPddBuyerAfterSale.buyerId; + data3 += "&buyerName=" + orderItem.DirectPddBuyerAfterSale.buyerName; + data3 += "&orderAmount=" + orderItem.DirectPddBuyerAfterSale?.orderAmount; + data3 += "&orderSn=" + orderItem.DirectPddBuyerAfterSale.orderSn; + data3 += "&afterSalesId=" + orderItem.DirectPddBuyerAfterSale.afterSalesId; + data3 += "&orderDate=" + orderItem.DirectPddBuyerAfterSale.orderDate; + data3 += "&refundAmount=" + orderItem.DirectPddBuyerAfterSale.refundAmount; + data3 += "&statusText=" + orderItem.DirectPddBuyerAfterSale.statusText; + data3 += "&wx_send_type=" + orderItem.DirectPddBuyerAfterSale.wx_send_type; + + var html3 = await GetHtml.PostUtf8Async(url3, data3); + if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200")) + html3 = await GetHtml.PostUtf8Async(url3, data3); + + BaseMsgWindow.ShowAnimateMessage("买手退款信息更新成功", "Msg", 3); + Thread.Sleep(Randomx.GetId(10000, 12001)); + } + else + { + var msg = BaseRegex.GetStringJson(ref e57Rst, "msg"); + BaseMsgWindow.ShowAnimateMessage("买手退款信息更新失败,服务端返回 " + msg, "Error", 5); + } + } + } + else + { + if (orderItem.TransitRefundStatusStr.ParseToString().Contains("待用户发货") && !(orderItem.DistribReturnOrderInfo?.real_logistics_express_code).IsNullOrEmpty()) { string orderSn = orderItem.ItemTransitOrderWithVoid.out_order_no; if (orderSn.IsNullOrEmpty()) @@ -1327,24 +1490,29 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var buyer = GlobalConfig.PDDBuyerLoginList.ToList().FirstOrDefault(b => b.buyer_nick == buyerNickName); if (buyer == null) continue; + if (buyer.status == "掉线") + { + BaseMsgWindow.ShowAnimateMessage("买手号 " + buyer.buyer_nick + " 掉线,跳过自动退货", "Msg", 5); + continue; + } var afterSalesId = orderItem.PddBuyerAfterSale?.afterSalesId; if (string.IsNullOrEmpty(afterSalesId)) continue; - var waybillId = orderItem.ItemTransitOrderAfterSale.downstream_waybill; + var waybillId = orderItem.DistribReturnOrderInfo?.real_logistics_express_code; - var chkRst = AddReturnPddShopPackageInfocheck(buyer, orderSn, afterSalesId, waybillId); + var chkRst = await AddReturnPddShopPackageInfocheckAsync(buyer, orderSn, afterSalesId, waybillId); var type = 4; if (chkRst.Contains("\"interactType\":0")) type = 2; - var result = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString()); + var result = await AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString()); if (!result.Contains("\"result\":\"ok\"")) { type = type == 4 ? 2 : 4; - result = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString()); + result = await AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString()); } if (!result.Contains("\"result\":\"ok\"")) { - result = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", "5"); + result = await AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", "5"); } if (result.Contains("\"result\":\"ok\"")) @@ -1371,179 +1539,13 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var msg = BaseRegex.GetStringXml(ref e57Rst, "msg"); BaseMsgWindow.ShowAnimateMessage("买手退款信息更新失败,服务端返回 " + msg, "Error", 5); } - // 赋值显示订单元素 - InitOrderItemObservableProp(orderItem); - MainWindow.Instance.orderListCtrl.FilterOneOrder(order); } } + // 赋值显示订单元素 + InitOrderItemObservableProp(orderItem); + await MainWindow.Instance.orderListCtrl.FilterOneOrder(order); } - }); - } - - /// - /// 退货仓去总店填写退货物流信息 - /// - public async Task AutoUpdateTransitReturnOrderToPddShop() - { - await Task.Run(() => - { - foreach (var order in GlobalConfig.lstOrder) - { - foreach (var orderItem in order.orderItems) - { - if (orderItem.order_id == "3739105285145538816") - { - } - if (order.OrderBuyType == "直发" || order.OrderBuyType == "云改直") - { - if (order.out_after_sale_status.ParseToString().Contains("待用户发货") && !(orderItem.DistribReturnOrderInfo?.real_logistics_express_code).IsNullOrEmpty()) - { - string orderSn = order.out_order_no; - if (orderSn.IsNullOrEmpty() || orderSn.StartsWith("tb_")) // 无外采或淘宝外采直接退出 - continue; - string buyerNickName = order.out_account; - if (buyerNickName.IsNullOrEmpty()) - continue; - var buyer = GlobalConfig.PDDBuyerLoginList.ToList().FirstOrDefault(b => b.buyer_nick == buyerNickName); - if (buyer == null) - continue; - var afterSalesId = orderItem.DirectPddBuyerAfterSale?.afterSalesId; - if (string.IsNullOrEmpty(afterSalesId)) - continue; - var waybillId = orderItem.DistribReturnOrderInfo?.real_logistics_express_code; - - var chkRst = AddReturnPddShopPackageInfocheck(buyer, orderSn, afterSalesId, waybillId); - var type = 4; - if (chkRst.Contains("\"interactType\":0")) - type = 2; - var result = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString()); - if (!result.Contains("\"result\":\"ok\"")) - { - type = type == 4 ? 2 : 4; - result = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString()); - } - if (!result.Contains("\"result\":\"ok\"")) - { - result = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", "5"); - } - - if (result.Contains("\"result\":\"ok\"")) - { - orderItem.DirectPddBuyerAfterSale.statusText = "商家处理中"; - order.out_after_sale_status = "商家处理中"; - } - else - { - orderItem.DirectPddBuyerAfterSale.statusText = "待用户发货 自动退货失败"; - order.out_after_sale_status = "待用户发货 自动退货失败"; - } - var pddBuyerOrderLiteInfo = new PddBuyerOrderLiteInfo() - { - ShopOrderIdStr = orderItem.order_id, - order_sn = orderSn, - }; - // 更新退货信息 - var e57Rst = PDDBuyerOrderReadCtrl.SendAfterSaleE57NeedManual(pddBuyerOrderLiteInfo, order.out_after_sale_status); - if (e57Rst.Contains("0") || e57Rst.Contains("200")) - { - var url3 = BaseClass.Build29WxObjString("order/wx_add_mdy_buyer_after_sale"); - var data3 = UserLogin.GetSignaturex(); - data3 += "&wx_order_id=" + orderItem.DirectPddBuyerAfterSale.wx_order_id; - data3 += "&wx_sku_id=" + orderItem.DirectPddBuyerAfterSale.wx_sku_id; - data3 += "&buyerId=" + orderItem.DirectPddBuyerAfterSale.buyerId; - data3 += "&buyerName=" + orderItem.DirectPddBuyerAfterSale.buyerName; - data3 += "&orderAmount=" + orderItem.DirectPddBuyerAfterSale?.orderAmount; - data3 += "&orderSn=" + orderItem.DirectPddBuyerAfterSale.orderSn; - data3 += "&afterSalesId=" + orderItem.DirectPddBuyerAfterSale.afterSalesId; - data3 += "&orderDate=" + orderItem.DirectPddBuyerAfterSale.orderDate; - data3 += "&refundAmount=" + orderItem.DirectPddBuyerAfterSale.refundAmount; - data3 += "&statusText=" + orderItem.DirectPddBuyerAfterSale.statusText; - data3 += "&wx_send_type=" + orderItem.DirectPddBuyerAfterSale.wx_send_type; - - var html3 = GetHtml.PostUtf8(url3, data3); - if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200")) - html3 = GetHtml.PostUtf8(url3, data3); - - BaseMsgWindow.ShowAnimateMessage("买手退款信息更新成功", "Msg", 3); - Thread.Sleep(Randomx.GetId(10000, 12001)); - } - else - { - var msg = BaseRegex.GetStringXml(ref e57Rst, "msg"); - BaseMsgWindow.ShowAnimateMessage("买手退款信息更新失败,服务端返回 " + msg, "Error", 5); - } - } - } - else - { - if (orderItem.TransitRefundStatusStr.ParseToString().Contains("待用户发货") && !(orderItem.DistribReturnOrderInfo?.real_logistics_express_code).IsNullOrEmpty()) - { - string orderSn = orderItem.ItemTransitOrderWithVoid.out_order_no; - if (orderSn.IsNullOrEmpty()) - continue; - string buyerNickName = orderItem.ItemTransitOrderWithVoid.buyer_account; - if (buyerNickName.IsNullOrEmpty()) - continue; - var buyer = GlobalConfig.PDDBuyerLoginList.ToList().FirstOrDefault(b => b.buyer_nick == buyerNickName); - if (buyer == null) - continue; - if (buyer.status == "掉线") - { - BaseMsgWindow.ShowAnimateMessage("买手号 " + buyer.buyer_nick + " 掉线,跳过自动退货", "Msg", 5); - continue; - } - var afterSalesId = orderItem.PddBuyerAfterSale?.afterSalesId; - if (string.IsNullOrEmpty(afterSalesId)) - continue; - var waybillId = orderItem.DistribReturnOrderInfo?.real_logistics_express_code; - - var chkRst = AddReturnPddShopPackageInfocheck(buyer, orderSn, afterSalesId, waybillId); - var type = 4; - if (chkRst.Contains("\"interactType\":0")) - type = 2; - var result = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString()); - if (!result.Contains("\"result\":\"ok\"")) - { - type = type == 4 ? 2 : 4; - result = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString()); - } - if (!result.Contains("\"result\":\"ok\"")) - { - result = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", "5"); - } - - if (result.Contains("\"result\":\"ok\"")) - { - orderItem.ItemTransitOrderWithVoid.refund_status = "商家处理中"; - } - else - { - orderItem.ItemTransitOrderWithVoid.refund_status = "待用户发货 自动退货失败"; - } - var pddBuyerOrderLiteInfo = new PddBuyerOrderLiteInfo() - { - ShopOrderIdStr = orderItem.order_id, - order_sn = orderSn, - }; - // 更新中转仓退货信息 - var e57Rst = PDDBuyerOrderReadCtrl.SendTransitAfterSaleE57(pddBuyerOrderLiteInfo, orderItem.ItemTransitOrderWithVoid.refund_status); - if (e57Rst.Contains("0") || e57Rst.Contains("200")) - { - BaseMsgWindow.ShowAnimateMessage("买手退款信息更新成功", "Msg", 5); - } - else - { - var msg = BaseRegex.GetStringXml(ref e57Rst, "msg"); - BaseMsgWindow.ShowAnimateMessage("买手退款信息更新失败,服务端返回 " + msg, "Error", 5); - } - } - } - // 赋值显示订单元素 - InitOrderItemObservableProp(orderItem); - MainWindow.Instance.orderListCtrl.FilterOneOrder(order); - } - } - }); + } } @@ -1643,32 +1645,6 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls else orderLstTmp = GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o)).OrderByDescending(o => o.create_time).ToList(); - //if (token.IsCancellationRequested) - // return; - //disPlayOrderTabOrderCount(); - - ////int n = 0; - //foreach (var order in orderLstTmp) - //{ - // //if (n++ % 10 == 0) - // //Thread.Sleep(1); - - // if (token.IsCancellationRequested) - // break; - - // var orders = GlobalConfig.lstFilterOrder.ToList(); - // if (!orders.Any(o => o.order_id == order.order_id)) - // { - // Dispatcher.InvokeAsync(() => - // { - // lock (MainWindow._orderLock) - // { - // GlobalConfig.lstFilterOrder.Add(order); - // } - // }); - // } - //} - if (token.IsCancellationRequested) return; await Dispatcher.InvokeAsync(new Action(() => @@ -1891,7 +1867,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls try { - return FilterTabPage(order, filterHeadStr); + return FilterTabPageOption(order, filterHeadStr); } catch (Exception ex) { @@ -1906,7 +1882,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls /// /// /// - private bool FilterTabPage(oms_wei_order_info order, string filterHeadStr) + private bool FilterTabPageOption(oms_wei_order_info order, string filterHeadStr) { // 过滤标签页 if (filterHeadStr.IsNullOrEmpty()) @@ -2229,7 +2205,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (orderFilterConfig.lstFilterOrderIds.Count == 1 && !GlobalConfig.lstOrder.Any(o => o.order_id == orderFilterConfig.lstFilterOrderIds.FirstOrDefault())) { - await Task.Run(() => { this.GetOrder(orderFilterConfig.lstFilterOrderIds.FirstOrDefault()); }); + await this.GetOrder(orderFilterConfig.lstFilterOrderIds.FirstOrDefault()); } FilterOrders(); } @@ -2561,7 +2537,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls public async Task DoReturnPackageBuyerRefendSlient() { List emergencyRefundOrders = new List(); - Dispatcher.Invoke(new Action(() => + await Dispatcher.InvokeAsync(new Action(() => { emergencyRefundOrders = GlobalConfig.lstOrder.Where(o => o.IsEmergency).ToList(); })); @@ -2595,7 +2571,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls public async Task DoReturnOrderTransitCreateSlient() { List emergencyRefundOrders = new List(); - Dispatcher.Invoke(new Action(() => + await Dispatcher.InvokeAsync(new Action(() => { emergencyRefundOrders = GlobalConfig.lstOrder.Where(o => o.IsEmergency).ToList(); })); @@ -2645,7 +2621,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls public async Task DoReturnOrderBuyerRefendSlient() { List emergencyRefundOrders = new List(); - Dispatcher.Invoke(new Action(() => + await Dispatcher.InvokeAsync(new Action(() => { emergencyRefundOrders = GlobalConfig.lstOrder.Where(o => o.IsEmergency).ToList(); })); @@ -2715,7 +2691,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls { } - Dispatcher.Invoke(new Action(() => { BottomMsg = "正在处理买手退货,总计:" + tmpOrderItems.Count + ",已处理:" + index++; })); + BottomMsg = "正在处理订单 " + tmpOrderItem.order_id + " 买手退货,总计:" + tmpOrderItems.Count + ",已处理:" + index++; var outOrderSn = ""; if (tmpOrderItem.ItemOrder?.OrderBuyType == "云仓") @@ -2726,6 +2702,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (outOrderSn.StartsWith("tb_")) { // todo 淘宝退货暂时不处理 + BottomMsg = "订单 " + tmpOrderItem.order_id + " 淘宝买手退货暂不支持自动处理,请稍候手动处理"; + await Task.Delay(1000); } else { @@ -2735,12 +2713,12 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls BuyerLoginInfo buyer = null; if (tmpOrderItem.ItemOrder?.OrderBuyType == "云仓") - Dispatcher.Invoke(() => { buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_nick == tmpOrderItem.ItemTransitOrderWithVoid?.buyer_account); }); + await Dispatcher.InvokeAsync(() => { buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_nick == tmpOrderItem.ItemTransitOrderWithVoid?.buyer_account); }); else if (tmpOrderItem.ItemOrder?.OrderBuyType == "直发" || tmpOrderItem.ItemOrder?.OrderBuyType == "云改直") - Dispatcher.Invoke(() => { buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_nick == tmpOrderItem.ItemOrder?.out_account); }); + await Dispatcher.InvokeAsync(() => { buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_nick == tmpOrderItem.ItemOrder?.out_account); }); if (buyer == null) { - BaseMsgWindow.ShowAnimateMessage("买手单:" + pddOrderSn + " 买手不在当前账户下,跳过", "Error", 3); + BaseMsgWindow.ShowAnimateMessage("订单:" + tmpOrderItem.order_id + "买手单:" + pddOrderSn + " 买手不在当前账户下,跳过", "Error", 3); continue; } @@ -2751,19 +2729,18 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } if (buyer.status != "在线") { - BaseMsgWindow.ShowAnimateMessage("买手单:" + pddOrderSn + " 买手号掉线,跳过", "Error", 3); + BaseMsgWindow.ShowAnimateMessage("订单:" + tmpOrderItem.order_id + "买手单:" + pddOrderSn + " 买手号掉线,跳过", "Error", 3); continue; } - await Task.Run(async() => { await MainWindow.Instance.orderListCtrl.GetOrder(tmpOrderItem.order_id); }); - + await MainWindow.Instance.orderListCtrl.GetOrder(tmpOrderItem.order_id, false); oms_wei_order_info order = null; - Dispatcher.Invoke(new Action(() => { order = GlobalConfig.lstOrder.FirstOrDefault(oi => oi.order_id == tmpOrderItem.order_id); })); + await Dispatcher.InvokeAsync(new Action(() => { order = GlobalConfig.lstOrder.FirstOrDefault(oi => oi.order_id == tmpOrderItem.order_id); })); if (order == null) continue; oms_wei_order_item_info orderItem = null; - Dispatcher.Invoke(new Action(() => { orderItem = order.orderItems.FirstOrDefault(oi => oi.order_id == tmpOrderItem.order_id && oi.sku_id == tmpOrderItem.sku_id); })); + await Dispatcher.InvokeAsync(new Action(() => { orderItem = order.orderItems.FirstOrDefault(oi => oi.order_id == tmpOrderItem.order_id && oi.sku_id == tmpOrderItem.sku_id); })); if (orderItem == null) continue; @@ -2848,15 +2825,15 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } else if (order.OrderBuyType == "直发" || order.OrderBuyType == "云改直") { - var e57Rst = PDDBuyerOrderReadCtrl.SendAfterSaleE57NeedManual(pddBuyerOrderLiteInfo, "已超过可申请售后的时间"); - if (e57Rst.Contains("0") || e57Rst.Contains("200")) + var e57Rst = await PDDBuyerOrderReadCtrl.SendAfterSaleE57NeedManualAsync(pddBuyerOrderLiteInfo, "已超过可申请售后的时间"); + if (e57Rst.Contains("\"code\":0") || e57Rst.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("买手退款信息更新成功", "Msg", 3); Thread.Sleep(Randomx.GetId(10000, 12001)); } else { - msg = BaseRegex.GetStringXml(ref e57Rst, "msg"); + msg = BaseRegex.GetStringJson(ref e57Rst, "msg"); BaseMsgWindow.ShowAnimateMessage("买手退款信息更新失败,服务端返回 " + msg, "Error", 3); } } @@ -2875,14 +2852,14 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } else { - var msg = BaseRegex.GetStringXml(ref e57Rst, "msg"); + var msg = BaseRegex.GetStringJson(ref e57Rst, "msg"); BaseMsgWindow.ShowAnimateMessage("买手退款信息更新失败,服务端返回 " + msg, "Error", 3); } } else if (order.OrderBuyType == "直发" || order.OrderBuyType == "云改直") { - var e57Rst = PDDBuyerOrderReadCtrl.SendAfterSaleE57NeedManual(pddBuyerOrderLiteInfo, "待用户发货"); - if (e57Rst.Contains("0") || e57Rst.Contains("200")) + var e57Rst = await PDDBuyerOrderReadCtrl.SendAfterSaleE57NeedManualAsync(pddBuyerOrderLiteInfo, "待用户发货"); + if (e57Rst.Contains("\"code\":0") || e57Rst.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("买手退款信息更新成功", "Msg", 3); isSimPddAfterSaleSuccess = true; @@ -2890,7 +2867,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } else { - var msg = BaseRegex.GetStringXml(ref e57Rst, "msg"); + var msg = BaseRegex.GetStringJson(ref e57Rst, "msg"); BaseMsgWindow.ShowAnimateMessage("买手退款信息更新失败,服务端返回 " + msg, "Error", 3); } } @@ -2936,13 +2913,12 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200")) html3 = await GetHtml.PostUtf8Async(url3, data3); } - await Task.Run(async() => { await MainWindow.Instance.orderListCtrl.GetOrder(tmpOrderItem.order_id); }); - Dispatcher.Invoke(new Action(() => { BottomMsg = "正在处理买手退货,总计:" + tmpOrderItems.Count + ",已处理:" + index; })); + await MainWindow.Instance.orderListCtrl.GetOrder(tmpOrderItem.order_id, false); + BottomMsg = "正在处理订单 " + tmpOrderItem.order_id + " 买手退货,总计:" + tmpOrderItems.Count + ",已处理:" + index; #endregion } } - - Dispatcher.Invoke(new Action(() => { BottomMsg = "买手退货处理完成,总计:" + tmpOrderItems.Count + ",已处理:" + index; })); + BottomMsg = "买手退货处理完成,总计:" + tmpOrderItems.Count + ",已处理:" + index; } @@ -3086,7 +3062,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return HttpResponseYkdBLL.YangkeduoPostResponse(buyer, url, data, referer); } - public string AddReturnPddShopPackageInfo(BuyerLoginInfo buyer, string order_sn, string after_sales_id, string tracking_number, + public async Task AddReturnPddShopPackageInfo(BuyerLoginInfo buyer, string order_sn, string after_sales_id, string tracking_number, string shipping_name = "韵达快递", string shipping_id = "121", string version = "4") { //https://mobile.yangkeduo.com/proxy/api/after_sales/confirm_delivery/22051692661447?pdduid=5746442372052 @@ -3104,10 +3080,10 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls string referer = "https://mobile.yangkeduo.com/complaint.html?mode=128&after_sales_id=" + after_sales_id + "&order_sn=" + order_sn + "&refer_page_name=complaints_new_detail"; - return HttpResponseYkdBLL.YangkeduoPostResponse(buyer, url, data, referer); + return await HttpResponseYkdBLL.YangkeduoPostResponseAsync(buyer, url, data, referer); } - public string AddReturnPddShopPackageInfocheck(BuyerLoginInfo buyer, string order_sn, string after_sales_id, string tracking_number, + public async Task AddReturnPddShopPackageInfocheckAsync(BuyerLoginInfo buyer, string order_sn, string after_sales_id, string tracking_number, string shipping_name = "韵达快递", string shipping_id = "121") { string url = "https://mobile.yangkeduo.com/proxy/api/api/asm/express/tracking_number/check?pdduid=" + buyer.buyer_id; @@ -3115,7 +3091,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls string referer = "https://mobile.yangkeduo.com/complaint.html?mode=128&after_sales_id=" + after_sales_id + "&order_sn=" + order_sn + ""; - return HttpResponseYkdBLL.YangkeduoPostResponse(buyer, url, body, referer); + return await HttpResponseYkdBLL.YangkeduoPostResponseAsync(buyer, url, body, referer); } private void txtGoodsNameFilter_TextChanged(object sender, TextChangedEventArgs e) diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderTransitService.cs b/29WxOrderWpf/Ctrls/OrderCtrls/OrderTransitService.cs index ecb01ae..ed307a6 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderTransitService.cs +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderTransitService.cs @@ -277,9 +277,9 @@ internal class OrderTransitService if (BaseMsgWindow.ShowConfirm(msg, "云仓拒收退回总店", null, MsgWindowLevel.LARGE, 300).DialogResult != true) return ""; - orderItem.ItemTransitOrders = OrderListCtrl.GetTransitWarehouseList(orderItem.order_id); - orderItem.PddBuyerOrders = OrderListCtrl.GetPddBuyerOrders(orderItem.order_id).Where(o => o.wx_send_type == 0).ToList(); - orderItem.PddBuyerOrders.AddRange(OrderListCtrl.GetTbBuyerOrders(orderItem.order_id).Where(o => o.wx_send_type == 0).ToList()); + orderItem.ItemTransitOrders = await OrderListCtrl.GetTransitWarehouseList(orderItem.order_id); + orderItem.PddBuyerOrders = (await OrderListCtrl.GetPddBuyerOrders(orderItem.order_id)).Where(o => o.wx_send_type == 0).ToList(); + orderItem.PddBuyerOrders.AddRange((await OrderListCtrl.GetTbBuyerOrders(orderItem.order_id)).Where(o => o.wx_send_type == 0).ToList()); OrderListCtrl.InitOrderItemObservableProp(orderItem); var itemTransitOrder = orderItem.ItemTransitOrders.FirstOrDefault(o => o.order_code == _itemTransitOrder?.order_code && o.out_order_no == _itemTransitOrder?.out_order_no); diff --git a/29WxOrderWpf/Windows/OrderWindows/TransitReturnOrderWindow.xaml.cs b/29WxOrderWpf/Windows/OrderWindows/TransitReturnOrderWindow.xaml.cs index 568f797..a9ed269 100644 --- a/29WxOrderWpf/Windows/OrderWindows/TransitReturnOrderWindow.xaml.cs +++ b/29WxOrderWpf/Windows/OrderWindows/TransitReturnOrderWindow.xaml.cs @@ -130,7 +130,7 @@ namespace _29WxOrderWpf.Windows.OrderWindows } } - private void btnAdd_Click(object sender, RoutedEventArgs e) + private async void btnAdd_Click(object sender, RoutedEventArgs e) { if (OrderItem?.ItemOrder?.OrderBuyType == "云仓" && (OrderItem?.ItemTransitOrder?.warehouse_status).ParseToInt() < 1) { @@ -199,7 +199,7 @@ namespace _29WxOrderWpf.Windows.OrderWindows (jObj["orderDetailsList"] as JArray).Add(jItemObj); - var returnOrders = OrderListCtrl.GetTransitReturnOrderList(OrderItem.order_id); + var returnOrders = await OrderListCtrl.GetTransitReturnOrderList(OrderItem.order_id); OrderItem.DistribReturnOrderInfos = returnOrders; if (btnAdd.Content.ToString() == "添 加" && OrderItem.DistribReturnOrderInfo == null) { @@ -216,13 +216,13 @@ namespace _29WxOrderWpf.Windows.OrderWindows } } - returnOrders = OrderListCtrl.GetTransitReturnOrderList(OrderItem.order_id); + returnOrders = await OrderListCtrl.GetTransitReturnOrderList(OrderItem.order_id); OrderItem.DistribReturnOrderInfos = returnOrders; var orderCode = OrderItem.DistribReturnOrderInfo.order_code; if (string.IsNullOrEmpty(orderCode)) { BaseMsgWindow.ShowError("订单 " + OrderItem.order_id + " 中转仓退货订单创建失败,售后单获取失败"); - MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id); + await MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id); return; } var createReturnOrderUrl = "https://po.e57.cn/prod-api/api/oms-api/api/distribution/returns/createReturnOrder"; @@ -239,17 +239,17 @@ namespace _29WxOrderWpf.Windows.OrderWindows if (msg.IsNullOrEmpty()) msg = createReturnOrderRst; BaseMsgWindow.ShowError("中转仓退货订单创建失败,服务端返回 " + msg); - MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id); + await MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id); return; } - MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id); + await MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id); StartUp.UpdateBalance(); BaseMsgWindow.ShowInfo("中转仓退货订单创建成功", "", this); this.Close(); } - public static void AddReturnOrder(oms_wei_order_item_info OrderItem) + public static async Task AddReturnOrder(oms_wei_order_item_info OrderItem) { // 订单不存在或已作废的,直接返回 if (OrderItem == null || OrderItem.ItemRefund == null) @@ -325,7 +325,7 @@ namespace _29WxOrderWpf.Windows.OrderWindows (jObj["orderDetailsList"] as JArray).Add(jItemObj); - var returnOrders = OrderListCtrl.GetTransitReturnOrderList(OrderItem.order_id); + var returnOrders = await OrderListCtrl.GetTransitReturnOrderList(OrderItem.order_id); OrderItem.DistribReturnOrderInfos = returnOrders; if (OrderItem.DistribReturnOrderInfo == null) { @@ -342,13 +342,13 @@ namespace _29WxOrderWpf.Windows.OrderWindows } } - returnOrders = OrderListCtrl.GetTransitReturnOrderList(OrderItem.order_id); + returnOrders = await OrderListCtrl.GetTransitReturnOrderList(OrderItem.order_id); OrderItem.DistribReturnOrderInfos = returnOrders; var orderCode = OrderItem.DistribReturnOrderInfo.order_code; if (string.IsNullOrEmpty(orderCode)) { BaseMsgWindow.ShowAnimateMessage("订单 " + OrderItem.order_id + " 中转仓退货订单创建失败,售后单获取失败", "Error", 5); - MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id); + await MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id); return; } var createReturnOrderUrl = "https://po.e57.cn/prod-api/api/oms-api/api/distribution/returns/createReturnOrder"; @@ -364,12 +364,12 @@ namespace _29WxOrderWpf.Windows.OrderWindows if (msg.IsNullOrEmpty()) msg = createReturnOrderRst; BaseMsgWindow.ShowAnimateMessage("订单 " + OrderItem.order_id + " 中转仓退货订单创建失败,服务端返回 " + msg, "Error", 5); - MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id); + await MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id); return; } //MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id); - returnOrders = OrderListCtrl.GetTransitReturnOrderList(OrderItem.order_id); + returnOrders = await OrderListCtrl.GetTransitReturnOrderList(OrderItem.order_id); OrderItem.DistribReturnOrderInfos = returnOrders; StartUp.UpdateBalance(); BaseMsgWindow.ShowAnimateMessage("订单 " + OrderItem.order_id + " 中转仓退货订单创建成功", "Msg", 2); diff --git a/Work/_29Tools/BLL/HttpResponseYkdBLL.cs b/Work/_29Tools/BLL/HttpResponseYkdBLL.cs index 46c4d9b..0d47588 100644 --- a/Work/_29Tools/BLL/HttpResponseYkdBLL.cs +++ b/Work/_29Tools/BLL/HttpResponseYkdBLL.cs @@ -85,7 +85,77 @@ namespace Work._29Tools.BLL return result; } - public static string YangkeduoGetResponse(BuyerLoginInfo buyer, string _url, string referer = "") + public static async Task YangkeduoPostResponseAsync(BuyerLoginInfo buyer, string _url, string _data, string referer) + { + string cookies = ""; + try + { + var cookieLst = JsonHelper.DeserializeJsonToList(buyer?.cookie.ParseToString()); + if (cookieLst == null) + cookieLst = new List(); + foreach (var cook in cookieLst) + { + cookies += cook.Name + "=" + cook.Value + ";"; + } + } + catch { } + + HttpWebResponse response = null; + string result; + try + { + string url = _url; + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); + + request.KeepAlive = true; + request.Headers.Add("sec-ch-ua-platform", @"""Windows"""); + request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36"; + request.Accept = "application/json, text/plain, */*"; + request.Headers.Add("sec-ch-ua", @"""Not)A;Brand"";v=""8"", ""Chromium"";v=""138"""); + request.Headers.Add("sec-ch-ua-mobile", @"?0"); + request.Headers.Add("Origin", @"https://mobile.yangkeduo.com"); + request.Headers.Set(HttpRequestHeader.Cookie, cookies); + //request.Headers.Add("VerifyAuthToken", @"m1PjolxzzHNRdzkNf4X0rQ4b1c734034415e092"); + request.Headers.Add("Sec-Fetch-Site", @"same-origin"); + request.Headers.Add("Sec-Fetch-Mode", @"cors"); + request.Headers.Add("Sec-Fetch-Dest", @"empty"); + request.Referer = referer; + //request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br, zstd"); + request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate"); + request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9"); + + request.Method = "POST"; + request.ServicePoint.Expect100Continue = false; + + string body = _data; + byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body); + request.ContentLength = postBytes.Length; + Stream stream = request.GetRequestStream(); + stream.Write(postBytes, 0, postBytes.Length); + stream.Close(); + + response = (HttpWebResponse)await request.GetResponseAsync(); + } + catch (WebException ex) + { + if (ex.Status == WebExceptionStatus.ProtocolError) + { + response = (HttpWebResponse)ex.Response; + result = HttpResponseBLL.ReadResponse(response); + return result; + } + else return ex.Message; + } + catch (Exception e) + { + if (response != null) response.Close(); + return e.Message; + } + result = HttpResponseBLL.ReadResponse(response); + return result; + } + + public static string YangkeduoGetResponse(BuyerLoginInfo buyer, string _url, string referer = "") { string cookies = ""; try