using _29WxOrderWpf.BaseWindows; using AllBase; using AllBase.Helper; using AllBase.Model.DBModel; using NaiBa.Util.Extension; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using Work; namespace _29WxOrderWpf.Ctrls.OrderCtrls; public class OrderGetOrderListHelper { /// /// 增量读取全部订单信息 /// /// /// public static async Task GetWxOrder‌IncrementAsync(DateTime? lastUpdateTime) { if (lastUpdateTime == null || lastUpdateTime == DateTime.MinValue) return; var shopIdList = GlobalConfig.ShopLoginList.Select(s => s.ErpShopId.ToString()).ToList(); var shopIds = string.Join(",", shopIdList); var existOrderIdList = GlobalConfig.ShopLoginList.Select(s => s.ErpShopId.ToString()).ToList(); var updateOrderList = await GetOrderInfoBase(null, 0, shopIds, lastUpdateTime); var updateOrderIdList = GlobalConfig.ShopLoginList.Select(s => s.ErpShopId.ToString()).ToList(); var orderIdList = existOrderIdList; orderIdList.AddRange(updateOrderIdList); orderIdList = orderIdList.Distinct().ToList(); while(orderIdList.Count > 0 ) { var orderIdTake = orderIdList.Take(500).ToList(); orderIdList.RemoveAll(o => orderIdTake.Contains(o)); var orderIds = string.Join(",", orderIdTake); } } /// /// 读取买手号订单对应的微信店铺订单信息 /// /// /// public static async Task> GetOrderInfo(string order_ids) { return await GetOrderInfoBase(order_ids); } /// /// 读取订单详情信息 /// /// /// static async Task> GetOrderInfoBase(string orderIds, int pageSize = 100, string shopIds = null, DateTime? beginUpdateTime = null, DateTime? endUpdateTime = null) { if (string.IsNullOrEmpty(orderIds)) return new List(); Thread.Sleep(100); try { var url = BaseClass.Build29WxObjString("order/get_erp_order_list"); var data = UserLogin.GetSignaturex(); data += "&erp_order_id_in=" + orderIds; data += "&page_size=" + pageSize; if (!string.IsNullOrWhiteSpace(shopIds)) data += "&erp_shop_id_in=" + shopIds; if (beginUpdateTime != null && beginUpdateTime != DateTime.MinValue) { var startTime = BaseClass.DateTimeToTimestampSeconds(beginUpdateTime.Value); data += "&start_time=" + startTime; } if (endUpdateTime != null && endUpdateTime != DateTime.MinValue) { var endTime = BaseClass.DateTimeToTimestampSeconds(endUpdateTime.Value); data += "&end_time=" + endTime; } var html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) { throw new Exception("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg")); } List orders = new List(); orders = JsonHelper.DeserializeJsonToList(JObject.Parse(html)["data"].ParseToString()); if (orders == null) orders = new List(); var orderItems = await GetOrderItemInfo(orderIds); foreach (var orderItem in orderItems) { var order = orders.FirstOrDefault(o => o.order_id == orderItem.order_id); orderItem.ItemOrder = order; order.orderItems.Add(orderItem); } return orders; } catch (Exception ex) { BaseMsgWindow.ShowAnimateMessage(ex.Message, "Error", 6); return new List(); } } /// /// 读取订单详情信息 /// /// /// public static async Task> GetOrderItemInfo(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); var url = BaseClass.Build29WxObjString("order/get_erp_order_item_list"); var data = UserLogin.GetSignaturex(); data += "&erp_order_id_in=" + order_ids; data += "&page_size=" + 2500; var html = await GetHtml.PostUtf8Async(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) html = await GetHtml.PostUtf8Async(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单详情读取失败 " + BaseRegex.GetStringJson(ref html, "msg"), "Error", 5); } List orderItems = new List(); try { orderItems = JsonHelper.DeserializeJsonToList(JObject.Parse(html)["data"].ParseToString()); if (orderItems == null) orderItems = new List(); } catch (Exception ex) { orderItems = new List(); BaseMsgWindow.ShowAnimateMessage("订单详情读取失败 " + ex.Message, "Error", 5); } return orderItems; } /// /// 读取售后单 /// /// /// public static async Task> GetOrderRefundInfo(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); Thread.Sleep(100); var url2 = BaseClass.Build29WxObjString("order/get_erp_refund_list"); var data2 = UserLogin.GetSignaturex(); data2 += "&erp_order_id_in=" + order_ids; var html2 = await GetHtml.PostUtf8Async(url2, data2); if (string.IsNullOrEmpty(html2) || !html2.Contains("\"code\":200")) html2 = await GetHtml.PostUtf8Async(url2, data2); if (string.IsNullOrEmpty(html2) || !html2.Contains("\"code\":200")) { //BaseMsgWindow.ShowError(MainWindow.Instance, "订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg")); //break; } List refunds = new List(); try { refunds = JsonHelper.DeserializeJsonToList(JObject.Parse(html2)["data"].ParseToString()); } catch { } return refunds; } /// /// 读取扩展订单信息 /// /// /// public static async Task> GetOrderItemExts(string order_ids) { List existOrderExtList = new List(); if (!string.IsNullOrEmpty(order_ids)) { var url = BaseClass.Build29WxObjString("order/wx_get_order_item_ext_info"); var data = UserLogin.GetSignaturex(); data += "&wx_order_id_in=" + order_ids; var html = await GetHtml.PostUtf8Async(url, data); if (!html.Contains("\"code\":200")) html = await GetHtml.PostUtf8Async(url, data); if (!html.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单扩展信息查询失败 " + BaseRegex.GetStringJson(ref html, "msg"), "Error", 5); } try { existOrderExtList = JsonHelper.DeserializeJsonToList(JsonHelper.JObjectParse(html)["data"].ParseToString()); } catch { } } return existOrderExtList; } /// /// 读取中转仓订单发货包裹信息 /// /// /// public static async Task> GetTransitWarehouseList(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); var url3 = BaseClass.Build29WxObjString("order/wx_get_transit_order"); var data3 = UserLogin.GetSignaturex(); data3 += "&order_no=" + order_ids; data3 += "&page_size=5000"; var html3 = await GetHtml.PostUtf8Async(url3, data3); if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200")) html3 = await GetHtml.PostUtf8Async(url3, data3); if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单读取失败 " + BaseRegex.GetStringJson(ref html3, "msg"), "Error", 5); } List transitOrderList = new List(); try { transitOrderList = JsonHelper.DeserializeJsonToList(JObject.Parse(html3)["data"].ParseToString()); return transitOrderList; } catch { } return new List(); } /// /// 读取中转仓额外包裹 /// /// /// public static async Task> GetTransitExtraPackageList(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); var url3 = BaseClass.Build29WxObjString("order/wx_get_transfer_extra_package"); var data3 = UserLogin.GetSignaturex(); data3 += "&order_no=" + order_ids; var html3 = await GetHtml.PostUtf8Async(url3, data3); if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200")) html3 = await GetHtml.PostUtf8Async(url3, data3); if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单读取失败 " + BaseRegex.GetStringJson(ref html3, "msg"), "Error", 5); } List transitExtraPackageList = new List(); try { transitExtraPackageList = JsonHelper.DeserializeJsonToList(JObject.Parse(html3)["data"].ParseToString()); return transitExtraPackageList; } catch { } return new List(); } /// /// 读取中转仓退货包裹 /// /// /// public static async Task> GetTransitWarehouseAfterSaleList(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); // 读取中转仓处理售后单 var url5 = BaseClass.Build29WxObjString("order/wx_get_transit_warehouse_aftersale_list"); var data5 = UserLogin.GetSignaturex(); data5 += "&wx_order_id_in=" + order_ids; var html5 = await GetHtml.PostUtf8Async(url5, data5); if (string.IsNullOrEmpty(html5) || !html5.Contains("\"code\":200")) html5 = await GetHtml.PostUtf8Async(url5, data5); if (string.IsNullOrEmpty(html5) || !html5.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("云仓售后订单读取失败 " + BaseRegex.GetStringJson(ref html5, "msg"), "Error", 5); } List transitAfterSaleList = new List(); try { transitAfterSaleList = JsonHelper.DeserializeJsonToList(JObject.Parse(html5)["data"].ParseToString()) .OrderByDescending(p => p.created_time).ToList(); if (transitAfterSaleList != null) return transitAfterSaleList; } catch { } return new List(); } /// /// 读取退货仓包裹 /// /// /// public static async Task> GetTransitReturnOrderList(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); // 读取退货仓包裹 var url5 = BaseClass.Build29WxObjString("order/wx_get_erp_return_order_list"); var data5 = UserLogin.GetSignaturex(); data5 += "&erp_order_id_in=" + order_ids; var html5 = await GetHtml.PostUtf8Async(url5, data5); if (string.IsNullOrEmpty(html5) || !html5.Contains("\"code\":200")) html5 = await GetHtml.PostUtf8Async(url5, data5); if (string.IsNullOrEmpty(html5) || !html5.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("云仓分销退货订单读取失败 " + BaseRegex.GetStringJson(ref html5, "msg"), "Error", 5); } List transitAfterSaleList = new List(); try { transitAfterSaleList = JsonHelper.DeserializeJsonToList(JObject.Parse(html5)["data"].ParseToString()) .OrderByDescending(p => p.created_at).ToList(); if (transitAfterSaleList != null) return transitAfterSaleList; } catch { } return new List(); } /// /// 读取多多买手单 /// /// /// public static async Task> GetPddBuyerOrders(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); var url4 = BaseClass.Build29WxObjString("order/wx_get_buyer_order_list"); var data4 = UserLogin.GetSignaturex(); data4 += "&wx_order_id_in=" + order_ids; var html4 = await GetHtml.PostUtf8Async(url4, data4); if (string.IsNullOrEmpty(html4) || !html4.Contains("\"code\":200")) html4 = await GetHtml.PostUtf8Async(url4, data4); if (string.IsNullOrEmpty(html4) || !html4.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单读取失败(买手) " + BaseRegex.GetStringJson(ref html4, "msg"), "Error", 5); } List pddBuyerOrders = new List(); try { pddBuyerOrders = JsonHelper.DeserializeJsonToList(JObject.Parse(html4)["data"].ParseToString()) .OrderByDescending(p => p.TransitCreateTime).ToList(); return pddBuyerOrders; } catch { } return new List(); } /// /// 读取淘宝买手单 /// /// /// public static async Task> GetTbBuyerOrders(string order_ids) { if (string.IsNullOrEmpty(order_ids)) return new List(); var url4 = BaseClass.Build29WxObjString("order/wx_get_tb_buyer_order_list"); var data4 = UserLogin.GetSignaturex(); data4 += "&wx_order_id_in=" + order_ids; var html4 = await GetHtml.PostUtf8Async(url4, data4); if (string.IsNullOrEmpty(html4) || !html4.Contains("\"code\":200")) html4 = await GetHtml.PostUtf8Async(url4, data4); if (string.IsNullOrEmpty(html4) || !html4.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单读取失败(买手) " + BaseRegex.GetStringJson(ref html4, "msg"), "Error", 5); } List pddBuyerOrders = new List(); try { pddBuyerOrders = JsonHelper.DeserializeJsonToList(JObject.Parse(html4)["data"].ParseToString()) .OrderByDescending(p => p.TransitCreateTime).ToList(); return pddBuyerOrders; } catch { } return new List(); } /// /// 读取多多售后 /// /// /// public static async Task> GetPddBuyerAfterSales(string order_ids) { var url6 = BaseClass.Build29WxObjString("order/wx_get_buyer_after_sale_list"); var data6 = UserLogin.GetSignaturex(); data6 += "&wx_order_id_in=" + order_ids; List pddBuyerAfterSales = new List(); if (!string.IsNullOrEmpty(order_ids)) { var html6 = await GetHtml.PostUtf8Async(url6, data6); if (string.IsNullOrEmpty(html6) || !html6.Contains("\"code\":200")) html6 = await GetHtml.PostUtf8Async(url6, data6); if (string.IsNullOrEmpty(html6) || !html6.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单读取失败(买手售后) " + BaseRegex.GetStringJson(ref html6, "msg"), "Error", 6); return new List(); } try { pddBuyerAfterSales = JsonHelper.DeserializeJsonToList(JObject.Parse(html6)["data"].ParseToString()).OrderByDescending(p => p.TransitCreateTime).ToList(); return pddBuyerAfterSales; } catch { } } return new List(); } /// /// 读取淘宝售后 /// /// /// public static async Task> GetTbBuyerAfterSales(string order_ids) { var url6 = BaseClass.Build29WxObjString("order/wx_get_tb_buyer_after_sale_list"); var data6 = UserLogin.GetSignaturex(); data6 += "&wx_order_id_in=" + order_ids; List pddBuyerAfterSales = new List(); if (!string.IsNullOrEmpty(order_ids)) { var html6 = await GetHtml.PostUtf8Async(url6, data6); if (string.IsNullOrEmpty(html6) || !html6.Contains("\"code\":200")) html6 = await GetHtml.PostUtf8Async(url6, data6); if (string.IsNullOrEmpty(html6) || !html6.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单读取失败(买手售后) " + BaseRegex.GetStringJson(ref html6, "msg"), "Error", 6); return new List(); } try { pddBuyerAfterSales = JsonHelper.DeserializeJsonToList(JObject.Parse(html6)["data"].ParseToString()).OrderByDescending(p => p.TransitCreateTime).ToList(); return pddBuyerAfterSales; } catch { } } return new List(); } /// /// 读取同步单信息 /// /// /// /// 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(); data6 += "&order_id=" + buyer_order_ids; if (not_upload_pickup_status != null) data6 += "¬_upload_pickup_status=" + not_upload_pickup_status; List pddBuyerAfterSales = new List(); if (!string.IsNullOrEmpty(buyer_order_ids)) { var html6 = await GetHtml.PostUtf8Async(url6, data6); if (string.IsNullOrEmpty(html6) || !html6.Contains("\"code\":200")) html6 = await GetHtml.PostUtf8Async(url6, data6); if (string.IsNullOrEmpty(html6) || !html6.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("订单读取失败(买手售后) " + BaseRegex.GetStringJson(ref html6, "msg"), "Error", 6); return new List(); } try { pddBuyerAfterSales = JsonHelper.DeserializeJsonToList(JObject.Parse(html6)["data"].ParseToString()).OrderByDescending(p => p.id).ToList(); return pddBuyerAfterSales; } catch (Exception ex) { } } return new List(); } /// /// 读取店铺物流信息 /// /// /// public static async Task> GetEWaybillPath(string order_ids) { List oms_wei_ewaybill_path_list = null; if (!string.IsNullOrEmpty(order_ids)) { try { 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 = await GetHtml.PostUtf8Async(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) html = await GetHtml.PostUtf8Async(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) { BaseMsgWindow.ShowAnimateMessage("物流查询失败 " + BaseRegex.GetStringJson(ref html, "msg"), "Error", 6); } else { oms_wei_ewaybill_path_list = JsonHelper.DeserializeJsonToList(JObject.Parse(html)["data"].ParseToString()).OrderByDescending(p => p.update_time).ToList(); return oms_wei_ewaybill_path_list; } } catch { } } return new List(); } }