1441 lines
71 KiB
C#
1441 lines
71 KiB
C#
using _29WxOrderWpf.BaseWindows;
|
|
using _29WxOrderWpf.Ctrls.BuyerCtrls;
|
|
using _29WxOrderWpf.Utils;
|
|
using AllBase;
|
|
using AllBase.Extension;
|
|
using AllBase.Helper;
|
|
using AllBase.Model;
|
|
using AllBase.Model.DBModel;
|
|
using AllBase.Model.Result;
|
|
using CefSharp.DevTools.Autofill;
|
|
using NaiBa.Util.Extension;
|
|
using Newtonsoft.Json.Linq;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.Linq;
|
|
using System.Security.Cryptography.X509Certificates;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Shapes;
|
|
using System.Xml.Linq;
|
|
using TemuKJD.ToolForms;
|
|
using Work;
|
|
using Work._29Tools.BLL;
|
|
using Work.BuyUsers;
|
|
using static System.Net.Mime.MediaTypeNames;
|
|
|
|
namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
|
{
|
|
/// <summary>
|
|
/// OrderListCtrl.xaml 的交互逻辑
|
|
/// </summary>
|
|
public partial class OrderListCtrl : UserControl
|
|
{
|
|
public CheckBox chkSelectAll = null;
|
|
|
|
public bool IsAutoReadOrder = true;
|
|
public DateTime nextGetOrderTime = DateTime.MinValue;
|
|
|
|
public string strSearchAll = "";
|
|
public List<string> lstFilterText { get; set; }
|
|
|
|
public OrderListCtrl()
|
|
{
|
|
InitializeComponent();
|
|
DataContext = this;
|
|
}
|
|
|
|
private void Window_Loaded(object sender, RoutedEventArgs e)
|
|
{
|
|
lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder;
|
|
|
|
dateStart.SelectedDate = DateTime.Now.Date.AddDays(-7);
|
|
dateEnd.SelectedDate = DateTime.Now.Date.AddDays(1).AddSeconds(-1);
|
|
|
|
borderFilterRemarkSelect.Visibility = Visibility.Collapsed;
|
|
|
|
AutoGetOrder();
|
|
}
|
|
|
|
public void GetOrderTest()
|
|
{
|
|
for (int i = 0; i < 10000; i++)
|
|
{
|
|
//lstOrder.Add(new oms_wei_order_info() { id = 1, IsSelect = false, order_id = ("3737033423685556736".ParseToLong() + Randomx.GetId(0,100)).ParseToString(), shop_name = "媛卡曦工厂优选" });
|
|
GlobalConfig.lstOrder.Add(new oms_wei_order_info() { id = 1, IsSelect = false, order_id = Randomx.GetId(1000, 10000).ParseToString(), shop_name = "媛卡曦工厂优选" });
|
|
}
|
|
GlobalConfig.lstOrder.SortDesc(o => o.order_id.ParseToLong());
|
|
}
|
|
|
|
public void AutoGetOrder()
|
|
{
|
|
Task.Run(() =>
|
|
{
|
|
Thread.Sleep(5000);
|
|
while (true)
|
|
{
|
|
if (!IsAutoReadOrder)
|
|
{
|
|
Thread.Sleep(1000);
|
|
Dispatcher.Invoke(new Action(() =>
|
|
{
|
|
btnSearch.Content = "自动读单暂停中";
|
|
imgLoading.Visibility = Visibility.Collapsed;
|
|
}));
|
|
continue;
|
|
}
|
|
|
|
if (DateTime.Now > nextGetOrderTime)
|
|
{
|
|
GetOrder();
|
|
|
|
nextGetOrderTime = DateTime.Now.AddMinutes(25);
|
|
}
|
|
Thread.Sleep(1000);
|
|
Dispatcher.Invoke(new Action(() =>
|
|
{
|
|
var ticks = nextGetOrderTime - DateTime.Now;
|
|
btnSearch.Content = "读单 " + ticks.Minutes.ToString("00") + ":" + ticks.Seconds.ToString("00");
|
|
}));
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
public bool hasReadOrder = false;
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="filterGetCondition">按过滤条件读取读取服务端订单</param>
|
|
public void GetOrder(string orderIds = "", bool filterGetCondition = false)
|
|
{
|
|
Dispatcher.Invoke(new Action(() =>
|
|
{
|
|
imgLoading.Visibility = Visibility.Visible;
|
|
btnSearch.IsEnabled = false;
|
|
}));
|
|
int page = 0;
|
|
int totalPage = 1;
|
|
int pageSize = 50;
|
|
|
|
while (true && (IsAutoReadOrder || !string.IsNullOrEmpty(orderIds)))
|
|
{
|
|
if (page >= totalPage)
|
|
{
|
|
break;
|
|
}
|
|
|
|
page++;
|
|
var url = BaseClass.Build29WxObjString("order/get_erp_order_list");
|
|
var data = UserLogin.GetSignaturex() + "&page=" + page;
|
|
if (!string.IsNullOrEmpty(orderIds))
|
|
data += "&erp_order_id_in=" + orderIds;
|
|
if (page > 1)
|
|
data += "&is_not_count=true";
|
|
data += "&page_size=" + pageSize;
|
|
var shop_id = string.Join(",", GlobalConfig.ShopLoginList.Select(s => s.ErpShopId).Where(s => !s.IsNullOrEmpty()));
|
|
//指定订单id的查询,不再查询店铺id
|
|
if (string.IsNullOrEmpty(orderIds))
|
|
data += "&erp_shop_id_in=" + shop_id;
|
|
Dispatcher.Invoke(new Action(() =>
|
|
{
|
|
// 按过滤条件读取
|
|
if (filterGetCondition)
|
|
{
|
|
if (!string.IsNullOrEmpty(txtShopName.Text.Trim()))
|
|
{
|
|
var shopNames = txtShopName.Text.Trim().Split(';').Where(s => !s.IsNullOrEmpty()).ToList();
|
|
shop_id = string.Join(",", GlobalConfig.ShopLoginList.Where(s => shopNames.Contains(s.ShopAccount)).Select(s => s.ErpShopId).Where(s => !s.IsNullOrEmpty()));
|
|
}
|
|
}
|
|
var startTime = BaseClass.DateTimeToTimestampSeconds(dateStart.SelectedDate.Value);
|
|
var endTime = BaseClass.DateTimeToTimestampSeconds(dateEnd.SelectedDate.Value.AddDays(1));
|
|
if (!chkEndDate.IsChecked.ParseToBool())
|
|
endTime = BaseClass.DateTimeToTimestampSeconds(DateTime.Now.Date.AddDays(1));
|
|
data += "&start_time=" + startTime;
|
|
data += "&end_time=" + endTime;
|
|
}));
|
|
Thread.Sleep(200);
|
|
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"))
|
|
{
|
|
BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg"));
|
|
break;
|
|
}
|
|
var seconds = BaseRegex.GetDecimalJson(ref html, "seconds");
|
|
|
|
var jArr = JObject.Parse(html)["data"];
|
|
if (jArr.Count() == 0)
|
|
break;
|
|
|
|
var order_ids = string.Join(",", jArr.Select(a => a["order_id"].ParseToString()));
|
|
|
|
// 读取订单详情
|
|
if (string.IsNullOrEmpty(order_ids))
|
|
Thread.Sleep(100);
|
|
List<oms_wei_order_item_info> orderItems = GetOrderItemInfo(order_ids);
|
|
|
|
// 读取售后单
|
|
if (string.IsNullOrEmpty(order_ids))
|
|
Thread.Sleep(100);
|
|
List<oms_wei_refund_info> refunds = GetOrderRefundInfo(order_ids);
|
|
|
|
// 读订单扩展
|
|
if (string.IsNullOrEmpty(order_ids))
|
|
Thread.Sleep(100);
|
|
List<order_item_ext> orderItemExts = GetOrderItemExts(order_ids);
|
|
if (string.IsNullOrEmpty(order_ids))
|
|
{
|
|
foreach (var oie in orderItemExts)
|
|
{
|
|
// 移除订单物流异常信息,每次批量读单最后要去微信获取
|
|
oie.abnormal_text = "";
|
|
}
|
|
}
|
|
|
|
// 读取中转仓拍单订单
|
|
var url3 = BaseClass.Build29WxObjString("order/wx_get_transit_order");
|
|
var data3 = UserLogin.GetSignaturex();
|
|
data3 += "&order_no=" + order_ids;
|
|
var html3 = GetHtml.PostUtf8(url3, data3);
|
|
if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200"))
|
|
html3 = GetHtml.PostUtf8(url3, data3);
|
|
if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200"))
|
|
{
|
|
BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html3, "msg"));
|
|
break;
|
|
}
|
|
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());
|
|
}
|
|
catch { }
|
|
|
|
// 读取暂时记录的买手订单,后面想办法放到中转订单库里去
|
|
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);
|
|
if (string.IsNullOrEmpty(html4) || !html4.Contains("\"code\":200"))
|
|
html4 = GetHtml.PostUtf8(url4, data4);
|
|
if (string.IsNullOrEmpty(html4) || !html4.Contains("\"code\":200"))
|
|
{
|
|
Dispatcher.Invoke(new Action(() =>
|
|
{
|
|
BaseMsgWindow.ShowError("订单读取失败(买手) " + BaseRegex.GetStringJson(ref html4, "msg"));
|
|
}));
|
|
break;
|
|
}
|
|
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();
|
|
}
|
|
catch { }
|
|
|
|
// 读取暂时记录的买手售后单,后面想办法放到中转订单库里去
|
|
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 = GetHtml.PostUtf8(url6, data6);
|
|
if (string.IsNullOrEmpty(html6) || !html6.Contains("\"code\":200"))
|
|
html6 = GetHtml.PostUtf8(url6, data6);
|
|
if (string.IsNullOrEmpty(html6) || !html6.Contains("\"code\":200"))
|
|
{
|
|
BaseMsgWindow.ShowError("订单读取失败(买手售后) " + BaseRegex.GetStringJson(ref html6, "msg"));
|
|
break;
|
|
}
|
|
try
|
|
{
|
|
pddBuyerAfterSales = JsonHelper.DeserializeJsonToList<order_pdd_buyer_after_sale>(JObject.Parse(html6)["data"].ParseToString())
|
|
.OrderByDescending(p => p.TransitCreateTime).ToList();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
|
|
// 读取中转仓处理售后单
|
|
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);
|
|
if (string.IsNullOrEmpty(html5) || !html5.Contains("\"code\":200"))
|
|
html5 = GetHtml.PostUtf8(url5, data5);
|
|
if (string.IsNullOrEmpty(html5) || !html5.Contains("\"code\":200"))
|
|
{
|
|
Dispatcher.Invoke(new Action(() =>
|
|
{
|
|
BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html5, "msg"));
|
|
}));
|
|
break;
|
|
}
|
|
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();
|
|
}
|
|
catch { }
|
|
|
|
|
|
// 读取关联拍单商品
|
|
var urlMap = BaseClass.Build29WxObjString("order/wx_get_buy_prod_map");
|
|
var dataMap = UserLogin.GetSignaturex()
|
|
+ "&spu_codes=" + string.Join(",", orderItems.Select(oi => GetHtml.UrlEncodeUtf8(oi.out_product_id))) + "," + string.Join(",", orderItems.Select(oi => oi.product_id));
|
|
dataMap += "&main_user_name=" + BaseClass.MainUserName;
|
|
var resultMap = GetHtml.PostUtf8(urlMap, dataMap);
|
|
if (string.IsNullOrEmpty(resultMap) || !resultMap.Contains("\"code\":200"))
|
|
resultMap = GetHtml.PostUtf8(urlMap, dataMap);
|
|
if (string.IsNullOrEmpty(resultMap) || !resultMap.Contains("\"code\":200"))
|
|
{
|
|
Dispatcher.Invoke(new Action(() =>
|
|
{
|
|
BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref resultMap, "msg"));
|
|
}));
|
|
break;
|
|
}
|
|
List<WXBuyMapInfo> byuMapList = new List<WXBuyMapInfo>();
|
|
try { byuMapList = JsonHelper.DeserializeJsonToList<WXBuyMapInfo>(JObject.Parse(resultMap)["data"].ParseToString()); } catch { }
|
|
|
|
|
|
// 装载订单
|
|
foreach (JObject jObj in jArr)
|
|
{
|
|
try
|
|
{
|
|
oms_wei_order_info order = null;
|
|
order = JsonHelper.DeserializeJsonToObject<oms_wei_order_info>(JsonHelper.SerializeObject(jObj));
|
|
|
|
//装载订单商品详情
|
|
order.orderItems = new ObservableCollection<oms_wei_order_item_info>();
|
|
foreach (var item in orderItems.Where(oi => oi.order_id == order.order_id))
|
|
{
|
|
// 订单商品
|
|
item.ItemOrder = order;
|
|
order.orderItems.Add(item);
|
|
|
|
item.OrderItemExt = orderItemExts.FirstOrDefault(ext => ext.order_id == item.order_id && item.sku_id == item.sku_id);
|
|
|
|
// 已放到赋值函数中处理
|
|
// 更新店铺是否加入代发情况
|
|
//item.Shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == item.order_id);
|
|
//Dispatcher.Invoke(new Action(() => { item.UpdateOrderItemBuyButton(); }));
|
|
|
|
// 关联拍单关系 // 危险物品禁止拍单,仅关联安全商品
|
|
if (!GlobalConfig.lstDangerItemWord.Any(d => (item.title).ParseToString().Contains(d)))
|
|
{
|
|
item.BuyMap = byuMapList.FirstOrDefault(b => b.sku_code == item.out_sku_id && b.spu_code == item.out_product_id);
|
|
if (item.BuyMap == null)
|
|
item.BuyMap = byuMapList.FirstOrDefault(b => b.sku_code == item.sku_attr_str && b.spu_code == item.out_product_id);
|
|
if (item.BuyMap == null)
|
|
item.BuyMap = byuMapList.FirstOrDefault(b => b.sku_code == item.out_sku_id && b.spu_code == item.product_id);
|
|
if (item.BuyMap == null)
|
|
item.BuyMap = byuMapList.FirstOrDefault(b => b.sku_code == item.sku_attr_str && b.spu_code == item.product_id);
|
|
}
|
|
|
|
// 中转仓订单
|
|
if (item.ItemOrder.orderItems.Count > 1)
|
|
item.ItemTransitOrders.AddRange(transitOrderList.Where(t => t.order_no == item.order_id && t.order_sku_id == item.sku_id));
|
|
else
|
|
item.ItemTransitOrders.AddRange(transitOrderList.Where(t => t.order_no == item.order_id));
|
|
item.ItemTransitOrderAfterSales = transitAfterSaleList.Where(a => item.ItemTransitOrders.Any(t => t.out_order_no == a.order_code)).ToList();
|
|
|
|
// 中转仓买手订单
|
|
item.PddBuyerOrders = pddBuyerOrders.Where(po => po.wx_order_id == item.order_id && po.wx_sku_id == item.sku_id).ToList();
|
|
// 中转仓买手退货订单
|
|
item.PddBuyerAfterSales = pddBuyerAfterSales.Where(po => po.wx_order_id == item.order_id && po.wx_sku_id == item.sku_id).ToList();
|
|
}
|
|
|
|
// 装载订单售后详情
|
|
order.refundItems = new ObservableCollection<oms_wei_refund_info>(refunds.Where(of => of.order_id == order.order_id));
|
|
|
|
// 读取订单后立即赋值,防止滚动时实时赋值造成卡顿
|
|
foreach (var orderItem in order.orderItems)
|
|
{
|
|
orderItem.SetOrderItemTextProperty();
|
|
}
|
|
order.SetOrderTextProperty();
|
|
|
|
// 删除再添加,触发更新。 todo: 如果已存在相同订单,则直接修改更新
|
|
var orderExist = GlobalConfig.lstOrder.FirstOrDefault(o => o.order_id == order.order_id);
|
|
while (orderExist != null)
|
|
{
|
|
GlobalConfig.lstOrder.Remove(orderExist);
|
|
orderExist = GlobalConfig.lstOrder.FirstOrDefault(o => o.order_id == order.order_id);
|
|
}
|
|
GlobalConfig.lstOrder.Add(order);
|
|
|
|
Dispatcher.Invoke(new Action(() =>
|
|
{
|
|
FilterOneOrder(order);
|
|
}));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
}
|
|
|
|
Dispatcher.Invoke(new Action(() =>
|
|
{
|
|
disPlayOrderTabOrderCount();
|
|
}));
|
|
|
|
var totalCount = BaseRegex.GetIntJson(ref html, "count");
|
|
if (totalCount > 0)
|
|
totalPage = Math.Ceiling(1m * totalCount / pageSize).ParseToInt();
|
|
else
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(orderIds))
|
|
GetShopWaybillExceptionOrder();
|
|
|
|
hasReadOrder = true;
|
|
Dispatcher.Invoke(new Action(() =>
|
|
{
|
|
imgLoading.Visibility = Visibility.Collapsed;
|
|
btnSearch.IsEnabled = true;
|
|
}));
|
|
}
|
|
|
|
/// <summary>
|
|
/// 读取订单详情信息
|
|
/// </summary>
|
|
/// <param name="order_ids"></param>
|
|
/// <returns></returns>
|
|
public static 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 = 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"))
|
|
{
|
|
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)
|
|
{
|
|
BaseMsgWindow.ShowAnimateMessage("订单详情读取失败 " + ex.Message, "Error", 5);
|
|
}
|
|
return orderItems;
|
|
}
|
|
|
|
public static 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 = GetHtml.PostUtf8(url, data);
|
|
if (!html.Contains("\"code\":200"))
|
|
html = GetHtml.PostUtf8(url, data);
|
|
if (!html.Contains("\"code\":200"))
|
|
{
|
|
BaseMsgWindow.ShowAnimateMessage("订单扩展信息查询失败 " + BaseRegex.GetStringJson(ref html, "msg"), "Error", 5);
|
|
}
|
|
existOrderExtList = JsonHelper.DeserializeJsonToList<order_item_ext>(JsonHelper.JObjectParse(html)["data"].ParseToString());
|
|
}
|
|
return existOrderExtList;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 读取售后单
|
|
/// </summary>
|
|
/// <param name="order_ids"></param>
|
|
/// <returns></returns>
|
|
public static 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 = GetHtml.PostUtf8(url2, data2);
|
|
if (string.IsNullOrEmpty(html2) || !html2.Contains("\"code\":200"))
|
|
html2 = GetHtml.PostUtf8(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;
|
|
}
|
|
|
|
public void GetShopWaybillExceptionOrder()
|
|
{
|
|
foreach (var shop in GlobalConfig.ShopLoginList)
|
|
{
|
|
if (shop.LoginStatus == "登录成功")
|
|
ShopBLL.CheckShopLogin(shop);
|
|
if (shop.LoginStatus != "登录成功")
|
|
continue;
|
|
|
|
var rst = WxSimAbnormalOrderSeach(shop, 100);
|
|
//Thread.Sleep(Randomx.GetId(50, 150));
|
|
if (rst.Contains("\"code\":0"))
|
|
{
|
|
try
|
|
{
|
|
JObject jObj = JsonHelper.JObjectParse(rst);
|
|
var wxOrderIdIn = string.Join(",", jObj["orderList"].Select(j => j["commonInfo"]["orderId"].ParseToString()));
|
|
var wxSkuIdIn = string.Join(",", jObj["orderList"].Select(j => (j["orderProductInfo"].FirstOrDefault()?["skuId"]).ParseToString()));
|
|
|
|
List<order_item_ext> existOrderExtList = new List<order_item_ext>();
|
|
if (!string.IsNullOrEmpty(wxOrderIdIn) && !string.IsNullOrEmpty(wxSkuIdIn))
|
|
{
|
|
var url = BaseClass.Build29WxObjString("order/wx_get_order_item_ext_info");
|
|
var data = UserLogin.GetSignaturex();
|
|
data += "&wx_order_id_in=" + wxOrderIdIn;
|
|
data += "&wx_sku_id_in=" + wxSkuIdIn;
|
|
var html = GetHtml.PostUtf8(url, data);
|
|
if (!html.Contains("\"code\":200"))
|
|
html = GetHtml.PostUtf8(url, data);
|
|
if (!html.Contains("\"code\":200"))
|
|
{
|
|
BaseMsgWindow.ShowAnimateMessage("订单扩展信息查询失败 " + BaseRegex.GetStringJson(ref html, "msg"), "Error", 5);
|
|
continue;
|
|
}
|
|
existOrderExtList = JsonHelper.DeserializeJsonToList<order_item_ext>(JsonHelper.JObjectParse(html)["data"].ParseToString());
|
|
}
|
|
|
|
foreach (var od in jObj["orderList"])
|
|
{
|
|
var oStr = JsonHelper.SerializeObject(od);
|
|
|
|
//var orderId = o["commonInfo"]["orderId"].ParseToString();
|
|
var orderId = BaseRegex.GetStringJson(ref oStr, "orderId");
|
|
|
|
if (orderId == "3737914129536416512")
|
|
{
|
|
|
|
}
|
|
var skuId = BaseRegex.GetStringJson(ref oStr, "skuId");
|
|
|
|
// 存在状态完全一样的订单异常信息就跳过
|
|
order_item_ext orderExt = new order_item_ext() { order_id = orderId, sku_id = skuId, shop_app_id = shop.ShopId, shop_name = shop.ShopAccount, abnormal_text = "物流异常" };
|
|
|
|
if (!existOrderExtList.Any(eoe => eoe.order_id == orderExt.order_id && eoe.sku_id == orderExt.sku_id && eoe.abnormal_text == orderExt.abnormal_text))
|
|
{
|
|
var url1 = BaseClass.Build29WxObjString("order/wx_add_order_item_ext_info");
|
|
if (existOrderExtList.Any(eoe => eoe.order_id == orderExt.order_id && eoe.sku_id == orderExt.sku_id))
|
|
url1 = BaseClass.Build29WxObjString("order/wx_mdy_order_item_ext_info");
|
|
var data1 = UserLogin.GetSignaturex();
|
|
data1 += "&wx_order_id=" + orderExt.order_id;
|
|
data1 += "&wx_sku_id=" + orderExt.sku_id;
|
|
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);
|
|
if (string.IsNullOrEmpty(html1) || !html1.Contains("\"code\":200"))
|
|
{
|
|
BaseMsgWindow.ShowAnimateMessage("订单扩展信息写入失败 " + BaseRegex.GetStringJson(ref html1, "msg"), "Error", 5);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
orderExt = existOrderExtList.FirstOrDefault(eoe => eoe.order_id == orderExt.order_id && eoe.sku_id == orderExt.sku_id && eoe.abnormal_text == orderExt.abnormal_text);
|
|
}
|
|
|
|
// 更新订单附加信息
|
|
if (orderExt.order_id == "3737845591459133952")
|
|
{
|
|
|
|
}
|
|
var order = GlobalConfig.lstOrder.FirstOrDefault(o => o.order_id == orderExt.order_id);
|
|
if (order != null)
|
|
{
|
|
var orderItem = order.orderItems.FirstOrDefault(oi => oi.sku_id == orderExt.sku_id);
|
|
if (orderItem != null)
|
|
{
|
|
orderItem.OrderItemExt = orderExt;
|
|
Dispatcher.Invoke(new Action(() =>
|
|
{
|
|
foreach (var oi in order.orderItems)
|
|
oi.SetOrderItemTextProperty();
|
|
order.SetOrderTextProperty();
|
|
|
|
MainWindow.Instance.orderListCtrl.FilterOneOrder(order, true);
|
|
}));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
BaseMsgWindow.ShowAnimateMessage("订单扩展信息查询失败 " + ex.Message, "Error", 5);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void disPlayOrderTabOrderCount()
|
|
{
|
|
var tabItems = this.tabOrderType.Items.Cast<TabItem>();
|
|
var tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("待采购"));
|
|
var userOrderLst = GlobalConfig.lstOrder.Where(o => GlobalConfig.ShopLoginList.Any(s => s.ErpShopId.ParseToLong() == o.shop_id)).ToList();
|
|
if (tabItem != null)
|
|
{
|
|
var filteLstTmp = new ObservableCollection<oms_wei_order_info>(userOrderLst.Where(o => !GetOrderIsFilter(o, "待采购")));
|
|
//tabItem.Header = "待采购(" + userOrderLst.Where(r => r.IsWaitBuy).Count() + "|" + filteLstTmp.Where(r => r.IsWaitBuy).Count() + ")";
|
|
tabItem.Header = "待采购(" + userOrderLst.Where(r => r.IsWaitBuy).Count() + "|" + filteLstTmp.Count() + ")";
|
|
}
|
|
tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("待发货"));
|
|
if (tabItem != null)
|
|
{
|
|
var filteLstTmp = new ObservableCollection<oms_wei_order_info>(userOrderLst.Where(o => !GetOrderIsFilter(o, "待发货")));
|
|
//tabItem.Header = "待发货(" + userOrderLst.Where(r => r.IsWaitSend).Count() + "|" + filteLstTmp.Where(r => r.IsWaitSend).Count() + ")";
|
|
tabItem.Header = "待发货(" + userOrderLst.Where(r => r.IsWaitSend).Count() + "|" + filteLstTmp.Count() + ")";
|
|
}
|
|
tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("待收货"));
|
|
if (tabItem != null)
|
|
{
|
|
var filteLstTmp = new ObservableCollection<oms_wei_order_info>(userOrderLst.Where(o => !GetOrderIsFilter(o, "待收货")));
|
|
//tabItem.Header = "待收货(" + userOrderLst.Where(r => r.IsWaitReceive).Count() + "|" + filteLstTmp.Where(r => r.IsWaitReceive).Count() + ")";
|
|
tabItem.Header = "待收货(" + userOrderLst.Where(r => r.IsWaitReceive).Count() + "|" + filteLstTmp.Count() + ")";
|
|
}
|
|
tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("售后完成订单"));
|
|
if (tabItem != null)
|
|
{
|
|
var filteLstTmp = new ObservableCollection<oms_wei_order_info>(userOrderLst.Where(o => !GetOrderIsFilter(o, "售后完成订单")));
|
|
//tabItem.Header = "售后完成订单(" + userOrderLst.Where(r => r.IsRefund).Count() + "|" + filteLstTmp.Where(r => r.IsRefund).Count() + ")";
|
|
tabItem.Header = "售后完成订单(" + userOrderLst.Where(r => r.IsRefund).Count() + "|" + filteLstTmp.Count() + ")";
|
|
}
|
|
tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("需处理售后订单"));
|
|
if (tabItem != null)
|
|
{
|
|
var filteLstTmp = new ObservableCollection<oms_wei_order_info>(userOrderLst.Where(o => !GetOrderIsFilter(o, "需处理售后订单")));
|
|
//tabItem.Header = "需处理售后订单(" + userOrderLst.Where(r => r.IsEmergency).Count() + "|" + filteLstTmp.Where(r => r.IsEmergency).Count() + ")";
|
|
tabItem.Header = "需处理售后订单(" + userOrderLst.Where(r => r.IsEmergency).Count() + "|" + filteLstTmp.Count() + ")";
|
|
}
|
|
tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("异常订单"));
|
|
if (tabItem != null)
|
|
{
|
|
var filteLstTmp = new ObservableCollection<oms_wei_order_info>(userOrderLst.Where(o => !GetOrderIsFilter(o, "异常订单")));
|
|
//tabItem.Header = "异常订单(" + userOrderLst.Where(r => r.isAbnormal).Count() + "|" + filteLstTmp.Where(r => r.isAbnormal).Count() + ")";
|
|
tabItem.Header = "异常订单(" + userOrderLst.Where(r => r.isAbnormal).Count() + "|" + filteLstTmp.Count() + ")";
|
|
}
|
|
tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("全部订单"));
|
|
if (tabItem != null)
|
|
{
|
|
var filteLstTmp = new ObservableCollection<oms_wei_order_info>(userOrderLst.Where(o => !GetOrderIsFilter(o, "全部订单")));
|
|
tabItem.Header = "全部订单(" + userOrderLst.Count() + "|" + filteLstTmp.Count() + ")";
|
|
}
|
|
//txtMsg.Text = "当前条件共计 " + GlobalConfig.lstFilterOrder.Count() + " 条订单记录";
|
|
}
|
|
|
|
public void FilterOrders()
|
|
{
|
|
try
|
|
{
|
|
if (this.lbxOrder == null)
|
|
return;
|
|
|
|
Dispatcher.Invoke(new Action(() =>
|
|
{
|
|
if (GlobalConfig.OrderTabHeaderStr.StartsWith("需处理售后订单"))
|
|
GlobalConfig.lstFilterOrder = new ObservableCollection<oms_wei_order_info>(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o)).OrderByDescending(o => o.RefundDatetime));
|
|
else if (GlobalConfig.OrderTabHeaderStr.StartsWith("异常订单"))
|
|
GlobalConfig.lstFilterOrder = new ObservableCollection<oms_wei_order_info>(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o)).OrderByDescending(o => o.update_time));
|
|
else
|
|
GlobalConfig.lstFilterOrder = new ObservableCollection<oms_wei_order_info>(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o)).OrderByDescending(o => o.create_time));
|
|
this.lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder;
|
|
|
|
disPlayOrderTabOrderCount();
|
|
}));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
}
|
|
|
|
public void FilterOneOrder(oms_wei_order_info order, bool updateTabCount = false)
|
|
{
|
|
var orderExist = GlobalConfig.lstFilterOrder.FirstOrDefault(o => o.order_id == order.order_id);
|
|
while (orderExist != null)
|
|
{
|
|
GlobalConfig.lstFilterOrder.Remove(orderExist);
|
|
orderExist = GlobalConfig.lstFilterOrder.FirstOrDefault(o => o.order_id == order.order_id);
|
|
}
|
|
|
|
if (!GetOrderIsFilter(order))
|
|
{
|
|
oms_wei_order_info nextOrder = null;
|
|
if (GlobalConfig.OrderTabHeaderStr.StartsWith("需处理售后订单"))
|
|
nextOrder = GlobalConfig.lstFilterOrder.FirstOrDefault(o => o.RefundDatetime < order.RefundDatetime);
|
|
else if (GlobalConfig.OrderTabHeaderStr.StartsWith("异常订单"))
|
|
nextOrder = GlobalConfig.lstFilterOrder.FirstOrDefault(o => o.update_time < order.update_time);
|
|
else
|
|
nextOrder = GlobalConfig.lstFilterOrder.FirstOrDefault(o => o.create_time < order.create_time);
|
|
|
|
if (nextOrder != null)
|
|
{
|
|
GlobalConfig.lstFilterOrder.Insert(GlobalConfig.lstFilterOrder.IndexOf(nextOrder), order);
|
|
}
|
|
else
|
|
{
|
|
GlobalConfig.lstFilterOrder.Add(order);
|
|
}
|
|
}
|
|
|
|
if (updateTabCount)
|
|
{
|
|
Dispatcher.Invoke(new Action(() =>
|
|
{
|
|
disPlayOrderTabOrderCount();
|
|
}));
|
|
}
|
|
}
|
|
|
|
bool GetOrderIsFilter(oms_wei_order_info order, string filterHeadStr = null)
|
|
{
|
|
if (order == null)
|
|
return true;
|
|
|
|
if (!GlobalConfig.ShopLoginList.Any(s => s.ErpShopId.ParseToLong() == order.shop_id))
|
|
return true;
|
|
|
|
if (!string.IsNullOrEmpty(strSearchAll))
|
|
{
|
|
bool isFilter = true;
|
|
// 买手物流
|
|
if (order.orderItems.Any(oi => oi.ItemTransitOrders.Any(t => t.express_1_waybill.ParseToString().Contains(strSearchAll))))
|
|
isFilter = false;
|
|
// 仓库物流
|
|
else if (order.orderItems.Any(oi => oi.ItemTransitOrders.Any(t => t.express_2_waybill.ParseToString().Contains(strSearchAll))))
|
|
isFilter = false;
|
|
// 退货物流
|
|
else if (order.refundItems.Any(ri => ri.return_waybill_id.ParseToString().Contains(strSearchAll)))
|
|
isFilter = false;
|
|
// 退货单号
|
|
else if (order.refundItems.Any(ri => ri.after_sale_order_id.ParseToString().Contains(strSearchAll)))
|
|
isFilter = false;
|
|
// 仓库采购单号
|
|
else if (order.orderItems.Any(oi => oi.ItemTransitOrders.Any(t => t.out_order_no.ParseToString().Contains(strSearchAll))))
|
|
isFilter = false;
|
|
// 仓库退款单号
|
|
else if (order.orderItems.Any(oi => oi.ItemTransitOrderAfterSales.Any(t => t.refund_waybill.ParseToString().Contains(strSearchAll))))
|
|
isFilter = false;
|
|
if (isFilter)
|
|
return true;
|
|
}
|
|
|
|
// 过滤店铺名称
|
|
if (!string.IsNullOrEmpty(txtShopName.Text.Trim()) && !(";" + txtShopName.Text.Trim() + ";").Contains(";" + order.shop_name + ";"))
|
|
{
|
|
return true;
|
|
}
|
|
// 过滤商品名称
|
|
if (!string.IsNullOrEmpty(txtGoodsName.Text.Trim()) && !order.orderItems.Any(it => it.title.Contains(txtGoodsName.Text.Trim())))
|
|
{
|
|
return true;
|
|
}
|
|
// 过滤id
|
|
if (!string.IsNullOrEmpty(txtOrderId.Text.Trim()) && !(";" + txtOrderId.Text.Trim().Replace(' ', ';').Replace(',', ';') + ";").Contains(";" + order.order_id + ";"))
|
|
{
|
|
return true;
|
|
}
|
|
// 过滤多子单订单
|
|
if (chkNoMultiOrder.IsChecked.ParseToBool() && order.orderItems.Count() > 1)
|
|
{
|
|
return true;
|
|
}
|
|
// 过滤非中转仓订单
|
|
if (chkOnlyWarehouseOrder.IsChecked.ParseToBool() && !order.IsWaitBuy && order.orderItems.All(oi => oi.ItemTransitOrderWithVoid == null))
|
|
{
|
|
return true;
|
|
}
|
|
// 过滤备注
|
|
if (chkFilterRemark.IsChecked == true && !string.IsNullOrEmpty(txtFilterRemark.Text))
|
|
{
|
|
if (cmbFilterRemark.SelectedItem is ComboBoxItem comboBoxItem)
|
|
{
|
|
if (comboBoxItem.Content is TextBlock tb)
|
|
{
|
|
if (tb.Text == "店铺备注包含" && !lstFilterText.Contains(order.shop_remark))
|
|
return true;
|
|
else if (tb.Text == "软件备注包含" && !lstFilterText.Contains(order.soft_remark))
|
|
return true;
|
|
else if (tb.Text == "店铺备注不含" && lstFilterText.Contains(order.shop_remark))
|
|
return true;
|
|
else if (tb.Text == "软件备注不含" && lstFilterText.Contains(order.soft_remark))
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
// 过滤时间范围
|
|
if (cmbTimeType.SelectedItem is ComboBoxItem cbi)
|
|
{
|
|
if (cbi.Content is TextBlock tb)
|
|
{
|
|
if (tb.Text == "更新时间")
|
|
{
|
|
if (order.UpdateDateTime < dateStart.SelectedDate.Value)
|
|
return true;
|
|
if (chkEndDate.IsChecked == true && order.UpdateDateTime > dateEnd.SelectedDate.Value)
|
|
return true;
|
|
}
|
|
if (tb.Text == "创建时间")
|
|
{
|
|
if (order.CreateDateTime < dateStart.SelectedDate.Value)
|
|
return true;
|
|
if (chkEndDate.IsChecked == true && order.CreateDateTime > dateEnd.SelectedDate.Value)
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
// 过滤标签页
|
|
if (filterHeadStr.IsNullOrEmpty())
|
|
filterHeadStr = GlobalConfig.OrderTabHeaderStr;
|
|
|
|
if (filterHeadStr.StartsWith("全部订单"))
|
|
{
|
|
return false;
|
|
}
|
|
if (filterHeadStr.StartsWith("待采购"))
|
|
{
|
|
if (!order.IsWaitBuy)
|
|
return true;
|
|
if (order.IsRefund)
|
|
return true;
|
|
if (chkMapProdOnly.IsChecked == true && order.orderItems.All(oi => oi.BuyMap == null))
|
|
return true;
|
|
if (chkNoMapProdOnly.IsChecked == true && order.orderItems.All(oi => oi.BuyMap != null))
|
|
return true;
|
|
}
|
|
if (filterHeadStr.StartsWith("待发货") && !order.IsWaitSend)
|
|
{
|
|
return true;
|
|
}
|
|
if (filterHeadStr.StartsWith("待收货"))
|
|
{
|
|
if (!order.IsWaitReceive)
|
|
return true;
|
|
|
|
if (chkWaitReceiveBuyerIsNotSend.IsChecked == true && order.orderItems.All(oi => oi.BuyerTransitWaybillStatusStr != "买手未发货"))
|
|
return true;
|
|
if (chkWaitReceiveBuyerIsSend.IsChecked == true && order.orderItems.All(oi => oi.BuyerTransitWaybillStatusStr != "买手已发货"))
|
|
return true;
|
|
if (chkWaitReceiveBuyerIsInWarehouse.IsChecked == true && order.orderItems.All(oi => oi.BuyerTransitWaybillStatusStr != "买手已送达"))
|
|
return true;
|
|
|
|
if (chkWaitReceiveWarehouseIsNotPickup.IsChecked == true && order.orderItems.All(oi => oi.WarehouseWaybillStatusStr != "中转待取号"))
|
|
return true;
|
|
if (chkWaitReceiveWarehouseIsPickup.IsChecked == true && order.orderItems.All(oi => oi.WarehouseWaybillStatusStr != "中转提前取号" && oi.WarehouseWaybillStatusStr != "中转已取号" && oi.WarehouseWaybillStatusStr != "中转已入库"))
|
|
return true;
|
|
if (chkWaitReceiveWarehouseIsSendOut.IsChecked == true && order.orderItems.All(oi => oi.WarehouseWaybillStatusStr != "中转已出库"))
|
|
return true;
|
|
}
|
|
if (filterHeadStr.StartsWith("异常订单") && !order.isAbnormal)
|
|
{
|
|
return true;
|
|
}
|
|
if (filterHeadStr.StartsWith("需处理售后订单"))
|
|
{
|
|
if (!order.IsEmergency)
|
|
return true;
|
|
|
|
if (chkEmergencyBuyerWaitAfterSale.IsChecked == true && order.orderItems.All(oi => !oi.TransitRefundStatusStr.Contains("需手动申请售后")))
|
|
return true;
|
|
else if (chkEmergencyBuyerWaitSendBack.IsChecked == true && order.orderItems.All(oi => !oi.TransitRefundStatusStr.Contains("待用户发货")))
|
|
return true;
|
|
else if (chkEmergencyBuyerWaitSupplierRefund.IsChecked == true && order.orderItems.All(oi => !oi.TransitRefundStatusStr.Contains("商家处理中")))
|
|
return true;
|
|
else if (chkEmergencyBuyerRefundFail.IsChecked == true && order.orderItems.All(oi => !oi.TransitRefundStatusStr.Contains("退款失败")))
|
|
return true;
|
|
|
|
if (chkEmergencyShopCustomRefundHasWaybill.IsChecked == true && order.orderItems.Any(oi => oi.ReturnWaybillIdStr.IsNullOrEmpty()))
|
|
return true;
|
|
else if (chkEmergencyShopCustomRefundNoWaybill.IsChecked == true && order.orderItems.All(oi => !oi.ReturnWaybillIdStr.IsNullOrEmpty()))
|
|
return true;
|
|
|
|
if (chkEmergencyShopAfterSaleSuccess.IsChecked == true && order.DeliveryDeadlineDtatusStr != "退款完成")
|
|
return true;
|
|
else if (chkEmergencyShopInAfterSale.IsChecked == true && order.DeliveryDeadlineDtatusStr != "退款中")
|
|
return true;
|
|
}
|
|
if (filterHeadStr.StartsWith("售后完成订单"))
|
|
{
|
|
if (!order.IsRefund)
|
|
return true;
|
|
|
|
if (chkAftersaleIsSend.IsChecked == true && !order.DeliveryDeadlineStr.Contains("已发货"))
|
|
return true;
|
|
else if (chkAftersaleIsNotSend.IsChecked == true && !order.DeliveryDeadlineStr.Contains("未发货"))
|
|
return true;
|
|
|
|
if (chkAftersaleBuyerIsBuy.IsChecked == true && order.orderItems.All(oi => oi.BuyerTransitWaybillStatusStr.IsNullOrEmpty()))
|
|
return true;
|
|
if (chkAftersaleWarehouseIsNotPickup.IsChecked == true && order.orderItems.All(oi => oi.WarehouseWaybillStatusStr != "中转待取号" && !oi.WarehouseWaybillStatusStr.Contains("取号异常")))
|
|
return true;
|
|
if (chkAftersaleWarehouseIsPickup.IsChecked == true && order.orderItems.All(oi => oi.WarehouseWaybillStatusStr != "中转提前取号" && oi.WarehouseWaybillStatusStr != "中转已取号" &&
|
|
oi.WarehouseWaybillStatusStr != "中转已入库" && oi.WarehouseWaybillStatusStr != "中转已出库"))
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
private void btnMultiShopChoice_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
MainWindow.Instance.shopListCtrl.IsVisibleChanged -= ShopListCtrl_IsVisibleChanged;
|
|
MainWindow.Instance.shopListCtrl.Visibility = Visibility.Visible;
|
|
MainWindow.Instance.shopListCtrl.IsVisibleChanged += ShopListCtrl_IsVisibleChanged;
|
|
}
|
|
|
|
private void ShopListCtrl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
|
|
{
|
|
if (!MainWindow.Instance.shopListCtrl.IsVisible && MainWindow.Instance.shopListCtrl.IsAcceptChoiceShop == true)
|
|
{
|
|
var list = MainWindow.Instance.shopListCtrl.lbxShop.ItemsSource as ObservableCollection<ShopLoginInfo>;
|
|
if (list != null)
|
|
this.txtShopName.Text = string.Join(";", list.Where(s => s.IsSelect == true).Select(s => s.ShopAccount));
|
|
|
|
FilterOrders();
|
|
|
|
}
|
|
MainWindow.Instance.shopListCtrl.IsVisibleChanged -= ShopListCtrl_IsVisibleChanged;
|
|
}
|
|
|
|
private void btnSearch_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
this.btnSearch.IsEnabled = false;
|
|
|
|
Task.Run(() =>
|
|
{
|
|
Thread.Sleep(5000);
|
|
Dispatcher.Invoke(new Action(() => { this.btnSearch.IsEnabled = true; }));
|
|
});
|
|
Task.Run(() =>
|
|
{
|
|
while (!MainWindow.Instance.hasReadShop)
|
|
{
|
|
Thread.Sleep(100);
|
|
}
|
|
|
|
GetOrder();
|
|
nextGetOrderTime = DateTime.Now.AddMinutes(25);
|
|
});
|
|
}
|
|
|
|
private void btnFilter_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
FilterOrders();
|
|
}
|
|
|
|
private void dgOrderHeader_ColumnDisplayIndexChanged(object sender, DataGridColumnEventArgs e)
|
|
{
|
|
}
|
|
|
|
private void dgOrderHeader_LayoutUpdated(object sender, EventArgs e)
|
|
{
|
|
foreach (var item in lbxOrder.Items)
|
|
{
|
|
ListBoxItem container = (ListBoxItem)lbxOrder.ItemContainerGenerator.ContainerFromIndex(lbxOrder.Items.IndexOf(item));
|
|
if (container != null)
|
|
{
|
|
// 找到grid控件并修改列大小
|
|
var grids = UiCtrlUtils.FindVisualChildAll<Grid>(container, "gridListItem");
|
|
foreach (var grid in grids)
|
|
{
|
|
for (int i = 0; i < grid.ColumnDefinitions.Count; i++)
|
|
{
|
|
if (dgOrderHeader.Columns.Count > i)
|
|
{
|
|
// 最后一列因滚动条变窄,已在表头补偿
|
|
if (i == grid.ColumnDefinitions.Count - 1)
|
|
grid.ColumnDefinitions[i].Width = new GridLength(Math.Max(0, dgOrderHeader.Columns[i].ActualWidth - 0));
|
|
else
|
|
grid.ColumnDefinitions[i].Width = new GridLength(dgOrderHeader.Columns[i].ActualWidth);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void ChkSelectAll_Checked(object sender, RoutedEventArgs e)
|
|
{
|
|
foreach (var order in GlobalConfig.lstOrder.ToList())
|
|
{
|
|
order.IsSelect = true;
|
|
}
|
|
}
|
|
|
|
private void ChkSelectAll_Unchecked(object sender, RoutedEventArgs e)
|
|
{
|
|
foreach (var order in GlobalConfig.lstOrder.ToList())
|
|
{
|
|
order.IsSelect = false;
|
|
}
|
|
}
|
|
|
|
private void ChkSelectAll_Loaded(object sender, RoutedEventArgs e)
|
|
{
|
|
chkSelectAll = sender as CheckBox;
|
|
}
|
|
|
|
public void UpdateChkAllBox ()
|
|
{
|
|
chkSelectAll.Checked -= ChkSelectAll_Checked;
|
|
chkSelectAll.Unchecked -= ChkSelectAll_Unchecked;
|
|
if (GlobalConfig.lstFilterOrder.All(s => s.IsSelect))
|
|
chkSelectAll.IsChecked = true;
|
|
else if (GlobalConfig.lstFilterOrder.All(s => !s.IsSelect))
|
|
chkSelectAll.IsChecked = false;
|
|
else
|
|
chkSelectAll.IsChecked = null;
|
|
chkSelectAll.Checked += ChkSelectAll_Checked;
|
|
chkSelectAll.Unchecked += ChkSelectAll_Unchecked;
|
|
}
|
|
|
|
private void txtSearchAll_TextChanged(object sender, TextChangedEventArgs e)
|
|
{
|
|
strSearchAll = txtSearchAll.Text.Trim();
|
|
}
|
|
|
|
private void tabOrderType_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
GlobalConfig.OrderTabHeaderStr = ((tabOrderType.SelectedItem as TabItem)?.Header).ParseToString();
|
|
FilterOrders();
|
|
}
|
|
|
|
private void chkMapProdOnly_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (chkMapProdOnly.IsChecked == true)
|
|
chkNoMapProdOnly.IsChecked = false;
|
|
FilterOrders();
|
|
}
|
|
private void chkNoMapProdOnly_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (chkNoMapProdOnly.IsChecked == true)
|
|
chkMapProdOnly.IsChecked = false;
|
|
FilterOrders();
|
|
}
|
|
|
|
public static string addNotes(ShopLoginInfo shop, string orderId, string notes, int tagColor = -1)
|
|
{
|
|
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeorder/common/cgi/batchMerchantNotes?token=&lang=zh_CN";
|
|
string body = @"{""items"":[{""orderId"":""" + orderId + @""",""merchantNotes"":""" + notes + @""",""merchantNotesTagColor"":" + tagColor + @"}]}";
|
|
if (tagColor == -1)
|
|
body = @"{""items"":[{""orderId"":""" + orderId + @""",""merchantNotes"":""" + notes + @"""}]}";
|
|
|
|
string refere = "https://store.weixin.qq.com/shop/order/list";
|
|
var result = HttpResponseWXBLL.WeiXinPostResponse(shop, url, body, refere);
|
|
return result;
|
|
}
|
|
public static string addNotesFlag(ShopLoginInfo shop, string orderId, string notes, int tagColor = 0)
|
|
{
|
|
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeorder/common/cgi/batchMerchantNotes?token=&lang=zh_CN";
|
|
string body = @"{""items"":[{""orderId"":""" + orderId + @""",""merchantNotesTagColor"":" + tagColor + @"}]}";
|
|
|
|
string refere = "https://store.weixin.qq.com/shop/order/list";
|
|
var result = HttpResponseWXBLL.WeiXinPostResponse(shop, url, body, refere);
|
|
return result;
|
|
}
|
|
|
|
private void chkAutoReadBuyerOrder_CheckedChanged(object sender, RoutedEventArgs e)
|
|
{
|
|
IsAutoReadOrder = chkAutoReadOrder.IsChecked == true;
|
|
}
|
|
|
|
private void TabItem_SizeChanged(object sender, SizeChangedEventArgs e)
|
|
{
|
|
var tabItems = this.tabOrderType.Items.Cast<TabItem>();
|
|
wpFilter.Margin = new Thickness(tabItems.Sum(t => t.ActualWidth) + 20, wpFilter.Margin.Top, 0, 0);
|
|
|
|
Point position1 = txtFilterRemark.TranslatePoint(new Point(0, 0), gridOrderListCtrl);
|
|
Point position2 = txtFilterRemark.TranslatePoint(new Point(0, 0), wpFilter);
|
|
borderFilterRemarkSelect.Margin = new Thickness(tabItems.Sum(t => t.ActualWidth) + 26 + position2.X, position1.Y + txtFilterRemark.ActualHeight + 3, 0, 0);
|
|
}
|
|
|
|
private void chkSubFilterSonditions_Checked(object sender, RoutedEventArgs e)
|
|
{
|
|
FilterOrders();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 待处理订单买手售后状态过滤
|
|
/// </summary>
|
|
private void chkEmergencyBuyerAfterSale_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is CheckBox chk)
|
|
{
|
|
var isCheck = !chk.IsChecked.ParseToBool();
|
|
chkEmergencyBuyerWaitAfterSale.IsChecked = chkEmergencyBuyerWaitSendBack.IsChecked = chkEmergencyBuyerWaitSupplierRefund.IsChecked = chkEmergencyBuyerRefundFail.IsChecked = false;
|
|
chk.IsChecked = !isCheck;
|
|
}
|
|
FilterOrders();
|
|
}
|
|
/// <summary>
|
|
/// 待处理订单店铺买家售后物流状态过滤
|
|
/// </summary>
|
|
private void chkEmergencyShopCustomRefundWaybill_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is CheckBox chk)
|
|
{
|
|
var isCheck = !chk.IsChecked.ParseToBool();
|
|
chkEmergencyShopCustomRefundHasWaybill.IsChecked = chkEmergencyShopCustomRefundNoWaybill.IsChecked = false;
|
|
chk.IsChecked = !isCheck;
|
|
}
|
|
FilterOrders();
|
|
}
|
|
/// <summary>
|
|
/// 待处理订单店铺售后状态过滤
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void chkEmergencyShopAfterSale_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is CheckBox chk)
|
|
{
|
|
var isCheck = !chk.IsChecked.ParseToBool();
|
|
chkEmergencyShopAfterSaleSuccess.IsChecked = chkEmergencyShopInAfterSale.IsChecked = false;
|
|
chk.IsChecked = !isCheck;
|
|
}
|
|
FilterOrders();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 待收货 买手发货状态
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void chkWaitReceiveBuyerStatus_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is CheckBox chk)
|
|
{
|
|
var isCheck = !chk.IsChecked.ParseToBool();
|
|
chkWaitReceiveBuyerIsSend.IsChecked = chkWaitReceiveBuyerIsNotSend.IsChecked = chkWaitReceiveBuyerIsInWarehouse.IsChecked = false;
|
|
chk.IsChecked = !isCheck;
|
|
}
|
|
FilterOrders();
|
|
}
|
|
|
|
private void chkWaitReceiveWarehouseStatus_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is CheckBox chk)
|
|
{
|
|
var isCheck = !chk.IsChecked.ParseToBool();
|
|
chkWaitReceiveWarehouseIsNotPickup.IsChecked = chkWaitReceiveWarehouseIsPickup.IsChecked = chkWaitReceiveWarehouseIsSendOut.IsChecked = false;
|
|
chk.IsChecked = !isCheck;
|
|
}
|
|
FilterOrders();
|
|
}
|
|
|
|
private void chkAftersaleSendStatus_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is CheckBox chk)
|
|
{
|
|
var isCheck = !chk.IsChecked.ParseToBool();
|
|
chkAftersaleIsSend.IsChecked = chkAftersaleIsNotSend.IsChecked = false;
|
|
chk.IsChecked = !isCheck;
|
|
}
|
|
FilterOrders();
|
|
}
|
|
|
|
private void chkAftersaleBuyerStatus_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is CheckBox chk)
|
|
{
|
|
var isCheck = !chk.IsChecked.ParseToBool();
|
|
chkAftersaleBuyerIsBuy.IsChecked = false;
|
|
chk.IsChecked = !isCheck;
|
|
}
|
|
FilterOrders();
|
|
}
|
|
|
|
private void chkAftersaleWarehouseStatus_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (sender is CheckBox chk)
|
|
{
|
|
var isCheck = !chk.IsChecked.ParseToBool();
|
|
chkAftersaleWarehouseIsPickup.IsChecked = chkAftersaleWarehouseIsNotPickup.IsChecked = false;
|
|
chk.IsChecked = !isCheck;
|
|
}
|
|
FilterOrders();
|
|
}
|
|
|
|
private async void btnBatchRefund_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var orders = GlobalConfig.lstFilterOrder.Where(o => o.IsSelect == true);
|
|
List<oms_wei_order_item_info> tmpOrderItems = new List<oms_wei_order_item_info>();
|
|
foreach (var order in orders)
|
|
{
|
|
foreach(var orderItem in order.orderItems)
|
|
{
|
|
if (orderItem == null || string.IsNullOrEmpty(orderItem.ItemTransitOrderWithVoid?.out_order_no) || !orderItem.PddBuyerAfterSaleAddressStr.IsNullOrEmpty() ||
|
|
(!orderItem.TransitRefundStatusStr.Contains("需手动申请售后") && !orderItem.TransitRefundStatusStr.Contains("待用户发货")))
|
|
continue;
|
|
|
|
tmpOrderItems.Add(orderItem);
|
|
}
|
|
}
|
|
if (tmpOrderItems.Count == 0)
|
|
{
|
|
BaseMsgWindow.ShowAnimateMessage("未选中需要需手动申请售后的订单", "Error", 3);
|
|
return;
|
|
}
|
|
|
|
await Task.Run(() =>
|
|
{
|
|
int index = 0;
|
|
foreach (var tmpOrderItem in tmpOrderItems)
|
|
{
|
|
Dispatcher.Invoke(new Action(() => { txtMsg.Text = "正在处理买手退货,总计:" + tmpOrderItems.Count + ",已处理:" + index++; }));
|
|
|
|
var pddOrderSn = tmpOrderItem.ItemTransitOrderWithVoid.out_order_no;
|
|
BuyerLoginInfo buyer = null;
|
|
Dispatcher.Invoke(new Action(() => { buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_nick == tmpOrderItem.ItemTransitOrderWithVoid.buyer_account); }));
|
|
if (buyer == null)
|
|
{
|
|
BaseMsgWindow.ShowAnimateMessage("买手单:" + pddOrderSn + " 买手不在当前账户下,跳过", "Error", 3);
|
|
}
|
|
|
|
// 检测一下买手号
|
|
if (buyer.status == "在线")
|
|
{
|
|
PddMobileLoginForm.CheckBuyerLogin(buyer);
|
|
}
|
|
if (buyer.status != "在线")
|
|
{
|
|
BaseMsgWindow.ShowAnimateMessage("买手单:" + pddOrderSn + " 买手号掉线,跳过", "Error", 3);
|
|
continue;
|
|
}
|
|
|
|
MainWindow.Instance.orderListCtrl.GetOrder(tmpOrderItem.order_id);
|
|
var order = GlobalConfig.lstOrder.FirstOrDefault(oi => oi.order_id == tmpOrderItem.order_id);
|
|
if (order == null)
|
|
continue;
|
|
var orderItem = order.orderItems.FirstOrDefault(oi => oi.order_id == tmpOrderItem.order_id && oi.sku_id == tmpOrderItem.sku_id);
|
|
if (orderItem == null || string.IsNullOrEmpty(orderItem.ItemTransitOrderWithVoid?.out_order_no) || !orderItem.PddBuyerAfterSaleAddressStr.IsNullOrEmpty() ||
|
|
(!orderItem.TransitRefundStatusStr.Contains("需手动申请售后") && !orderItem.TransitRefundStatusStr.Contains("待用户发货")))
|
|
continue;
|
|
|
|
//PddMobileBuyOrderForm buyOrderForm = new PddMobileBuyOrderForm(MainWindow.Instance.orderListCtrl.FilterOneOrder, StartUp.UpdateBalance,
|
|
// orderItem, buyer, orderItem.BuyMap);
|
|
|
|
//buyOrderForm.TitleText = "买手退货退款 - 当前买手 " + buyer.buyer_nick;
|
|
|
|
//buyOrderForm.InitUrl = "https://mobile.yangkeduo.com/complaint.html?order_sn=" + pddOrderSn + "&after_sales_reason=88&after_sales_type=2&after_sales_code=1002";
|
|
//buyOrderForm.pnlBuy.Visible = false;
|
|
|
|
//if (orderItem.BuyMap != null)
|
|
//{
|
|
// buyOrderForm.pnlBuy.Visible = true;
|
|
// buyOrderForm.pnlMap.Visible = false;
|
|
//}
|
|
//buyOrderForm.ShowDialog();
|
|
|
|
PddBuyerOrderLiteInfo pddBuyerOrderLiteInfo = new PddBuyerOrderLiteInfo();
|
|
pddBuyerOrderLiteInfo.ShopOrderIdStr = orderItem.order_id;
|
|
pddBuyerOrderLiteInfo.order_sn = pddOrderSn;
|
|
pddBuyerOrderLiteInfo.order_amount = orderItem.ItemTransitOrderWithVoid.out_amount;
|
|
order_pdd_buyer_after_sale pddBuyerAfterSale = new order_pdd_buyer_after_sale()
|
|
{
|
|
wx_order_id = orderItem.order_id,
|
|
wx_sku_id = orderItem.sku_id,
|
|
TransitCreateTime = orderItem.ItemTransitOrderWithVoid.created_time,
|
|
pre_allocated_order_no = orderItem.ItemTransitOrderWithVoid.pre_allocated_order_no,
|
|
buyerId = buyer.buyer_id,
|
|
buyerName = buyer.buyer_name,
|
|
orderSn = pddOrderSn,
|
|
orderAmount = pddBuyerOrderLiteInfo.order_amount,
|
|
refundAmount = pddBuyerOrderLiteInfo.order_amount,
|
|
orderDate = pddOrderSn.ParseToString().Split('-').FirstOrDefault().ParseToInt(),
|
|
};
|
|
if (orderItem.PddBuyerAfterSale != null)
|
|
pddBuyerAfterSale = orderItem.PddBuyerAfterSale;
|
|
|
|
bool isSimPddAfterSaleSuccess = true;
|
|
if (orderItem.TransitRefundStatusStr.Contains("需手动申请售后"))
|
|
{
|
|
isSimPddAfterSaleSuccess = false;
|
|
var rst = PDDBuyerOrderReadCtrl.SimPddAfterSaleWithReturnGoods(buyer, pddBuyerOrderLiteInfo);
|
|
|
|
var afterSalesStatus = BaseRegex.GetIntJson(ref rst, "after_sales_status");
|
|
var afterSalesId = BaseRegex.GetLongJson(ref rst, "after_sales_id");
|
|
pddBuyerAfterSale.afterSalesId = afterSalesId.ToString();
|
|
|
|
if (afterSalesStatus == 0)
|
|
{
|
|
var msg = BaseRegex.GetStringJsonByRegs(ref rst, rst, "msg", "err_msg", "error_msg", "errorMsg", "errMsg");
|
|
BaseMsgWindow.ShowAnimateMessage(msg, "Error", 3);
|
|
Thread.Sleep(5000);
|
|
}
|
|
else
|
|
{
|
|
var e57Rst = PDDBuyerOrderReadCtrl.SendTransitAfterSaleE57(pddBuyerOrderLiteInfo, "待用户发货");
|
|
if (e57Rst.Contains("<code>0</code>") || e57Rst.Contains("<code>200</code>"))
|
|
{
|
|
BaseMsgWindow.ShowAnimateMessage("买手退款信息更新成功", "Msg", 3);
|
|
isSimPddAfterSaleSuccess = true;
|
|
Thread.Sleep(Randomx.GetId(10000, 10001));
|
|
}
|
|
else
|
|
{
|
|
var msg = BaseRegex.GetStringXml(ref e57Rst, "msg");
|
|
BaseMsgWindow.ShowAnimateMessage("买手退款信息更新失败,服务端返回 " + msg, "Error", 3);
|
|
}
|
|
}
|
|
}
|
|
if (isSimPddAfterSaleSuccess)
|
|
{
|
|
var addressRst = YkdBuyerOrder.GetAfterSaleAddress(buyer, pddOrderSn, pddBuyerAfterSale.afterSalesId.ParseToString());
|
|
var merchantReceiverInfo = BaseRegex.GetOneJsonObjStrJson(ref addressRst, "merchantReceiverInfo");
|
|
string address = "";
|
|
if (merchantReceiverInfo != null)
|
|
{
|
|
address = BaseRegex.GetStringJson(ref merchantReceiverInfo, "copyValue");
|
|
}
|
|
|
|
var url3 = BaseClass.Build29WxObjString("order/wx_add_mdy_buyer_after_sale");
|
|
var data3 = UserLogin.GetSignaturex();
|
|
data3 += "&wx_order_id=" + pddBuyerAfterSale.wx_order_id;
|
|
data3 += "&wx_sku_id=" + pddBuyerAfterSale.wx_sku_id;
|
|
data3 += "&TransitCreateTime=" + pddBuyerAfterSale.TransitCreateTime.ToString("yyyy-MM-dd HH:mm:ss");
|
|
data3 += "&pre_allocated_order_no=" + pddBuyerAfterSale.pre_allocated_order_no;
|
|
data3 += "&buyerId=" + pddBuyerAfterSale.buyerId;
|
|
data3 += "&buyerName=" + pddBuyerAfterSale.buyerName;
|
|
data3 += "&orderAmount=" + pddBuyerAfterSale.orderAmount;
|
|
data3 += "&orderSn=" + pddBuyerAfterSale.orderSn;
|
|
data3 += "&afterSalesId=" + pddBuyerAfterSale.afterSalesId;
|
|
data3 += "&orderDate=" + pddBuyerAfterSale.orderDate;
|
|
//data3 += "&TransitPickupTime=" + pddBuyerOrder.TransitPickupTime.ToString("yyyy-MM-dd HH:mm:ss");
|
|
data3 += "&refundAmount=" + pddBuyerAfterSale.refundAmount;
|
|
data3 += "&statusText=" + pddBuyerAfterSale.statusText;
|
|
if (!string.IsNullOrEmpty(address))
|
|
data3 += "&afterSaleAddress=" + address;
|
|
//data3 += "&is_mdy=true";
|
|
var html3 = GetHtml.PostUtf8(url3, data3);
|
|
if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200"))
|
|
html3 = GetHtml.PostUtf8(url3, data3);
|
|
}
|
|
MainWindow.Instance.orderListCtrl.GetOrder(tmpOrderItem.order_id);
|
|
Dispatcher.Invoke(new Action(() => { txtMsg.Text = "正在处理买手退货,总计:" + tmpOrderItems.Count + ",已处理:" + index; }));
|
|
}
|
|
|
|
Dispatcher.Invoke(new Action(() => { txtMsg.Text = "买手退货处理完成,总计:" + tmpOrderItems.Count + ",已处理:" + index; }));
|
|
});
|
|
}
|
|
|
|
|
|
public static string WxSimAbnormalOrderSeach(ShopLoginInfo shop, int page = 1)
|
|
{
|
|
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeorder/list/cgi/orderSearch?token=&lang=zh_CN";
|
|
string referer = "https://store.weixin.qq.com/shop/order/list";
|
|
string body = @"{""isSearch"":false,""pageSize"":100,""overTime"":0,""pengingShipOneDay"":0,""pengingShipSixHour"":0,""expediteDelivery"":0," +
|
|
@"""stockoutPunishAlert"":0,""appointmentInstall"":0,""waybillStatus"":3,""isUserBookingDelivery"":0,""pageNum"":" + page + @",""onAftersaleOrderExist"":0,""orderStatus"":30}";
|
|
var result = HttpResponseWXBLL.WeiXinPostResponse(shop, url, body, referer);
|
|
return result;
|
|
}
|
|
|
|
private void btnMultiRemark_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
wpFilterRemarkSelect.Children.Clear();
|
|
List<string> txts = txtFilterRemark.Text.Trim().Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
|
var remarks = GlobalConfig.lstOrder.Select(o => o.shop_remark).Distinct().ToList();
|
|
remarks.AddRange(GlobalConfig.lstOrder.Select(o => o.soft_remark).Distinct().ToList());
|
|
remarks = remarks.Distinct().ToList();
|
|
foreach (var remark in remarks)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(remark))
|
|
continue;
|
|
wpFilterRemarkSelect.Children.Add(new CheckBox() { Content = remark, IsChecked = txts.Contains(remark), Margin = new Thickness(2) });
|
|
}
|
|
|
|
Point position = txtFilterRemark.TranslatePoint(new Point(0, 0), gridOrderListCtrl);
|
|
borderFilterRemarkSelect.Margin = new Thickness(position.X - 2, position.Y + txtFilterRemark.ActualHeight + 3, 0, 0);
|
|
|
|
if (borderFilterRemarkSelect.Visibility == Visibility.Visible)
|
|
borderFilterRemarkSelect.Visibility = Visibility.Collapsed;
|
|
else
|
|
borderFilterRemarkSelect.Visibility = Visibility.Visible;
|
|
}
|
|
|
|
private void btnCancelFilterRemark_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
borderFilterRemarkSelect.Visibility = Visibility.Collapsed;
|
|
}
|
|
|
|
private void btnApplyFilterRemark_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
string txt = "";
|
|
foreach (UIElement element in wpFilterRemarkSelect.Children)
|
|
{
|
|
if (element is CheckBox box && box.IsChecked == true)
|
|
{
|
|
txt += box.Content.ParseToString() + ";";
|
|
}
|
|
}
|
|
txtFilterRemark.Text = txt.TrimEnd(';');
|
|
borderFilterRemarkSelect.Visibility = Visibility.Collapsed;
|
|
}
|
|
|
|
private void btnFilterRemarkSelectAll_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
foreach (UIElement element in wpFilterRemarkSelect.Children)
|
|
{
|
|
if (element is CheckBox box)
|
|
{
|
|
box.IsChecked = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void btnFilterRemarkUnSelectAll_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
foreach (UIElement element in wpFilterRemarkSelect.Children)
|
|
{
|
|
if (element is CheckBox box)
|
|
{
|
|
box.IsChecked = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void txtFilterRemark_TextChanged(object sender, TextChangedEventArgs e)
|
|
{
|
|
lstFilterText = txtFilterRemark.Text.Trim().Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries).Distinct().ToList();
|
|
}
|
|
}
|
|
}
|