diff --git a/29WxOrderWpf/App.xaml b/29WxOrderWpf/App.xaml index 45b62c7..b8a97d1 100644 --- a/29WxOrderWpf/App.xaml +++ b/29WxOrderWpf/App.xaml @@ -8,6 +8,8 @@ + + diff --git a/29WxOrderWpf/App.xaml.cs b/29WxOrderWpf/App.xaml.cs index b1aa21c..4070f92 100644 --- a/29WxOrderWpf/App.xaml.cs +++ b/29WxOrderWpf/App.xaml.cs @@ -57,7 +57,7 @@ namespace _29WxOrderWpf #region 贴牌 //本地缓存文件 string IgPakFile = "locales/ig.pak";//贴牌客服端码 - string OenVersionFile = "locales/igv.pak";//贴牌资源配置版本 + string OemVersionFile = "locales/igv.pak";//贴牌资源配置版本 string IaPakFile = "locales/ia.pak";//logo //string IbPakFile = "locales/ib.pak";//ico string IcPakFile = "locales/ic.pak";//功能配置 @@ -98,7 +98,7 @@ namespace _29WxOrderWpf } // 待后续完善 - OenMechanism(IgPakFile, OenVersionFile, IaPakFile, LogoPakFile, IcPakFile); + OemMechanism(IgPakFile, OemVersionFile, IaPakFile, LogoPakFile, IcPakFile); } #endregion @@ -193,14 +193,14 @@ namespace _29WxOrderWpf } /// - /// Oen贴牌机制 + /// Oem贴牌机制 /// /// 贴牌商客户端码文件 /// 贴牌配置版本号文件 /// ico本地缓存文件 /// logo本地缓存文件 /// 贴牌配置本地缓存文件 - private void OenMechanism(string IgPakFile, string OenVersionFile, string IaPakFile, string logoBitmapFile, string IcPakFile) + private void OemMechanism(string IgPakFile, string OemVersionFile, string IaPakFile, string logoBitmapFile, string IcPakFile) { return; diff --git a/29WxOrderWpf/BaseWindows/BaseMsgWindow.xaml.cs b/29WxOrderWpf/BaseWindows/BaseMsgWindow.xaml.cs index 0e7ebfc..311b1b9 100644 --- a/29WxOrderWpf/BaseWindows/BaseMsgWindow.xaml.cs +++ b/29WxOrderWpf/BaseWindows/BaseMsgWindow.xaml.cs @@ -1,4 +1,5 @@ -using System; +using AllBase.Helper; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -109,34 +110,48 @@ namespace _29WxOrderWpf.BaseWindows DialogResult = false; } - public static void ShowAnimateMessage(string message) + public static void ShowAnimateMessage(string message, string type = "Msg", int DurationSeconds = 1) { - MainWindow.Instance.tbMessage.Text = message; - MainWindow.Instance.borderMessage.Visibility = Visibility.Visible; - // 创建Storyboard并添加动画 - Storyboard storyboard = new Storyboard(); - DoubleAnimation fadeInAnimation1 = new DoubleAnimation + MainWindow.Instance.Dispatcher.Invoke(new Action(() => { - From = 0, // 开始时完全透明 - To = 1, // 结束时完全不透明 - Duration = new Duration(TimeSpan.FromSeconds(0.2)) // 持续时间2秒 - }; - Storyboard.SetTarget(fadeInAnimation1, MainWindow.Instance.borderMessage); - Storyboard.SetTargetProperty(fadeInAnimation1, new PropertyPath(OpacityProperty)); - storyboard.Children.Add(fadeInAnimation1); + if (type.ToLower() == "msg") + { + MainWindow.Instance.borderMessage.BorderBrush = Application.Current.Resources["pageColorBrush"] as SolidColorBrush; + MainWindow.Instance.tbMessage.Foreground = Application.Current.Resources["pageColorBrush"] as SolidColorBrush; + } + if (type.ToLower() == "error") + { + MainWindow.Instance.borderMessage.BorderBrush = Application.Current.Resources["PageWarningBrush"] as SolidColorBrush; + MainWindow.Instance.tbMessage.Foreground = Application.Current.Resources["PageWarningBrush"] as SolidColorBrush; + } - DoubleAnimation fadeInAnimation2 = new DoubleAnimation - { - BeginTime = new TimeSpan(0, 0, 1), - From = 1, - To = 0, - Duration = new Duration(TimeSpan.FromSeconds(0.2)) // 持续时间2秒 - }; - Storyboard.SetTarget(fadeInAnimation2, MainWindow.Instance.borderMessage); - Storyboard.SetTargetProperty(fadeInAnimation2, new PropertyPath(OpacityProperty)); - storyboard.Children.Add(fadeInAnimation2); - // 开始动画 - storyboard.Begin(); + MainWindow.Instance.tbMessage.Text = message; + MainWindow.Instance.borderMessage.Visibility = Visibility.Visible; + // 创建Storyboard并添加动画 + Storyboard storyboard = new Storyboard(); + DoubleAnimation fadeInAnimation1 = new DoubleAnimation + { + From = 0, // 开始时完全透明 + To = 1, // 结束时完全不透明 + Duration = new Duration(TimeSpan.FromSeconds(0.2)) // 持续时间2秒 + }; + Storyboard.SetTarget(fadeInAnimation1, MainWindow.Instance.borderMessage); + Storyboard.SetTargetProperty(fadeInAnimation1, new PropertyPath(OpacityProperty)); + storyboard.Children.Add(fadeInAnimation1); + + DoubleAnimation fadeInAnimation2 = new DoubleAnimation + { + BeginTime = new TimeSpan(0, 0, DurationSeconds), + From = 1, + To = 0, + Duration = new Duration(TimeSpan.FromSeconds(0.2)) // 持续时间2秒 + }; + Storyboard.SetTarget(fadeInAnimation2, MainWindow.Instance.borderMessage); + Storyboard.SetTargetProperty(fadeInAnimation2, new PropertyPath(OpacityProperty)); + storyboard.Children.Add(fadeInAnimation2); + // 开始动画 + storyboard.Begin(); + })); } } diff --git a/29WxOrderWpf/Converters/TextToVisibilityConverter.cs b/29WxOrderWpf/Converters/TextToVisibilityConverter.cs index 1f0aabc..6451846 100644 --- a/29WxOrderWpf/Converters/TextToVisibilityConverter.cs +++ b/29WxOrderWpf/Converters/TextToVisibilityConverter.cs @@ -35,4 +35,38 @@ namespace _29WxOrderWpf.Converters throw new NotImplementedException(); // 单向绑定可不实现 } } + + /// + /// 超出19个字的文本显示省略号 + /// + public class TextEllipsisConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value.ParseToString().Length > 19) + return string.Join("", value.ParseToString().Take(19)) + "…"; + return value.ParseToString(); + } + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); // 单向绑定可不实现 + } + } + + /// + /// 超出26个字的文本显示省略号 + /// + public class TextEllipsisConverter26 : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value.ParseToString().Length > 26) + return string.Join("", value.ParseToString().Take(26)) + "…"; + return value.ParseToString(); + } + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); // 单向绑定可不实现 + } + } } diff --git a/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml b/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml index 9e3b583..c87fcf3 100644 --- a/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml +++ b/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml @@ -50,7 +50,7 @@ - + + + + + + diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs index e50e3e3..8ca3b2e 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs @@ -6,12 +6,15 @@ 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; @@ -23,9 +26,12 @@ 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 { @@ -40,6 +46,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls public DateTime nextGetOrderTime = DateTime.MinValue; public string strSearchAll = ""; + public List lstFilterText { get; set; } public OrderListCtrl() { @@ -49,12 +56,13 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls private void Window_Loaded(object sender, RoutedEventArgs e) { - lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder; dateStart.SelectedDate = DateTime.Now.Date.AddDays(-10); dateEnd.SelectedDate = DateTime.Now.Date.AddDays(1).AddSeconds(-1); + borderFilterRemarkSelect.Visibility = Visibility.Collapsed; + AutoGetOrder(); } @@ -89,6 +97,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (DateTime.Now > nextGetOrderTime) { GetOrder(); + GetShopWaybillExceptionOrder(); + nextGetOrderTime = DateTime.Now.AddMinutes(25); } Thread.Sleep(1000); @@ -164,6 +174,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls 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) @@ -171,40 +182,40 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var order_ids = string.Join(",", jArr.Select(a => a["order_id"].ParseToString())); - // 读取订单详情 + //// 读取订单详情 Thread.Sleep(100); - var url1 = BaseClass.Build29WxObjString("order/get_erp_order_item_list"); - var data1 = UserLogin.GetSignaturex(); - data1 += "&erp_order_id_in=" + order_ids; - data1 += "&page_size=" + 2000; - var html1 = GetHtml.PostUtf8(url1, data1); - if (string.IsNullOrEmpty(html1) || !html1.Contains("\"code\":200")) - html1 = GetHtml.PostUtf8(url1, data1); - if (string.IsNullOrEmpty(html1) || !html1.Contains("\"code\":200")) - { - BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg")); - break; - } - List orderItems = new List(); - try { orderItems = JsonHelper.DeserializeJsonToList(JObject.Parse(html1)["data"].ParseToString()); } catch { } - + //var url1 = BaseClass.Build29WxObjString("order/get_erp_order_item_list"); + //var data1 = UserLogin.GetSignaturex(); + //data1 += "&erp_order_id_in=" + order_ids; + //data1 += "&page_size=" + 2500; + //var html1 = GetHtml.PostUtf8(url1, data1); + //if (string.IsNullOrEmpty(html1) || !html1.Contains("\"code\":200")) + // html1 = GetHtml.PostUtf8(url1, data1); + //if (string.IsNullOrEmpty(html1) || !html1.Contains("\"code\":200")) + //{ + // BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html1, "msg")); + // break; + //} + //List orderItems = new List(); + //try { orderItems = JsonHelper.DeserializeJsonToList(JObject.Parse(html1)["data"].ParseToString()); } catch { } + List orderItems = GetOrderItemInfo(order_ids); // 读取售后单 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(url, data); - if (string.IsNullOrEmpty(html2) || !html2.Contains("\"code\":200")) - { - BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg")); - break; - } - List refunds = new List(); - try { refunds = JsonHelper.DeserializeJsonToList(JObject.Parse(html2)["data"].ParseToString()); } catch { } - + //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(url, data); + //if (string.IsNullOrEmpty(html2) || !html2.Contains("\"code\":200")) + //{ + // BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html2, "msg")); + // break; + //} + //List refunds = new List(); + //try { refunds = JsonHelper.DeserializeJsonToList(JObject.Parse(html2)["data"].ParseToString()); } catch { } + List refunds = GetOrderRefundInfo(order_ids); // 读取中转仓拍单订单 var url3 = BaseClass.Build29WxObjString("order/wx_get_transit_order"); @@ -215,23 +226,17 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls html3 = GetHtml.PostUtf8(url3, data3); if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200")) { - Dispatcher.Invoke(new Action(() => - { - BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg")); - })); + BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html3, "msg")); break; } List transitOrderList = new List(); try { transitOrderList = JsonHelper.DeserializeJsonToList(JObject.Parse(html3)["data"].ParseToString()); - // 直接过滤掉仓库作废单 - //transitOrderList = transitOrderList.Where(t => t.order_void_status != 1).ToList(); } catch { } // 读取暂时记录的买手订单,后面想办法放到中转订单库里去 - // 读取中转仓拍单订单 var url4 = BaseClass.Build29WxObjString("order/wx_get_buyer_order_list"); var data4 = UserLogin.GetSignaturex(); data4 += "&wx_order_id_in=" + order_ids; @@ -242,7 +247,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls { Dispatcher.Invoke(new Action(() => { - BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg")); + BaseMsgWindow.ShowError("订单读取失败(买手) " + BaseRegex.GetStringJson(ref html4, "msg")); })); break; } @@ -254,6 +259,31 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } catch { } + // 读取暂时记录的买手售后单,后面想办法放到中转订单库里去 + 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 = 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(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(); @@ -265,7 +295,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls { Dispatcher.Invoke(new Action(() => { - BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg")); + BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html5, "msg")); })); break; } @@ -285,12 +315,12 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls dataMap += "&main_user_name=" + BaseClass.MainUserName; var resultMap = GetHtml.PostUtf8(urlMap, dataMap); if (string.IsNullOrEmpty(resultMap) || !resultMap.Contains("\"code\":200")) - GetHtml.PostUtf8(urlMap, dataMap); + resultMap = GetHtml.PostUtf8(urlMap, dataMap); if (string.IsNullOrEmpty(resultMap) || !resultMap.Contains("\"code\":200")) { Dispatcher.Invoke(new Action(() => { - BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg")); + BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref resultMap, "msg")); })); break; } @@ -314,9 +344,10 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls item.ItemOrder = order; order.orderItems.Add(item); + // 已放到赋值函数中处理 // 更新店铺是否加入代发情况 - item.Shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == item.order_id); - Dispatcher.Invoke(new Action(() => { item.UpdateOrderItemBuyButton(); })); + //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))) @@ -339,6 +370,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls // 中转仓买手订单 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(); } // 装载订单售后详情 @@ -358,16 +391,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls GlobalConfig.lstOrder.Remove(orderExist); orderExist = GlobalConfig.lstOrder.FirstOrDefault(o => o.order_id == order.order_id); } - - var nextOrder = GlobalConfig.lstOrder.FirstOrDefault(o => o.create_time < order.create_time); - if (nextOrder != null) - { - GlobalConfig.lstOrder.Insert(GlobalConfig.lstOrder.IndexOf(nextOrder), order); - } - else - { - GlobalConfig.lstOrder.Add(order); - } + GlobalConfig.lstOrder.Add(order); Dispatcher.Invoke(new Action(() => { @@ -401,6 +425,157 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls })); } + /// + /// 读取订单详情信息 + /// + /// + /// + public static List GetOrderItemInfo(string order_ids) + { + if (string.IsNullOrEmpty(order_ids)) + return new List(); + Thread.Sleep(100); + 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 orderItems = new List(); + try + { + orderItems = JsonHelper.DeserializeJsonToList(JObject.Parse(html)["data"].ParseToString()); + if (orderItems == null) + orderItems = new List(); + } + catch (Exception ex) + { + BaseMsgWindow.ShowAnimateMessage("订单详情读取失败 " + ex.Message, "Error", 5); + } + return orderItems; + } + + /// + /// 读取售后单 + /// + /// + /// + public static List GetOrderRefundInfo(string order_ids) + { + 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 refunds = new List(); + try { refunds = JsonHelper.DeserializeJsonToList(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 existOrderExtList = new List(); + 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(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"); + 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; + } + } + // 更新订单附加信息 + 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(() => { MainWindow.Instance.orderListCtrl.FilterOneOrder(order, true); })); + } + } + } + //var abnormalOrder = GlobalConfig.lstOrder.FirstOrDefault() + } + catch (Exception ex) + { + BaseMsgWindow.ShowAnimateMessage("订单扩展信息查询失败 " + ex.Message, "Error", 5); + } + } + } + } + public void disPlayOrderTabOrderCount() { var tabItems = this.tabOrderType.Items.Cast(); @@ -453,7 +628,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var filteLstTmp = new ObservableCollection(userOrderLst.Where(o => !GetOrderIsFilter(o, "全部订单"))); tabItem.Header = "全部订单(" + userOrderLst.Count() + "|" + filteLstTmp.Count() + ")"; } - txtFilterCount.Text = "当前条件共计 " + GlobalConfig.lstFilterOrder.Count() + " 条订单记录"; + //txtMsg.Text = "当前条件共计 " + GlobalConfig.lstFilterOrder.Count() + " 条订单记录"; } public void FilterOrders() @@ -463,25 +638,16 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (this.lbxOrder == null) return; - //foreach (var order in GlobalConfig.lstFilterOrder.ToList()) - //{ - // if (GetOrderIsFilter(order)) - // { - // GlobalConfig.lstFilterOrder.Remove(order); - // } - //} - //foreach (var order in GlobalConfig.lstOrder.ToList()) - //{ - // FilterOneOrder(order); - //} Dispatcher.Invoke(new Action(() => { - GlobalConfig.lstFilterOrder = new ObservableCollection(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o))); + if (GlobalConfig.OrderTabHeaderStr.StartsWith("需处理售后订单")) + GlobalConfig.lstFilterOrder = new ObservableCollection(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o)).OrderByDescending(o => o.RefundDatetime)); + else if (GlobalConfig.OrderTabHeaderStr.StartsWith("异常订单")) + GlobalConfig.lstFilterOrder = new ObservableCollection(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o)).OrderByDescending(o => o.update_time)); + else + GlobalConfig.lstFilterOrder = new ObservableCollection(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o)).OrderByDescending(o => o.create_time)); this.lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder; - //Dispatcher.Invoke(new Action(() => { - // txtFilterCount.Text = "当前条件共计 " + GlobalConfig.lstFilterOrder.Count().ToString() + " 条订单记录"; - //})); disPlayOrderTabOrderCount(); })); } @@ -501,7 +667,14 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (!GetOrderIsFilter(order)) { - var nextOrder = GlobalConfig.lstFilterOrder.FirstOrDefault(o => o.create_time < order.create_time); + 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); @@ -579,12 +752,46 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls { 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 (order.createDateTime < dateStart.SelectedDate.Value) - return true; - if (chkEndDate.IsChecked == true && order.createDateTime > dateEnd.SelectedDate.Value) - 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()) @@ -618,7 +825,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return true; if (chkWaitReceiveBuyerIsSend.IsChecked == true && order.orderItems.All(oi => oi.BuyerTransitWaybillStatusStr != "买手已发货")) return true; - if (chkWaitReceiveBuyerIsInWarehouse.IsChecked == true && order.orderItems.All(oi => oi.BuyerTransitWaybillStatusStr != "已到中转仓")) + if (chkWaitReceiveBuyerIsInWarehouse.IsChecked == true && order.orderItems.All(oi => oi.BuyerTransitWaybillStatusStr != "买手已送达")) return true; if (chkWaitReceiveWarehouseIsNotPickup.IsChecked == true && order.orderItems.All(oi => oi.WarehouseWaybillStatusStr != "中转待取号")) @@ -826,6 +1033,15 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls 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) { @@ -835,7 +1051,11 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls private void TabItem_SizeChanged(object sender, SizeChangedEventArgs e) { var tabItems = this.tabOrderType.Items.Cast(); - wpFilter.Margin = new Thickness(tabItems.Sum(t => t.ActualWidth) + 20, 6, 0, 0); + 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) @@ -944,5 +1164,248 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } FilterOrders(); } + + private async void btnBatchRefund_Click(object sender, RoutedEventArgs e) + { + var orders = GlobalConfig.lstFilterOrder.Where(o => o.IsSelect == true); + List tmpOrderItems = new List(); + 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("0") || e57Rst.Contains("200")) + { + 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 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(); + } } } diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml index 30702b3..f3e5b8b 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml @@ -90,7 +90,7 @@ - @@ -98,8 +98,11 @@ Background="Transparent" IsReadOnly="True" BorderThickness="0" TextWrapping="Wrap" Visibility="{Binding ItemOrder.ship_done_time_visibility}"/> - + + @@ -161,11 +164,19 @@ - - - + + + + + + + + @@ -178,10 +189,14 @@ - - + + + + + @@ -350,26 +365,38 @@ + Margin="2,0,0,0" Content="编辑" Click="btnEditShopRemark_Click" Cursor="Hand"> + Margin="0,0,0,0" Content="取消" Click="btnCancelEditShopRemark_Click" Visibility="Collapsed" Cursor="Hand"> + Margin="2,0,0,0" Content="编辑" Click="btnEditAppRemark_Click" Cursor="Hand"> + Margin="0,0,0,0" Content="取消" Click="btnCancelEditAppRemark_Click" Visibility="Collapsed" Cursor="Hand"> - + + Margin="2,0,0,0" Content="{Binding AddEditTransitWarehouseAfterSaleStr}" Click="btnAddEditTransitWarehouseAfterSale_Click" Cursor="Hand"> + + + + + + + + diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs index d2feae7..dcbb3c2 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs @@ -72,11 +72,110 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } } - private void btnSeeAddressDetail_Click(object sender, RoutedEventArgs e) + private async void btnSeeAddressDetail_Click(object sender, RoutedEventArgs e) { - var order = this.DataContext as oms_wei_order_item_info; - if (order == null) + var orderItem = this.DataContext as oms_wei_order_item_info; + if (orderItem == null) return; + var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == orderItem.shop_id.ParseToString()); + if (shop == null) + return; + ShowOrderAddress(shop, orderItem.order_id); + } + + void ShowOrderAddress(ShopLoginInfo shop, string orderId, bool ShowErrorDialog = true) + { + //var rows = dgvOrder.Rows.Cast().Where(r => r.Cells["colOrderId"].Value.ParseToString() == orderId); + var order = GlobalConfig.lstOrder.FirstOrDefault(o => o.order_id == orderId); + var deRst = "测试地址写入{\"code\"0}"; + deRst = decryptOrder(shop, orderId); + if (deRst.Contains("\"code\":0")) + { + var url = BaseClass.Build29WxObjString("shop/wx_add_mdy_order_address"); + var data = UserLogin.GetSignaturex(); + data += "&shop_id=" + shop.ShopId; + data += "&order_id=" + orderId; + data += "&order_address=" + GetHtml.UrlEncodeUtf8(deRst); + var html = GetHtml.PostUtf8(url, data); + if (!html.Contains("\"code\":200")) + html = GetHtml.PostUtf8(url, data); + if (!html.Contains("\"code\":200")) + { + var errMsg = BaseRegex.GetStringJsonByRegs(ref html, html, "msg"); + if (order != null) + { + this.Dispatcher.Invoke(new Action(() => + { + order.AddressStr = GetDecryptOrder(deRst); + if (ShowErrorDialog) + BaseMsgWindow.ShowAnimateMessage("查看地址成功但保存到服务端失败:" + errMsg, "Error", 5); + })); + } + } + else + { + if (order != null) + { + this.Dispatcher.Invoke(new Action(() => + { + order.AddressStr = GetDecryptOrder(deRst); + BaseMsgWindow.ShowAnimateMessage("查看地址成功"); + })); + } + } + } + else + { + var error = BaseRegex.GetStringJsonByRegs(ref deRst, deRst, "err_msg", "error_msg", "errMsg", "errorMsg", "msg"); + if (error.Contains("\"code\":17899002") || error.Contains("\"code\":10020123")) + { + if (error.Contains("\"code\":17899002")) + error = "基于用户隐私保护,无法查看收货信息"; + if (error.Contains("\"code\":10020123")) + error = "今日查看次数已用完"; + Dispatcher.Invoke(new Action(() => + { + if (ShowErrorDialog) + BaseMsgWindow.ShowAnimateMessage("查看地址失败:" + error, "Error", 5); + })); + } + else + { + Dispatcher.Invoke(new Action(() => + { + if (ShowErrorDialog) + BaseMsgWindow.ShowAnimateMessage("查看地址失败:" + error, "Error", 5); + })); + } + } + } + public string GetDecryptOrder(string sourceOrderAddressStr) + { + //黄颖飞(4559),18466134204-4559,广西壮族自治区柳州市柳南区福柳宏都8-1-701 (拨打请输入分机号4559) + var userName = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "userName"); // 黄颖飞 + var extension = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "extension"); // 4559 + var virtualNumber = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "virtualNumber"); // 18466134204 + var provinceName = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "provinceName"); // 广西壮族自治区 + var cityName = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "cityName"); // 柳州市 + var countyName = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "countyName"); // 柳南区 + var detailInfo = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "detailInfo"); // 福柳宏都8-1-701 + if (userName.IsNullOrEmpty() || extension.IsNullOrEmpty() || virtualNumber.IsNullOrEmpty() || provinceName.IsNullOrEmpty() || cityName.IsNullOrEmpty() || + countyName.IsNullOrEmpty() || detailInfo.IsNullOrEmpty()) + { + return sourceOrderAddressStr; + } + //return userName + "(" + extension + ")," + virtualNumber + "-" + extension + "," + provinceName + cityName + countyName + detailInfo + "(拨打请输入分机号" + extension + ")"; + return userName + "" + extension + "," + virtualNumber + "-" + extension + "," + provinceName + cityName + countyName + detailInfo + "拨打请输入分机号" + extension + ""; + } + + public static string decryptOrder(ShopLoginInfo shop, string orderId) + { + string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeorder/common/cgi/decryptOrder?token=&lang=zh_CN"; + string body = @"{""id"":""" + orderId + @"""}"; + + string refere = "https://store.weixin.qq.com/shop/order/list"; + var result = HttpResponseWXBLL.WeiXinPostResponse(shop, url, body, refere); + return result; } private void btnGetRefundAddress_Click(object sender, RoutedEventArgs e) @@ -215,9 +314,13 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls BaseMsgWindow.ShowError("多子单订单中转仓暂不支持"); return; } - if (GlobalConfig.lstOrder.Any(o => o.orderItems.Any(oi => oi.ItemTransitOrder?.order_no == orderItem.order_id && oi.ItemTransitOrder?.order_sku_id == orderItem.sku_id))) + + if (!GetIsAbnormalOrderRebuy(orderItem) && GlobalConfig.lstOrder.Any(o => o.orderItems + .Any(oi => oi.ItemTransitOrder?.order_no == orderItem.order_id && oi.ItemTransitOrder?.order_sku_id == orderItem.sku_id))) { + MainWindow.Instance.orderListCtrl.FilterOneOrder(orderItem.ItemOrder); BaseMsgWindow.ShowError("已存在中转拍单信息,请核对后再拍单"); + return; } btnBuyOrder.Cursor = Cursors.Wait; @@ -241,21 +344,19 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (orderItem == null) return; - - if (isAbnormalOrder && orderItem.ItemOrder.status > 21 && orderItem.ItemTransitOrder != null && orderItem.ItemTransitOrder.refund_status == "买手退款成功") - { - // 异常单可以异常重拍 - } - else if (!isAbnormalOrder) - { - // 正常单可以正常拍单 - } - else + if (!isAbnormalOrder && orderItem.ItemTransitOrder != null) { + // 正常单有未作废订单的,不可再拍单 + BaseMsgWindow.ShowAnimateMessage("该订单已有采购记录", "Error", 5); return; } - - + if (isAbnormalOrder && (orderItem.ItemOrder.status <= 21 || orderItem.ItemTransitOrder == null || orderItem.ItemTransitOrder.refund_status != "买手退款成功")) + { + // 异常单不是被拼多多买家秒退的且已取号的,不可异常重拍 + BaseMsgWindow.ShowAnimateMessage("该异常单不符合重拍条件", "Error", 5); + return; + } + // 如果是退款单,弹出退款窗口 if (/*orderItem?.ItemRefund?.count > 0 &&*/ orderItem.refund_status > 1) { @@ -461,6 +562,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls PddMobileBuyOrderForm buyOrderForm = new PddMobileBuyOrderForm(MainWindow.Instance.orderListCtrl.FilterOneOrder, StartUp.UpdateBalance, orderItem, GlobalConfig.CurrentPddBuyer, orderItem.BuyMap); + buyOrderForm.TitleText = "买手拍单 - 当前买手 " + GlobalConfig.CurrentPddBuyer.buyer_nick; + // 未关联拍单的跳到所有订单页面 buyOrderForm.InitUrl = "https://mobile.yangkeduo.com/orders.html"; //"?type=0&comment_tab=1&combine_orders=1&main_orders=1&refer_page_name=personal&refer_page_id=10001_1782219035613_a9ulipk4k3&refer_page_sn=10001"; buyOrderForm.pnlBuy.Visible = false; @@ -491,8 +594,6 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (isAbnormalOrder) buyOrderForm.AbnormalTransitWarehouseOrderInfo = orderItem.ItemTransitOrder; buyOrderForm.ShowDialog(); - // 窗口关闭后更新运费信息 - MainWindow.Instance.Balance = BaseClass.Balance.ToString("0.00"); })); }); } @@ -507,7 +608,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls //if (order_item.BuyMap == null && order_item.ItemOrder.out_amount == 0) // txtProfitForecast.Visibility = Visibility.Visible; - order_item.UpdateOrderItemBuyButton(); + // 绑定时即刻生效,无需再次手动调用 + //order_item.UpdateOrderItemBuyButton(); Task.Run(() => { @@ -533,14 +635,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } // 异常重拍 - if (order_item.ItemOrder.isAbnormal && order_item.BuyerTransitWaybillStatusStr != "已到中转仓" && btnVoidTransitOrder.Visibility == Visibility.Collapsed) + if (GetIsAbnormalOrderRebuy(order_item)) { - // 取号异常/失败的异常单不能重拍 - if (((order_item.ItemTransitOrderWithVoid?.raw_message).ParseToString().Contains("取号异常") || (order_item.ItemTransitOrderWithVoid?.raw_message).ParseToString().Contains("无法调用")) && - order_item.ItemTransitOrderWithVoid?.transfer_warehouse_status != 1) - btnAbnormalOrderRebuy.Visibility = Visibility.Collapsed; - else - btnAbnormalOrderRebuy.Visibility = Visibility.Visible; + btnAbnormalOrderRebuy.Visibility = Visibility.Visible; } else { @@ -565,6 +662,31 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } } + /// + /// 判断中转仓订单是否可以异常重拍 + /// + /// + /// + bool GetIsAbnormalOrderRebuy(oms_wei_order_item_info order_item) + { + // 不是异常单的不可异常重拍 + if (order_item?.ItemOrder?.isAbnormal != true) + return false; + // 买手未退款的,中转正式取号以后的,不可异常重拍 + if (order_item.ItemTransitOrder?.refund_status != "买手退款成功" || + order_item.WarehouseWaybillStatusStr == "中转已取号" || order_item.WarehouseWaybillStatusStr == "中转已入库" || order_item.WarehouseWaybillStatusStr == "中转已出库") + return false; + // 已正式取号的,不可异常重拍 + if (order_item.ItemTransitOrder?.pre_allocated_order_no == 1 || order_item.ItemTransitOrder?.pre_allocated_order_no == 3) + return false; + // 仓库异常的异常单不可异常重拍 + List rawMsgKeyWords = new List { "取号异常", "无法调用" }; + if (rawMsgKeyWords.Any(k => (order_item.ItemTransitOrderWithVoid?.raw_message).ParseToString().Contains(k)) && order_item.ItemTransitOrderWithVoid?.transfer_warehouse_status != 1) + return false; + + return true; + } + private void txtOutOrderNumStr_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { var buyerName = txtOutOrderBuyerStr.Text.Split(':').LastOrDefault(); @@ -574,6 +696,13 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return; } var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(p => p.buyer_name == buyerName); + if (buyer == null) + { + BaseMsgWindow.ShowError("该订单买手号未在当前账户登录"); + return; + } + //GlobalConfig.CurrentPddBuyer = buyer; + var url = ""; if (buyer != null) { @@ -590,24 +719,20 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls BaseMsgWindow.ShowError("订单信息为空"); return; } - if (GlobalConfig.CurrentPddBuyer == null) - { - BaseMsgWindow.ShowError("请选择买手号"); - return; - } // 拍单的时候检测一下买手号 - if (GlobalConfig.CurrentPddBuyer.status == "在线") + if (buyer.status == "在线") { - PddMobileLoginForm.CheckBuyerLogin(GlobalConfig.CurrentPddBuyer); + PddMobileLoginForm.CheckBuyerLogin(buyer); } - if (GlobalConfig.CurrentPddBuyer.status != "在线") + if (buyer.status != "在线") { BaseMsgWindow.ShowError("买手号掉线"); return; } PddMobileBuyOrderForm buyOrderForm = new PddMobileBuyOrderForm(MainWindow.Instance.orderListCtrl.FilterOneOrder, StartUp.UpdateBalance, - orderItem, GlobalConfig.CurrentPddBuyer, orderItem.BuyMap); + orderItem, buyer, orderItem.BuyMap); + buyOrderForm.TitleText = "订单查看 - 当前买手 " + buyer.buyer_nick; //所有订单页面 buyOrderForm.InitUrl = url; @@ -737,7 +862,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (GlobalConfig.CurrentPddBuyer.status != "在线") { if (!isSilent) - if (BaseMsgWindow.ShowConfirm("买手掉线,点击确定直接作废中转单并手动取消买手单,点击取消登录买手后重试").DialogResult != true) + if (BaseMsgWindow.ShowConfirm("买手号掉线,点击确定直接作废中转单并手动取消买手单,点击取消登录买手后重试").DialogResult != true) return; noBuyer = true; } @@ -837,5 +962,37 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls BuyOrder(true); } } + + private void pathBuyerAfterSaleAddress_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + if (this.DataContext is oms_wei_order_item_info order_item) + { + try + { + Clipboard.SetText(order_item.PddBuyerAfterSaleAddressStr); + BaseMsgWindow.ShowAnimateMessage("复制成功"); + } + catch (Exception ex) + { + BaseMsgWindow.ShowError("复制失败 " + ex.Message); + } + } + } + + private void pathCopyAddress_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + if (this.DataContext is oms_wei_order_item_info order_item) + { + try + { + Clipboard.SetText((order_item.ItemOrder?.AddressStr).ParseToString()); + BaseMsgWindow.ShowAnimateMessage("复制成功"); + } + catch (Exception ex) + { + BaseMsgWindow.ShowError("复制失败 " + ex.Message); + } + } + } } } diff --git a/29WxOrderWpf/MainWindow.xaml b/29WxOrderWpf/MainWindow.xaml index ac91ed6..ac0d20a 100644 --- a/29WxOrderWpf/MainWindow.xaml +++ b/29WxOrderWpf/MainWindow.xaml @@ -25,9 +25,15 @@ - + + + + + + @@ -55,11 +61,11 @@ + MinWidth="120" MinHeight="2" MaxWidth="1200" Panel.ZIndex="1000000"> - + diff --git a/29WxOrderWpf/MainWindow.xaml.cs b/29WxOrderWpf/MainWindow.xaml.cs index 81c9fde..f24302c 100644 --- a/29WxOrderWpf/MainWindow.xaml.cs +++ b/29WxOrderWpf/MainWindow.xaml.cs @@ -64,6 +64,8 @@ namespace _29WxOrderWpf private void Window_Loaded(object sender, RoutedEventArgs e) { + lblDebug.Visibility = Visibility.Collapsed; + ucWindowBox.SetWindowMax(); this.Title = BaseClass.ToolName; diff --git a/29WxOrderWpf/Windows/LoginWindows/LoginWindow.xaml.cs b/29WxOrderWpf/Windows/LoginWindows/LoginWindow.xaml.cs index 9b57c8b..977a5ae 100644 --- a/29WxOrderWpf/Windows/LoginWindows/LoginWindow.xaml.cs +++ b/29WxOrderWpf/Windows/LoginWindows/LoginWindow.xaml.cs @@ -142,6 +142,16 @@ namespace _29WxOrderWpf.Windows.LoginWindows }); SaveUserList(); } +#if DEBUG + MainWindow.Instance.lblDebug.Visibility = Visibility.Visible; + MainWindow.Instance.lblDebug.Content = "[Debug]"; + MainWindow.Instance.lblDebug.Foreground = new SolidColorBrush(Color.FromRgb(100, 250, 255)); + if (BaseClass.LoginApiUrl == BaseClass.DebugUrl) + { + MainWindow.Instance.lblDebug.Foreground = new SolidColorBrush(Color.FromRgb(0, 255, 100)); + MainWindow.Instance.lblDebug.Content = "[Dev]"; + } +#endif this.IsLogin = true; this.Close(); } diff --git a/AllBase/29WxOrderAllBase.csproj b/AllBase/29WxOrderAllBase.csproj index c029b57..d095ea2 100644 --- a/AllBase/29WxOrderAllBase.csproj +++ b/AllBase/29WxOrderAllBase.csproj @@ -171,6 +171,8 @@ + + diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs index bb8b59a..42d1828 100644 --- a/AllBase/BaseClass.cs +++ b/AllBase/BaseClass.cs @@ -32,7 +32,7 @@ namespace AllBase /// 版本ID /// - public static int VersionCount = 183; + public static int VersionCount = 190; public static string ServerUrl { get; set; } = "http://1.13.195.131:9000"; public static string DebugUrl { get; set; } = "http://localhost:9000"; diff --git a/AllBase/Model/DBModel/oms_wei_order_info.cs b/AllBase/Model/DBModel/oms_wei_order_info.cs index c60f5c9..1db2cb2 100644 --- a/AllBase/Model/DBModel/oms_wei_order_info.cs +++ b/AllBase/Model/DBModel/oms_wei_order_info.cs @@ -40,7 +40,6 @@ namespace AllBase.Model.DBModel { if (order_id == "3737846414389704448") { - } if (status != 20 && status != 21) return false; if (orderItems.All(oi => oi.ItemTransitOrder != null)) return false; @@ -92,7 +91,7 @@ namespace AllBase.Model.DBModel set { } } /// - /// 售后订单(不含售后关闭) + /// 售后订单(不含售后关闭) -- 改为售后完成订单 260726 /// public bool IsRefund { @@ -112,15 +111,16 @@ namespace AllBase.Model.DBModel { get { - if (this.order_id == "3737682397646176256") + if (this.order_id == "3737832436815518208") { } - if (orderItems.Any(oi => oi.refund_status == 2 || oi.refund_status == 3 || oi.ItemTransitOrders.Count > 0 && + if (orderItems.Any(oi => oi.refund_status == 2 || oi.refund_status == 3 || (oi.ItemTransitOrders.Count > 0 && oi.ItemTransitOrders.Any(t => !string.IsNullOrEmpty(t.refund_status) && + !t.refund_status.Contains("需手动申请售后") && !t.refund_status.Contains("退款成功") && !t.refund_status.Contains("关闭") && - !t.refund_status.Contains("撤销")))) + !t.refund_status.Contains("撤销"))))) { return true; } @@ -140,6 +140,9 @@ namespace AllBase.Model.DBModel } + if (orderItems.Any(oi => !(oi.OrderItemExt?.abnormal_text).IsNullOrEmpty())) + return true; + // 订单无售后或者售后关闭,有未作废的仓库单且仓库单买手信息为退款成功 if (orderItems.Any(oi => oi.refund_status <= 1 && oi.ItemTransitOrder != null && oi.ItemTransitOrder.refund_status == "买手退款成功")) return true; @@ -177,19 +180,29 @@ namespace AllBase.Model.DBModel set { } } - public DateTime? createDateTime = null; + + public DateTime RefundDatetime + { + get { return this.GetValue(x => x.RefundDatetime); } + set { this.SetValue(x => x.RefundDatetime, value); } + } + /// /// 订单生成时间 /// - public string create_time_str + public DateTime CreateDateTime { - get - { - if (createDateTime == null) - createDateTime = BaseClass.StampToDateTime(create_time); - return createDateTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); - } - set { } + get { return this.GetValue(x => x.CreateDateTime); } + private set { this.SetValue(x => x.CreateDateTime, value); } + } + + /// + /// 订单更新时间 + /// + public DateTime UpdateDateTime + { + get { return this.GetValue(x => x.UpdateDateTime); } + private set { this.SetValue(x => x.UpdateDateTime, value); } } /// @@ -300,10 +313,12 @@ namespace AllBase.Model.DBModel set { } } - public string address_str + public string AddressStr { - get { return user_name + " " + tel_number + " " + province_name + " " + city_name + " " + county_name + " " + detail_info; } - set { } + //get { return user_name + " " + tel_number + " " + province_name + " " + city_name + " " + county_name + " " + detail_info; } + //set { } + get { return this.GetValue(x => x.AddressStr); } + set { this.SetValue(x => x.AddressStr, value); } } /// @@ -329,9 +344,17 @@ namespace AllBase.Model.DBModel /// 买家身份标识 /// public string openid { get; set; } - public int create_time { get; set; } + public int create_time + { + get { return this.GetValue(x => x.create_time); } + set { this.SetValue(x => x.create_time, value); this.CreateDateTime = BaseClass.StampToDateTime(create_time.ParseToInt()); } + } - public int update_time { get; set; } + public int update_time + { + get { return this.GetValue(x => x.update_time); } + set { this.SetValue(x => x.update_time, value); this.UpdateDateTime = BaseClass.StampToDateTime(update_time.ParseToInt()); } + } public string unionid { get; set; } /// /// 状态10 待付款;20 待发货;21 部分发货;30 待收货;100 完成;200 全部商品售后之后,订单取消;250 未付款用户主动取消或超时未付款订单自动取消; @@ -392,7 +415,11 @@ namespace AllBase.Model.DBModel /// /// 延迟发货时间(微信小店:商品发货时效,超时此时间未发货即为发货超时) /// - public int? delivery_deadline { get; set; } + public int? delivery_deadline + { + get { return this.GetValue(x => x.delivery_deadline); } + set { this.SetValue(x => x.delivery_deadline, value); } + } /// /// 发货时间 /// @@ -414,12 +441,28 @@ namespace AllBase.Model.DBModel /// /// 详细地址 /// - public string detail_info { get; set; } - public string tel_number { get; set; } + public string detail_info + { + get { return this.GetValue(x => x.detail_info); } + set { this.SetValue(x => x.detail_info, value); } + } + public string tel_number + { + get { return this.GetValue(x => x.tel_number); } + set { this.SetValue(x => x.tel_number, value); } + } /// /// 门牌号码 /// - public string house_number { get; set; } + public string house_number + { + get { return this.GetValue(x => x.house_number); } + set + { + this.SetValue(x => x.house_number, value); + this.AddressStr = user_name + " " + tel_number + " " + province_name + " " + city_name + " " + county_name + " " + detail_info; + } + } /// /// 虚拟发货订单联系方式(deliver_method=1时返回) /// diff --git a/AllBase/Model/DBModel/oms_wei_order_item_info.cs b/AllBase/Model/DBModel/oms_wei_order_item_info.cs index 3aa2e6c..b4f27af 100644 --- a/AllBase/Model/DBModel/oms_wei_order_item_info.cs +++ b/AllBase/Model/DBModel/oms_wei_order_item_info.cs @@ -76,6 +76,27 @@ namespace AllBase.Model.DBModel } #endregion + /// + /// 订单扩展信息 + /// + public order_item_ext OrderItemExt + { + get { return this.GetValue(x => x.OrderItemExt); } + set + { + this.SetValue(x => x.OrderItemExt, value); + ShopWaybillExceptionStr = value == null ? "" : value.abnormal_text.ParseToString(); + } + } + /// + /// 店铺后台显示的物流异常信息(订单扩展信息) + /// + public string ShopWaybillExceptionStr + { + get { return this.GetValue(x => x.ShopWaybillExceptionStr); } + set { this.SetValue(x => x.ShopWaybillExceptionStr, value); } + } + public oms_wei_order_info ItemOrder { get { return this.GetValue(x => x.ItemOrder); } @@ -100,8 +121,12 @@ namespace AllBase.Model.DBModel else this.RefundResultStr = "商品退款数量:" + ItemRefund.count + ",订单状态:" + ItemOrder.orderStatusStr; this.ReturnWaybillIdStr = ItemRefund?.return_waybill_id; - this.RefundTimeStr = BaseClass.StampToDateTime((ItemRefund?.create_time).ParseToInt()).ToString("yyyy-MM-dd HH:mm:ss"); - this.RefundTimeVisibility = ItemRefund?.create_time > 0 ? Visibility.Visible : Visibility.Collapsed; + + this.RefundDatetime = ItemRefund?.create_time == null ? DateTime.MinValue : BaseClass.StampToDateTime((ItemRefund?.create_time).ParseToInt()); + if (ItemOrder != null) + ItemOrder.RefundDatetime = this.RefundDatetime; + this.RefundDateTimeStr = RefundDatetime.ToString("yyyy-MM-dd HH:mm:ss"); + this.RefundTimeVisibility = RefundDatetime == DateTime.MinValue ? Visibility.Collapsed : Visibility.Visible; } /// /// 退款状态文本 @@ -122,10 +147,18 @@ namespace AllBase.Model.DBModel /// /// 订单退款时间 /// - public string RefundTimeStr + public DateTime RefundDatetime { - get { return this.GetValue(x => x.RefundTimeStr); } - set { this.SetValue(x => x.RefundTimeStr, value); } + get { return this.GetValue(x => x.RefundDatetime); } + set { this.SetValue(x => x.RefundDatetime, value); } + } + /// + /// 订单退款时间文本 + /// + public string RefundDateTimeStr + { + get { return this.GetValue(x => x.RefundDateTimeStr); } + set { this.SetValue(x => x.RefundDateTimeStr, value); } } /// /// 订单退款时间可见 @@ -170,12 +203,27 @@ namespace AllBase.Model.DBModel get { return this.GetValue(x => x.PddBuyerOrder); } set { this.SetValue(x => x.PddBuyerOrder, value); } } + public List PddBuyerAfterSales { get; set; } = new List(); + public order_pdd_buyer_after_sale PddBuyerAfterSale + { + get { return this.GetValue(x => x.PddBuyerAfterSale); } + set { this.SetValue(x => x.PddBuyerAfterSale, value); } + } + public string PddBuyerAfterSaleAddressStr + { + get { return this.GetValue(x => x.PddBuyerAfterSaleAddressStr); } + set { this.SetValue(x => x.PddBuyerAfterSaleAddressStr, value); } + } public void SetTransitOrder() { this.ItemTransitOrder = ItemTransitOrders?.FirstOrDefault(t => t.order_void_status != 1); this.ItemTransitOrderWithVoid = ItemTransitOrders?.FirstOrDefault(); - this.PddBuyerOrder = PddBuyerOrders?.FirstOrDefault(); this.ItemTransitOrderAfterSale = ItemTransitOrderAfterSales?.FirstOrDefault(); + this.PddBuyerOrder = PddBuyerOrders?.FirstOrDefault(); + // 优先找非撤销买手退款单 + this.PddBuyerAfterSale = PddBuyerAfterSales?.FirstOrDefault(p => p.statusText == "退款成功") ?? PddBuyerAfterSales?.FirstOrDefault(p => p.statusText != "申请已撤销"); + if (PddBuyerAfterSale == null) + PddBuyerAfterSale = PddBuyerAfterSales?.FirstOrDefault(); // 直接取号和更正取号显示的买手到仓库物流 if (ItemTransitOrder?.pre_allocated_order_no != 1 && ItemTransitOrder?.pre_allocated_order_no != 3) @@ -195,11 +243,20 @@ namespace AllBase.Model.DBModel else TransitOrderWaybillFromWareHouseStr = "仓库物流:" + ItemTransitOrder.express_2_company + "-" + ItemTransitOrder.express_2_waybill; + if (order_id == "3737937905497545216") + { + + } + // 仓库物流售后按钮上的文字,仓库作废单不存在仓库物流,所以此处必须是有效的仓库单(含作废失败) if (this.ItemTransitOrder == null || !this.ItemOrder.IsRefundWithCancel) AddEditTransitWarehouseAfterSaleStr = ""; else AddEditTransitWarehouseAfterSaleStr = this.ItemTransitOrderAfterSale == null ? "添加" : "查看"; + if (this.ItemTransitOrderAfterSale != null) + TransitWarehouseAfterSaleWayBillStr = (this.ItemTransitOrderAfterSale?.downstream_express_code + "-" + this.ItemTransitOrderAfterSale?.downstream_waybill).Trim('-'); + + this.PddBuyerAfterSaleAddressStr = this.PddBuyerAfterSale?.afterSaleAddress; } /// /// 仓库退货编辑按钮文本参数 @@ -233,6 +290,11 @@ namespace AllBase.Model.DBModel get { return this.GetValue(x => x.TransitOrderWaybillFromWareHouseStr); } set { this.SetValue(x => x.TransitOrderWaybillFromWareHouseStr, value); } } + public string TransitWarehouseAfterSaleWayBillStr + { + get { return this.GetValue(x => x.TransitWarehouseAfterSaleWayBillStr); } + set { this.SetValue(x => x.TransitWarehouseAfterSaleWayBillStr, value); } + } #endregion #region 买手物流参数 @@ -263,7 +325,7 @@ namespace AllBase.Model.DBModel // 拼多多买手状态为已签收的,为已到中转仓 else if ((PddBuyerOrder?.order_status_prompt).ParseToString().Contains("已签收")) { - BuyerTransitWaybillStatusStr = "已到中转仓"; + BuyerTransitWaybillStatusStr = "买手已送达"; } // 售后待用户退回商品的,至少为买手已发货 else if ((PddBuyerOrder?.order_status_prompt).ParseToString().Contains("待用户退回商品")) @@ -309,15 +371,15 @@ namespace AllBase.Model.DBModel public void SetBuyerTransitWaybillStatusStrColor() { if (BuyerTransitWaybillStatusStr.StartsWith("买手已退款")) - BuyerTransitWaybillStatusStrColor = new SolidColorBrush(Color.FromRgb(152, 96, 143)); - else if(BuyerTransitWaybillStatusStr.StartsWith("已到中转仓")) - BuyerTransitWaybillStatusStrColor = new SolidColorBrush(Color.FromRgb(19, 206, 102)); - else if(BuyerTransitWaybillStatusStr.StartsWith("买手已发货")) - BuyerTransitWaybillStatusStrColor = new SolidColorBrush(Color.FromRgb(255, 186, 0)); - else if(BuyerTransitWaybillStatusStr.StartsWith("买手未发货")) - BuyerTransitWaybillStatusStrColor = new SolidColorBrush(Color.FromRgb(255, 73, 73)); + BuyerTransitWaybillStatusStrColor = PurpleBrush; + else if (BuyerTransitWaybillStatusStr.StartsWith("买手已送达")) + BuyerTransitWaybillStatusStrColor = GreenBrush; + else if (BuyerTransitWaybillStatusStr.StartsWith("买手已发货")) + BuyerTransitWaybillStatusStrColor = YellowBrush; + else if (BuyerTransitWaybillStatusStr.StartsWith("买手未发货")) + BuyerTransitWaybillStatusStrColor = RedBrush; else - BuyerTransitWaybillStatusStrColor = new SolidColorBrush(Color.FromRgb(255, 73, 73)); + BuyerTransitWaybillStatusStrColor = RedBrush; } public SolidColorBrush BuyerTransitWaybillStatusBorderColor { @@ -327,15 +389,15 @@ namespace AllBase.Model.DBModel public void SetBuyerTransitWaybillStatusBorderColor() { if (BuyerTransitWaybillStatusStr.StartsWith("买手已退款")) - BuyerTransitWaybillStatusBorderColor = new SolidColorBrush(Color.FromArgb(75, 152, 96, 143)); - else if(BuyerTransitWaybillStatusStr.StartsWith("已到中转仓")) - BuyerTransitWaybillStatusBorderColor = new SolidColorBrush(Color.FromRgb(208, 245, 224)); - else if(BuyerTransitWaybillStatusStr.StartsWith("买手已发货")) - BuyerTransitWaybillStatusBorderColor = new SolidColorBrush(Color.FromRgb(255, 241, 204)); - else if(BuyerTransitWaybillStatusStr.StartsWith("买手未发货")) - BuyerTransitWaybillStatusBorderColor = new SolidColorBrush(Color.FromRgb(255, 219, 219)); + BuyerTransitWaybillStatusBorderColor = PurpleBrush75; + else if (BuyerTransitWaybillStatusStr.StartsWith("买手已送达")) + BuyerTransitWaybillStatusBorderColor = GreenBrush75; + else if (BuyerTransitWaybillStatusStr.StartsWith("买手已发货")) + BuyerTransitWaybillStatusBorderColor = YellowBrush75; + else if (BuyerTransitWaybillStatusStr.StartsWith("买手未发货")) + BuyerTransitWaybillStatusBorderColor = RedBrush75; else - BuyerTransitWaybillStatusBorderColor = new SolidColorBrush(Color.FromRgb(255, 219, 219)); + BuyerTransitWaybillStatusBorderColor = RedBrush75; } public SolidColorBrush BuyerTransitWaybillStatusBackColor { @@ -345,94 +407,95 @@ namespace AllBase.Model.DBModel public void SetBuyerTransitWaybillStatusBackColor() { if (BuyerTransitWaybillStatusStr.StartsWith("买手已退款")) - BuyerTransitWaybillStatusBackColor = new SolidColorBrush(Color.FromArgb(35, 152, 96, 143)); - else if (BuyerTransitWaybillStatusStr.StartsWith("已到中转仓")) - BuyerTransitWaybillStatusBackColor = new SolidColorBrush(Color.FromRgb(231, 250, 240)); + BuyerTransitWaybillStatusBackColor = PurpleBrush35; + else if (BuyerTransitWaybillStatusStr.StartsWith("买手已送达")) + BuyerTransitWaybillStatusBackColor = GreenBrush35; else if (BuyerTransitWaybillStatusStr.StartsWith("买手已发货")) - BuyerTransitWaybillStatusBackColor = new SolidColorBrush(Color.FromRgb(255, 248, 230)); + BuyerTransitWaybillStatusBackColor = YellowBrush35; else if (BuyerTransitWaybillStatusStr.StartsWith("买手未发货")) - BuyerTransitWaybillStatusBackColor = new SolidColorBrush(Color.FromRgb(255, 237, 237)); + BuyerTransitWaybillStatusBackColor = RedBrush35; else - BuyerTransitWaybillStatusBackColor = new SolidColorBrush(Color.FromRgb(255, 237, 237)); + BuyerTransitWaybillStatusBackColor = RedBrush35; } #endregion #region 仓库物流参数 public string WarehouseWaybillStatusStr { - get + get { return this.GetValue(x => x.WarehouseWaybillStatusStr); } + set { this.SetValue(x => x.WarehouseWaybillStatusStr, value); } + } + public void SetWarehouseWaybillStatusStr() + { + WarehouseWaybillStatusStr = ""; + if (ItemTransitOrderWithVoid == null) + WarehouseWaybillStatusStr = ""; + // 订单不满足鸿浩仓库发货条件,无法调用鸿浩仓库接口发货 + else if ((ItemTransitOrderWithVoid.raw_message.ParseToString().Contains("取号异常") || + ItemTransitOrderWithVoid.raw_message.ParseToString().Contains("无法调用")) && + ItemTransitOrderWithVoid.transfer_warehouse_status != 1) { - if (ItemTransitOrderWithVoid == null) - return ""; - - // 订单不满足鸿浩仓库发货条件,无法调用鸿浩仓库接口发货 - if ((ItemTransitOrderWithVoid.raw_message.ParseToString().Contains("取号异常") || - ItemTransitOrderWithVoid.raw_message.ParseToString().Contains("无法调用")) && - ItemTransitOrderWithVoid.transfer_warehouse_status != 1) - { - if (ItemTransitOrderWithVoid.raw_message.Contains("超出派送范围")) - return "取号异常-超出派送范围"; - else - return "取号异常"; - } - - if (ItemTransitOrderWithVoid?.warehouse_status == 2) - return "中转已出库"; - // 老订单还用之前的逻辑判断 - if (ItemTransitOrderWithVoid?.created_time < new DateTime(2026, 7, 14) && (ItemTransitOrderWithVoid?.pre_allocated_order_no == 1 || ItemTransitOrderWithVoid?.pre_allocated_order_no == 3) && !ItemTransitOrderWithVoid.express_2_company.IsNullOrEmpty() && !ItemTransitOrderWithVoid.express_2_waybill.IsNullOrEmpty()) - //return "中转已出库*"; - return "中转已出库"; - if (ItemTransitOrderWithVoid?.warehouse_status == 1) - return "中转已入库"; - //if ((ItemTransitOrderWithVoid?.pre_allocated_order_no == 1 || ItemTransitOrderWithVoid?.pre_allocated_order_no == 3) && !ItemTransitOrderWithVoid.express_2_company.IsNullOrEmpty() && !ItemTransitOrderWithVoid.express_2_waybill.IsNullOrEmpty()) - // return "中转已发货"; - //if (ItemTransitOrderWithVoid?.pre_allocated_order_no == 1 || ItemTransitOrderWithVoid?.pre_allocated_order_no == 3) - // return "中转待发货"; - if (ItemTransitOrderWithVoid?.pre_allocated_order_no == 1 || ItemTransitOrderWithVoid?.pre_allocated_order_no == 3) - return "中转已取号"; - if (ItemTransitOrderWithVoid?.pre_allocated_order_no == 2) - return "中转提前取号"; - - //if (ItemTransitOrderWithVoid?.order_void_status == 2) - // return "中转作废失败"; - //if (ItemTransitOrderWithVoid?.order_void_status == 1) - // return "中转已作废"; - - if (ItemTransitOrderWithVoid?.pre_allocated_order_no == 0) - return "中转待取号"; - return ""; + if (ItemTransitOrderWithVoid.raw_message.Contains("超出派送范围")) + WarehouseWaybillStatusStr = "取号异常-超出派送范围"; + else + WarehouseWaybillStatusStr = "取号异常"; } - set { } + else if (ItemTransitOrderWithVoid?.warehouse_status == 2) + WarehouseWaybillStatusStr = "中转已出库"; + // 老订单还用之前的逻辑判断 + else if (ItemTransitOrderWithVoid?.created_time < new DateTime(2026, 7, 14) && (ItemTransitOrderWithVoid?.pre_allocated_order_no == 1 || ItemTransitOrderWithVoid?.pre_allocated_order_no == 3) && !ItemTransitOrderWithVoid.express_2_company.IsNullOrEmpty() && !ItemTransitOrderWithVoid.express_2_waybill.IsNullOrEmpty()) + //WarehouseWaybillStatusStr = "中转已出库*"; + WarehouseWaybillStatusStr = "中转已出库"; + else if (ItemTransitOrderWithVoid?.warehouse_status == 1) + WarehouseWaybillStatusStr = "中转已入库"; + //else if ((ItemTransitOrderWithVoid?.pre_allocated_order_no == 1 || ItemTransitOrderWithVoid?.pre_allocated_order_no == 3) && !ItemTransitOrderWithVoid.express_2_company.IsNullOrEmpty() && !ItemTransitOrderWithVoid.express_2_waybill.IsNullOrEmpty()) + // WarehouseWaybillStatusStr = "中转已发货"; + //else if (ItemTransitOrderWithVoid?.pre_allocated_order_no == 1 || ItemTransitOrderWithVoid?.pre_allocated_order_no == 3) + // WarehouseWaybillStatusStr = "中转待发货"; + else if (ItemTransitOrderWithVoid?.pre_allocated_order_no == 1 || ItemTransitOrderWithVoid?.pre_allocated_order_no == 3) + WarehouseWaybillStatusStr = "中转已取号"; + else if (ItemTransitOrderWithVoid?.pre_allocated_order_no == 2) + WarehouseWaybillStatusStr = "中转提前取号"; + //else if (ItemTransitOrderWithVoid?.order_void_status == 2) + // WarehouseWaybillStatusStr = "中转作废失败"; + //else if (ItemTransitOrderWithVoid?.order_void_status == 1) + // WarehouseWaybillStatusStr = "中转已作废"; + else if (ItemTransitOrderWithVoid?.pre_allocated_order_no == 0) + WarehouseWaybillStatusStr = "中转待取号"; } public SolidColorBrush WarehouseWaybillStatusStrColor { get { //if (WarehouseWaybillStatusStr.StartsWith("中转已作废")) - // return new SolidColorBrush(Color.FromRgb(152, 96, 143)); + // return PurpleBrush; if (WarehouseWaybillStatusStr.StartsWith("中转已出库")) - return new SolidColorBrush(Color.FromRgb(19, 206, 102)); + return GreenBrush; if (WarehouseWaybillStatusStr.StartsWith("中转已入库") || WarehouseWaybillStatusStr.StartsWith("中转已取号") || WarehouseWaybillStatusStr.StartsWith("中转提前取号")) - return new SolidColorBrush(Color.FromRgb(255, 186, 0)); + return YellowBrush; if (WarehouseWaybillStatusStr.StartsWith("中转待取号")) - return new SolidColorBrush(Color.FromRgb(255, 73, 73)); - return new SolidColorBrush(Color.FromRgb(255, 73, 73)); + return RedBrush; + return RedBrush; } set { } + } + public void SetWarehouseWaybillStatusStrColor() + { + } public SolidColorBrush WarehouseWaybillStatusBorderColor { get { //if (WarehouseWaybillStatusStr.StartsWith("中转已作废")) - // return new SolidColorBrush(Color.FromArgb(75, 152, 96, 143)); + // return PurpleBrush75; if (WarehouseWaybillStatusStr.StartsWith("中转已出库")) - return new SolidColorBrush(Color.FromRgb(208, 245, 224)); + return GreenBrush75; if (WarehouseWaybillStatusStr.StartsWith("中转已入库") || WarehouseWaybillStatusStr.StartsWith("中转已取号") || WarehouseWaybillStatusStr.StartsWith("中转提前取号")) - return new SolidColorBrush(Color.FromRgb(255, 241, 204)); + return YellowBrush75; if (WarehouseWaybillStatusStr.StartsWith("中转待取号")) - return new SolidColorBrush(Color.FromRgb(255, 219, 219)); - return new SolidColorBrush(Color.FromRgb(255, 219, 219)); + return RedBrush75; + return RedBrush75; } set { } } @@ -441,20 +504,19 @@ namespace AllBase.Model.DBModel get { //if (WarehouseWaybillStatusStr.StartsWith("中转已作废")) - // return new SolidColorBrush(Color.FromArgb(35, 152, 96, 143)); + // return PurpleBrush35 if (WarehouseWaybillStatusStr.StartsWith("中转已出库")) - return new SolidColorBrush(Color.FromRgb(231, 250, 240)); + return GreenBrush35; if (WarehouseWaybillStatusStr.StartsWith("中转已入库") || WarehouseWaybillStatusStr.StartsWith("中转已取号") || WarehouseWaybillStatusStr.StartsWith("中转提前取号")) - return new SolidColorBrush(Color.FromRgb(255, 248, 230)); + return YellowBrush35; if (WarehouseWaybillStatusStr.StartsWith("中转待取号")) - return new SolidColorBrush(Color.FromRgb(255, 237, 237)); - return new SolidColorBrush(Color.FromRgb(255, 237, 237)); + return RedBrush35; + return RedBrush35; } set { } } #endregion - /// /// 中转仓表买手售后字段文字显示 /// @@ -462,7 +524,7 @@ namespace AllBase.Model.DBModel { get { - if (order_id == "3737688046871408640") + if (order_id == "3737761985909113600") { } @@ -470,10 +532,26 @@ namespace AllBase.Model.DBModel if (!string.IsNullOrEmpty(ItemTransitOrderWithVoid?.refund_status)) { // 店铺售后又取消的,如果是买手还没申请售后,不显示需手动申请售后文字 - //if (ItemTransitOrderWithVoid.refund_status.Contains("需手动申请售后") && this.refund_status <= 1) - // return ""; + if (ItemTransitOrderWithVoid.refund_status.Contains("需手动申请售后") && this.refund_status <= 1) + return ""; + + // 显示售后金额(如果有) + if (ItemTransitOrderWithVoid.refund_status.EndsWith("买手退款成功")) + { + if (PddBuyerAfterSale?.refundAmount != null) + return ItemTransitOrderWithVoid.refund_status + "(¥" + PddBuyerAfterSale.refundAmount * 0.01m + ")"; + else + return ItemTransitOrderWithVoid.refund_status + "(退款金额待获取)"; + } + if (!ItemTransitOrderWithVoid.refund_status.Contains("需手动申请售后")) return "已申请售后 " + ItemTransitOrderWithVoid.refund_status.Replace("申请收到,", ""); + + if (order_id == "3737761985909113600") + { + + } + return ItemTransitOrderWithVoid.refund_status; } return ""; @@ -488,13 +566,15 @@ namespace AllBase.Model.DBModel get { if (TransitRefundStatusStr.Contains("退款成功")) - return new SolidColorBrush(Color.FromRgb(19, 206, 102)); + return GreenBrush; if (TransitRefundStatusStr.Contains("需手动申请售后")) - return new SolidColorBrush(Color.FromRgb(255, 73, 73)); - //return new SolidColorBrush(Color.FromRgb(255, 186, 0)); - return new SolidColorBrush(Color.FromRgb(255, 155, 0)); + return RedBrush; + return LightOrangeBrush; + //return YellowBrush; + } + set + { } - set { } } /// /// 中转仓作废参数 @@ -519,11 +599,8 @@ namespace AllBase.Model.DBModel if (ItemTransitOrderWithVoid == null) return ""; - if (ItemOrder.createDateTime == null) - ItemOrder.createDateTime = BaseClass.StampToDateTime(ItemOrder.create_time); - string timeStr = "采购时间:" + ItemTransitOrderWithVoid.created_time.ToString("yyyy-MM-dd HH:mm:ss"); - if (ItemOrder.createDateTime.Value.Date != ItemTransitOrderWithVoid.created_time.Date && ItemTransitOrderWithVoid.created_time > ItemTransitOrderWithVoid.created_time.Date.AddHours(1.5)) + if (CreateDateTime.Date != ItemTransitOrderWithVoid.created_time.Date && ItemTransitOrderWithVoid.created_time > ItemTransitOrderWithVoid.created_time.Date.AddHours(1.5)) return timeStr + " ×"; return timeStr + " √"; } @@ -536,7 +613,7 @@ namespace AllBase.Model.DBModel { get { - return OutOrderTimeQualifiedStr.EndsWith("√") ? new SolidColorBrush(Color.FromRgb(103, 194, 58)) : new SolidColorBrush(Color.FromRgb(250, 71, 51)); + return OutOrderTimeQualifiedStr.EndsWith("√") ? GreenTextBrush : RedTextBrush; } } @@ -573,12 +650,12 @@ namespace AllBase.Model.DBModel get { if ("未知状态,未付款已取消,售后完成订单取消".Contains(OrderItemStatusStr)) - return new SolidColorBrush(Color.FromRgb(255, 73, 73)); + return RedBrush; if ("订单完成".Contains(OrderItemStatusStr)) - return new SolidColorBrush(Color.FromRgb(19, 206, 102)); + return GreenBrush; if ("待买家收货,店铺部分发货,待店铺发货,待付款".Contains(OrderItemStatusStr)) - return new SolidColorBrush(Color.FromRgb(255, 186, 0)); - return new SolidColorBrush(Color.FromRgb(255, 186, 0)); + return YellowBrush; + return YellowBrush; } set { } } @@ -587,12 +664,12 @@ namespace AllBase.Model.DBModel get { if ("未知状态,未付款已取消,售后完成订单取消".Contains(OrderItemStatusStr)) - return new SolidColorBrush(Color.FromRgb(255, 219, 219)); + return RedBrush75; if ("订单完成".Contains(OrderItemStatusStr)) - return new SolidColorBrush(Color.FromRgb(208, 245, 224)); + return GreenBrush75; if ("待买家收货,店铺部分发货,待店铺发货,待付款".Contains(OrderItemStatusStr)) - return new SolidColorBrush(Color.FromRgb(255, 241, 204)); - return new SolidColorBrush(Color.FromRgb(255, 241, 204)); + return YellowBrush75; + return YellowBrush75; } set { } } @@ -601,12 +678,12 @@ namespace AllBase.Model.DBModel get { if ("未知状态,未付款已取消,售后完成订单取消".Contains(OrderItemStatusStr)) - return new SolidColorBrush(Color.FromRgb(255, 237, 237)); + return RedBrush35; if ("订单完成".Contains(OrderItemStatusStr)) - return new SolidColorBrush(Color.FromRgb(231, 250, 240)); + return GreenBrush35; if ("待买家收货,店铺部分发货,待店铺发货,待付款".Contains(OrderItemStatusStr)) - return new SolidColorBrush(Color.FromRgb(255, 248, 230)); - return new SolidColorBrush(Color.FromRgb(255, 248, 230)); + return YellowBrush35; + return YellowBrush35; } set { } } @@ -704,6 +781,7 @@ namespace AllBase.Model.DBModel set { } } + decimal profitCount = decimal.MinValue; /// /// 通过计算的利润 @@ -726,6 +804,7 @@ namespace AllBase.Model.DBModel profitCount = decimal.MinValue; } } + /// /// 通过计算的利润文本 /// @@ -746,12 +825,37 @@ namespace AllBase.Model.DBModel get { if (refund_status == 2 || refund_status == 3 || refund_status == 4 || refund_status == 11) - return new SolidColorBrush(Color.FromRgb(127, 127, 127)); - return ProfitCount > 0 ? new SolidColorBrush(Color.FromRgb(103, 194, 58)) : new SolidColorBrush(Color.FromRgb(250, 71, 51)); + return GrayBrush; + //return ProfitCount > 0 ? new SolidColorBrush(Color.FromRgb(103, 194, 58)) : new SolidColorBrush(Color.FromRgb(250, 71, 51)); + return ProfitCount > 0 ? GreenTextBrush : RedTextBrush; } set { } } + + + public DateTime CreateDateTime + { + get { return this.GetValue(x => x.CreateDateTime); } + set { this.SetValue(x => x.CreateDateTime, value); } + } + /// + /// 订单创建时间文本 + /// + public string CreateDateTimeStr + { + get { return this.GetValue(x => x.CreateDateTimeStr); } + set { this.SetValue(x => x.CreateDateTimeStr, value); } + } + /// + /// 订单更新时间文本 + /// + public string UpdateTimeStr + { + get { return this.GetValue(x => x.UpdateTimeStr); } + set { this.SetValue(x => x.UpdateTimeStr, value); } + } + /// /// sku规格名称文本 /// @@ -913,11 +1017,81 @@ namespace AllBase.Model.DBModel /// public int? refund_status { get; set; } + + + public static SolidColorBrush PurpleBrush; + public static SolidColorBrush PurpleBrush75; + public static SolidColorBrush PurpleBrush50; + public static SolidColorBrush PurpleBrush35; + + public static SolidColorBrush GreenBrush; + public static SolidColorBrush GreenBrush75; + public static SolidColorBrush GreenBrush35; + + public static SolidColorBrush YellowBrush; + public static SolidColorBrush YellowBrush75; + public static SolidColorBrush YellowBrush35; + + public static SolidColorBrush LightOrangeBrush; + public static SolidColorBrush OrangeBrush; + public static SolidColorBrush OrangeBrush50; + + public static SolidColorBrush RedBrush; + public static SolidColorBrush RedBrush75; + public static SolidColorBrush RedBrush35; + + public static SolidColorBrush GrayBrush; + + public static SolidColorBrush GreenTextBrush; + public static SolidColorBrush RedTextBrush; + public static SolidColorBrush RedTextBrush50; + public void SetOrderItemTextProperty() { + CreateDateTime = BaseClass.StampToDateTime((ItemOrder?.create_time).ParseToInt()); + CreateDateTimeStr = CreateDateTime.ToString("yyyy-MM-dd HH:mm:ss"); + UpdateTimeStr = BaseClass.StampToDateTime((ItemOrder?.update_time).ParseToInt()).ToString("yyyy-MM-dd HH:mm:ss"); + + if (PurpleBrush == null && this.Dispatcher != null) + { + Dispatcher.Invoke(new Action(() => + { + PurpleBrush = new SolidColorBrush(Color.FromArgb(255, 152, 99, 143)); + PurpleBrush75 = new SolidColorBrush(Color.FromArgb(75, 152, 99, 143)); + PurpleBrush50 = new SolidColorBrush(Color.FromArgb(50, 152, 99, 143)); + PurpleBrush35 = new SolidColorBrush(Color.FromArgb(35, 152, 99, 143)); + + GreenBrush = new SolidColorBrush(Color.FromArgb(255, 19, 206, 102)); + GreenBrush75 = new SolidColorBrush(Color.FromArgb(75, 19, 206, 102)); + GreenBrush35 = new SolidColorBrush(Color.FromArgb(35, 19, 206, 102)); + + YellowBrush = new SolidColorBrush(Color.FromArgb(255, 255, 186, 0)); + YellowBrush75 = new SolidColorBrush(Color.FromArgb(75, 255, 186, 0)); + YellowBrush35 = new SolidColorBrush(Color.FromArgb(35, 255, 186, 0)); + + LightOrangeBrush = new SolidColorBrush(Color.FromArgb(255, 255, 155, 0)); + OrangeBrush = new SolidColorBrush(Color.FromArgb(255, 250, 127, 51)); + OrangeBrush50 = new SolidColorBrush(Color.FromArgb(50, 250, 127, 51)); + + RedBrush = new SolidColorBrush(Color.FromArgb(255, 255, 73, 73)); + RedBrush75 = new SolidColorBrush(Color.FromArgb(75, 255, 73, 73)); + RedBrush35 = new SolidColorBrush(Color.FromArgb(35, 255, 73, 73)); + + GrayBrush = new SolidColorBrush(Color.FromArgb(255, 127, 127, 127)); + + GreenTextBrush = new SolidColorBrush(Color.FromArgb(255, 103, 194, 58)); + RedTextBrush = new SolidColorBrush(Color.FromArgb(255, 250, 71, 51)); + RedTextBrush50 = new SolidColorBrush(Color.FromArgb(50, 250, 71, 51)); + })); + } + this.SetTransitOrder(); this.SetItemRefund(); this.SetBuyerTransitWaybillStatusStr(); + this.SetWarehouseWaybillStatusStr(); + + // 拍单、代发等信息判断并控制拍单按钮 + this.UpdateOrderItemBuyButton(); } public void UpdateOrderItemBuyButton() @@ -927,39 +1101,39 @@ namespace AllBase.Model.DBModel if (GlobalConfig.lstDangerItemWord.Any(d => order_item.title.Contains(d))) { order_item.IsBuyGoodsBtnEnabled = false; - order_item.BuyGoodsBtnBackColor = new SolidColorBrush(Color.FromArgb(50, 250, 70, 51)); - order_item.BuyGoodsBtnColor = new SolidColorBrush(Color.FromArgb(255, 250, 70, 51)); + order_item.BuyGoodsBtnBackColor = RedTextBrush50; + order_item.BuyGoodsBtnColor = RedTextBrush; order_item.BuyGoodsBtnTxt = "危险品不支持中转拍单"; } else if (Shop == null || (Shop?.LoginStatus != "登录成功" /*&& Shop?.Is29Supplier == null*/)) { order_item.IsBuyGoodsBtnEnabled = false; //order_item.IsBuyGoodsBtnEnabled = true; - order_item.BuyGoodsBtnBackColor = new SolidColorBrush(Color.FromArgb(50, 250, 70, 51)); - order_item.BuyGoodsBtnColor = new SolidColorBrush(Color.FromArgb(255, 250, 70, 51)); + order_item.BuyGoodsBtnBackColor = RedTextBrush50; + order_item.BuyGoodsBtnColor = RedTextBrush; order_item.BuyGoodsBtnTxt = "请登录店铺"; } else if (Shop?.LoginStatus == "登录成功" && Shop?.Is29Supplier == null) { order_item.IsBuyGoodsBtnEnabled = false; - order_item.BuyGoodsBtnBackColor = new SolidColorBrush(Color.FromArgb(50, 250, 127, 51)); - order_item.BuyGoodsBtnColor = new SolidColorBrush(Color.FromArgb(255, 250, 127, 51)); + order_item.BuyGoodsBtnBackColor = OrangeBrush50; + order_item.BuyGoodsBtnColor = OrangeBrush; order_item.BuyGoodsBtnTxt = "代发状态读取中请稍候"; } else if (Shop?.Is29Supplier == false) { //order_item.IsBuyGoodsBtnEnabled = false; order_item.IsBuyGoodsBtnEnabled = true; - order_item.BuyGoodsBtnBackColor = new SolidColorBrush(Color.FromArgb(50, 250, 70, 51)); - order_item.BuyGoodsBtnColor = new SolidColorBrush(Color.FromArgb(255, 250, 70, 51)); + order_item.BuyGoodsBtnBackColor = RedTextBrush50; + order_item.BuyGoodsBtnColor = RedTextBrush; order_item.BuyGoodsBtnTxt = "去店铺后台绑定代发"; } else { order_item.IsBuyGoodsBtnEnabled = true; order_item.BuyGoodsBtnTxt = order_item.BuyMap == null ? "关联拍单" : "拍单"; - order_item.BuyGoodsBtnBackColor = new SolidColorBrush(Color.FromArgb(50, 152, 99, 143)); - order_item.BuyGoodsBtnColor = new SolidColorBrush(Color.FromArgb(255, 152, 99, 143)); + order_item.BuyGoodsBtnBackColor = PurpleBrush50; + order_item.BuyGoodsBtnColor = PurpleBrush; } } } diff --git a/AllBase/Model/DBModel/order_item_ext.cs b/AllBase/Model/DBModel/order_item_ext.cs new file mode 100644 index 0000000..7b02bc6 --- /dev/null +++ b/AllBase/Model/DBModel/order_item_ext.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AllBase.Model.DBModel +{ + public class order_item_ext + { + public long? id { get; set; } + public string order_id { get; set; } + public string sku_id { get; set; } + public string shop_app_id { get; set; } + public string shop_name { get; set; } + /// + /// 订单异常文本 + /// + public string abnormal_text { get; set; } + public int? flag { get; set; } + public string label { get; set; } + public string remark { get; set; } + public string after_sale_user_delivery_address { get; set; } + public DateTime add_time { get; set; } + public DateTime mdy_time { get; set; } + } +} diff --git a/AllBase/Model/DBModel/order_pdd_buyer_after_sale.cs b/AllBase/Model/DBModel/order_pdd_buyer_after_sale.cs new file mode 100644 index 0000000..26c5347 --- /dev/null +++ b/AllBase/Model/DBModel/order_pdd_buyer_after_sale.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AllBase.Model.DBModel +{ + public class order_pdd_buyer_after_sale + { + public long? id { get; set; } + public string wx_order_id { get; set; } + public string wx_sku_id { get; set; } + public DateTime TransitCreateTime { get; set; } + //public DateTime TransitPickupTime { get; set; } + public int? pre_allocated_order_no { get; set; } + public string buyerId { get; set; } + public string buyerName { get; set; } + public string afterSalesId { get; set; } + public string orderSn { get; set; } + public int? orderAmount { get; set; } + public long? refundAmount { get; set; } + public long? orderDate { get; set; } + public string statusText { get; set; } + public string afterSaleAddress { get; set; } + public string order_detail { get; set; } + public DateTime add_time { get; set; } + public DateTime mdy_time { get; set; } + } +} diff --git a/AllBase/Model/DBModel/order_pdd_buyer_order.cs b/AllBase/Model/DBModel/order_pdd_buyer_order.cs index a998602..9a4a148 100644 --- a/AllBase/Model/DBModel/order_pdd_buyer_order.cs +++ b/AllBase/Model/DBModel/order_pdd_buyer_order.cs @@ -12,7 +12,7 @@ namespace AllBase.Model.DBModel public string wx_order_id { get; set; } public string wx_sku_id { get; set; } public DateTime TransitCreateTime { get; set; } - public DateTime TransitPickupTime { get; set; } + //public DateTime TransitPickupTime { get; set; } public int? pre_allocated_order_no { get; set; } public string buyerId { get; set; } public string buyerName { get; set; } diff --git a/AllBase/Model/Result/PddBuyerAfterSaleLiteInfo.cs b/AllBase/Model/Result/PddBuyerAfterSaleLiteInfo.cs index e6563ef..b7cfd17 100644 --- a/AllBase/Model/Result/PddBuyerAfterSaleLiteInfo.cs +++ b/AllBase/Model/Result/PddBuyerAfterSaleLiteInfo.cs @@ -183,6 +183,14 @@ namespace AllBase.Model.Result get { return this.GetValue(x => x.TransitPickupTime); } set { this.SetValue(x => x.TransitPickupTime, value); } } + /// + /// 买手总店售后地址 + /// + public string AfterSaleAddress + { + get { return this.GetValue(x => x.AfterSaleAddress); } + set { this.SetValue(x => x.AfterSaleAddress, value); } + } public string ProdInfoStr diff --git a/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs b/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs index 3aeb9fb..2624541 100644 --- a/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs +++ b/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs @@ -255,6 +255,10 @@ namespace TemuKJD.ToolForms //if (this.openType != EnumOpenType.login) { var t = CEFBrowser.SetCookieAsync(JsonHelper.SerializeObject(cookieLst), cefWebBrowser.GetCookieManager(null)); + if (InitUrl.Contains("&after_sales_reason=88")) + { + t.Wait(5000); + } } if (!string.IsNullOrEmpty(InitUrl)) @@ -441,8 +445,18 @@ namespace TemuKJD.ToolForms { // 自动修改收货地址为中转仓 var transit = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransDetailAddress == txtBuyTransitWarehouse.Text.Trim()); + if (transit == null) + { + BaseMsgForm.ShowError("仓库已发生改变,请点击重新关联商品,选择仓库后重新拍单!"); + return; + } if (transit != null && IsChangeAddress == false && HasChangeAddress == false) { + if (IsSoldOut) + { + BaseMsgForm.ShowError("商品已售罄,请重新关联未售罄商品后再拍单!"); + return; + } if (!IsSoldOut) { Task.Run(() => @@ -821,6 +835,7 @@ namespace TemuKJD.ToolForms if (filterOrderAction != null) { + item.SetOrderItemTextProperty(); filterOrderAction(order, false); } } @@ -957,7 +972,7 @@ namespace TemuKJD.ToolForms orderItem.SetOrderItemTextProperty(); // 利润计算重置为最小值,控件Resource更新时将计算利润 orderItem.ProfitCount = decimal.MinValue; - var order = GlobalConfig.lstFilterOrder.FirstOrDefault(o => o.order_id == orderItem.order_id); + var order = orderItem?.ItemOrder; if (filterOrderAction != null && order != null) { filterOrderAction(order, true); @@ -1042,7 +1057,7 @@ namespace TemuKJD.ToolForms orderItem.SetOrderItemTextProperty(); // 利润计算重置为最小值,控件Resource更新时将计算利润 orderItem.ProfitCount = decimal.MinValue; - var order = GlobalConfig.lstFilterOrder.FirstOrDefault(o => o.order_id == orderItem.order_id); + var order = orderItem?.ItemOrder; if (filterOrderAction != null && order != null) { filterOrderAction(order, true); diff --git a/Work/_29Tools/Forms/PddMobileBuyOrderForm.designer.cs b/Work/_29Tools/Forms/PddMobileBuyOrderForm.designer.cs index b5ea5ea..7076e82 100644 --- a/Work/_29Tools/Forms/PddMobileBuyOrderForm.designer.cs +++ b/Work/_29Tools/Forms/PddMobileBuyOrderForm.designer.cs @@ -306,15 +306,17 @@ this.txtBuyPrice.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.txtBuyPrice.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtBuyPrice.Font = new System.Drawing.Font("微软雅黑", 11.25F, System.Drawing.FontStyle.Bold); + this.txtBuyPrice.ForeColor = System.Drawing.Color.Red; this.txtBuyPrice.Location = new System.Drawing.Point(310, 110); this.txtBuyPrice.Name = "txtBuyPrice"; - this.txtBuyPrice.Size = new System.Drawing.Size(152, 23); + this.txtBuyPrice.Size = new System.Drawing.Size(152, 27); this.txtBuyPrice.TabIndex = 837; // // label18 // this.label18.AutoSize = true; - this.label18.Location = new System.Drawing.Point(254, 113); + this.label18.Location = new System.Drawing.Point(254, 115); this.label18.Name = "label18"; this.label18.Size = new System.Drawing.Size(56, 17); this.label18.TabIndex = 836; @@ -323,15 +325,17 @@ // txtBuyCnt // this.txtBuyCnt.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtBuyCnt.Font = new System.Drawing.Font("微软雅黑", 11.25F, System.Drawing.FontStyle.Bold); + this.txtBuyCnt.ForeColor = System.Drawing.Color.Red; this.txtBuyCnt.Location = new System.Drawing.Point(74, 110); this.txtBuyCnt.Name = "txtBuyCnt"; - this.txtBuyCnt.Size = new System.Drawing.Size(152, 23); + this.txtBuyCnt.Size = new System.Drawing.Size(152, 27); this.txtBuyCnt.TabIndex = 835; // // label19 // this.label19.AutoSize = true; - this.label19.Location = new System.Drawing.Point(18, 113); + this.label19.Location = new System.Drawing.Point(18, 115); this.label19.Name = "label19"; this.label19.Size = new System.Drawing.Size(56, 17); this.label19.TabIndex = 834; @@ -342,9 +346,11 @@ this.txtShopOrderItemPrice.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.txtShopOrderItemPrice.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtShopOrderItemPrice.Location = new System.Drawing.Point(321, 259); + this.txtShopOrderItemPrice.Font = new System.Drawing.Font("微软雅黑", 11.25F, System.Drawing.FontStyle.Bold); + this.txtShopOrderItemPrice.ForeColor = System.Drawing.Color.Red; + this.txtShopOrderItemPrice.Location = new System.Drawing.Point(321, 257); this.txtShopOrderItemPrice.Name = "txtShopOrderItemPrice"; - this.txtShopOrderItemPrice.Size = new System.Drawing.Size(152, 23); + this.txtShopOrderItemPrice.Size = new System.Drawing.Size(152, 27); this.txtShopOrderItemPrice.TabIndex = 833; // // label16 @@ -359,9 +365,11 @@ // txtShopOrderItemCnt // this.txtShopOrderItemCnt.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtShopOrderItemCnt.Location = new System.Drawing.Point(85, 259); + this.txtShopOrderItemCnt.Font = new System.Drawing.Font("微软雅黑", 11.25F, System.Drawing.FontStyle.Bold); + this.txtShopOrderItemCnt.ForeColor = System.Drawing.Color.Red; + this.txtShopOrderItemCnt.Location = new System.Drawing.Point(85, 257); this.txtShopOrderItemCnt.Name = "txtShopOrderItemCnt"; - this.txtShopOrderItemCnt.Size = new System.Drawing.Size(152, 23); + this.txtShopOrderItemCnt.Size = new System.Drawing.Size(152, 27); this.txtShopOrderItemCnt.TabIndex = 831; // // label17 @@ -378,7 +386,7 @@ this.txtBuyOrderId.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.txtBuyOrderId.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtBuyOrderId.Location = new System.Drawing.Point(74, 139); + this.txtBuyOrderId.Location = new System.Drawing.Point(74, 143); this.txtBuyOrderId.Name = "txtBuyOrderId"; this.txtBuyOrderId.Size = new System.Drawing.Size(152, 23); this.txtBuyOrderId.TabIndex = 829; @@ -386,7 +394,7 @@ // label15 // this.label15.AutoSize = true; - this.label15.Location = new System.Drawing.Point(6, 142); + this.label15.Location = new System.Drawing.Point(6, 146); this.label15.Name = "label15"; this.label15.Size = new System.Drawing.Size(68, 17); this.label15.TabIndex = 828; @@ -422,7 +430,7 @@ this.txtShopSpecName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.txtShopSpecName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtShopSpecName.Location = new System.Drawing.Point(85, 172); + this.txtShopSpecName.Location = new System.Drawing.Point(85, 170); this.txtShopSpecName.Name = "txtShopSpecName"; this.txtShopSpecName.Size = new System.Drawing.Size(388, 23); this.txtShopSpecName.TabIndex = 817; @@ -430,7 +438,7 @@ // label14 // this.label14.AutoSize = true; - this.label14.Location = new System.Drawing.Point(29, 175); + this.label14.Location = new System.Drawing.Point(29, 173); this.label14.Name = "label14"; this.label14.Size = new System.Drawing.Size(56, 17); this.label14.TabIndex = 816; @@ -450,7 +458,7 @@ // txtUpSpuCode // this.txtUpSpuCode.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtUpSpuCode.Location = new System.Drawing.Point(85, 230); + this.txtUpSpuCode.Location = new System.Drawing.Point(85, 228); this.txtUpSpuCode.Name = "txtUpSpuCode"; this.txtUpSpuCode.Size = new System.Drawing.Size(152, 23); this.txtUpSpuCode.TabIndex = 814; @@ -458,7 +466,7 @@ // label12 // this.label12.AutoSize = true; - this.label12.Location = new System.Drawing.Point(241, 233); + this.label12.Location = new System.Drawing.Point(241, 231); this.label12.Name = "label12"; this.label12.Size = new System.Drawing.Size(80, 17); this.label12.TabIndex = 813; @@ -469,7 +477,7 @@ this.txtUpSkuCode.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.txtUpSkuCode.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtUpSkuCode.Location = new System.Drawing.Point(321, 230); + this.txtUpSkuCode.Location = new System.Drawing.Point(321, 228); this.txtUpSkuCode.Name = "txtUpSkuCode"; this.txtUpSkuCode.Size = new System.Drawing.Size(152, 23); this.txtUpSkuCode.TabIndex = 812; @@ -477,7 +485,7 @@ // label11 // this.label11.AutoSize = true; - this.label11.Location = new System.Drawing.Point(5, 233); + this.label11.Location = new System.Drawing.Point(5, 231); this.label11.Name = "label11"; this.label11.Size = new System.Drawing.Size(80, 17); this.label11.TabIndex = 811; @@ -488,7 +496,7 @@ this.txtShopSkuId.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.txtShopSkuId.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtShopSkuId.Location = new System.Drawing.Point(321, 201); + this.txtShopSkuId.Location = new System.Drawing.Point(321, 199); this.txtShopSkuId.Name = "txtShopSkuId"; this.txtShopSkuId.Size = new System.Drawing.Size(152, 23); this.txtShopSkuId.TabIndex = 810; @@ -496,7 +504,7 @@ // label10 // this.label10.AutoSize = true; - this.label10.Location = new System.Drawing.Point(252, 204); + this.label10.Location = new System.Drawing.Point(252, 202); this.label10.Name = "label10"; this.label10.Size = new System.Drawing.Size(69, 17); this.label10.TabIndex = 809; @@ -505,7 +513,7 @@ // label9 // this.label9.AutoSize = true; - this.label9.Location = new System.Drawing.Point(16, 204); + this.label9.Location = new System.Drawing.Point(16, 202); this.label9.Name = "label9"; this.label9.Size = new System.Drawing.Size(69, 17); this.label9.TabIndex = 808; @@ -514,7 +522,7 @@ // txtShopGoodsId // this.txtShopGoodsId.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtShopGoodsId.Location = new System.Drawing.Point(85, 201); + this.txtShopGoodsId.Location = new System.Drawing.Point(85, 199); this.txtShopGoodsId.Name = "txtShopGoodsId"; this.txtShopGoodsId.Size = new System.Drawing.Size(152, 23); this.txtShopGoodsId.TabIndex = 807; @@ -534,7 +542,7 @@ this.txtShopGoodsName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.txtShopGoodsName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtShopGoodsName.Location = new System.Drawing.Point(85, 143); + this.txtShopGoodsName.Location = new System.Drawing.Point(85, 141); this.txtShopGoodsName.Name = "txtShopGoodsName"; this.txtShopGoodsName.Size = new System.Drawing.Size(388, 23); this.txtShopGoodsName.TabIndex = 805; @@ -542,7 +550,7 @@ // label7 // this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(29, 146); + this.label7.Location = new System.Drawing.Point(29, 144); this.label7.Name = "label7"; this.label7.Size = new System.Drawing.Size(56, 17); this.label7.TabIndex = 804; @@ -555,7 +563,7 @@ this.btnManualUpdateBuyOrder.Cursor = System.Windows.Forms.Cursors.Hand; this.btnManualUpdateBuyOrder.DisabledBackColor = System.Drawing.Color.Empty; this.btnManualUpdateBuyOrder.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.btnManualUpdateBuyOrder.Location = new System.Drawing.Point(368, 198); + this.btnManualUpdateBuyOrder.Location = new System.Drawing.Point(368, 202); this.btnManualUpdateBuyOrder.Name = "btnManualUpdateBuyOrder"; this.btnManualUpdateBuyOrder.Size = new System.Drawing.Size(94, 23); this.btnManualUpdateBuyOrder.Style.Alignment = System.Drawing.StringAlignment.Center; @@ -844,7 +852,7 @@ this.pnlBuy.Controls.Add(this.txtBuyPrice); this.pnlBuy.Controls.Add(this.label24); this.pnlBuy.Controls.Add(this.label29); - this.pnlBuy.Location = new System.Drawing.Point(12, 291); + this.pnlBuy.Location = new System.Drawing.Point(12, 290); this.pnlBuy.Name = "pnlBuy"; this.pnlBuy.Size = new System.Drawing.Size(468, 226); this.pnlBuy.TabIndex = 872; @@ -852,7 +860,7 @@ // label28 // this.label28.AutoSize = true; - this.label28.Location = new System.Drawing.Point(266, 142); + this.label28.Location = new System.Drawing.Point(266, 146); this.label28.Name = "label28"; this.label28.Size = new System.Drawing.Size(44, 17); this.label28.TabIndex = 884; @@ -863,7 +871,7 @@ this.txtSourceCode.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.txtSourceCode.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtSourceCode.Location = new System.Drawing.Point(310, 139); + this.txtSourceCode.Location = new System.Drawing.Point(310, 143); this.txtSourceCode.Name = "txtSourceCode"; this.txtSourceCode.ReadOnly = true; this.txtSourceCode.Size = new System.Drawing.Size(152, 23); @@ -876,7 +884,7 @@ this.btnReMap.Cursor = System.Windows.Forms.Cursors.Hand; this.btnReMap.DisabledBackColor = System.Drawing.Color.Empty; this.btnReMap.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.btnReMap.Location = new System.Drawing.Point(9, 198); + this.btnReMap.Location = new System.Drawing.Point(9, 202); this.btnReMap.Name = "btnReMap"; this.btnReMap.Size = new System.Drawing.Size(94, 23); this.btnReMap.Style.Alignment = System.Drawing.StringAlignment.Center; @@ -897,7 +905,7 @@ // label25 // this.label25.AutoSize = true; - this.label25.Location = new System.Drawing.Point(18, 172); + this.label25.Location = new System.Drawing.Point(18, 176); this.label25.Name = "label25"; this.label25.Size = new System.Drawing.Size(56, 17); this.label25.TabIndex = 869; @@ -908,7 +916,7 @@ this.txtBuyTransitWarehouse.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.txtBuyTransitWarehouse.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtBuyTransitWarehouse.Location = new System.Drawing.Point(74, 169); + this.txtBuyTransitWarehouse.Location = new System.Drawing.Point(74, 173); this.txtBuyTransitWarehouse.Name = "txtBuyTransitWarehouse"; this.txtBuyTransitWarehouse.Size = new System.Drawing.Size(388, 23); this.txtBuyTransitWarehouse.TabIndex = 870; @@ -917,7 +925,7 @@ // this.label29.AutoSize = true; this.label29.ForeColor = System.Drawing.Color.SandyBrown; - this.label29.Location = new System.Drawing.Point(121, 201); + this.label29.Location = new System.Drawing.Point(121, 205); this.label29.Name = "label29"; this.label29.Size = new System.Drawing.Size(248, 17); this.label29.TabIndex = 892; diff --git a/Work/_29Tools/Forms/PddMobileLoginForm.cs b/Work/_29Tools/Forms/PddMobileLoginForm.cs index 6148b53..989829f 100644 --- a/Work/_29Tools/Forms/PddMobileLoginForm.cs +++ b/Work/_29Tools/Forms/PddMobileLoginForm.cs @@ -38,6 +38,9 @@ namespace TemuKJD.ToolForms public partial class PddMobileLoginForm : BaseGeneralForm { + // 拼多多买手退货退款售后地址 + // https://mobile.yangkeduo.com/complaint.html?order_sn=260718-101481213440980&after_sales_reason=0&after_sales_type=2&after_sales_code=1002 + public static PddMobileLoginForm PddMobileLoginInstance { get; set; } = null; public int CloseAfterSecond { get; set; } diff --git a/Work/_29Tools/Forms/PddMobileLoginForm.designer.cs b/Work/_29Tools/Forms/PddMobileLoginForm.designer.cs index 5a6a335..6b78617 100644 --- a/Work/_29Tools/Forms/PddMobileLoginForm.designer.cs +++ b/Work/_29Tools/Forms/PddMobileLoginForm.designer.cs @@ -82,7 +82,7 @@ this.splitContainer1.Panel2.Controls.Add(this.panel2); this.splitContainer1.Panel2.Paint += new System.Windows.Forms.PaintEventHandler(this.splitContainer1_Panel2_Paint); this.splitContainer1.Size = new System.Drawing.Size(1022, 704); - this.splitContainer1.SplitterDistance = 486; + this.splitContainer1.SplitterDistance = 487; this.splitContainer1.SplitterWidth = 3; this.splitContainer1.TabIndex = 4; // diff --git a/Work/_29Tools/Forms/PddMobileLoginForm.resx b/Work/_29Tools/Forms/PddMobileLoginForm.resx index c963c3c..35a31a1 100644 --- a/Work/_29Tools/Forms/PddMobileLoginForm.resx +++ b/Work/_29Tools/Forms/PddMobileLoginForm.resx @@ -1,17 +1,17 @@  -