diff --git a/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs b/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs index 9f02c3d..29e9194 100644 --- a/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs @@ -64,6 +64,8 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls { private static readonly object locker = new object(); + private static ConcurrentList lstTask = new ConcurrentList(); + string lblMsgStr = "当前没有任何操作"; public string LblMsgStr { @@ -99,6 +101,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls public static ConcurrentList lstPddBuyerAfterSaleInfoLite { get; set; } = new ConcurrentList(); public static ObservableCollectionThreadSafe lstFilterPddBuyerAfterSaleInfoLite { get; set; } = new ObservableCollectionThreadSafe(); public static ConcurrentList lstPddBuyerOrderVoidAfterSaleOrderSn { get; set; } = new ConcurrentList(); + public static ConcurrentList lstdisctinctOrderSn = new ConcurrentList(); public CancellationTokenSource cancellationTokenSource { get; set; } = new CancellationTokenSource(); public BuyerReadOrderConfig buyerReadOrderConfig = new BuyerReadOrderConfig(); public DateTime nextGetOrderTime = DateTime.MinValue; @@ -421,7 +424,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (ordersStr != null && ordersStr.StartsWith("{\"3\":")) { ordersStr = "{\"orders\":" + ordersStr.Substring(5); - await CefReadBuyerOrder(buyerId, ordersStr); + await CefReadBuyerOrderQueue(buyerId, ordersStr); } } } @@ -443,7 +446,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (ordersStr != null && ordersStr.StartsWith("{\"2\":")) { ordersStr = "{\"orders\":" + ordersStr.Substring(5); - await CefReadBuyerOrder(buyerId, ordersStr); + await CefReadBuyerOrderQueue(buyerId, ordersStr); } } } @@ -452,7 +455,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls // 读订单 if (/*(cefAddress.Contains("orders.html")) &&*/ url1.StartsWith("https://mobile.yangkeduo.com/proxy/api/api/aristotle/order_list_v")) //https://mobile.yangkeduo.com/proxy/api/api/aristotle/order_list_v4?pdduid=6766109923730 { - await CefReadBuyerOrder(url1, data1); + await CefReadBuyerOrderQueue(url1, data1); } // 售后 第一页 @@ -702,13 +705,9 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls pdd_afterSale.AfterSaleAddress = buyer_after_sale?.afterSaleAddress; } - async Task CefReadBuyerOrder(string url, string data) + + async Task CefReadBuyerOrderQueue(string url, string data) { - if (data.Contains("轻奢壁挂式香皂盒置物架卫生间沥水家居可拆卸收纳盒翻盖肥皂盒")) - { - - } - var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => url.Contains(b.buyer_id)); if (buyer == null) return; @@ -718,11 +717,8 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls //{"server_time":1775789489,"orders":[],"extra_info":{}} if (data.Contains("\"orders\":[]")) { - Dispatcher.Invoke(new Action(() => - { - lblMsg.Content = buyer.buyer_name + " 获取到空订单列表,退出自动滑动 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); - })); - currentReadBuyer = ""; + ShowBuyerOrderReadInfo(buyer, " 获取到空订单列表,退出自动滑动 "); + currentReadBuyer = ""; return; } if (data.Contains("\"error_code\":40001")) @@ -732,15 +728,29 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls return; } - Dispatcher.Invoke(new Action(() => - { - lblMsg.Content = buyer.buyer_name + " 正在获取订单列表 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); - })); - - var list = JsonHelper.DeserializeJsonToList(JsonHelper.JObjectParse(data)["orders"].ParseToString()); + var list = JsonHelper.DeserializeJsonToList(JsonHelper.JObjectParse(data)["orders"].ParseToString()); + var isBreak = false; + lock (locker) + { + if (list.All(l => lstdisctinctOrderSn.Contains(l.order_sn))) + isBreak = true; + lstdisctinctOrderSn.AddRange(list.Where(l => !lstdisctinctOrderSn.Contains(l.order_sn)).Select(l => l.order_sn).ToList()); + } + if (isBreak) + { + ShowBuyerOrderReadInfo(buyer, " 获取到重复订单列表,退出自动滑动 "); + currentReadBuyer = ""; + return; + } if (list.Count > 0) - dicPddOrderOffset[buyer] = list.LastOrDefault().order_sn; + dicPddOrderOffset[buyer] = list.LastOrDefault()?.order_sn; + + ShowBuyerOrderReadInfo(buyer, " 正在获取订单列表 " + list?.LastOrDefault()?.order_sn + " "); + if ((list?.LastOrDefault()?.order_sn).ParseToString().Contains("PO")) + { + //PO-261024-019168007731171 + } // 提取拼多多外采订单列表 var out_order_nos = string.Join(",", list.Select(bo => bo.order_sn)); @@ -789,77 +799,74 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls // 获取订单售后,暂时关闭,使用订单详情售后状态字段 //var refunds = GetOrderRefundInfo(order_ids); - foreach (PddBuyerOrderLiteInfo o in list) - { - o.buyerId = buyer.buyer_id; - o.buyerName = buyer.buyer_name; + foreach (PddBuyerOrderLiteInfo o in list) + { + o.buyerId = buyer.buyer_id; + o.buyerName = buyer.buyer_name; - if (o.order_sn == "260923-573109716621688") - { - - } - - // 查找店铺订单并更新店铺订单状态 - var orderItemExt = orderExtList.FirstOrDefault(oie => oie.out_order_id == o.order_sn && oie.buy_type == "直发"); - if (orderItemExt != null) - { - o.WxSendTypeStr = "直发"; - o.ShopOrderIdStr = orderItemExt.order_id; - o.ShopOrderSkuIdStr = orderItemExt.sku_id; - o.sendStatus = ""; - var wxOrder = orders.FirstOrDefault(ord => ord.order_id == o.ShopOrderIdStr); - if (wxOrder != null) - { - o.ShopOrderRefundStr = ""; // "店铺售后" 或者 ""; - var wxOrderItem = wxOrder.orderItems.FirstOrDefault(oi => oi.sku_id == o.ShopOrderSkuIdStr); - if (wxOrderItem != null) - { - o.ShopOrderSkuNameStr = wxOrderItem.SkuAttrStr; - if (wxOrderItem?.refund_status > 1) - { - o.ShopOrderRefundStr = "店铺售后"; - } - } + // 查找店铺订单并更新店铺订单状态 + var orderItemExt = orderExtList.FirstOrDefault(oie => oie.out_order_id == o.order_sn && oie.buy_type == "直发"); + if (orderItemExt != null) + { + o.WxSendTypeStr = "直发"; + o.ShopOrderIdStr = orderItemExt.order_id; + o.ShopOrderSkuIdStr = orderItemExt.sku_id; + o.sendStatus = ""; + var wxOrder = orders.FirstOrDefault(ord => ord.order_id == o.ShopOrderIdStr); + if (wxOrder != null) + { + o.ShopOrderRefundStr = ""; // "店铺售后" 或者 ""; + var wxOrderItem = wxOrder.orderItems.FirstOrDefault(oi => oi.sku_id == o.ShopOrderSkuIdStr); + if (wxOrderItem != null) + { + o.ShopOrderSkuNameStr = wxOrderItem.SkuAttrStr; + if (wxOrderItem?.refund_status > 1) + { + o.ShopOrderRefundStr = "店铺售后"; + } + } o.WxOrderStatus = wxOrder?.status; o.OutAfterSaleStatusStr = wxOrder.out_after_sale_status; - } - } - else - { - var transit_item = transitOrderList.FirstOrDefault(t1 => t1.out_order_no == o.order_sn); - oms_wei_order_info shopOrder = null; - oms_wei_order_item_info orderItem = null; - if (transit_item != null) - { - shopOrder = orders.FirstOrDefault(o1 => o1.order_id == transit_item.order_no); - orderItem = shopOrder?.orderItems.FirstOrDefault(oi => oi.ItemTransitOrders.Any(t1 => t1.out_order_no == o.order_sn)); - //var refund_item = refunds.FirstOrDefault(ri => ri.order_id == order_item?.order_id) ?? order_item?.ItemRefund; - UpdateOrderStatus(o, shopOrder, orderItem, transit_item); - } - } + } + } + else + { + var transit_item = transitOrderList.FirstOrDefault(t1 => t1.out_order_no == o.order_sn); + oms_wei_order_info shopOrder = null; + oms_wei_order_item_info orderItem = null; + if (transit_item != null) + { + shopOrder = orders.FirstOrDefault(o1 => o1.order_id == transit_item.order_no); + orderItem = shopOrder?.orderItems.FirstOrDefault(oi => oi.ItemTransitOrders.Any(t1 => t1.out_order_no == o.order_sn)); + //var refund_item = refunds.FirstOrDefault(ri => ri.order_id == order_item?.order_id) ?? order_item?.ItemRefund; + UpdateOrderStatus(o, shopOrder, orderItem, transit_item); + } + } - bool isUpdate = false; - PddBuyerOrderLiteInfo order = null; - Dispatcher.Invoke(new Action(() => - { - order = lstPddBuyerOrderInfoLite.FirstOrDefault(or => or.order_sn == o.order_sn); - })); - if (order == null) - { - order = o; - isUpdate = true; - Dispatcher.Invoke(new Action(() => - { - lstPddBuyerOrderInfoLite.Add(order); - })); - } - else - { + bool isUpdate = false; + PddBuyerOrderLiteInfo order = null; + lock (locker) + { + order = lstPddBuyerOrderInfoLite.FirstOrDefault(or => or.order_sn == o.order_sn); + } + ; + if (order == null) + { + order = o; + isUpdate = true; + lock (locker) + { + lstPddBuyerOrderInfoLite.Add(order); + } + ; + } + else + { string orderStr = JsonHelper.SerializeObject(order); - string oStr = JsonHelper.SerializeObject(o); - if (JsonHelper.SerializeObject(order) != JsonHelper.SerializeObject(o)) - { - order.WxSendTypeStr = o.WxSendTypeStr; + string oStr = JsonHelper.SerializeObject(o); + if (JsonHelper.SerializeObject(order) != JsonHelper.SerializeObject(o)) + { + order.WxSendTypeStr = o.WxSendTypeStr; if (!o.tracking_number.IsNullOrEmpty() && o.tracking_number != order.tracking_number) isUpdate = true; if (!o.outExpressCompanyCode.IsNullOrEmpty() && o.outExpressCompanyCode != order.outExpressCompanyCode) @@ -869,212 +876,214 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (order.WxSendTypeStr == "直发") - { - if (order.order_status_prompt.Contains("待发货") && !o.order_status_prompt.Contains("待发货")) - order.sendStatus = ""; - if (order.sendStatus == "已发送待发货订单" && o.order_status_prompt.Contains("待收货")) - order.sendStatus = ""; - } - else if (!o.sendStatus.IsNullOrEmpty()) - { - order.sendStatus = o.sendStatus; - } + { + if (order.order_status_prompt.Contains("待发货") && !o.order_status_prompt.Contains("待发货")) + order.sendStatus = ""; + if (order.sendStatus == "已发送待发货订单" && o.order_status_prompt.Contains("待收货")) + order.sendStatus = ""; + } + else if (!o.sendStatus.IsNullOrEmpty()) + { + order.sendStatus = o.sendStatus; + } - //order = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(o)); - order.activity_type = o.activity_type; - order.after_sales = o.after_sales; - order.discount_amount = o.discount_amount; - order.display_amount = o.display_amount; - order.extra_info = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(o.extra_info)); - order.order_amount = o.order_amount; - order.order_Goods = JsonHelper.DeserializeJsonToList(JsonHelper.SerializeObject(o.order_Goods)); - order.order_link_url = o.order_link_url; - order.order_prompt_color = o.order_prompt_color; - order.order_status_prompt = o.order_status_prompt; - order.parent_order_sn = o.parent_order_sn; - order.service_amount = o.service_amount; - order.shipping_amount = o.shipping_amount; - order.order_time = o.order_time; - order.tracking_number = o.tracking_number; + //order = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(o)); + order.activity_type = o.activity_type; + order.after_sales = o.after_sales; + order.discount_amount = o.discount_amount; + order.display_amount = o.display_amount; + order.extra_info = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(o.extra_info)); + order.order_amount = o.order_amount; + order.order_Goods = JsonHelper.DeserializeJsonToList(JsonHelper.SerializeObject(o.order_Goods)); + order.order_link_url = o.order_link_url; + order.order_prompt_color = o.order_prompt_color; + order.order_status_prompt = o.order_status_prompt; + order.parent_order_sn = o.parent_order_sn; + order.service_amount = o.service_amount; + order.shipping_amount = o.shipping_amount; + order.order_time = o.order_time; + order.tracking_number = o.tracking_number; - order.TransitCreateTime = o.TransitCreateTime; - order.TransitPickupTime = o.TransitPickupTime; + order.TransitCreateTime = o.TransitCreateTime; + order.TransitPickupTime = o.TransitPickupTime; - order.TransitWarehouseRawMessage = o.TransitWarehouseRawMessage; - order.WxOrderCreateTime = o.WxOrderCreateTime; - order.ShopIdStr = o.ShopIdStr; - order.ShopOrderIdStr = o.ShopOrderIdStr; - order.ShopOrderSkuIdStr = o.ShopOrderSkuIdStr; - order.ShopOrderSkuNameStr = o.ShopOrderSkuNameStr; - order.TransitBuyerOrderRefundStatus = o.TransitBuyerOrderRefundStatus; - order.TransitWarehouseIdStr = o.TransitWarehouseIdStr; - order.TransitWarehouseOrderCodeStr = o.TransitWarehouseOrderCodeStr; - order.Express1WaybillStr = o.Express1WaybillStr; - order.Express1CompanyStr = o.Express1CompanyStr; - order.Express2WaybillStr = o.Express2WaybillStr; - order.Express2CompanyStr = o.Express2CompanyStr; - order.TransferWareHouseStatus = o.TransferWareHouseStatus; - order.WxOrderVoidStatus = o.WxOrderVoidStatus; - order.PreAllocatedOrderNoStr = o.PreAllocatedOrderNoStr; - order.ShopOrderRefundStr = o.ShopOrderRefundStr; // "" 或者 "店铺售后" - order.OutAfterSaleStatusStr = o.OutAfterSaleStatusStr; // 店铺售后状态文本描述 - order.wxRefundStatus = o.wxRefundStatus; + order.TransitWarehouseRawMessage = o.TransitWarehouseRawMessage; + order.WxOrderCreateTime = o.WxOrderCreateTime; + order.ShopIdStr = o.ShopIdStr; + order.ShopOrderIdStr = o.ShopOrderIdStr; + order.ShopOrderSkuIdStr = o.ShopOrderSkuIdStr; + order.ShopOrderSkuNameStr = o.ShopOrderSkuNameStr; + order.TransitBuyerOrderRefundStatus = o.TransitBuyerOrderRefundStatus; + order.TransitWarehouseIdStr = o.TransitWarehouseIdStr; + order.TransitWarehouseOrderCodeStr = o.TransitWarehouseOrderCodeStr; + order.Express1WaybillStr = o.Express1WaybillStr; + order.Express1CompanyStr = o.Express1CompanyStr; + order.Express2WaybillStr = o.Express2WaybillStr; + order.Express2CompanyStr = o.Express2CompanyStr; + order.TransferWareHouseStatus = o.TransferWareHouseStatus; + order.WxOrderVoidStatus = o.WxOrderVoidStatus; + order.PreAllocatedOrderNoStr = o.PreAllocatedOrderNoStr; + order.ShopOrderRefundStr = o.ShopOrderRefundStr; // "" 或者 "店铺售后" + order.OutAfterSaleStatusStr = o.OutAfterSaleStatusStr; // 店铺售后状态文本描述 + order.wxRefundStatus = o.wxRefundStatus; order.WxOrderStatus = o.WxOrderStatus; - - var index = lstPddBuyerOrderInfoLite.IndexOf(order); - Dispatcher.Invoke(new Action(() => - { - lstPddBuyerOrderInfoLite.Remove(order); - lstPddBuyerOrderInfoLite.Insert(index, order); - })); - } - } - - if (filterOneBuyerOrder(order) == false) - { - Dispatcher.Invoke(new Action(() => - { - var orderExist = lstFilterPddBuyerOrderInfoLite.FirstOrDefault(oe => oe.order_sn == order.order_sn); - if (orderExist == null) - { - lstFilterPddBuyerOrderInfoLite.Add(order); - } - else - { - var index = lstFilterPddBuyerOrderInfoLite.IndexOf(orderExist); - lstFilterPddBuyerOrderInfoLite.Remove(orderExist); - lstFilterPddBuyerOrderInfoLite.Insert(index, order); - } - })); - } - - await Task.Run(() => - { - // 根据订单状态 取号/修改取号 - if (order.WxSendTypeStr == "直发") - { - // 微信售后,客户端取消直发买手订单 - if (order.ShopOrderRefundStr.ParseToString().Contains("售后")) - { - if (!",2,3,4,5,7,8,10,31,".Contains("," + (order.after_sales?.after_sales_status).ParseToString() + ",")) - { - // 待发货直接售后,并通知中转仓接口修改退货状态 - var afterSaleRst = PddDirectAutoAfterSale(order); - isUpdate = true; - } - } - if (GlobalConfig.BuyConfig.IsSyncDirectBuyOrderWaybill != true) - SendOrderE57(order); - } - else - { - // 微信售后,服务端自动作废订单,客户端取消买手订单即可 - if (order.ShopOrderRefundStr.ParseToString().Contains("售后")) - { - if (!",2,3,4,5,7,8,10,31,".Contains("," + (order.after_sales?.after_sales_status).ParseToString() + ",")) - { - // 待发货直接售后,并通知中转仓接口修改退货状态 - var afterSaleRst = PddTransitAutoAfterSale(order); - isUpdate = true; - } - } - if (order.TransitWarehouseRawMessage.ParseToString().Contains("超出派送范围")) - { - if (!",2,3,4,5,7,8,10,31,".Contains("," + (order.after_sales?.after_sales_status).ParseToString() + ",")) - { - // 待发货直接售后,并通知中转仓接口修改退货状态 - var afterSaleRst = PddTransitAutoAfterSale(order); - isUpdate = true; - } - } - SendTransitOrderE57(order); - } - - if (order.order_sn == "260924-431226960203223") - { - } - if (order.ShopOrderIdStr == "3739392779260688128") - { - } - if (order.WxSendTypeStr == "直发") - { - if (GlobalConfig.BuyConfig.IsSyncDirectBuyOrderWaybill && !string.IsNullOrEmpty(order.tracking_number) && order.WxOrderStatus < 30) - if (!lstSyncLogistics.Any(o => o.order_id == order.order_sn) || lstSyncLogistics.Any(o => o.order_id == order.order_sn && o.tracking_number.IsNullOrEmpty())) - isUpdate = true; - } - if (isUpdate && !string.IsNullOrEmpty(order.ShopOrderIdStr)/* && order.WxSendTypeStr != "直发"*/) - { - - // 买手订单状态记录到数据库 - order_pdd_buyer_order pddBuyerOrder = new order_pdd_buyer_order() - { - after_sales_status = (order.after_sales?.after_sales_status).ParseToInt(), - buyerId = order.buyerId, - buyerName = order.buyerName, - order_amount = order.order_amount.ParseToInt(), - order_sn = order.order_sn, - order_status_prompt = order.order_status_prompt, - outExpressCompanyCode = order.outExpressCompanyCode, - order_time = order.order_time, - pre_allocated_order_no = order.PreAllocatedOrderNoStr.ParseToInt(), - tracking_number = order.tracking_number, - TransitCreateTime = order.TransitCreateTime, - //TransitPickupTime = order.TransitPickupTime, - wx_order_id = order.ShopOrderIdStr, - wx_sku_id = order.ShopOrderSkuIdStr, - wx_send_type = order.WxSendTypeStr == "直发" ? 1 : 0, - }; - var url3 = BaseClass.Build29WxObjString("order/wx_add_mdy_buyer_order"); - var data3 = UserLogin.GetSignaturex(); - data3 += "&after_sales_status=" + pddBuyerOrder.after_sales_status; - data3 += "&buyerId=" + pddBuyerOrder.buyerId; - data3 += "&buyerName=" + pddBuyerOrder.buyerName; - data3 += "&order_amount=" + pddBuyerOrder.order_amount; - data3 += "&pdd_order_sn=" + pddBuyerOrder.order_sn; - data3 += "&order_status_prompt=" + pddBuyerOrder.order_status_prompt; - data3 += "&outExpressCompanyCode=" + pddBuyerOrder.outExpressCompanyCode; - data3 += "&order_time=" + pddBuyerOrder.order_time; - data3 += "&pre_allocated_order_no=" + pddBuyerOrder.pre_allocated_order_no; - data3 += "&tracking_number=" + pddBuyerOrder.tracking_number; - data3 += "&TransitCreateTime=" + pddBuyerOrder.TransitCreateTime.ToString("yyyy-MM-dd HH:mm:ss"); - //data3 += "&TransitPickupTime=" + pddBuyerOrder.TransitPickupTime.ToString("yyyy-MM-dd HH:mm:ss"); - data3 += "&wx_order_id=" + pddBuyerOrder.wx_order_id; - data3 += "&wx_sku_id=" + pddBuyerOrder.wx_sku_id; - data3 += "&wx_send_type=" + pddBuyerOrder.wx_send_type; - var html3 = GetHtml.PostUtf8(url3, data3); - if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200")) - html3 = GetHtml.PostUtf8(url3, data3); - - //勾选了调用同步单接口,必须直发且库里已有物流单号 - if (order.WxSendTypeStr == "直发") + lock (locker) { - if (GlobalConfig.BuyConfig.IsSyncDirectBuyOrderWaybill && !string.IsNullOrEmpty(order.tracking_number) && html3.Contains("\"code\":200")) - if (!lstSyncLogistics.Any(o => o.order_id == order.order_sn) || lstSyncLogistics.Any(o => o.order_id == order.order_sn && o.tracking_number.IsNullOrEmpty())) - SendAsyncWaybillOrder(order); + var index = Math.Max(0, lstPddBuyerOrderInfoLite.IndexOf(order)); + lstPddBuyerOrderInfoLite.RemoveAll(o => o.order_sn == order.order_sn); + lstPddBuyerOrderInfoLite.Insert(index, order); } } + } + while (lstTask.Count >= 1) + { + Thread.Sleep(100); + lstTask.RemoveAll(t => t.IsFaulted || t.IsCanceled || t.IsCompleted); + } + var t = Task.Run(() => GetCefOrder(order, isUpdate)); + lstTask.Add(t); + } - if (order.order_sn == "260924-431226960203223") - { - - } - - // 填写取件码 - if (order.WxSendTypeStr == "直发") - { - if (GlobalConfig.BuyConfig.IsSyncDirectBuyOrderWaybill && !string.IsNullOrEmpty(order.tracking_number)) - { - if (lstSyncLogistics.Any(o => o.order_id == order.order_sn)) - if (lstSyncLogistics.Any(o => o.order_id == order.order_sn && (o.upload_pickup_status == 0 || o.pickup_code.IsNullOrEmpty()))) - SetPickUpNo(order); - } - } - }); - } - NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); + lock (locker) + { + NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); + } } + async Task GetCefOrder(PddBuyerOrderLiteInfo order, bool isUpdate) + { + if (filterOneBuyerOrder(order) == false) + { + Dispatcher.Invoke(new Action(() => + { + var orderExist = lstFilterPddBuyerOrderInfoLite.FirstOrDefault(oe => oe.order_sn == order.order_sn); + if (orderExist == null) + { + lstFilterPddBuyerOrderInfoLite.Add(order); + } + else + { + var index = lstFilterPddBuyerOrderInfoLite.IndexOf(orderExist); + lstFilterPddBuyerOrderInfoLite.Remove(orderExist); + lstFilterPddBuyerOrderInfoLite.Insert(index, order); + } + })); + } + + await Task.Run(() => + { + // 根据订单状态 取号/修改取号 + if (order.WxSendTypeStr == "直发") + { + // 微信售后,客户端取消直发买手订单 + if (order.ShopOrderRefundStr.ParseToString().Contains("售后")) + { + if (!",2,3,4,5,7,8,10,31,".Contains("," + (order.after_sales?.after_sales_status).ParseToString() + ",")) + { + // 待发货直接售后,并通知中转仓接口修改退货状态 + var afterSaleRst = PddDirectAutoAfterSale(order); + isUpdate = true; + } + } + if (GlobalConfig.BuyConfig.IsSyncDirectBuyOrderWaybill != true) + SendOrderE57(order); + } + else + { + // 微信售后,服务端自动作废订单,客户端取消买手订单即可 + if (order.ShopOrderRefundStr.ParseToString().Contains("售后")) + { + if (!",2,3,4,5,7,8,10,31,".Contains("," + (order.after_sales?.after_sales_status).ParseToString() + ",")) + { + // 待发货直接售后,并通知中转仓接口修改退货状态 + var afterSaleRst = PddTransitAutoAfterSale(order); + isUpdate = true; + } + } + if (order.TransitWarehouseRawMessage.ParseToString().Contains("超出派送范围")) + { + if (!",2,3,4,5,7,8,10,31,".Contains("," + (order.after_sales?.after_sales_status).ParseToString() + ",")) + { + // 待发货直接售后,并通知中转仓接口修改退货状态 + var afterSaleRst = PddTransitAutoAfterSale(order); + isUpdate = true; + } + } + SendTransitOrderE57(order); + } + + if (order.WxSendTypeStr == "直发") + { + if (GlobalConfig.BuyConfig.IsSyncDirectBuyOrderWaybill && !string.IsNullOrEmpty(order.tracking_number) && order.WxOrderStatus < 30) + if (!lstSyncLogistics.Any(o => o.order_id == order.order_sn) || lstSyncLogistics.Any(o => o.order_id == order.order_sn && o.tracking_number.IsNullOrEmpty())) + isUpdate = true; + } + if (isUpdate && !string.IsNullOrEmpty(order.ShopOrderIdStr)/* && order.WxSendTypeStr != "直发"*/) + { + + // 买手订单状态记录到数据库 + order_pdd_buyer_order pddBuyerOrder = new order_pdd_buyer_order() + { + after_sales_status = (order.after_sales?.after_sales_status).ParseToInt(), + buyerId = order.buyerId, + buyerName = order.buyerName, + order_amount = order.order_amount.ParseToInt(), + order_sn = order.order_sn, + order_status_prompt = order.order_status_prompt, + outExpressCompanyCode = order.outExpressCompanyCode, + order_time = order.order_time, + pre_allocated_order_no = order.PreAllocatedOrderNoStr.ParseToInt(), + tracking_number = order.tracking_number, + TransitCreateTime = order.TransitCreateTime, + //TransitPickupTime = order.TransitPickupTime, + wx_order_id = order.ShopOrderIdStr, + wx_sku_id = order.ShopOrderSkuIdStr, + wx_send_type = order.WxSendTypeStr == "直发" ? 1 : 0, + }; + var url3 = BaseClass.Build29WxObjString("order/wx_add_mdy_buyer_order"); + var data3 = UserLogin.GetSignaturex(); + data3 += "&after_sales_status=" + pddBuyerOrder.after_sales_status; + data3 += "&buyerId=" + pddBuyerOrder.buyerId; + data3 += "&buyerName=" + pddBuyerOrder.buyerName; + data3 += "&order_amount=" + pddBuyerOrder.order_amount; + data3 += "&pdd_order_sn=" + pddBuyerOrder.order_sn; + data3 += "&order_status_prompt=" + pddBuyerOrder.order_status_prompt; + data3 += "&outExpressCompanyCode=" + pddBuyerOrder.outExpressCompanyCode; + data3 += "&order_time=" + pddBuyerOrder.order_time; + data3 += "&pre_allocated_order_no=" + pddBuyerOrder.pre_allocated_order_no; + data3 += "&tracking_number=" + pddBuyerOrder.tracking_number; + data3 += "&TransitCreateTime=" + pddBuyerOrder.TransitCreateTime.ToString("yyyy-MM-dd HH:mm:ss"); + //data3 += "&TransitPickupTime=" + pddBuyerOrder.TransitPickupTime.ToString("yyyy-MM-dd HH:mm:ss"); + data3 += "&wx_order_id=" + pddBuyerOrder.wx_order_id; + data3 += "&wx_sku_id=" + pddBuyerOrder.wx_sku_id; + data3 += "&wx_send_type=" + pddBuyerOrder.wx_send_type; + var html3 = GetHtml.PostUtf8(url3, data3); + if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200")) + html3 = GetHtml.PostUtf8(url3, data3); + + //勾选了调用同步单接口,必须直发且库里已有物流单号 + if (order.WxSendTypeStr == "直发") + { + if (GlobalConfig.BuyConfig.IsSyncDirectBuyOrderWaybill && !string.IsNullOrEmpty(order.tracking_number) && html3.Contains("\"code\":200")) + if (!lstSyncLogistics.Any(o => o.order_id == order.order_sn) || lstSyncLogistics.Any(o => o.order_id == order.order_sn && o.tracking_number.IsNullOrEmpty())) + SendAsyncWaybillOrder(order); + } + } + + //// 填写取件码 + //if (order.WxSendTypeStr == "直发") + //{ + // if (GlobalConfig.BuyConfig.IsSyncDirectBuyOrderWaybill && !string.IsNullOrEmpty(order.tracking_number)) + // { + // if (lstSyncLogistics.Any(o => o.order_id == order.order_sn)) + // if (lstSyncLogistics.Any(o => o.order_id == order.order_sn && (o.upload_pickup_status == 0 || o.pickup_code.IsNullOrEmpty()))) + // SetPickUpNo(order); + // } + //} + }); + } + async Task CefReadBuyerAfterSale(string url, string data) { var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => url.Contains(b.buyer_id)); @@ -1089,12 +1098,9 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (data.Contains("\"listItemVOList\":[]") || data.Contains("\"hasNextQuery\":false")) //if (!data.Contains("/complaints_new_detail.html?after_sales_id=")) { - Dispatcher.Invoke(new Action(() => - { - lblMsg.Content = buyer.buyer_name + " 获取到空售后列表,退出自动滑动 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); - })); - currentReadBuyer = ""; - //return; + ShowBuyerOrderReadInfo(buyer, " 获取到空售后列表,退出自动滑动 "); + currentReadBuyer = ""; + return; } //{\"error_code\":50000,\"error_msg\":\"http error:504\"} //{"errorCode":72004,"errorMsg":"","error_code":72004,"error_msg":"","result":null} @@ -1105,15 +1111,12 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls currentReadBuyer = ""; return; } - - Dispatcher.Invoke(new Action(() => - { - lblMsg.Content = buyer.buyer_name + " 正在获取售后列表 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); - })); - var list = JsonHelper.DeserializeJsonToList(JsonHelper.JObjectParse(data)["result"]["listItemVOList"].ParseToString()); - var out_order_nos = string.Join(",", list.Select(bo => bo.orderSn)); + //ShowBuyerOrderReadInfo(buyer, " 正在获取售后列表 " + nextQueryCreatedAt + " "); + ShowBuyerOrderReadInfo(buyer, " 正在获取售后列表 " + list?.LastOrDefault()?.orderSn + " "); + + var out_order_nos = string.Join(",", list.Select(bo => bo.orderSn)); var transitOrderList = GetOrderTransitWarehouseInfo(out_order_nos); var orderExtList = GetOrderItemExtInfo(out_order_nos); @@ -1301,10 +1304,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (afterSale.orderDate < DateTime.Now.AddMonths(-2).ToString("yyMMdd").ParseToInt()) { - Dispatcher.Invoke(new Action(() => - { - lblMsg.Content = buyer.buyer_name + " 近2个月售后列表获取完成,退出自动滑动 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); - })); + ShowBuyerOrderReadInfo(buyer, " 近2个月售后列表获取完成,退出自动滑动 "); currentReadBuyer = ""; //return; } @@ -1507,6 +1507,10 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (isReadBuyerOrder) return; + lock (locker) + { + lstdisctinctOrderSn.Clear(); + } isReadBuyerOrder = true; lstPddBuyerOrderVoidAfterSaleOrderSn.Clear(); @@ -1719,6 +1723,10 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls string tempOffset = ""; while (currentReadBuyer == readBuyer) { + if (currentReadBuyer != readBuyer) + { + + } if (isSkipNext) { ShowBuyerOrderReadInfo(buyer, "已跳过当前买手订单读取"); @@ -1756,6 +1764,8 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls tempOffset = dicPddOrderOffset[buyer]; string jsStr = $"PDDOrders.trigger({{offset:'MO-01-{dicPddOrderOffset[buyer]}',type:{type},size:10,mode:'store'}})"; + if (dicPddOrderOffset[buyer].ParseToString().StartsWith("PO-")) + jsStr = $"PDDOrders.trigger({{offset:'MO-02-{dicPddOrderOffset[buyer].Replace("PO-", "")}',type:{type},size:10,mode:'store'}})"; await client.Runtime.EvaluateAsync(jsStr, null, true, null, null, true, null, true); await Task.Delay(Randomx.GetId(2000, 4000)); } @@ -1855,7 +1865,11 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls void ScrollGetPddOrder() { - isReadBuyerOrder = true; + lock (locker) + { + lstdisctinctOrderSn.Clear(); + } + isReadBuyerOrder = true; lstPddBuyerOrderVoidAfterSaleOrderSn.Clear(); if (cancellationTokenSource != null) @@ -2203,7 +2217,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls private void ShowBuyerOrderReadInfo(BuyerLoginInfo buyer, string msg = "", List selectIds = null) { - this.LblMsgStr = buyer?.buyer_name + " " + msg + " " + DateTime.Now.ToString("yyMMdd HH:mm:ss"); + this.LblMsgStr = buyer?.buyer_name + " " + msg + " " + DateTime.Now.ToString("yy-MM-dd HH:mm:ss"); } private void btnSendBuyerOrder_Click(object sender, RoutedEventArgs e) @@ -2271,7 +2285,10 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls return; //if (resetSendStatus) // order.sendStatus = ""; - NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); + lock(locker) + { + NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); + } // 仓库处理中 if (order.sendStatus.ParseToString().Contains("仓库处理中")) @@ -2506,7 +2523,10 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (exportRst.Contains("操作超时")) { order.sendStatus = "发送失败 操作超时"; - NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); + lock (locker) + { + NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); + } return; } System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); @@ -2543,13 +2563,19 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls order.sendStatus = "已发送待发货订单"; if (order.after_sales != null) order.sendStatus = "已发送售后订单 " + sendStatusTmp; - NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); - } + lock (locker) + { + NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); + } + } else { order.sendStatus = "发送失败 " + (string.IsNullOrEmpty(msg) ? data : msg); - NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); - } + lock (locker) + { + NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); + } + } } public void SetPickUpNo(PddPickInfo pddPickInfo) @@ -2882,12 +2908,15 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (outOrderNo.IsNullOrEmpty()) continue; var afterSaleId = BaseRegex.GetStringJson(ref rstStrTmp, "afterSaleId"); - var order = lstPddBuyerOrderInfoLite.FirstOrDefault(o => o.order_sn == outOrderNo); - if (order == null) - continue; + lock(locker) + { + var order = lstPddBuyerOrderInfoLite.FirstOrDefault(o => o.order_sn == outOrderNo); + if (order == null) + continue; - order.wxRefundStatus = order.order_status_prompt.Contains("待发货") ? "待退款" : "待退货"; - NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); + order.wxRefundStatus = order.order_status_prompt.Contains("待发货") ? "待退款" : "待退货"; + NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); + } //Dispatcher.Invoke(new Action(() => //{ // ShowOrder(order); @@ -2955,7 +2984,10 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls var msg = BaseRegex.GetStringXml(ref refundRst, "msg"); order.sendStatus = "退款成功 买手退款信息更新失败,服务端返回 " + msg; } - NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); + lock(locker) + { + NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); + } return "{\"success\":true,\"msg\":\"操作成功\"}"; } else @@ -3000,9 +3032,12 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls { var msg = BaseRegex.GetStringXml(ref refundRst, "msg"); order.sendStatus = "退款成功 买手退款信息更新失败,服务端返回 " + msg; - } - NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); - return "{\"success\":true,\"msg\":\"操作成功\"}"; + } + lock (locker) + { + NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); + } + return "{\"success\":true,\"msg\":\"操作成功\"}"; } else { diff --git a/29WxOrderWpf/Ctrls/BuyerCtrls/PddBuyOrderViewModel.cs b/29WxOrderWpf/Ctrls/BuyerCtrls/PddBuyOrderViewModel.cs index e373708..dbd3b9d 100644 --- a/29WxOrderWpf/Ctrls/BuyerCtrls/PddBuyOrderViewModel.cs +++ b/29WxOrderWpf/Ctrls/BuyerCtrls/PddBuyOrderViewModel.cs @@ -337,7 +337,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls ManualUpdateBuyOrderCommand = new DelegateCommand(ManualUpdateBuyOrder); UpdateTransitWarehouseCommand = new DelegateCommand(UpdateTransitWarehouse); - this.txtShopNameVal = orderItem.Shop.ShopAccount; + this.txtShopNameVal = orderItem?.ItemOrder?.Shop?.ShopAccount; this.txtOrderIdVal = orderItem.order_id; this.txtShopSkuIdVal = orderItem.sku_id; this.txtShopGoodsIdVal = orderItem.product_id; @@ -1222,6 +1222,11 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (BuyType == "direct") { #region 直发拍单 + if (orderItem.ItemOrder?.Shop == null) + { + this.ErrorMsg = "缺少店铺信息!"; + return; + } var url = BaseClass.Build29WxObjString("order/wx_get_order_item_ext_info"); var data = UserLogin.GetSignaturex(); @@ -1241,8 +1246,8 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls order_id = orderItem.order_id, sku_id = orderItem.sku_id, out_order_id = "tb_" + txtBuyOrderIdVal.Trim(), - shop_app_id = orderItem.Shop.ShopId, - shop_name = orderItem.Shop.ShopAccount, + shop_app_id = orderItem.ItemOrder?.Shop?.ShopId, + shop_name = orderItem.ItemOrder?.Shop?.ShopAccount, buy_type = "直发", }; var url1 = BaseClass.Build29WxObjString("order/wx_add_order_item_ext_info"); diff --git a/29WxOrderWpf/Ctrls/BuyerCtrls/TaobaoBuyOrderViewModel.cs b/29WxOrderWpf/Ctrls/BuyerCtrls/TaobaoBuyOrderViewModel.cs index c827e82..01f5582 100644 --- a/29WxOrderWpf/Ctrls/BuyerCtrls/TaobaoBuyOrderViewModel.cs +++ b/29WxOrderWpf/Ctrls/BuyerCtrls/TaobaoBuyOrderViewModel.cs @@ -337,7 +337,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls ManualUpdateBuyOrderCommand = new DelegateCommand(ManualUpdateBuyOrder); UpdateTransitWarehouseCommand = new DelegateCommand(UpdateTransitWarehouse); - this.txtShopNameVal = orderItem.Shop.ShopAccount; + this.txtShopNameVal = orderItem.ItemOrder?.Shop?.ShopAccount; this.txtOrderIdVal = orderItem.order_id; this.txtShopSkuIdVal = orderItem.sku_id; this.txtShopGoodsIdVal = orderItem.product_id; @@ -1936,6 +1936,11 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (BuyType == "direct") { #region 直发拍单 + if (orderItem.ItemOrder?.Shop == null) + { + this.ErrorMsg = "缺少店铺信息!"; + return; + } var url = BaseClass.Build29WxObjString("order/wx_get_order_item_ext_info"); var data = UserLogin.GetSignaturex(); @@ -1955,8 +1960,8 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls order_id = orderItem.order_id, sku_id = orderItem.sku_id, out_order_id = "tb_" + txtBuyOrderIdVal.Trim(), - shop_app_id = orderItem.Shop.ShopId, - shop_name = orderItem.Shop.ShopAccount, + shop_app_id = orderItem.ItemOrder?.Shop?.ShopId, + shop_name = orderItem.ItemOrder?.Shop?.ShopAccount, buy_type = "直发", }; var url1 = BaseClass.Build29WxObjString("order/wx_add_order_item_ext_info"); diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs index 725f97d..8eb1a74 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs @@ -1270,7 +1270,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls BaseMsgWindow.ShowAnimateMessage("订单扩展信息查询失败 " + ex.Message, "Error", 5); } } - if (index % 5 == 0 || index >= GlobalConfig.ShopLoginList.Count - 1) + if (index % 10 == 0 || index >= GlobalConfig.ShopLoginList.Count - 1) disPlayOrderTabOrderCount(); } } @@ -1628,7 +1628,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls TokenSource.Cancel(); TokenSource = new CancellationTokenSource(); - Task.Run(() => + Task.Run(async () => { var token = TokenSource.Token; try @@ -1636,15 +1636,15 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (this.lbxOrder == null) return; - if (token.IsCancellationRequested) - return; - Dispatcher.Invoke(new Action(() => - { - GlobalConfig.lstFilterOrder.Clear(); - //GlobalConfig.lstFilterOrder = new ObservableCollection(orderLstTmp); - GlobalConfig.lstFilterOrder = new ObservableCollection(); - this.lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder; - })); + //if (token.IsCancellationRequested) + // return; + //Dispatcher.Invoke(new Action(() => + //{ + // GlobalConfig.lstFilterOrder.Clear(); + // //GlobalConfig.lstFilterOrder = new ObservableCollection(orderLstTmp); + // GlobalConfig.lstFilterOrder = new ObservableCollection(); + // this.lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder; + //})); if (token.IsCancellationRequested) return; @@ -1656,31 +1656,42 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls else orderLstTmp = GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o)).OrderByDescending(o => o.create_time).ToList(); + //if (token.IsCancellationRequested) + // return; + //disPlayOrderTabOrderCount(); + + ////int n = 0; + //foreach (var order in orderLstTmp) + //{ + // //if (n++ % 10 == 0) + // //Thread.Sleep(1); + + // if (token.IsCancellationRequested) + // break; + + // var orders = GlobalConfig.lstFilterOrder.ToList(); + // if (!orders.Any(o => o.order_id == order.order_id)) + // { + // Dispatcher.InvokeAsync(() => + // { + // lock (MainWindow._orderLock) + // { + // GlobalConfig.lstFilterOrder.Add(order); + // } + // }); + // } + //} + if (token.IsCancellationRequested) return; - disPlayOrderTabOrderCount(); - - int n = 0; - foreach (var order in orderLstTmp) + await Dispatcher.InvokeAsync(new Action(() => { - //if (n++ % 10 == 0) - Thread.Sleep(1); + GlobalConfig.lstFilterOrder.Clear(); + GlobalConfig.lstFilterOrder = new ObservableCollection(orderLstTmp); + this.lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder; + })); - if (token.IsCancellationRequested) - break; - - var orders = GlobalConfig.lstFilterOrder.ToList(); - if (!orders.Any(o => o.order_id == order.order_id)) - { - Dispatcher.InvokeAsync(() => - { - lock (MainWindow._orderLock) - { - GlobalConfig.lstFilterOrder.Add(order); - } - }); - } - } + await disPlayOrderTabOrderCount(); } catch (Exception ex) { @@ -2306,9 +2317,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls { if (this.IsLoaded) { - GlobalConfig.lstFilterOrder.Clear(); - GlobalConfig.lstFilterOrder = new ObservableCollection(); - this.lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder; + //GlobalConfig.lstFilterOrder.Clear(); + //GlobalConfig.lstFilterOrder = new ObservableCollection(); + //this.lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder; dgHeaderTime.Header = ColumnHeaderTitle = "交易时间 ▼"; } diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs index 98546c1..af232d5 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs @@ -430,9 +430,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls { var url = BaseClass.Build29WxObjString("shop/get_shop_erp_merchant"); var data = UserLogin.GetSignaturex(); - data += "&corporate_account_user_id=" + orderItem.Shop.ErpCorporateAccountUserId; - data += "&manage_user_id=" + orderItem.Shop.ErpManageUserId; - data += "&shop_id=" + orderItem.Shop.ErpShopId; + data += "&corporate_account_user_id=" + orderItem.ItemOrder.Shop.ErpCorporateAccountUserId; + data += "&manage_user_id=" + orderItem.ItemOrder.Shop.ErpManageUserId; + data += "&shop_id=" + orderItem.ItemOrder.Shop.ErpShopId; var html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) html = GetHtml.PostUtf8(url, data); @@ -477,9 +477,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (orderItem.BuyGoodsBtnTxt == "去店铺后台绑定代发") { - if (orderItem.Shop != null) + if (orderItem.ItemOrder.Shop != null) { - WXShopLoginForm shopLoginForm = new WXShopLoginForm(orderItem.Shop); + WXShopLoginForm shopLoginForm = new WXShopLoginForm(orderItem.ItemOrder.Shop); shopLoginForm.openType = Work._29Tools.Forms.ShopForms.EnumOpenType.manage; shopLoginForm.WindowState = System.Windows.Forms.FormWindowState.Maximized; shopLoginForm.InitUrl = "https://store.weixin.qq.com/shop/supply/consignmentOrderList"; @@ -504,9 +504,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls //} // 掉线提示重登 - if (orderItem.Shop?.LoginStatus != "登录成功") + if (orderItem.ItemOrder?.Shop?.LoginStatus != "登录成功") { - foreach (var ord in GlobalConfig.lstFilterOrder.Where(o => o.shop_id.ParseToString() == orderItem.Shop.ErpShopId).ToList()) + foreach (var ord in GlobalConfig.lstFilterOrder.Where(o => o.shop_id.ParseToString() == orderItem.ItemOrder?.Shop?.ErpShopId).ToList()) { // 更新代发管理情况 foreach (var oi in ord.orderItems) @@ -707,7 +707,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls try { // 查询代发列表 - var apiSearchDropship = new WxApiBLL().WxApiDropshipSearch(orderItem.Shop, orderItem.order_id, 100); + var apiSearchDropship = new WxApiBLL().WxApiDropshipSearch(orderItem.ItemOrder.Shop, orderItem.order_id, 100); if (!apiSearchDropship.Contains("\"errcode\":0")) throw new Exception("查询代发失败!" + BaseRegex.GetStringJsonByRegs(ref apiSearchDropship, apiSearchDropship, "msg", "errmsg")); @@ -718,7 +718,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls { if (!string.IsNullOrEmpty(dsOrderId)) { - var apiCancelDropship = await new WxApiBLL().WxApiDropshipCancel(orderItem.Shop, orderItem.ItemOrder, dsOrderId); + var apiCancelDropship = await new WxApiBLL().WxApiDropshipCancel(orderItem.ItemOrder.Shop, orderItem.ItemOrder, dsOrderId); if (!apiCancelDropship.Contains("\"errcode\":0")) { var errMsg = BaseRegex.GetStringJsonByRegs(ref apiCancelDropship, apiCancelDropship, "msg", "errmsg"); @@ -732,7 +732,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (!string.IsNullOrEmpty(dsOrderId)) { // 查询代发详情 - var apiSearchDropshipDetail = new WxApiBLL().WxApiDropshipSearchDetail(orderItem.Shop, dsOrderId); + var apiSearchDropshipDetail = new WxApiBLL().WxApiDropshipSearchDetail(orderItem.ItemOrder.Shop, dsOrderId); if (!apiSearchDropshipDetail.Contains("\"errcode\":0")) throw new Exception("查询代发失详情失败!" + BaseRegex.GetStringJson(ref apiSearchDropshipDetail, "msg")); @@ -741,7 +741,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (!string.IsNullOrEmpty(supplierId) && !supplierId.Contains(targetSupplierId) && !supplierName.Contains(targetSupplierName)) { // 取消代发 - var apiCancelDropship = await new WxApiBLL().WxApiDropshipCancel(orderItem.Shop, orderItem.ItemOrder, dsOrderId); + var apiCancelDropship = await new WxApiBLL().WxApiDropshipCancel(orderItem.ItemOrder.Shop, orderItem.ItemOrder, dsOrderId); if (!apiCancelDropship.Contains("\"errcode\":0")) { var errMsg = BaseRegex.GetStringJsonByRegs(ref apiCancelDropship, apiCancelDropship, "msg", "errmsg"); @@ -757,7 +757,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (!supplierId.Contains(targetSupplierId) && !supplierName.Contains(targetSupplierName)) { // 设置29供货商代发wxfc630d60a1af6c6f或其他代发 - var apiAddDropship = new WxApiBLL().WxApiDropshipAssign(orderItem.Shop, orderItem.order_id, orderItem.product_id, orderItem.sku_id, orderItem.sku_cnt.ParseToInt(), targetSupplierId); + var apiAddDropship = new WxApiBLL().WxApiDropshipAssign(orderItem.ItemOrder.Shop, orderItem.order_id, orderItem.product_id, orderItem.sku_id, orderItem.sku_cnt.ParseToInt(), targetSupplierId); if (!apiAddDropship.Contains("\"errcode\":0")) { throw new Exception("设置代发失败!请确认商品已加入" + targetSupplierName + "代发!" + BaseRegex.GetStringJson(ref apiAddDropship, "msg")); @@ -1786,7 +1786,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls { try { - var rst = await WxApiBLL.WxSearchAndDropshipCancelAsync(orderItem.Shop, orderItem.ItemOrder); + var rst = await WxApiBLL.WxSearchAndDropshipCancelAsync(orderItem.ItemOrder.Shop, orderItem.ItemOrder); if (rst == "success") { var ret = await MainWindow.Instance.orderListCtrl._shipGiftService.Send(orderItem.order_id, giftType); @@ -1938,7 +1938,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls { if (this.DataContext is oms_wei_order_item_info orderItem) { - WXOrderListOptimizeForm form = new WXOrderListOptimizeForm(orderItem.Shop); + WXOrderListOptimizeForm form = new WXOrderListOptimizeForm(orderItem.ItemOrder.Shop); form.lblOrderId.Text = orderItem.order_id; form.lblSpuId.Text = orderItem.product_id; form.lblSkuId.Text = orderItem.sku_id; // skuId diff --git a/29WxOrderWpf/ViewModels/ChangePickNoViewModel.cs b/29WxOrderWpf/ViewModels/ChangePickNoViewModel.cs index 423f3ba..e22d569 100644 --- a/29WxOrderWpf/ViewModels/ChangePickNoViewModel.cs +++ b/29WxOrderWpf/ViewModels/ChangePickNoViewModel.cs @@ -81,7 +81,7 @@ namespace _29WxOrderWpf.ViewModels { IsChangeingPickNo = false; string orderId = OrderItem.order_id; - ShopLoginInfo shop = OrderItem.Shop; + ShopLoginInfo shop = OrderItem.ItemOrder.Shop; if (string.IsNullOrEmpty(PickNo)) { BaseMsgWindow.ShowInfo("取件码不能为空"); diff --git a/29WxOrderWpf/Windows/OrderWindows/TransitAfterSaleWindow.xaml.cs b/29WxOrderWpf/Windows/OrderWindows/TransitAfterSaleWindow.xaml.cs index 1b0b8ac..46f4924 100644 --- a/29WxOrderWpf/Windows/OrderWindows/TransitAfterSaleWindow.xaml.cs +++ b/29WxOrderWpf/Windows/OrderWindows/TransitAfterSaleWindow.xaml.cs @@ -286,21 +286,21 @@ namespace _29WxOrderWpf.Windows.OrderWindows string url = HttpResponseTransitWorkOrderBLL.WorkOrderUrl + "/api/open/v1/customer-work-orders/intercept-return-cloud-warehouse-after-outbound"; JObject obj = new JObject(); - obj["appId"] = this.OrderItem.Shop?.ShopId; + obj["appId"] = this.OrderItem.ItemOrder?.Shop?.ShopId; obj["wechatOrderNo"] = this.OrderItem.order_id; //obj["purchaseOrderNo"] = this.OrderItem.PddBuyerAfterSale?.orderSn; obj["purchaseOrderNo"] = TransitOrder?.order_code; obj["creator"] = BaseClass.UserName; obj["remark"] = "客户要求拦截并退回云仓"; - var rst = HttpResponseTransitWorkOrderBLL.PostResponse(this.OrderItem.Shop, url, JsonHelper.SerializeObject(obj), ""); + var rst = HttpResponseTransitWorkOrderBLL.PostResponse(this.OrderItem.ItemOrder?.Shop, url, JsonHelper.SerializeObject(obj), ""); return rst; } public async Task GetWorkOrder() { string url = HttpResponseTransitWorkOrderBLL.WorkOrderUrl + "/api/open/v1/customer-work-orders?wechatOrderNo=" + this.OrderItem.order_id; - var rst = await HttpResponseTransitWorkOrderBLL.GetResponseAsync(this.OrderItem.Shop, url, ""); + var rst = await HttpResponseTransitWorkOrderBLL.GetResponseAsync(this.OrderItem.ItemOrder?.Shop, url, ""); return rst; } } diff --git a/AllBase/Model/DBModel/oms_wei_order_item_info.cs b/AllBase/Model/DBModel/oms_wei_order_item_info.cs index a0da648..aaf312c 100644 --- a/AllBase/Model/DBModel/oms_wei_order_item_info.cs +++ b/AllBase/Model/DBModel/oms_wei_order_item_info.cs @@ -20,14 +20,14 @@ namespace AllBase.Model.DBModel { public class oms_wei_order_item_info : PropertyNotifyObject { - /// - /// 订单对应店铺 - /// - public ShopLoginInfo Shop - { - get { return this.GetValue(x => x.Shop); } - set { this.SetValue(x => x.Shop, value); } - } + ///// + ///// 订单对应店铺 + ///// + //public ShopLoginInfo Shop + //{ + // get { return this.GetValue(x => x.Shop); } + // set { this.SetValue(x => x.Shop, value); } + //} /// /// 订单扩展信息 @@ -1747,7 +1747,7 @@ namespace AllBase.Model.DBModel public void UpdateOrderItemBuyButton() { var order_item = this; - order_item.Shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == order_item.shop_id.ParseToString()); + var Shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == order_item.shop_id.ParseToString()); // 关联商品sku if (GlobalConfig.CurrentBuyPlatform == "pdd") diff --git a/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs b/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs index b90c60e..54e6bc4 100644 --- a/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs +++ b/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs @@ -1599,6 +1599,15 @@ namespace TemuKJD.ToolForms { #region 直发拍单 + if (orderItem.ItemOrder?.Shop == null) + { + if (!IsAutoBuy) + BaseMsgForm.ShowError("缺少店铺信息!"); + else + Invoke(() => { lblErrMsg.Text = "缺少店铺信息!"; }); + return; + } + var url = BaseClass.Build29WxObjString("order/wx_get_order_item_ext_info"); var data = UserLogin.GetSignaturex(); data += "&wx_order_id_in=" + orderItem.order_id; @@ -1620,8 +1629,8 @@ namespace TemuKJD.ToolForms order_id = orderItem.order_id, sku_id = orderItem.sku_id, out_order_id = txtBuyOrderId.Text.Trim(), - shop_app_id = orderItem.Shop.ShopId, - shop_name = orderItem.Shop.ShopAccount, + shop_app_id = orderItem.ItemOrder?.Shop?.ShopId, + shop_name = orderItem.ItemOrder?.Shop?.ShopAccount, buy_type = "直发", }; var url1 = BaseClass.Build29WxObjString("order/wx_add_order_item_ext_info");