Files
29WxOrder/29WxOrderWpf/Ctrls/OrderCtrls/OrderGetOrderListHelper.cs
T
2026-11-13 19:37:46 +08:00

548 lines
20 KiB
C#
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
{
/// <summary>
/// 增量读取全部订单信息
/// </summary>
/// <param name="lastUpdateTime"></param>
/// <returns></returns>
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);
}
}
/// <summary>
/// 读取买手号订单对应的微信店铺订单信息
/// </summary>
/// <param name="order_ids"></param>
/// <returns></returns>
public static async Task<List<oms_wei_order_info>> GetOrderInfo(string order_ids)
{
return await GetOrderInfoBase(order_ids);
}
/// <summary>
/// 读取订单详情信息
/// </summary>
/// <param name="orderIds"></param>
/// <returns></returns>
static async Task<List<oms_wei_order_info>> GetOrderInfoBase(string orderIds, int pageSize = 100, string shopIds = null, DateTime? beginUpdateTime = null, DateTime? endUpdateTime = null)
{
if (string.IsNullOrEmpty(orderIds))
return new List<oms_wei_order_info>();
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<oms_wei_order_info> orders = new List<oms_wei_order_info>();
orders = JsonHelper.DeserializeJsonToList<oms_wei_order_info>(JObject.Parse(html)["data"].ParseToString());
if (orders == null)
orders = new List<oms_wei_order_info>();
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<oms_wei_order_info>();
}
}
/// <summary>
/// 读取订单详情信息
/// </summary>
/// <param name="order_ids"></param>
/// <returns></returns>
public static async Task<List<oms_wei_order_item_info>> GetOrderItemInfo(string order_ids)
{
if (string.IsNullOrEmpty(order_ids))
return new List<oms_wei_order_item_info>();
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<oms_wei_order_item_info> orderItems = new List<oms_wei_order_item_info>();
try
{
orderItems = JsonHelper.DeserializeJsonToList<oms_wei_order_item_info>(JObject.Parse(html)["data"].ParseToString());
if (orderItems == null)
orderItems = new List<oms_wei_order_item_info>();
}
catch (Exception ex)
{
orderItems = new List<oms_wei_order_item_info>();
BaseMsgWindow.ShowAnimateMessage("订单详情读取失败 " + ex.Message, "Error", 5);
}
return orderItems;
}
/// <summary>
/// 读取售后单
/// </summary>
/// <param name="order_ids"></param>
/// <returns></returns>
public static async Task<List<oms_wei_refund_info>> GetOrderRefundInfo(string order_ids)
{
if (string.IsNullOrEmpty(order_ids))
return new List<oms_wei_refund_info>();
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<oms_wei_refund_info> refunds = new List<oms_wei_refund_info>();
try { refunds = JsonHelper.DeserializeJsonToList<oms_wei_refund_info>(JObject.Parse(html2)["data"].ParseToString()); } catch { }
return refunds;
}
/// <summary>
/// 读取扩展订单信息
/// </summary>
/// <param name="order_ids"></param>
/// <returns></returns>
public static async Task<List<order_item_ext>> GetOrderItemExts(string order_ids)
{
List<order_item_ext> existOrderExtList = new List<order_item_ext>();
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<order_item_ext>(JsonHelper.JObjectParse(html)["data"].ParseToString());
}
catch
{
}
}
return existOrderExtList;
}
/// <summary>
/// 读取中转仓订单发货包裹信息
/// </summary>
/// <param name="order_ids"></param>
/// <returns></returns>
public static async Task<List<oms_wei_external_procurement_log_info>> GetTransitWarehouseList(string order_ids)
{
if (string.IsNullOrEmpty(order_ids))
return new List<oms_wei_external_procurement_log_info>();
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<oms_wei_external_procurement_log_info> transitOrderList = new List<oms_wei_external_procurement_log_info>();
try
{
transitOrderList = JsonHelper.DeserializeJsonToList<oms_wei_external_procurement_log_info>(JObject.Parse(html3)["data"].ParseToString());
return transitOrderList;
}
catch
{
}
return new List<oms_wei_external_procurement_log_info>();
}
/// <summary>
/// 读取中转仓额外包裹
/// </summary>
/// <param name="order_ids"></param>
/// <returns></returns>
public static async Task<List<oms_wei_transfer_extra_package>> GetTransitExtraPackageList(string order_ids)
{
if (string.IsNullOrEmpty(order_ids))
return new List<oms_wei_transfer_extra_package>();
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<oms_wei_transfer_extra_package> transitExtraPackageList = new List<oms_wei_transfer_extra_package>();
try
{
transitExtraPackageList = JsonHelper.DeserializeJsonToList<oms_wei_transfer_extra_package>(JObject.Parse(html3)["data"].ParseToString());
return transitExtraPackageList;
}
catch
{
}
return new List<oms_wei_transfer_extra_package>();
}
/// <summary>
/// 读取中转仓退货包裹
/// </summary>
/// <param name="order_ids"></param>
/// <returns></returns>
public static async Task<List<oms_wei_external_procurement_after_sale_info>> GetTransitWarehouseAfterSaleList(string order_ids)
{
if (string.IsNullOrEmpty(order_ids))
return new List<oms_wei_external_procurement_after_sale_info>();
// 读取中转仓处理售后单
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<oms_wei_external_procurement_after_sale_info> transitAfterSaleList = new List<oms_wei_external_procurement_after_sale_info>();
try
{
transitAfterSaleList = JsonHelper.DeserializeJsonToList<oms_wei_external_procurement_after_sale_info>(JObject.Parse(html5)["data"].ParseToString())
.OrderByDescending(p => p.created_time).ToList();
if (transitAfterSaleList != null)
return transitAfterSaleList;
}
catch
{
}
return new List<oms_wei_external_procurement_after_sale_info>();
}
/// <summary>
/// 读取退货仓包裹
/// </summary>
/// <param name="order_ids"></param>
/// <returns></returns>
public static async Task<List<distrib_return_order_info>> GetTransitReturnOrderList(string order_ids)
{
if (string.IsNullOrEmpty(order_ids))
return new List<distrib_return_order_info>();
// 读取退货仓包裹
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<distrib_return_order_info> transitAfterSaleList = new List<distrib_return_order_info>();
try
{
transitAfterSaleList = JsonHelper.DeserializeJsonToList<distrib_return_order_info>(JObject.Parse(html5)["data"].ParseToString())
.OrderByDescending(p => p.created_at).ToList();
if (transitAfterSaleList != null)
return transitAfterSaleList;
}
catch
{
}
return new List<distrib_return_order_info>();
}
/// <summary>
/// 读取多多买手单
/// </summary>
/// <param name="order_ids"></param>
/// <returns></returns>
public static async Task<List<order_pdd_buyer_order>> GetPddBuyerOrders(string order_ids)
{
if (string.IsNullOrEmpty(order_ids))
return new List<order_pdd_buyer_order>();
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<order_pdd_buyer_order> pddBuyerOrders = new List<order_pdd_buyer_order>();
try
{
pddBuyerOrders = JsonHelper.DeserializeJsonToList<order_pdd_buyer_order>(JObject.Parse(html4)["data"].ParseToString())
.OrderByDescending(p => p.TransitCreateTime).ToList();
return pddBuyerOrders;
}
catch
{
}
return new List<order_pdd_buyer_order>();
}
/// <summary>
/// 读取淘宝买手单
/// </summary>
/// <param name="order_ids"></param>
/// <returns></returns>
public static async Task<List<order_pdd_buyer_order>> GetTbBuyerOrders(string order_ids)
{
if (string.IsNullOrEmpty(order_ids))
return new List<order_pdd_buyer_order>();
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<order_pdd_buyer_order> pddBuyerOrders = new List<order_pdd_buyer_order>();
try
{
pddBuyerOrders = JsonHelper.DeserializeJsonToList<order_pdd_buyer_order>(JObject.Parse(html4)["data"].ParseToString())
.OrderByDescending(p => p.TransitCreateTime).ToList();
return pddBuyerOrders;
}
catch
{
}
return new List<order_pdd_buyer_order>();
}
/// <summary>
/// 读取多多售后
/// </summary>
/// <param name="order_ids"></param>
/// <returns></returns>
public static async Task<List<order_pdd_buyer_after_sale>> 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<order_pdd_buyer_after_sale> pddBuyerAfterSales = new List<order_pdd_buyer_after_sale>();
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<order_pdd_buyer_after_sale>();
}
try
{
pddBuyerAfterSales = JsonHelper.DeserializeJsonToList<order_pdd_buyer_after_sale>(JObject.Parse(html6)["data"].ParseToString()).OrderByDescending(p => p.TransitCreateTime).ToList();
return pddBuyerAfterSales;
}
catch
{
}
}
return new List<order_pdd_buyer_after_sale>();
}
/// <summary>
/// 读取淘宝售后
/// </summary>
/// <param name="order_ids"></param>
/// <returns></returns>
public static async Task<List<order_pdd_buyer_after_sale>> 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<order_pdd_buyer_after_sale> pddBuyerAfterSales = new List<order_pdd_buyer_after_sale>();
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<order_pdd_buyer_after_sale>();
}
try
{
pddBuyerAfterSales = JsonHelper.DeserializeJsonToList<order_pdd_buyer_after_sale>(JObject.Parse(html6)["data"].ParseToString()).OrderByDescending(p => p.TransitCreateTime).ToList();
return pddBuyerAfterSales;
}
catch
{
}
}
return new List<order_pdd_buyer_after_sale>();
}
/// <summary>
/// 读取同步单信息
/// </summary>
/// <param name="buyer_order_ids"></param>
/// <param name="not_upload_pickup_status"></param>
/// <returns></returns>
public static async Task<List<yh_sync_logistics>> 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 += "&not_upload_pickup_status=" + not_upload_pickup_status;
List<yh_sync_logistics> pddBuyerAfterSales = new List<yh_sync_logistics>();
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<yh_sync_logistics>();
}
try
{
pddBuyerAfterSales = JsonHelper.DeserializeJsonToList<yh_sync_logistics>(JObject.Parse(html6)["data"].ParseToString()).OrderByDescending(p => p.id).ToList();
return pddBuyerAfterSales;
}
catch (Exception ex)
{
}
}
return new List<yh_sync_logistics>();
}
/// <summary>
/// 读取店铺物流信息
/// </summary>
/// <param name="order_ids"></param>
/// <returns></returns>
public static async Task<List<oms_wei_ewaybill_path>> GetEWaybillPath(string order_ids)
{
List<oms_wei_ewaybill_path> 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<oms_wei_ewaybill_path>(JObject.Parse(html)["data"].ParseToString()).OrderByDescending(p => p.update_time).ToList();
return oms_wei_ewaybill_path_list;
}
}
catch
{
}
}
return new List<oms_wei_ewaybill_path>();
}
}