From d06ec9badc772341e18c18a22253f4ad7b25141b Mon Sep 17 00:00:00 2001 From: wule Date: Sat, 15 Aug 2026 23:05:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B7=BB=E5=8A=A0=E4=BB=A3?= =?UTF-8?q?=E5=8F=91=E6=88=96=E5=8F=96=E6=B6=88=E4=BB=A3=E5=8F=91=E7=9A=84?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ctrls/OrderCtrls/OrderListCtrl.xaml.cs | 2 +- .../OrderCtrls/OrderListRowItemCtrl.xaml.cs | 36 ++++++++----- AllBase/BaseClass.cs | 2 +- AllBase/Model/DBModel/ShopLoginInfo.cs | 2 +- AllBase/Model/DBModel/oms_wei_refund_info.cs | 16 ++++-- Work/_29Tools/BLL/WxApiBLL.cs | 51 ++++++++++++++----- 6 files changed, 76 insertions(+), 33 deletions(-) diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs index 477d5e9..db7ddda 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs @@ -1893,7 +1893,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls int errorCount = 0; foreach (oms_wei_order_info item in list) { - var rst = await WxApiBLL.WxSearchAndDropshipCancel(item.Shop, item); + var rst = await WxApiBLL.WxSearchAndDropshipCancelAsync(item.Shop, item); if (rst == "success") { var ret = await _shipGiftService.Send(item.order_id, giftType); diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs index c159016..8936495 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs @@ -513,14 +513,21 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls // Api检测是否加入代发 if (orderItem.BuyGoodsBtnTxt == "云仓拍单" && !isAbnormalOrder) { - var apiSearchDropship = new WxApiBLL().WxApiDropshipSearch(orderItem.Shop, orderItem.order_id, 100); + var apiSearchDropship = new WxApiBLL().WxApiDropshipSearch(orderItem.Shop, orderItem.order_id, 100); + if (!apiSearchDropship.Contains("\"errcode\":0")) + { + BaseMsgWindow.ShowError("查询代发失败!" + BaseRegex.GetStringJson(ref apiSearchDropship, "msg")); + return; + } if (apiSearchDropship.Contains("\"ds_order_id_list\":[]")) { var apiAddDropship = new WxApiBLL().WxApiDropshipAssign(orderItem.Shop, orderItem.order_id, orderItem.product_id, orderItem.sku_id, orderItem.sku_cnt.ParseToInt()); + if (!apiAddDropship.Contains("\"errcode\":0")) + { + BaseMsgWindow.ShowError("设置代发失败!请确商品已加入29供货商代发!" + BaseRegex.GetStringJson(ref apiAddDropship, "msg")); + return; + } } - apiSearchDropship = new WxApiBLL().WxApiDropshipSearch(orderItem.Shop, orderItem.order_id, 100); - if (apiSearchDropship.Contains("\"ds_order_id_list\":[]")) - BaseMsgWindow.ShowError("店铺后台未查询到该代发单,请确商品已加入29供货商代发"); } // 模拟检测是否加入代发 @@ -1155,6 +1162,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls directBuyOrder(); } + /// + /// 直发拍单 + /// void directBuyOrder() { var orderItem = this.DataContext as oms_wei_order_item_info; @@ -1182,7 +1192,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls Thread.Sleep(2000); Dispatcher.Invoke(new Action(() => { btnBuyOrder.IsEnabled = true; })); }); - Task.Run(() => + Task.Run(async() => { // 拍单前查询订单是否退款 var orderId = orderItem.order_id; @@ -1217,13 +1227,13 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (apiSearchDropship.Contains("ds_order_id_list") && !apiSearchDropship.Contains("\"ds_order_id_list\":[]")) { var dsOrderId = JsonHelper.JObjectParse(apiSearchDropship)["ds_order_id_list"].FirstOrDefault().ParseToString(); - var apiCancelDropship = new WxApiBLL().WxApiDropshipCancel(orderItem.Shop, orderItem.ItemOrder, dsOrderId); - } - apiSearchDropship = new WxApiBLL().WxApiDropshipSearch(orderItem.Shop, orderItem.order_id, 100); - if (!apiSearchDropship.Contains("\"ds_order_id_list\":[]")) - { - BaseMsgWindow.ShowError("代发查询失败,请确商品未加入代发"); - return; + var apiCancelDropship = await new WxApiBLL().WxApiDropshipCancel(orderItem.Shop, orderItem.ItemOrder, dsOrderId); + + if (!apiCancelDropship.Contains("\"errcode\":0")) + { + BaseMsgWindow.ShowError("取消代发失败!请确商品未加入代发!" + BaseRegex.GetStringJsonByRegs(ref apiSearchDropship, apiSearchDropship, "errmsg")); + return; + } } @@ -1383,7 +1393,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls { try { - var rst = await WxApiBLL.WxSearchAndDropshipCancel(orderItem.Shop, orderItem.ItemOrder); + var rst = await WxApiBLL.WxSearchAndDropshipCancelAsync(orderItem.Shop, orderItem.ItemOrder); if (rst == "success") { var ret = await MainWindow.Instance.orderListCtrl._shipGiftService.Send(orderItem.order_id, giftType); diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs index 39e46e5..f4e9f4b 100644 --- a/AllBase/BaseClass.cs +++ b/AllBase/BaseClass.cs @@ -36,7 +36,7 @@ namespace AllBase /// 版本ID /// - public static int VersionCount = 232; + public static int VersionCount = 233; 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/ShopLoginInfo.cs b/AllBase/Model/DBModel/ShopLoginInfo.cs index c8d18d9..1711824 100644 --- a/AllBase/Model/DBModel/ShopLoginInfo.cs +++ b/AllBase/Model/DBModel/ShopLoginInfo.cs @@ -124,6 +124,6 @@ namespace AllBase.Model.DBModel public int? markupRate { get; set; } // 10, public string accessToken { get; set; } // "100_cw6r7-hhGaLKG7ndv558eO_3z3-5PokAG8d0Y1vc3Rczd3FuIqkefdaqVj5CNtkCYtMbTYvhnwJ7-JkBVQVe9nE0KK5SBI8AlfA7E0_sTtqcwMqKAXoCj1X4h3sjZIMX84dboC-PfzlI0wh0ADHeAHDSVZ" public DateTime mdyTime { get; set; } = DateTime.MinValue; - public bool isExpire { get { return mdyTime.AddMinutes(60) < DateTime.Now; } } + public bool isExpire { get { return mdyTime.AddMinutes(30) < DateTime.Now; } } } } diff --git a/AllBase/Model/DBModel/oms_wei_refund_info.cs b/AllBase/Model/DBModel/oms_wei_refund_info.cs index bc0f64e..4d1077e 100644 --- a/AllBase/Model/DBModel/oms_wei_refund_info.cs +++ b/AllBase/Model/DBModel/oms_wei_refund_info.cs @@ -100,13 +100,23 @@ namespace AllBase.Model.DBModel else if (value == "MERCHANT_FAIL") this.RefundStatusStr = "售后关闭"; else if (value == "USER_WAIT_CONFIRM_UPDATE") this.RefundStatusStr = "待用户处理商家协商"; else if (value == "USER_WAIT_HANDLE_MERCHANT_AFTER_SALE") this.RefundStatusStr = "待用户处理商家代发起的售后申请"; - else if (value == "WAIT_PACKAGE_INTERCEPT") this.RefundStatusStr = "物流拦截中"; + else if (value == "WAIT_PACKAGE_INTERCEPT") this.RefundStatusStr = "物流拦截中"; + else if (value == "USER_WAIT_RECEIPT") this.RefundStatusStr = "换货商品已发货"; + else this.RefundStatusStr = value; + //MERCHANT_EXCHANGE_SUCCESS + + if (order_id == "3738189148379849472") + { + + } List refundStrLst = new List() { "商家受理中", "待买家退货", "待商家收货", "商家逾期未退款", "退款完成", "退货退款完成", "平台退款中", "待用户确认", "待用户处理商家协商", "待用户处理商家代发起的售后申请", "物流拦截中"}; - if (refundStrLst.Contains(this.RefundStatusStr) || RefundStatusStr == "售后状态读取失败") + if (refundStrLst.Contains(this.RefundStatusStr)) this.IsRefund = true; - } + if (RefundStatusStr == "售后状态读取失败") + this.IsRefund = true; + } } /// /// 买家身份标识 diff --git a/Work/_29Tools/BLL/WxApiBLL.cs b/Work/_29Tools/BLL/WxApiBLL.cs index 3b49871..771cb97 100644 --- a/Work/_29Tools/BLL/WxApiBLL.cs +++ b/Work/_29Tools/BLL/WxApiBLL.cs @@ -65,42 +65,62 @@ namespace Work._29Tools.BLL /// public string WxApiDropshipSearch(ShopLoginInfo shop, string orderId, int status) { + bool IsRetry = false; + + Retry: + var token = GetWxToken(shop); StringBuilder sb = new StringBuilder(); sb.Append(UserLogin.GetSignaturex()); - sb.Append("&token=").Append(GetWxToken(shop).accessToken); + sb.Append("&token=").Append(token.accessToken); sb.Append("&order_id=").Append(orderId); sb.Append("&status=").Append(status); var url = BaseClass.Build29WxObjString("product/wx_api_dropship_search"); var data = sb.ToString(); var html = GetHtml.PostUtf8(url, data); - if (string.IsNullOrEmpty(html) || !html.Contains("\"errcode\":0")) - html = GetHtml.PostUtf8(url, data); + if (html.Contains("access_token expired") && !IsRetry) + { + token.mdyTime = DateTime.MinValue; + IsRetry = true; + goto Retry; + } return html; } public string WxApiDropshipAssign(ShopLoginInfo shop, string orderId, string spuId, string skuId, int cnt) { + bool IsRetry = false; + + Retry: + var token = GetWxToken(shop); StringBuilder sb = new StringBuilder(); sb.Append(UserLogin.GetSignaturex()); - sb.Append("&token=").Append(GetWxToken(shop).accessToken); + sb.Append("&token=").Append(token.accessToken); sb.Append("&order_id=").Append(orderId); sb.Append("&dropship_product_list=").Append("[{\"spu_id\":\"").Append(spuId + "\",\"sku_id\":\"").Append(skuId + "\",\"product_cnt\":").Append(cnt).Append("}]"); var url = BaseClass.Build29WxObjString("product/wx_api_dropship_assign"); var data = sb.ToString(); var html = GetHtml.PostUtf8(url, data); - if (string.IsNullOrEmpty(html) || !html.Contains("\"errcode\":0")) - html = GetHtml.PostUtf8(url, data); + if (html.Contains("access_token expired") && !IsRetry) + { + token.mdyTime = DateTime.MinValue; + IsRetry = true; + goto Retry; + } return html; } - public string WxApiDropshipCancel(ShopLoginInfo shop, oms_wei_order_info order, string dropShopOrderId) + public async Task WxApiDropshipCancel(ShopLoginInfo shop, oms_wei_order_info order, string dropShopOrderId) { + bool IsRetry = false; + + Retry: + var token = GetWxToken(shop); StringBuilder sb = new StringBuilder(); sb.Append(UserLogin.GetSignaturex()); - sb.Append("&token=").Append(GetWxToken(shop).accessToken); + sb.Append("&token=").Append(token.accessToken); sb.Append("&order_id=").Append(order.order_id); sb.Append("&ds_order_id=").Append(dropShopOrderId); sb.Append("&dropship_product_list=").Append("["); @@ -113,13 +133,17 @@ namespace Work._29Tools.BLL var url = BaseClass.Build29WxObjString("product/wx_api_dropship_cancel"); var data = sb.ToString(); - var html = GetHtml.PostUtf8(url, data); - if (string.IsNullOrEmpty(html) || !html.Contains("\"errcode\":0")) - html = GetHtml.PostUtf8(url, data); + var html = await GetHtml.PostUtf8Async(url, data); + if (html.Contains("access_token expired") && !IsRetry) + { + token.mdyTime = DateTime.MinValue; + IsRetry = true; + goto Retry; + } return html; } - public static async Task WxSearchAndDropshipCancel(ShopLoginInfo shop, oms_wei_order_info order) + public static async Task WxSearchAndDropshipCancelAsync(ShopLoginInfo shop, oms_wei_order_info order) { string orderId = order.order_id; @@ -131,13 +155,12 @@ namespace Work._29Tools.BLL if (apiSearchDropship.Contains("ds_order_id_list") && !apiSearchDropship.Contains("\"ds_order_id_list\":[]")) { var dsOrderId = JsonHelper.JObjectParse(apiSearchDropship)["ds_order_id_list"].FirstOrDefault().ParseToString(); - var apiCancelDropship = new WxApiBLL().WxApiDropshipCancel(shop, order, dsOrderId); + var apiCancelDropship = await new WxApiBLL().WxApiDropshipCancel(shop, order, dsOrderId); if (!apiCancelDropship.Contains("\"errcode\":0")) { return apiCancelDropship; } } - //apiSearchDropship = new WxApiBLL().WxApiDropshipSearch(shop, orderId, 100); return "success"; } }