From 103b2a1a4a3a93cc7182131afd0f0d7b16d6c3c3 Mon Sep 17 00:00:00 2001 From: wule Date: Wed, 21 Oct 2026 20:01:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=A2=E5=8D=95=E8=AF=BB?= =?UTF-8?q?=E5=8F=96=E4=B8=8E=E6=8B=8D=E5=8D=95=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 29WxOrderWpf/App.xaml.cs | 14 +- .../Ctrls/OrderCtrls/OrderListCtrl.Command.cs | 1 - .../Ctrls/OrderCtrls/OrderListCtrl.xaml.cs | 1 - .../OrderCtrls/OrderListRowHeaderCtrl.xaml | 1 + .../OrderCtrls/OrderListRowItemCtrl.xaml | 10 +- .../OrderCtrls/OrderListRowItemCtrl.xaml.cs | 29 +- AllBase/Model/DBModel/oms_wei_order_info.cs | 15 +- .../Model/DBModel/oms_wei_order_item_info.cs | 17 +- Work/_29Tools/Forms/PddMobileBuyOrderForm.cs | 1398 +++++++++-------- 9 files changed, 774 insertions(+), 712 deletions(-) diff --git a/29WxOrderWpf/App.xaml.cs b/29WxOrderWpf/App.xaml.cs index f2b9d26..e0c1c68 100644 --- a/29WxOrderWpf/App.xaml.cs +++ b/29WxOrderWpf/App.xaml.cs @@ -108,7 +108,7 @@ namespace _29WxOrderWpf string str = GetExceptionMsg(ex, string.Empty); NaiBa.Util.Helper.LogHelper.WriteWithTime("SystemError:" + str); //BaseMsgForm.ShowError(str, "系统错误"); - BaseMsgWindow.ShowError(str, "系统错误"); + BaseMsgWindow.ShowError(str, "系统错误", null, MsgWindowLevel.LARGE); } #region 初始化cef @@ -157,15 +157,15 @@ namespace _29WxOrderWpf { string str = GetExceptionMsg(e.Exception, e.ToString()); NaiBa.Util.Helper.LogHelper.WriteWithTime("SystemError:" + str); - BaseMsgWindow.ShowError(str, "系统错误"); - } + BaseMsgWindow.ShowError(str, "系统错误", null, MsgWindowLevel.LARGE); + } static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString()); NaiBa.Util.Helper.LogHelper.WriteWithTime("SystemError:" + str); - BaseMsgWindow.ShowError(str, "系统错误"); - } + BaseMsgWindow.ShowError(str, "系统错误", null, MsgWindowLevel.LARGE); + } /// /// 生成自定义异常消息 @@ -190,8 +190,8 @@ namespace _29WxOrderWpf } sb.AppendLine("***************************************************************"); NaiBa.Util.Helper.LogHelper.WriteWithTime("Error:" + sb); - BaseMsgWindow.ShowError(sb.ToString(), "系统错误"); - return sb.ToString(); + BaseMsgWindow.ShowError(sb.ToString(), "系统错误", null, MsgWindowLevel.LARGE); + return sb.ToString(); } /// diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.Command.cs b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.Command.cs index 7fec599..9572892 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.Command.cs +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.Command.cs @@ -1,6 +1,5 @@ using _29WxOrderWpf.BaseWindows; using WxOrder.Framework.Commons; -using WxOrder.Framework.Commons; using _29WxOrderWpf.Ctrls.PDDInvoice; using _29WxOrderWpf.Ctrls.Statistics; using _29WxOrderWpf.Services; diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs index 2c2cef1..ecd8081 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs @@ -1,6 +1,5 @@ using _29WxOrderWpf.BaseWindows; using WxOrder.Framework.Commons; -using WxOrder.Framework.Commons; using _29WxOrderWpf.Ctrls.BuyerCtrls; using _29WxOrderWpf.Ctrls.Statistics; using _29WxOrderWpf.Services; diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowHeaderCtrl.xaml b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowHeaderCtrl.xaml index 7fcc3b6..1e37b9b 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowHeaderCtrl.xaml +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowHeaderCtrl.xaml @@ -167,6 +167,7 @@ Grid.Column="6" Margin="4,8,4,8" VerticalAlignment="Center" + d:Text="店铺名称" Background="Transparent" BorderThickness="0" Cursor="Hand" diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml index 86e8810..b5b0017 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml @@ -95,7 +95,15 @@ Cursor="Hand" MouseDown="imgOrderItem_MouseDown" MouseEnter="imgOrderItem_MouseEnter" - MouseLeave="imgOrderItem_MouseLeave" /> + MouseLeave="imgOrderItem_MouseLeave"> + + + + + + + + { @@ -799,11 +799,18 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls // })); //}); - //var bImg = await AllBase.ImageBuild.LoadBitmipImageFromUrlAsync(order_item.thumb_img + "?imageView2/1/w/100/format/webp|imageMogr2/auto-orient="); - //var bImg = await AllBase.ImageBuild.LoadBitmipImageFromUrlAsync(order_item.thumb_img + "?imageView2/1/w/100/h/100/format/jpg/q/85|imageMogr2/auto-orient="); - var bImg = await AllBase.ImageBuild.LoadBitmipImageFromUrlAsync(order_item.thumb_img + "?imageView2/1/w/100/h/100/format/jpg/q/80"); - imgOrderItem.Source = bImg; + //var imgItem = imgOrderItem; + //Task.Run(() => + //{ + // BitmapImage bImg = AllBase.ImageBuild.LoadBitmipImageFromUrl(order_item.thumb_img + "?imageView2/1/w/100/h/100/format/jpg/q/80"); + // Thread.Sleep(Randomx.GetId(1000)); + // Dispatcher.Invoke(new Action(() => + // { + // imgItem.Source = bImg; + // })); + //}); + //await UpdateImg(order_item, imgOrderItem); // 待采购不显示所有采购信息状态(否则会显示作废订单状态) if (GlobalConfig.OrderTabHeaderStr.StartsWith("待采购")) @@ -821,6 +828,14 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } } + public async Task UpdateImg(oms_wei_order_item_info order_item, Image imageItem) + { + //var bImg = await AllBase.ImageBuild.LoadBitmipImageFromUrlAsync(order_item.thumb_img + "?imageView2/1/w/100/format/webp|imageMogr2/auto-orient="); + //var bImg = await AllBase.ImageBuild.LoadBitmipImageFromUrlAsync(order_item.thumb_img + "?imageView2/1/w/100/h/100/format/jpg/q/85|imageMogr2/auto-orient="); + var bImg = await AllBase.ImageBuild.LoadBitmipImageFromUrlAsync(order_item.thumb_img + "?imageView2/1/w/100/h/100/format/jpg/q/80"); + Dispatcher.Invoke(new Action(() => { imageItem.Source = bImg; })); + } + private void TransitOrderBuy_Click(object sender, MouseButtonEventArgs e) { var orderItem = this.DataContext as oms_wei_order_item_info; @@ -1590,7 +1605,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls buyOrderForm.pnlMap.Visible = false; } buyOrderForm.ShowDialog(); - IsBuySuccess = buyOrderForm.IsBuySuccess; + IsBuySuccess = (buyOrderForm?.IsBuySuccess).ParseToBool(); } else if (GlobalConfig.CurrentBuyPlatform == "tb") { diff --git a/AllBase/Model/DBModel/oms_wei_order_info.cs b/AllBase/Model/DBModel/oms_wei_order_info.cs index efa8e0a..3385a18 100644 --- a/AllBase/Model/DBModel/oms_wei_order_info.cs +++ b/AllBase/Model/DBModel/oms_wei_order_info.cs @@ -28,7 +28,7 @@ namespace AllBase.Model.DBModel public ShopLoginInfo Shop { get { return this.GetValue(x => x.Shop); } - set { this.SetValue(x => x.Shop, value); } + set { this.SetValue(x => x.Shop, value); if (!Shop.ShopAccount.IsNullOrEmpty()) shop_name = Shop.ShopAccount; } } public int Index { @@ -425,10 +425,17 @@ namespace AllBase.Model.DBModel } //public bool is_visible { get; set; } = true; - public long id { get; set; } - public long shop_id { get; set; } - public string shop_name { get; set; } + public long shop_id + { + get { return this.GetValue(x => x.shop_id); } + set { this.SetValue(x => x.shop_id, value); } + } + public string shop_name + { + get { return this.GetValue(x => x.shop_name); } + set { this.SetValue(x => x.shop_name, value); } + } /// /// 商户ID /// diff --git a/AllBase/Model/DBModel/oms_wei_order_item_info.cs b/AllBase/Model/DBModel/oms_wei_order_item_info.cs index 4f013b8..f7560f0 100644 --- a/AllBase/Model/DBModel/oms_wei_order_item_info.cs +++ b/AllBase/Model/DBModel/oms_wei_order_item_info.cs @@ -1194,6 +1194,17 @@ namespace AllBase.Model.DBModel DirectOrderBuyTimeStr = DirectPddBuyerOrder != null ? DirectPddBuyerOrder.add_time.ToString("yyyy-MM-dd HH:mm:ss") : ""; } + public string ThumbImgStr + { + get { return this.GetValue(x => x.ThumbImgStr); } + set { this.SetValue(x => x.ThumbImgStr, value); } + } + public bool IsLoadThumbImg + { + get { return this.GetValue(x => x.IsLoadThumbImg); } + set { this.SetValue(x => x.IsLoadThumbImg, value); } + } + /// 直发最后一条物流信息 public oms_wei_ewaybill_path LatestDirectEWaybill { @@ -1521,7 +1532,11 @@ namespace AllBase.Model.DBModel /// /// sku小图 /// - public string thumb_img { get; set; } + public string thumb_img + { + get { return this.GetValue(x => x.thumb_img); } + set { this.SetValue(x => x.thumb_img, value); IsLoadThumbImg = !string.IsNullOrEmpty(value); ThumbImgStr = thumb_img + "?imageView2/1/w/100/h/100/format/jpg/q/80"; } + } /// /// sku数量 /// diff --git a/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs b/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs index 3880602..2a68dd2 100644 --- a/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs +++ b/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs @@ -49,49 +49,49 @@ using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel; namespace TemuKJD.ToolForms { - public partial class PddMobileBuyOrderForm : BaseGeneralForm + public partial class PddMobileBuyOrderForm : BaseGeneralForm { public oms_wei_external_procurement_log_info AbnormalTransitWarehouseOrderInfo { get; set; } = null; public pddFrontGoods3Lite pddFrontGoodsLite = new pddFrontGoods3Lite(); public bool IsClose { get; set; } = false; - public bool IsAutoBuy { get; set; } = false; + public bool IsAutoBuy { get; set; } = false; public bool IsBuySuccess { get; set; } = false; public bool IsFormLoad { get; set; } = false; - public bool ShowBuyMask { get; set; } = false; + public bool ShowBuyMask { get; set; } = false; public string BuyErrMsg { get; set; } = ""; - /// - /// 直发direct 中转transit - /// - public string BuyType { get; set; } = "transit"; + /// + /// 直发direct 中转transit + /// + public string BuyType { get; set; } = "transit"; - public int CloseAfterSecond { get; set; } - public string InitUrl = ""; - public string BuyMapUrl = ""; + public int CloseAfterSecond { get; set; } + public string InitUrl = ""; + public string BuyMapUrl = ""; private static readonly object lockObj = new(); private static readonly SemaphoreSlim _semaphore = new SemaphoreSlim(1, 1); private string shopCookieHead = "yangkeduo.com"; - private string shopMainUrl = "https://mobile.yangkeduo.com/index.html"; - private ChromiumWebBrowser cefWebBrowser = null; - private string currentUrl = ""; + private string shopMainUrl = "https://mobile.yangkeduo.com/index.html"; + private ChromiumWebBrowser cefWebBrowser = null; + private string currentUrl = ""; - private bool IsSoldOut = false; + private bool IsSoldOut = false; - // 当前买手 - private BuyerLoginInfo buyer = null; - // 订单商品 - private oms_wei_order_item_info orderItem = null; - // 关联商品 - private WXBuyMapInfo buyMap = null; - // 订单仓库 - private TransitWarehouseParam transitWarehouse = null; - // (拍单后)回调函数,过滤订单 - private Action filterOrderAction = null; - // (拍单后)回调函数,更新拍单余额 - private Action updateBalanceAction = null; + // 当前买手 + private BuyerLoginInfo buyer = null; + // 订单商品 + private oms_wei_order_item_info orderItem = null; + // 关联商品 + private WXBuyMapInfo buyMap = null; + // 订单仓库 + private TransitWarehouseParam transitWarehouse = null; + // (拍单后)回调函数,过滤订单 + private Action filterOrderAction = null; + // (拍单后)回调函数,更新拍单余额 + private Action updateBalanceAction = null; /// /// 拍单中转地址 @@ -102,32 +102,32 @@ namespace TemuKJD.ToolForms public PddMobileBuyOrderForm(Action filterOrder, Action updateBalance, oms_wei_order_item_info orderItemInfo, BuyerLoginInfo buyerInfo, WXBuyMapInfo buy_map = null) - { - InitializeComponent(); + { + InitializeComponent(); - this.buyer = buyerInfo; - this.orderItem = orderItemInfo; - this.buyMap = buy_map; + this.buyer = buyerInfo; + this.orderItem = orderItemInfo; + this.buyMap = buy_map; - filterOrderAction = filterOrder; - updateBalanceAction = updateBalance; - } + filterOrderAction = filterOrder; + updateBalanceAction = updateBalance; + } - private void PddBuyOrderForm_Load(object sender, EventArgs e) - { + private void PddBuyOrderForm_Load(object sender, EventArgs e) + { lblErrMsg.Text = string.Empty; - if (this.BuyType == "direct" && pnlMap.Visible == false) - { - this.pnlDirectAddressAnalysis.Visible = true; - this.lblBuyAddress.Text = "拍单地址"; - } + if (this.BuyType == "direct" && pnlMap.Visible == false) + { + this.pnlDirectAddressAnalysis.Visible = true; + this.lblBuyAddress.Text = "拍单地址"; + } - //splitContainer1.Dock = DockStyle.Fill; - this.Height = SystemInformation.WorkingArea.Height - 80; - this.CenterToScreen(); + //splitContainer1.Dock = DockStyle.Fill; + this.Height = SystemInformation.WorkingArea.Height - 80; + this.CenterToScreen(); - chkAutoChangeWarehouseAddress.Checked = GlobalConfig.BuyConfig.IsAutoChangeWarehouseAddress; + chkAutoChangeWarehouseAddress.Checked = GlobalConfig.BuyConfig.IsAutoChangeWarehouseAddress; chkUseAppBalance.Checked = GlobalConfig.BuyConfig.IsUseAppBalance; // 强制使用软件余额而非erp余额拍单 @@ -137,10 +137,10 @@ namespace TemuKJD.ToolForms if (IsAutoBuy) CloseAfterSecond = 60; if (CloseAfterSecond > 0) - { - Task.Run(() => - { - Thread.Sleep(1000 * CloseAfterSecond); + { + Task.Run(() => + { + Thread.Sleep(1000 * CloseAfterSecond); if (this.Created && IsAutoBuy) { Invoke(new Action(() => @@ -149,15 +149,15 @@ namespace TemuKJD.ToolForms this.Close(); })); } - }); - } + }); + } - if (this.ShowBuyMask == true) - { - Task.Run(() => - { - for (int i = 3; i > 0; i--) - { + if (this.ShowBuyMask == true) + { + Task.Run(() => + { + for (int i = 3; i > 0; i--) + { if (this.Created) Invoke(new Action(() => { @@ -167,8 +167,8 @@ namespace TemuKJD.ToolForms })); else break; - Thread.Sleep(1000); - } + Thread.Sleep(1400 - i * 100); + } if (this.Created) Invoke(new Action(() => @@ -178,34 +178,34 @@ namespace TemuKJD.ToolForms this.pnlMask.Dock = DockStyle.Bottom; this.pnlMask.Height = 120; })); - }); - } + }); + } - if (buyMap != null) - { - this.txtMapGoodsName.Text = buyMap.map_goods_name; - this.txtMapSkuName.Text = buyMap.map_spec_name; - this.txtMapGoodsId.Text = buyMap.map_goods_id; - this.txtMapSkuId.Text = buyMap.map_sku_id; - txtSendProvince.Text = buyMap.map_send_address; + if (buyMap != null) + { + this.txtMapGoodsName.Text = buyMap.map_goods_name; + this.txtMapSkuName.Text = buyMap.map_spec_name; + this.txtMapGoodsId.Text = buyMap.map_goods_id; + this.txtMapSkuId.Text = buyMap.map_sku_id; + txtSendProvince.Text = buyMap.map_send_address; - this.transitWarehouse = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransId == buyMap.transit_warehouse_id); - // 异常单重新拍单 - if (AbnormalTransitWarehouseOrderInfo != null) - { - transitWarehouse = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransId == AbnormalTransitWarehouseOrderInfo.platform); - } - if (transitWarehouse != null && this.BuyType == "transit") - { - cmbTransitWarehouse.Text = transitWarehouse?.TransName + " " + transitWarehouse?.TransFullAddress; - txtBuyTransitWarehouse.Text = transitWarehouse?.TransFullAddress; - } - else - { - txtBuyTransitWarehouse.Text = orderItem.ItemOrder.AddressStr; - } - } + this.transitWarehouse = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransId == buyMap.transit_warehouse_id); + // 异常单重新拍单 + if (AbnormalTransitWarehouseOrderInfo != null) + { + transitWarehouse = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransId == AbnormalTransitWarehouseOrderInfo.platform); + } + if (transitWarehouse != null && this.BuyType == "transit") + { + cmbTransitWarehouse.Text = transitWarehouse?.TransName + " " + transitWarehouse?.TransFullAddress; + txtBuyTransitWarehouse.Text = transitWarehouse?.TransFullAddress; + } + else + { + txtBuyTransitWarehouse.Text = orderItem.ItemOrder.AddressStr; + } + } else if (orderItem.PddBuyMapSkus != null && orderItem.PddBuyMapSkus.Count > 0 && AbnormalTransitWarehouseOrderInfo == null) // 不能是异常重拍 { //panel2.Visible = true; @@ -217,169 +217,169 @@ namespace TemuKJD.ToolForms } } - this.pictureBox1.Image = ImageBuild.LoadBitmapLoadBitmipImageFromUrl(orderItem.thumb_img); - this.txtShopSkuId.Text = orderItem.sku_id; - this.txtShopGoodsId.Text = orderItem.product_id; - this.txtSpuCode.Text = orderItem.out_product_id.IsNullOrEmpty() ? orderItem.product_id : orderItem.out_product_id; - this.txtSkuCode.Text = orderItem.out_sku_id.IsNullOrEmpty() ? orderItem.SkuAttrStr : orderItem.out_sku_id; - this.txtShopGoodsName.Text = orderItem.title; - this.txtShopSpecName.Text = orderItem.SkuAttrStr; - this.txtShopOrderItemCnt.Text = orderItem.sku_cnt.ParseToString(); - this.txtShopOrderItemPrice.Text = (orderItem.real_price * 0.01m + orderItem.ItemOrder?.postage_price * 0.01m / orderItem.ItemOrder?.orderItems?.Count).ParseToString(); + this.pictureBox1.Image = ImageBuild.LoadBitmapLoadBitmipImageFromUrl(orderItem.thumb_img); + this.txtShopSkuId.Text = orderItem.sku_id; + this.txtShopGoodsId.Text = orderItem.product_id; + this.txtSpuCode.Text = orderItem.out_product_id.IsNullOrEmpty() ? orderItem.product_id : orderItem.out_product_id; + this.txtSkuCode.Text = orderItem.out_sku_id.IsNullOrEmpty() ? orderItem.SkuAttrStr : orderItem.out_sku_id; + this.txtShopGoodsName.Text = orderItem.title; + this.txtShopSpecName.Text = orderItem.SkuAttrStr; + this.txtShopOrderItemCnt.Text = orderItem.sku_cnt.ParseToString(); + this.txtShopOrderItemPrice.Text = (orderItem.real_price * 0.01m + orderItem.ItemOrder?.postage_price * 0.01m / orderItem.ItemOrder?.orderItems?.Count).ParseToString(); - this.txtOrderId.Text = orderItem.order_id; - var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == orderItem.shop_id.ParseToString()); - this.txtShopName.Text = shop?.ShopAccount; + this.txtOrderId.Text = orderItem.order_id; + var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == orderItem.shop_id.ParseToString()); + this.txtShopName.Text = shop?.ShopAccount; - foreach (var warehouse in TransitWarehouseData.TransitWarehouseList) - { - this.cmbTransitWarehouse.Items.Add(warehouse.TransName + " " + warehouse.TransFullAddress); - } + foreach (var warehouse in TransitWarehouseData.TransitWarehouseList) + { + this.cmbTransitWarehouse.Items.Add(warehouse.TransName + " " + warehouse.TransFullAddress); + } - Task.Run(() => - { - Invoke(new Action(() => - { - LoadCef(); - })); - }); + Task.Run(() => + { + Invoke(new Action(() => + { + LoadCef(); + })); + }); this.AotoBuyLoop(); IsFormLoad = true; - } - - /// - /// 自动登录店铺后台 - /// - private void LoadCef() - { - if (cefWebBrowser == null) - { - //cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser("about:blank", false); - if (!string.IsNullOrEmpty(InitUrl)) - cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser(InitUrl, true, true); - else - cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser(shopMainUrl, false); - LocalResourceRequestHandler resourceRequestHandler = new LocalResourceRequestHandler(); - resourceRequestHandler.ResourceLoadCompleteEvent += RequestHandler_ResourceLoadComplete; - resourceRequestHandler.BeforeResourceLoadEvent += RequestHandler_BeforeResourceLoad; - cefWebBrowser.RequestHandler = new CustomRequestHandler(resourceRequestHandler); - var lifeSapnHandler = new LocalLifeSpanHandler(PopWindowType.SelfWindow); - cefWebBrowser.LifeSpanHandler = lifeSapnHandler; - cefWebBrowser.KeyboardHandler = new KeyboardHandler(); - cefWebBrowser.FrameLoadEnd += CefWebBrowser_FrameLoadEnd; - cefWebBrowser.AddressChanged += CefWebBrowser_AddressChanged; - cefWebBrowser.LoadError += CefWebBrowser_LoadError; - cefWebBrowser.Dock = DockStyle.Fill; - cefWebBrowser.SendToBack(); + } - //js绑定C#对象 - //PDDShopBrowserObject shopObj = new PDDShopBrowserObject(); - //shopObj.OnInfoReceived += ShopObj_OnInfoReceived; - //CefSharpSettings.WcfEnabled = true; - //cefWebBrowser.JavascriptObjectRepository.Register( - // name: "shopObj", - // objectToBind: shopObj, - // isAsync: false, - // options: new BindingOptions { Binder = BindingOptions.DefaultBinder.Binder /*CamelCaseJavascriptNames = false*/ /*cef79*/ } - //); + /// + /// 自动登录店铺后台 + /// + private void LoadCef() + { + if (cefWebBrowser == null) + { + //cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser("about:blank", false); + if (!string.IsNullOrEmpty(InitUrl)) + cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser(InitUrl, true, true); + else + cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser(shopMainUrl, false); + LocalResourceRequestHandler resourceRequestHandler = new LocalResourceRequestHandler(); + resourceRequestHandler.ResourceLoadCompleteEvent += RequestHandler_ResourceLoadComplete; + resourceRequestHandler.BeforeResourceLoadEvent += RequestHandler_BeforeResourceLoad; + cefWebBrowser.RequestHandler = new CustomRequestHandler(resourceRequestHandler); + var lifeSapnHandler = new LocalLifeSpanHandler(PopWindowType.SelfWindow); + cefWebBrowser.LifeSpanHandler = lifeSapnHandler; + cefWebBrowser.KeyboardHandler = new KeyboardHandler(); + cefWebBrowser.FrameLoadEnd += CefWebBrowser_FrameLoadEnd; + cefWebBrowser.AddressChanged += CefWebBrowser_AddressChanged; + cefWebBrowser.LoadError += CefWebBrowser_LoadError; + cefWebBrowser.Dock = DockStyle.Fill; + cefWebBrowser.SendToBack(); - //if (buyer.cookie == null) - // buyer.cookie = ""; + //js绑定C#对象 + //PDDShopBrowserObject shopObj = new PDDShopBrowserObject(); + //shopObj.OnInfoReceived += ShopObj_OnInfoReceived; + //CefSharpSettings.WcfEnabled = true; + //cefWebBrowser.JavascriptObjectRepository.Register( + // name: "shopObj", + // objectToBind: shopObj, + // isAsync: false, + // options: new BindingOptions { Binder = BindingOptions.DefaultBinder.Binder /*CamelCaseJavascriptNames = false*/ /*cef79*/ } + //); - List cookieLst = new List(); - try - { - if (buyer != null) - { - cookieLst = JsonHelper.DeserializeJsonToList(buyer?.cookie); - if (cookieLst == null) - cookieLst = new List(); - } - } - catch - { - } + //if (buyer.cookie == null) + // buyer.cookie = ""; - Task.Run(() => - { - Invoke(new Action(() => - { - splitContainer1.Panel1.Controls.Add(cefWebBrowser); - //cefWebBrowser.Load(shopMainUrl); - })); - // cef138必须init后方可设置或删除cookie - while (!cefWebBrowser.IsBrowserInitialized || !cefWebBrowser.GetBrowser().MainFrame.IsValid) - Thread.Sleep(20); - CEFBrowser.DeleteCookie(cefWebBrowser.GetCookieManager(null), "mobile.yangkeduo.com"); - CEFBrowser.DeleteCookie(cefWebBrowser.GetCookieManager(null), "yangkeduo.com"); + List cookieLst = new List(); + try + { + if (buyer != null) + { + cookieLst = JsonHelper.DeserializeJsonToList(buyer?.cookie); + if (cookieLst == null) + cookieLst = new List(); + } + } + catch + { + } - //if (cookieLst.Any(c => c.Value.StartsWith("windows_1"))) - // cefWebBrowser.ExecuteScriptAsync("navigator.__defineGetter__('userAgent', function() { return 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.5.40.8 Safari/537.36 PddWorkbench-Online PddBrowser pdd_windows_version/3.0.3.12'; });"); + Task.Run(() => + { + Invoke(new Action(() => + { + splitContainer1.Panel1.Controls.Add(cefWebBrowser); + //cefWebBrowser.Load(shopMainUrl); + })); + // cef138必须init后方可设置或删除cookie + while (!cefWebBrowser.IsBrowserInitialized || !cefWebBrowser.GetBrowser().MainFrame.IsValid) + Thread.Sleep(20); + CEFBrowser.DeleteCookie(cefWebBrowser.GetCookieManager(null), "mobile.yangkeduo.com"); + CEFBrowser.DeleteCookie(cefWebBrowser.GetCookieManager(null), "yangkeduo.com"); - //cef 138 如果没有设置RequestContext 可能为空,直接getCookieManager - //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 (cookieLst.Any(c => c.Value.StartsWith("windows_1"))) + // cefWebBrowser.ExecuteScriptAsync("navigator.__defineGetter__('userAgent', function() { return 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.5.40.8 Safari/537.36 PddWorkbench-Online PddBrowser pdd_windows_version/3.0.3.12'; });"); - if (!string.IsNullOrEmpty(InitUrl)) - cefWebBrowser.Load(InitUrl); - else - cefWebBrowser.Load(shopMainUrl); - }); - } - } + //cef 138 如果没有设置RequestContext 可能为空,直接getCookieManager + //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); + } + } - private void CefWebBrowser_LoadError(object sender, CefSharp.LoadErrorEventArgs e) - { - } + if (!string.IsNullOrEmpty(InitUrl)) + cefWebBrowser.Load(InitUrl); + else + cefWebBrowser.Load(shopMainUrl); + }); + } + } - private async void CefWebBrowser_AddressChanged(object sender, CefSharp.AddressChangedEventArgs e) - { + private void CefWebBrowser_LoadError(object sender, CefSharp.LoadErrorEventArgs e) + { + } + + private async void CefWebBrowser_AddressChanged(object sender, CefSharp.AddressChangedEventArgs e) + { if (!this.IsClose && this.Created && !this.Disposing && !this.IsDisposed) { currentUrl = e.Address; Invoke(() => { txtAddress.Text = e.Address; }); } - } + } - private void CefWebBrowser_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e) - { - //js绑定C#对象 html页面内声明绑定的C#对象 - StringBuilder sb = new StringBuilder(); - sb.Append("(function(){"); - sb.Append("CefSharp.BindObjectAsync('shopObj');"); - sb.Append("})();"); - cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(sb.ToString()); - } + private void CefWebBrowser_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e) + { + //js绑定C#对象 html页面内声明绑定的C#对象 + StringBuilder sb = new StringBuilder(); + sb.Append("(function(){"); + sb.Append("CefSharp.BindObjectAsync('shopObj');"); + sb.Append("})();"); + cefWebBrowser?.GetBrowser().MainFrame.EvaluateScriptAsync(sb.ToString()); + } - //public Func BeforeResourceLoadEvent; // sender, requestUrl, postData, request, true(表示取消执行) - private bool RequestHandler_BeforeResourceLoad(object sender, string url, string postData, IRequest request) - { - if (url.StartsWith("https://mobile.yangkeduo.com/proxy/api/api/origenes/address_info")) - { - if (chkAutoChangeWarehouseAddress.Checked && transitWarehouse != null && BuyType == "transit") - { - //var address = BaseRegex.GetStringJson(ref postData, "address"); - JObject jObj = JsonHelper.JObjectParse(postData); - jObj["province_id"] = transitWarehouse.province_id; - jObj["city_id"] = transitWarehouse.city_id; - jObj["district_id"] = transitWarehouse.district_id; - jObj["address"] = transitWarehouse.TransFullAddress + Randomx.GetId(1, 35) + Randomx.GetId(1, 9).ToString().PadLeft(2, '0') + "室" + txtSourceCode.Text; - jObj["mobile"] = TransitWaybillHelper.MobileHead[Randomx.GetId(TransitWaybillHelper.MobileHead.Count)] + Randomx.GetNumber(8); - jObj["name"] = TransitWaybillHelper.LastName[Randomx.GetId(TransitWaybillHelper.LastName.Count)] + (Randomx.GetId(2) == 1 ? "先生" : "女士"); - postData = JsonHelper.SerializeObject(jObj); - request.PostData.Elements[0].Bytes = System.Text.Encoding.UTF8.GetBytes(postData); + //public Func BeforeResourceLoadEvent; // sender, requestUrl, postData, request, true(表示取消执行) + private bool RequestHandler_BeforeResourceLoad(object sender, string url, string postData, IRequest request) + { + if (url.StartsWith("https://mobile.yangkeduo.com/proxy/api/api/origenes/address_info")) + { + if (chkAutoChangeWarehouseAddress.Checked && transitWarehouse != null && BuyType == "transit") + { + //var address = BaseRegex.GetStringJson(ref postData, "address"); + JObject jObj = JsonHelper.JObjectParse(postData); + jObj["province_id"] = transitWarehouse.province_id; + jObj["city_id"] = transitWarehouse.city_id; + jObj["district_id"] = transitWarehouse.district_id; + jObj["address"] = transitWarehouse.TransFullAddress + Randomx.GetId(1, 35) + Randomx.GetId(1, 9).ToString().PadLeft(2, '0') + "室" + txtSourceCode.Text; + jObj["mobile"] = TransitWaybillHelper.MobileHead[Randomx.GetId(TransitWaybillHelper.MobileHead.Count)] + Randomx.GetNumber(8); + jObj["name"] = TransitWaybillHelper.LastName[Randomx.GetId(TransitWaybillHelper.LastName.Count)] + (Randomx.GetId(2) == 1 ? "先生" : "女士"); + postData = JsonHelper.SerializeObject(jObj); + request.PostData.Elements[0].Bytes = System.Text.Encoding.UTF8.GetBytes(postData); Invoke(() => { this.pnlMask.Visible = false; }); } - else if (BuyType == "direct" && orderItem?.ItemOrder?.AddressStr.Contains("******") == false) - { + else if (BuyType == "direct" && orderItem?.ItemOrder?.AddressStr.Contains("******") == false) + { try { var dvProvince = GlobalConfig.PddDivisions.FirstOrDefault(d => d.name == orderItem.ItemOrder.province_name); @@ -403,15 +403,15 @@ namespace TemuKJD.ToolForms } HasChangeAddress = true; - } + } - return false; - } + return false; + } - //static int GetAntiContentsTimes = 40; + //static int GetAntiContentsTimes = 40; // 处理网页加载信息 - private async void RequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData, IRequest request) - { + private async void RequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData, IRequest request) + { try { await DoResourceLoadComplete(url, postData, responseData); @@ -420,10 +420,10 @@ namespace TemuKJD.ToolForms { if (!this.IsClose && this.Created) { - Invoke(new Action(() => - { + Invoke(new Action(() => + { if (!IsAutoBuy) - BaseMsgForm.ShowError(ex.Message); + BaseMsgForm.ShowError(ex.Message); else lblErrMsg.Text = ex.Message; })); @@ -446,17 +446,17 @@ namespace TemuKJD.ToolForms } } - public async Task DoResourceLoadComplete(string url, string postData, string responseData) - { - if (url.StartsWith("https://mobile.yangkeduo.com/order_checkout.html") && responseData.Contains("该商品已下架")) - { - IsSoldOut = true; - } + public async Task DoResourceLoadComplete(string url, string postData, string responseData) + { + if (url.StartsWith("https://mobile.yangkeduo.com/order_checkout.html") && responseData.Contains("该商品已下架")) + { + IsSoldOut = true; + } - // 个人页面 - if (url.Contains("https://mobile.yangkeduo.com/personal.html")) - { - } + // 个人页面 + if (url.Contains("https://mobile.yangkeduo.com/personal.html")) + { + } // 商品页面 获取发货地信息,如果页面没有去客服页面询问 if (url.StartsWith("https://mobile.yangkeduo.com/goods.html?goods_id=")) @@ -513,12 +513,12 @@ namespace TemuKJD.ToolForms })); } - // 待提交订单确认界面,填写拍单信息 两个接口都有可能有值,通过返回值内信息和url是否含有sku_id综合判断 - //https://mobile.yangkeduo.com/proxy/api/api/morgan/confirm/render?pdduid=8161628055192 - //https://mobile.yangkeduo.com/order_checkout.html?sku_id=1917755178967&group_id=168599782729&goods_id=966934985983&goods_number=1&page_from=0&detail_id=27322663212&_oak_rcto=YWJun7Qe7qhenWIlxgKO3uhsoi0WMIkr6Sb3iSrTsNPiwo_AHzvFVWwZ36KSfBTSAX-QF_CD92G9rA&order_extra_type=1&refer_page_element=open_btn&source_channel=0&refer_page_name=goods_detail&refer_page_id=10014_1782220402115_blxn1wofgo&refer_page_sn=10014 - //https://mobile.yangkeduo.com/order_checkout.html?sku_id=1914416497946&group_id=168211384489&goods_id=964481496910&goods_number=2&page_from=23&detail_id=27475863056&_oc_refer_ad=0&_oak_rcto=YWJQMioxuzYiHEIW34yn103Toi0WMIkr6SaYUDjBkmkvOAtI8c-ZcKMw36KSfBTSAX-QF_CD92G9rA&order_extra_type=1&refer_page_element=open_btn&source_channel=0&_x_query=%E4%B8%AD%E5%9B%BD%E5%8F%A4%E4%BB%A3%E7%AE%97%E6%9C%AF%E6%B3%95%E8%80%81%E7%89%88%E6%9C%AC%E6%B4%AA%E4%B8%95%E8%B0%9F%E8%91%97%E5%91%BD%E7%90%86%E5%AD%A6%E7%A0%94%E7%A9%B6%E5%85%A5%E9%97%A8%E9%A3%8E%E6%B0%B4%E5%AD%A6%E4%B9%A6%E7%B1%8D%E5%85%A5%E9%97%A8%E5%B1%85%E5%AE%B6&refer_page_name=goods_detail&refer_page_id=10014_1782275100226_pojdmxgpty&refer_page_sn=10014 + // 待提交订单确认界面,填写拍单信息 两个接口都有可能有值,通过返回值内信息和url是否含有sku_id综合判断 + //https://mobile.yangkeduo.com/proxy/api/api/morgan/confirm/render?pdduid=8161628055192 + //https://mobile.yangkeduo.com/order_checkout.html?sku_id=1917755178967&group_id=168599782729&goods_id=966934985983&goods_number=1&page_from=0&detail_id=27322663212&_oak_rcto=YWJun7Qe7qhenWIlxgKO3uhsoi0WMIkr6Sb3iSrTsNPiwo_AHzvFVWwZ36KSfBTSAX-QF_CD92G9rA&order_extra_type=1&refer_page_element=open_btn&source_channel=0&refer_page_name=goods_detail&refer_page_id=10014_1782220402115_blxn1wofgo&refer_page_sn=10014 + //https://mobile.yangkeduo.com/order_checkout.html?sku_id=1914416497946&group_id=168211384489&goods_id=964481496910&goods_number=2&page_from=23&detail_id=27475863056&_oc_refer_ad=0&_oak_rcto=YWJQMioxuzYiHEIW34yn103Toi0WMIkr6SaYUDjBkmkvOAtI8c-ZcKMw36KSfBTSAX-QF_CD92G9rA&order_extra_type=1&refer_page_element=open_btn&source_channel=0&_x_query=%E4%B8%AD%E5%9B%BD%E5%8F%A4%E4%BB%A3%E7%AE%97%E6%9C%AF%E6%B3%95%E8%80%81%E7%89%88%E6%9C%AC%E6%B4%AA%E4%B8%95%E8%B0%9F%E8%91%97%E5%91%BD%E7%90%86%E5%AD%A6%E7%A0%94%E7%A9%B6%E5%85%A5%E9%97%A8%E9%A3%8E%E6%B0%B4%E5%AD%A6%E4%B9%A6%E7%B1%8D%E5%85%A5%E9%97%A8%E5%B1%85%E5%AE%B6&refer_page_name=goods_detail&refer_page_id=10014_1782275100226_pojdmxgpty&refer_page_sn=10014 if (responseData.Contains("\"goods_id\"")) - { + { if (url.StartsWith("https://mobile.yangkeduo.com/proxy/api/api/morgan/confirm/render?pdduid=") || url.Contains("sku_id=")) { var data = responseData; @@ -603,7 +603,8 @@ namespace TemuKJD.ToolForms { Invoke(new Action(() => { - this.cefWebBrowser.Visible = false; + if (cefWebBrowser != null) + this.cefWebBrowser.Visible = false; BaseMsgForm.ShowError(sourceCodeRst); })); return; @@ -640,7 +641,7 @@ namespace TemuKJD.ToolForms btnManualUpdateBuyOrder_Click(null, null); })); } - } + } /// /// 自动拍单循环 @@ -781,8 +782,8 @@ namespace TemuKJD.ToolForms Thread.Sleep(200); if (host == null || client == null) { - host = cefWebBrowser.GetBrowser().GetHost(); - client = cefWebBrowser.GetDevToolsClient(); + host = cefWebBrowser?.GetBrowser().GetHost(); + client = cefWebBrowser?.GetDevToolsClient(); } else break; @@ -818,79 +819,91 @@ namespace TemuKJD.ToolForms /// /// public string GetSourceCode(TransitWarehouseParam transit) - { - JObject body = new JObject(); - body["province"] = transit.province_name; - body["city"] = transit.city_name; - body["warehouseCode"] = transit.TransId; - body["matchType"] = 1; - var url = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/getRandomTraceCode"; - var dataStr = JsonHelper.SerializeObject(body); - var sourceCodeRst = HttpResponseWXBLL.e57PostResponse(url, dataStr, ""); - var randomCode = BaseRegex.GetStringXml(ref sourceCodeRst, "randomCode"); - if (!string.IsNullOrEmpty(randomCode)) - { - Invoke(new Action(() => { txtSourceCode.Text = randomCode; })); - return randomCode; - } - else - { - return "获取失败,请关闭拍单窗口重试 " + BaseRegex.GetStringXml(ref sourceCodeRst, "msg", sourceCodeRst); - } - } + { + JObject body = new JObject(); + body["province"] = transit.province_name; + body["city"] = transit.city_name; + body["warehouseCode"] = transit.TransId; + body["matchType"] = 1; + var url = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/getRandomTraceCode"; + var dataStr = JsonHelper.SerializeObject(body); + var sourceCodeRst = HttpResponseWXBLL.e57PostResponse(url, dataStr, ""); + var randomCode = BaseRegex.GetStringXml(ref sourceCodeRst, "randomCode"); + if (!string.IsNullOrEmpty(randomCode)) + { + Invoke(new Action(() => { txtSourceCode.Text = randomCode; })); + return randomCode; + } + else + { + return "获取失败,请关闭拍单窗口重试 " + BaseRegex.GetStringXml(ref sourceCodeRst, "msg", sourceCodeRst); + } + } - /// - /// 自动填写地址 - /// - /// - /// - public async Task ChangeAddress(TransitWarehouseParam transit) - { - for (int i = 0; i < 50; i++) + /// + /// 自动填写地址 + /// + /// + /// + public async Task ChangeAddress(TransitWarehouseParam transit) + { + for (int i = 0; i < 50; i++) { Thread.Sleep(200); if (host == null || client == null) { - host = cefWebBrowser.GetBrowser().GetHost(); - client = cefWebBrowser.GetDevToolsClient(); + host = cefWebBrowser?.GetBrowser().GetHost(); + client = cefWebBrowser?.GetDevToolsClient(); } else break; - } - if (host == null || client == null) + } + if (host == null || client == null) { throw new Exception("页面加载异常"); } - // 点击地址框第一个 - var jsStr1 = @"(function() { + // 点击地址框打开地址选择 + var jsStr1 = @"(function() { var element = document.getElementsByClassName('oc-address-info')[0]; element.click(); return 'success'; })();"; - for (int i = 0; i < 50; i++) + string rstStr1 = ""; + string rstStr2 = ""; + for (int i = 0; i < 50; i++) { - Thread.Sleep(200); + Thread.Sleep(100); if (!this.Created) return "窗口已关闭"; var ts1 = await client.Runtime.EvaluateAsync(jsStr1, null, true, null, null, true, null, true); - if (ts1.Result.Value is string rstStr) - { - if (rstStr == "success") + rstStr1 = ts1.Result.Value.ParseToString(); + if (rstStr1 == "success") + { + for (int j = 0; j < 5; j++) { - ts1 = await EvaluateJsBuyTagNameAndInnerHtml("span", "修改"); - if (ts1.Result.Value is string rst && rst == "success") + Thread.Sleep(50); + + // 判断是否点击成功 + var ts2 = await EvaluateJsBuyTagNameAndInnerHtml("span", "修改"); + if (ts2.Result.Value is string rst && rst == "success") { + rstStr2 = rst; break; } } - } - } - Thread.Sleep(Randomx.GetId(300, 500)); + if (rstStr2 == "success") + break; + } + } + if (rstStr1 != "success" || rstStr2 != "success") + return "未找到修改按钮"; + Thread.Sleep(Randomx.GetId(200, 400)); - for (int i = 0; i < 50; i++) + // 点击修改地址框第一个地址 + for (int i = 0; i < 60; i++) { - Thread.Sleep(200); + Thread.Sleep(150); if (!this.Created) return "窗口已关闭"; var ts1 = await EvaluateJsBuyTagNameAndInnerHtml("span", "修改", true); @@ -899,11 +912,11 @@ namespace TemuKJD.ToolForms break; } } - Thread.Sleep(Randomx.GetId(300, 500)); + Thread.Sleep(Randomx.GetId(200, 400)); - for (int i = 0; i < 50; i++) + for (int i = 0; i < 60; i++) { - Thread.Sleep(200); + Thread.Sleep(150); if (!this.Created) return "窗口已关闭"; var ts1 = await EvaluateJsBuyTagNameAndInnerHtml("span", "保存", true); @@ -913,9 +926,9 @@ namespace TemuKJD.ToolForms break; } } - Thread.Sleep(Randomx.GetId(300, 500)); + Thread.Sleep(Randomx.GetId(200, 400)); - jsStr1 = @"(function() { var elements = document.getElementsByTagName('div'); + jsStr1 = @"(function() { var elements = document.getElementsByTagName('div'); for (i = elements.length - 1; i >= 0; i--){ var element = elements[i]; if (element.innerHTML.indexOf('" + txtBuyTransitWarehouseStr + @"') >= 0 && element.innerHTML.indexOf('" + txtSourceCode.Text.Trim() + @"') >= 0) { @@ -924,9 +937,9 @@ namespace TemuKJD.ToolForms } } })();"; - if (BuyType == "direct") - { - jsStr1 = @"(function() { var elements = document.getElementsByTagName('div'); + if (BuyType == "direct") + { + jsStr1 = @"(function() { var elements = document.getElementsByTagName('div'); for (i = elements.length - 1; i >= 0; i--){ var element = elements[i]; if (element.innerHTML.indexOf('" + orderItem?.ItemOrder?.detail_info + @"') >= 0) { @@ -935,28 +948,28 @@ namespace TemuKJD.ToolForms } } })();"; - } - for (int i = 0; i < 30; i++) + } + for (int i = 0; i < 30; i++) { Thread.Sleep(100); if (!this.Created) return "窗口已关闭"; var ts1 = await client.Runtime.EvaluateAsync(jsStr1, null, true, null, null, true, null, true); if (ts1.Result.Value is string rstStr) - { - if (rstStr == "success") - break; - } - } - Thread.Sleep(Randomx.GetId(300, 500)); - return ""; - } + { + if (rstStr == "success") + break; + } + } + Thread.Sleep(Randomx.GetId(200, 400)); + return ""; + } - private async void btnManualUpdateSendProvince_Click(object sender, EventArgs e) - { - var sendProvince = txtSendProvince.Text.Trim(); + private async void btnManualUpdateSendProvince_Click(object sender, EventArgs e) + { + var sendProvince = txtSendProvince.Text.Trim(); try { await MatchTransitWarehouse(sendProvince); @@ -965,39 +978,39 @@ namespace TemuKJD.ToolForms { BaseMsgForm.ShowError("匹配仓库失败,请手动选择"); } - } + } - async Task MatchTransitWarehouse(string sendProvince) - { - bool isAutoGetWarehouse = false; - foreach (var item in this.cmbTransitWarehouse.Items) - { - TransitWarehouseParam warehouseParam = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransName + " " + t.TransFullAddress == item.ParseToString()); - if (warehouseParam == null) - { - continue; - } - if (warehouseParam.TransFullAddress.Contains(sendProvince)) - { - Invoke(new Action(() => - { - cmbTransitWarehouse.Text = warehouseParam.TransName + " " + warehouseParam.TransFullAddress; - })); - transitWarehouse = warehouseParam; - isAutoGetWarehouse = true; - break; - } - } + async Task MatchTransitWarehouse(string sendProvince) + { + bool isAutoGetWarehouse = false; + foreach (var item in this.cmbTransitWarehouse.Items) + { + TransitWarehouseParam warehouseParam = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransName + " " + t.TransFullAddress == item.ParseToString()); + if (warehouseParam == null) + { + continue; + } + if (warehouseParam.TransFullAddress.Contains(sendProvince)) + { + Invoke(new Action(() => + { + cmbTransitWarehouse.Text = warehouseParam.TransName + " " + warehouseParam.TransFullAddress; + })); + transitWarehouse = warehouseParam; + isAutoGetWarehouse = true; + break; + } + } if (!isAutoGetWarehouse) { //黄导家庭父母5天训练营-《父母5天成为孩子成长的引路人》+《不内卷养育》2本书 - Invoke(() => - { - cmbTransitWarehouse.Text = ""; + Invoke(() => + { + cmbTransitWarehouse.Text = ""; }); throw new Exception("匹配仓库失败,请手动选择"); - } - } + } + } void MatchProdAllSkus(string data) @@ -1014,12 +1027,13 @@ namespace TemuKJD.ToolForms } private void ShopLoginForm_FormClosed(object sender, FormClosedEventArgs e) - { - //OnSaveComplete(shop); - Task.Run(() => { - Thread.Sleep(500); - if (!this.Disposing && !this.IsDisposed) - { + { + //OnSaveComplete(shop); + Task.Run(() => + { + Thread.Sleep(500); + if (!this.Disposing && !this.IsDisposed) + { //MainForm.instance.Invoke(new Action(() => { this.Dispose(); })); // 1. 解除 JS 绑定 @@ -1036,22 +1050,22 @@ namespace TemuKJD.ToolForms cefWebBrowser?.Dispose(); cefWebBrowser = null; } - }); - } + }); + } - private void txtAddress_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyCode == Keys.Enter) - { - if (cefWebBrowser != null) - { - cefWebBrowser.Load(txtAddress.Text); - } - } - } + private void txtAddress_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + if (cefWebBrowser != null) + { + cefWebBrowser.Load(txtAddress.Text); + } + } + } - private async void btnManualUpdateTransitWarehouse_Click(object sender, EventArgs e) - { + private async void btnManualUpdateTransitWarehouse_Click(object sender, EventArgs e) + { try { await ManualUpdateTransitWarehouse(); @@ -1059,7 +1073,7 @@ namespace TemuKJD.ToolForms catch (Exception ex) { } - } + } public async Task ManualUpdateTransitWarehouse() { @@ -1090,22 +1104,26 @@ namespace TemuKJD.ToolForms //var jsStr = "document.getElementById('orderGoodsBlock').getElementsByTagName('div')[0].click();"; var jsStr = sb.ToString(); - var host = cefWebBrowser.GetBrowser().GetHost(); - var client = cefWebBrowser.GetDevToolsClient(); - var rst = await client.Runtime.EvaluateAsync(jsStr, null, true, null, null, true, null, true); - for (int i = 0; i < 80; i++) + var host = cefWebBrowser?.GetBrowser().GetHost(); + var client = cefWebBrowser?.GetDevToolsClient(); + if (host != null && client != null) { - if (rst.Result.Value.ParseToString() == "failed") - break; - if (!(this.pddFrontGoodsLite?.mallId).IsNullOrZero()) - break; - await Task.Delay(100); + var rst = await client.Runtime.EvaluateAsync(jsStr, null, true, null, null, true, null, true); + for (int i = 0; i < 80; i++) + { + if (rst.Result.Value.ParseToString() == "failed") + break; + if (!(this.pddFrontGoodsLite?.mallId).IsNullOrZero()) + break; + await Task.Delay(100); + } } } this.Enabled = false; - if (this.cefWebBrowser != null && - !this.cefWebBrowser.Address.StartsWith("https://mobile.yangkeduo.com/order.html?order_sn=") && (this.pddFrontGoodsLite?.goodsId).ParseToString() == txtMapGoodsId.Text.Trim()) + if (this.cefWebBrowser != null && + !this.cefWebBrowser.Address.StartsWith("https://mobile.yangkeduo.com/order.html?order_sn=") && + (this.pddFrontGoodsLite?.goodsId).ParseToString() == txtMapGoodsId.Text.Trim()) { } @@ -1250,25 +1268,25 @@ namespace TemuKJD.ToolForms } } - private async void btnManualUpdateBuyOrder_Click(object sender, EventArgs e) - { - if (BuyType == "transit" && txtSourceCode.Text.Trim().Length != 6) + private async void btnManualUpdateBuyOrder_Click(object sender, EventArgs e) + { + if (BuyType == "transit" && txtSourceCode.Text.Trim().Length != 6) { if (!IsAutoBuy) BaseMsgForm.ShowError("溯源码长度错误!"); else Invoke(() => { lblErrMsg.Text = "溯源码长度错误!"; }); return; - } - var client = cefWebBrowser.GetDevToolsClient(); - if (client == null) + } + var client = cefWebBrowser?.GetDevToolsClient(); + if (client == null) { if (!IsAutoBuy) BaseMsgForm.ShowError("页面未加载!"); else Invoke(() => { lblErrMsg.Text = "页面未加载!"; }); return; - } + } //var sourceCode = txtSourceCode.Text.Trim(); //var jsStr1 = @"(function() { var elements = document.getElementsByTagName('div'); // for (i = elements.length - 1; i >= 0; i--){ @@ -1298,56 +1316,56 @@ namespace TemuKJD.ToolForms else Invoke(() => { lblErrMsg.Text = "缺少中转地址,请重新绑定商品并选择仓库地址"; }); return; - } - var transit = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransFullAddress == txtBuyTransitWarehouseStr); - if (BuyType == "transit" && transit == null) + } + var transit = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransFullAddress == txtBuyTransitWarehouseStr); + if (BuyType == "transit" && transit == null) { if (!IsAutoBuy) BaseMsgForm.ShowError("中转地址对应的中转仓不存在,请核对"); else Invoke(() => { lblErrMsg.Text = "中转地址对应的中转仓不存在,请核对"; }); return; - } - if (string.IsNullOrEmpty(txtBuyOrderId.Text.Trim())) + } + if (string.IsNullOrEmpty(txtBuyOrderId.Text.Trim())) { if (!IsAutoBuy) BaseMsgForm.ShowError("缺少拍单订单号,请拍单后再提交"); else Invoke(() => { lblErrMsg.Text = "缺少拍单订单号,请拍单后再提交"; }); return; - } - if ((txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt().IsNullOrZero()) + } + if ((txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt().IsNullOrZero()) { if (!IsAutoBuy) BaseMsgForm.ShowError("缺少拍单金额,请拍单后再提交"); else Invoke(() => { lblErrMsg.Text = "缺少拍单金额,请拍单后再提交"; }); return; - } + } - btnManualUpdateBuyOrder.Enabled = false; + btnManualUpdateBuyOrder.Enabled = false; - if (BuyType == "transit") - { - #region 正常中转拍单 - if (AbnormalTransitWarehouseOrderInfo == null) - { - JObject body = new JObject(); - body["orderNo"] = orderItem.order_id; // 微信订单号 - body["orderSkuId"] = orderItem.sku_id; // 微信商品skuId - body["outOrderNo"] = txtBuyOrderId.Text.Trim(); // 拍单订单号 - body["outAmount"] = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt() + ""; // 外采金额 - body["buyerAccount"] = buyer.buyer_nick; // 买手昵称 - body["purchaserNote"] = BaseClass.NickName; // 购买软件账户备注 - body["express1Company"] = ""; // 物流公司编号 - body["express1Waybill"] = ""; // 物流编号 - body["platform"] = transit.TransId; // 中转仓ID - body["orderPlatformCode"] = "WEISHOP"; - body["randomCode"] = txtSourceCode.Text.Trim(); - if (GlobalConfig.BuyConfig.IsUseAppBalance) - { - body["userName"] = BaseClass.UserName; // 软件端用户名 - body["purchaserNote"] = BaseClass.UserName + "-" + BaseClass.NickName; // 购买软件账户备注 + if (BuyType == "transit") + { + #region 正常中转拍单 + if (AbnormalTransitWarehouseOrderInfo == null) + { + JObject body = new JObject(); + body["orderNo"] = orderItem.order_id; // 微信订单号 + body["orderSkuId"] = orderItem.sku_id; // 微信商品skuId + body["outOrderNo"] = txtBuyOrderId.Text.Trim(); // 拍单订单号 + body["outAmount"] = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt() + ""; // 外采金额 + body["buyerAccount"] = buyer.buyer_nick; // 买手昵称 + body["purchaserNote"] = BaseClass.NickName; // 购买软件账户备注 + body["express1Company"] = ""; // 物流公司编号 + body["express1Waybill"] = ""; // 物流编号 + body["platform"] = transit.TransId; // 中转仓ID + body["orderPlatformCode"] = "WEISHOP"; + body["randomCode"] = txtSourceCode.Text.Trim(); + if (GlobalConfig.BuyConfig.IsUseAppBalance) + { + body["userName"] = BaseClass.UserName; // 软件端用户名 + body["purchaserNote"] = BaseClass.UserName + "-" + BaseClass.NickName; // 购买软件账户备注 string basePostageKey = WarehousePostageInfo.DicWarehousePostage.Keys.FirstOrDefault(pk => (orderItem.ItemOrder?.province_name).ParseToString().Contains(pk)); decimal basePostage = basePostageKey.IsNullOrEmpty() ? WarehousePostageInfo.DicWarehousePostage.Values.Min() : WarehousePostageInfo.DicWarehousePostage[basePostageKey]; @@ -1355,60 +1373,60 @@ namespace TemuKJD.ToolForms body["oemAmount"] = (BaseClass.PostagePerOrderDiff * 100).ParseToInt().ParseToString(); body["postage"] = ((basePostage + BaseClass.PostagePerOrderDiff) * 100).ParseToInt().ParseToString(); } - var url = "https://po.e57.cn/prod-api/api/oms-api/externalProcurement/saveOrUpdate"; - var dataStr = JsonHelper.SerializeObject(body); - //dataStr = "{\"orderNo\":\"3737339733954942720\",\"outOrderNo\":\"2606846854564\",\"buyerAccount\":\"测试\",\"outAmount\":\"2000\",\"purchaserNote\":\"测试\",\"express1Company\":\"\"" + - // ",\"express1Waybill\":\"\",\"platform\":\"XDYSHC\",\"orderPlatformCode\":\"WEISHOP\"}"; - var exportRst = HttpResponseWXBLL.e57PostResponse(url, dataStr, ""); - //保存成功200 - //订单不存在:373733973395494272500 - if (!exportRst.ParseToString().Contains("200")) - { - string msg = ""; - string code = ""; - try - { - System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); - xmlDoc.LoadXml(exportRst); - code = xmlDoc["AjaxResult"]["code"].InnerText; - msg = xmlDoc["AjaxResult"]["msg"].InnerText; - } - catch - { - msg = exportRst.ParseToString(); + var url = "https://po.e57.cn/prod-api/api/oms-api/externalProcurement/saveOrUpdate"; + var dataStr = JsonHelper.SerializeObject(body); + //dataStr = "{\"orderNo\":\"3737339733954942720\",\"outOrderNo\":\"2606846854564\",\"buyerAccount\":\"测试\",\"outAmount\":\"2000\",\"purchaserNote\":\"测试\",\"express1Company\":\"\"" + + // ",\"express1Waybill\":\"\",\"platform\":\"XDYSHC\",\"orderPlatformCode\":\"WEISHOP\"}"; + var exportRst = HttpResponseWXBLL.e57PostResponse(url, dataStr, ""); + //保存成功200 + //订单不存在:373733973395494272500 + if (!exportRst.ParseToString().Contains("200")) + { + string msg = ""; + string code = ""; + try + { + System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); + xmlDoc.LoadXml(exportRst); + code = xmlDoc["AjaxResult"]["code"].InnerText; + msg = xmlDoc["AjaxResult"]["msg"].InnerText; + } + catch + { + msg = exportRst.ParseToString(); } if (!IsAutoBuy) BaseMsgForm.ShowError("拍单保存失败,服务端返回 " + msg, "拍单信息保存失败"); else Invoke(() => { lblErrMsg.Text = "拍单保存失败,服务端返回 " + msg; }); btnManualUpdateBuyOrder.Enabled = true; - return; - } + return; + } - if (updateBalanceAction != null) - updateBalanceAction(); + if (updateBalanceAction != null) + updateBalanceAction(); - orderItem.ItemTransitOrders.Insert(0, new oms_wei_external_procurement_log_info() - { - buyer_account = buyer.buyer_nick, - id = 0, - order_no = orderItem.order_id, - order_sku_id = orderItem.sku_id, - out_amount = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt(), - out_order_no = txtBuyOrderId.Text.Trim(), - purchaser_note = body["purchaserNote"].ParseToString(), + orderItem.ItemTransitOrders.Insert(0, new oms_wei_external_procurement_log_info() + { + buyer_account = buyer.buyer_nick, + id = 0, + order_no = orderItem.order_id, + order_sku_id = orderItem.sku_id, + out_amount = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt(), + out_order_no = txtBuyOrderId.Text.Trim(), + purchaser_note = body["purchaserNote"].ParseToString(), created_time = DateTime.Now, - }); - orderItem.SetOrderItemTextProperty(); - // 利润计算重置为最小值,控件Resource更新时将计算利润 - orderItem.ProfitCount = decimal.MinValue; - var order = orderItem?.ItemOrder; + }); + orderItem.SetOrderItemTextProperty(); + // 利润计算重置为最小值,控件Resource更新时将计算利润 + orderItem.ProfitCount = decimal.MinValue; + var order = orderItem?.ItemOrder; orderItem.SetOrderItemTextProperty(); order.SetOrderTextProperty(); - if (filterOrderAction != null && order != null) - { - filterOrderAction(order, true); - } + if (filterOrderAction != null && order != null) + { + filterOrderAction(order, true); + } //// 前一天的订单直接提前取号 //if (DateTime.Now.Date > BaseClass.StampToDateTime(order.create_time).Date) @@ -1451,166 +1469,166 @@ namespace TemuKJD.ToolForms #region 秒退异常单中转重拍 if (AbnormalTransitWarehouseOrderInfo != null) - { - var url = BaseClass.Build29WxObjString("order/wx_update_abnormal_transit_order"); - var data = UserLogin.GetSignaturex(); - data += "&out_order_no=" + txtBuyOrderId.Text.Trim(); - data += "&order_no=" + orderItem.order_id; - data += "&order_sku_id=" + orderItem.sku_id; - data += "&buyer_account=" + buyer.buyer_nick; - data += "&out_amount=" + (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt() + ""; - data += "&purchaser_note=" + BaseClass.UserName + "-" + BaseClass.NickName; // 购买软件账户备注 - data += "&refund_status=" + ""; - data += "&old_out_order_no=" + AbnormalTransitWarehouseOrderInfo.out_order_no; - data += "&old_order_no=" + AbnormalTransitWarehouseOrderInfo.order_no; - data += "&old_order_sku_id=" + AbnormalTransitWarehouseOrderInfo.order_sku_id; - data += "&old_buyer_account=" + AbnormalTransitWarehouseOrderInfo.buyer_account; - data += "&old_out_amount=" + AbnormalTransitWarehouseOrderInfo.out_amount; - data += "&old_purchaser_note=" + AbnormalTransitWarehouseOrderInfo.purchaser_note; - data += "&old_refund_status=" + AbnormalTransitWarehouseOrderInfo.refund_status; - data += "&order_code=" + AbnormalTransitWarehouseOrderInfo.order_code; - var html = GetHtml.PostUtf8(url, data); - if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) - { - var msg = BaseRegex.GetStringJsonByRegs(ref html, html, "msg"); - BaseMsgForm.ShowError("异常单重拍保存失败"); - btnManualUpdateBuyOrder.Enabled = true; - return; - } + { + var url = BaseClass.Build29WxObjString("order/wx_update_abnormal_transit_order"); + var data = UserLogin.GetSignaturex(); + data += "&out_order_no=" + txtBuyOrderId.Text.Trim(); + data += "&order_no=" + orderItem.order_id; + data += "&order_sku_id=" + orderItem.sku_id; + data += "&buyer_account=" + buyer.buyer_nick; + data += "&out_amount=" + (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt() + ""; + data += "&purchaser_note=" + BaseClass.UserName + "-" + BaseClass.NickName; // 购买软件账户备注 + data += "&refund_status=" + ""; + data += "&old_out_order_no=" + AbnormalTransitWarehouseOrderInfo.out_order_no; + data += "&old_order_no=" + AbnormalTransitWarehouseOrderInfo.order_no; + data += "&old_order_sku_id=" + AbnormalTransitWarehouseOrderInfo.order_sku_id; + data += "&old_buyer_account=" + AbnormalTransitWarehouseOrderInfo.buyer_account; + data += "&old_out_amount=" + AbnormalTransitWarehouseOrderInfo.out_amount; + data += "&old_purchaser_note=" + AbnormalTransitWarehouseOrderInfo.purchaser_note; + data += "&old_refund_status=" + AbnormalTransitWarehouseOrderInfo.refund_status; + data += "&order_code=" + AbnormalTransitWarehouseOrderInfo.order_code; + var html = GetHtml.PostUtf8(url, data); + if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) + { + var msg = BaseRegex.GetStringJsonByRegs(ref html, html, "msg"); + BaseMsgForm.ShowError("异常单重拍保存失败"); + btnManualUpdateBuyOrder.Enabled = true; + return; + } - if (orderItem.ItemTransitOrder != null) - { - orderItem.ItemTransitOrder.buyer_account = buyer.buyer_nick; - orderItem.ItemTransitOrder.id = 0; - orderItem.ItemTransitOrder.order_no = orderItem.order_id; - orderItem.ItemTransitOrder.order_sku_id = orderItem.sku_id; - orderItem.ItemTransitOrder.out_amount = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt(); - orderItem.ItemTransitOrder.out_order_no = txtBuyOrderId.Text.Trim(); - orderItem.ItemTransitOrder.purchaser_note = BaseClass.UserName + "-" + BaseClass.NickName; - orderItem.ItemTransitOrder.refund_status = ""; - } - orderItem.SetOrderItemTextProperty(); - // 利润计算重置为最小值,控件Resource更新时将计算利润 - orderItem.ProfitCount = decimal.MinValue; - var order = orderItem?.ItemOrder; - if (filterOrderAction != null && order != null) - { - filterOrderAction(order, true); - } - } + if (orderItem.ItemTransitOrder != null) + { + orderItem.ItemTransitOrder.buyer_account = buyer.buyer_nick; + orderItem.ItemTransitOrder.id = 0; + orderItem.ItemTransitOrder.order_no = orderItem.order_id; + orderItem.ItemTransitOrder.order_sku_id = orderItem.sku_id; + orderItem.ItemTransitOrder.out_amount = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt(); + orderItem.ItemTransitOrder.out_order_no = txtBuyOrderId.Text.Trim(); + orderItem.ItemTransitOrder.purchaser_note = BaseClass.UserName + "-" + BaseClass.NickName; + orderItem.ItemTransitOrder.refund_status = ""; + } + orderItem.SetOrderItemTextProperty(); + // 利润计算重置为最小值,控件Resource更新时将计算利润 + orderItem.ProfitCount = decimal.MinValue; + var order = orderItem?.ItemOrder; + if (filterOrderAction != null && order != null) + { + filterOrderAction(order, true); + } + } #endregion if (!IsAutoBuy) BaseMsgForm.ShowInfo("拍单信息保存成功"); - } + } - if (BuyType == "direct") - { - #region 直发拍单 + if (BuyType == "direct") + { + #region 直发拍单 - var url = BaseClass.Build29WxObjString("order/wx_get_order_item_ext_info"); - var data = UserLogin.GetSignaturex(); - data += "&wx_order_id_in=" + orderItem.order_id; - data += "&wx_sku_id_in=" + orderItem.sku_id; - 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")) + var url = BaseClass.Build29WxObjString("order/wx_get_order_item_ext_info"); + var data = UserLogin.GetSignaturex(); + data += "&wx_order_id_in=" + orderItem.order_id; + data += "&wx_sku_id_in=" + orderItem.sku_id; + 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")) { if (!IsAutoBuy) BaseMsgForm.ShowError("直发拍单信息保存失败(01) " + BaseRegex.GetStringJson(ref html, "msg")); else Invoke(() => { lblErrMsg.Text = "直发拍单信息保存失败(01) " + BaseRegex.GetStringJson(ref html, "msg"); }); return; - } - var existOrderExtList = JsonHelper.DeserializeJsonToList(JsonHelper.JObjectParse(html)["data"].ParseToString()); - order_item_ext orderExt = new order_item_ext() - { - 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, - buy_type = "直发", - }; - 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 += "&out_order_id=" + orderExt.out_order_id; - data1 += "&shop_app_id=" + orderExt.shop_app_id; - data1 += "&shop_name=" + orderExt.shop_name; - data1 += "&buy_type=" + orderExt.buy_type; - var html1 = GetHtml.PostUtf8(url1, data1); - if (string.IsNullOrEmpty(html1) || !html1.Contains("\"code\":200")) + } + var existOrderExtList = JsonHelper.DeserializeJsonToList(JsonHelper.JObjectParse(html)["data"].ParseToString()); + order_item_ext orderExt = new order_item_ext() + { + 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, + buy_type = "直发", + }; + 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 += "&out_order_id=" + orderExt.out_order_id; + data1 += "&shop_app_id=" + orderExt.shop_app_id; + data1 += "&shop_name=" + orderExt.shop_name; + data1 += "&buy_type=" + orderExt.buy_type; + var html1 = GetHtml.PostUtf8(url1, data1); + if (string.IsNullOrEmpty(html1) || !html1.Contains("\"code\":200")) { if (!IsAutoBuy) BaseMsgForm.ShowError("直发拍单信息保存失败(02) " + BaseRegex.GetStringJson(ref html1, "msg")); else Invoke(() => { lblErrMsg.Text = "直发拍单信息保存失败(02) " + BaseRegex.GetStringJson(ref html, "msg"); }); return; - } + } - // 拍单后覆盖原售后状态(如果有) - var url2 = BaseClass.Build29WxObjString("order/wx_update_erp_out_after_sale_status"); - var data2 = UserLogin.GetSignaturex(); - data2 += "&order_id=" + orderItem.order_id; - data2 += "&out_after_sale_status=NULL"; - 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")) + // 拍单后覆盖原售后状态(如果有) + var url2 = BaseClass.Build29WxObjString("order/wx_update_erp_out_after_sale_status"); + var data2 = UserLogin.GetSignaturex(); + data2 += "&order_id=" + orderItem.order_id; + data2 += "&out_after_sale_status=NULL"; + 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")) { if (!IsAutoBuy) BaseMsgForm.ShowError("直发拍单信息保存失败(03) " + BaseRegex.GetStringJson(ref html2, "msg")); else Invoke(() => { lblErrMsg.Text = "直发拍单信息保存失败(03) " + BaseRegex.GetStringJson(ref html, "msg"); }); return; - } + } - JObject obj = new JObject(); - obj["platform"] = "WEISHOP"; - obj["outAmount"] = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt() + ""; - obj["outAccount"] = buyer.buyer_name; - obj["orderId"] = orderItem.order_id; - obj["outOrderNo"] = txtBuyOrderId.Text.Trim(); - //if (!order.outExpressCompanyCode.IsNullOrEmpty() && !order.tracking_number.IsNullOrEmpty()) - //{ - // obj["outExpressCompany"] = order.outExpressCompanyCode; - // obj["outExpressNo"] = order.tracking_number; - //} - var dataStr = JsonHelper.SerializeObject(obj); - url = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/bind/v2"; - //成功 "0SUCCESS" - //更新微信外采订单状态成功1 - //失败 已存在 1505调用微信接口更新物流信息失败: 非法参数, 同运单号拦截 rid: 69d8ab9c-22baa3b1-67de0d95 - var exportRst = HttpResponseWXBLL.e57PostResponse(url, dataStr, ""); - var code = BaseRegex.GetStringXml(ref exportRst, "code"); - var msg = BaseRegex.GetStringXml(ref exportRst, "msg"); + JObject obj = new JObject(); + obj["platform"] = "WEISHOP"; + obj["outAmount"] = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt() + ""; + obj["outAccount"] = buyer.buyer_name; + obj["orderId"] = orderItem.order_id; + obj["outOrderNo"] = txtBuyOrderId.Text.Trim(); + //if (!order.outExpressCompanyCode.IsNullOrEmpty() && !order.tracking_number.IsNullOrEmpty()) + //{ + // obj["outExpressCompany"] = order.outExpressCompanyCode; + // obj["outExpressNo"] = order.tracking_number; + //} + var dataStr = JsonHelper.SerializeObject(obj); + url = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/bind/v2"; + //成功 "0SUCCESS" + //更新微信外采订单状态成功1 + //失败 已存在 1505调用微信接口更新物流信息失败: 非法参数, 同运单号拦截 rid: 69d8ab9c-22baa3b1-67de0d95 + var exportRst = HttpResponseWXBLL.e57PostResponse(url, dataStr, ""); + var code = BaseRegex.GetStringXml(ref exportRst, "code"); + var msg = BaseRegex.GetStringXml(ref exportRst, "msg"); - if (code == "0" || code == "1") - { - // 利润计算重置为最小值,控件Resource更新时将计算利润 - orderItem.ProfitCount = decimal.MinValue; - var order = orderItem?.ItemOrder; - if (filterOrderAction != null && order != null) - { - orderItem.OrderItemExt = orderExt; - order.out_account = buyer.buyer_id; - order.out_express_company = "OTHER"; - order.out_order_no = txtBuyOrderId.Text.Trim(); - orderItem.SetOrderItemTextProperty(); - order.SetOrderTextProperty(); - filterOrderAction(order, true); - } + if (code == "0" || code == "1") + { + // 利润计算重置为最小值,控件Resource更新时将计算利润 + orderItem.ProfitCount = decimal.MinValue; + var order = orderItem?.ItemOrder; + if (filterOrderAction != null && order != null) + { + orderItem.OrderItemExt = orderExt; + order.out_account = buyer.buyer_id; + order.out_express_company = "OTHER"; + order.out_order_no = txtBuyOrderId.Text.Trim(); + orderItem.SetOrderItemTextProperty(); + order.SetOrderTextProperty(); + filterOrderAction(order, true); + } if (!IsAutoBuy) BaseMsgForm.ShowInfo("拍单信息保存成功"); - } - else - { + } + else + { //order.sendStatus = "发送失败 " + (string.IsNullOrEmpty(msg) ? data : msg); //NaiBa.Util.Helper.ConfigHelper.SaveConfig("other_buyer_order_list", lstOtherBuyerOrderInfoLite); if (!IsAutoBuy) @@ -1618,141 +1636,141 @@ namespace TemuKJD.ToolForms else Invoke(() => { lblErrMsg.Text = "直发拍单保存失败,服务端返回 " + msg; }); return; - } + } #endregion } this.IsClose = true; this.IsBuySuccess = true; this.Close(); - } + } - private void pictureBox1_Click(object sender, EventArgs e) - { - if (pictureBox1.Size.Width == 100) - { - pictureBox1.Size = new Size(430, 430); - pictureBox1.BringToFront(); - } - else - { - pictureBox1.Size = new Size(100, 100); - } - } + private void pictureBox1_Click(object sender, EventArgs e) + { + if (pictureBox1.Size.Width == 100) + { + pictureBox1.Size = new Size(430, 430); + pictureBox1.BringToFront(); + } + else + { + pictureBox1.Size = new Size(100, 100); + } + } - private void btnJumpOrderList_Click(object sender, EventArgs e) - { - cefWebBrowser.Load("https://mobile.yangkeduo.com/orders.html"); - } + private void btnJumpOrderList_Click(object sender, EventArgs e) + { + cefWebBrowser?.Load("https://mobile.yangkeduo.com/orders.html"); + } - private void btnReMap_Click(object sender, EventArgs e) - { - transitWarehouse = null; - pnlMap.Visible = true; - } + private void btnReMap_Click(object sender, EventArgs e) + { + transitWarehouse = null; + pnlMap.Visible = true; + } - private void cmbTransitWarehouse_SelectedIndexChanged(object sender, EventArgs e) - { - transitWarehouse = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransName + " " + t.TransFullAddress == cmbTransitWarehouse.Text); - } + private void cmbTransitWarehouse_SelectedIndexChanged(object sender, EventArgs e) + { + transitWarehouse = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransName + " " + t.TransFullAddress == cmbTransitWarehouse.Text); + } - private void chkAutoChangeWarehouseAddress_CheckedChanged(object sender, EventArgs e) - { - if (IsFormLoad) - { - GlobalConfig.BuyConfig.IsAutoChangeWarehouseAddress = chkAutoChangeWarehouseAddress.Checked; - NaiBa.Util.Helper.ConfigHelper.SaveConfig("buy_config_260708", GlobalConfig.BuyConfig); - } - } + private void chkAutoChangeWarehouseAddress_CheckedChanged(object sender, EventArgs e) + { + if (IsFormLoad) + { + GlobalConfig.BuyConfig.IsAutoChangeWarehouseAddress = chkAutoChangeWarehouseAddress.Checked; + NaiBa.Util.Helper.ConfigHelper.SaveConfig("buy_config_260708", GlobalConfig.BuyConfig); + } + } - private void chkUseAppBalance_CheckedChanged(object sender, EventArgs e) - { - if (IsFormLoad) - { - GlobalConfig.BuyConfig.IsUseAppBalance = chkUseAppBalance.Checked; + private void chkUseAppBalance_CheckedChanged(object sender, EventArgs e) + { + if (IsFormLoad) + { + GlobalConfig.BuyConfig.IsUseAppBalance = chkUseAppBalance.Checked; GlobalConfig.BuyConfig.IsUseAppBalance = true; NaiBa.Util.Helper.ConfigHelper.SaveConfig("buy_config_260708", GlobalConfig.BuyConfig); - } - } + } + } - private async void btnAnalysis_Click(object sender, EventArgs e) - { - var order = this.orderItem?.ItemOrder; - if (order == null) - return; + private async void btnAnalysis_Click(object sender, EventArgs e) + { + var order = this.orderItem?.ItemOrder; + if (order == null) + return; - var txt = txtDirectAddress.Text.Trim(); - txt = txt.Replace("\r", "").Replace("\n", ""); + var txt = txtDirectAddress.Text.Trim(); + txt = txt.Replace("\r", "").Replace("\n", ""); - if (txt.Contains("拨打请输入分机号")) - { - Match extensionNumberMatch = Regex.Match(txt, @"拨打请输入分机号\d{4}"); - if (extensionNumberMatch.Success) - { - var extensionNumber = extensionNumberMatch.Value.Replace("拨打请输入分机号", ""); - txt = txt.Replace("-" + extensionNumber, ""); - txt = txt.Replace("(", "("); - txt = txt.Replace(")", ")"); - txt = txt.Replace("(拨打请输入分机号" + extensionNumber + ")", ""); - } - } + if (txt.Contains("拨打请输入分机号")) + { + Match extensionNumberMatch = Regex.Match(txt, @"拨打请输入分机号\d{4}"); + if (extensionNumberMatch.Success) + { + var extensionNumber = extensionNumberMatch.Value.Replace("拨打请输入分机号", ""); + txt = txt.Replace("-" + extensionNumber, ""); + txt = txt.Replace("(", "("); + txt = txt.Replace(")", ")"); + txt = txt.Replace("(拨打请输入分机号" + extensionNumber + ")", ""); + } + } - // 定义座机号的正则表达式 - string landlinePattern = @"\d{3}-\d{8}|\d{4}-\d{7}"; - // 定义手机号的正则表达式 - string mobilePattern = @"1[3-9]\d{9}"; + // 定义座机号的正则表达式 + string landlinePattern = @"\d{3}-\d{8}|\d{4}-\d{7}"; + // 定义手机号的正则表达式 + string mobilePattern = @"1[3-9]\d{9}"; - // 使用正则表达式匹配座机号和手机号 - Match landlineMatch = Regex.Match(txt, landlinePattern); - Match mobileMatch = Regex.Match(txt, mobilePattern); + // 使用正则表达式匹配座机号和手机号 + Match landlineMatch = Regex.Match(txt, landlinePattern); + Match mobileMatch = Regex.Match(txt, mobilePattern); - var phone = ""; - if (landlineMatch.Success) - { - phone = landlineMatch.Value; - txt = txt.Replace(phone, " "); - } - if (mobileMatch.Success) - { - phone = mobileMatch.Value; - txt = txt.Replace(phone, " "); - } - if (!string.IsNullOrEmpty(phone)) - { - this.orderItem.ItemOrder.tel_number = phone; - } + var phone = ""; + if (landlineMatch.Success) + { + phone = landlineMatch.Value; + txt = txt.Replace(phone, " "); + } + if (mobileMatch.Success) + { + phone = mobileMatch.Value; + txt = txt.Replace(phone, " "); + } + if (!string.IsNullOrEmpty(phone)) + { + this.orderItem.ItemOrder.tel_number = phone; + } - var province = GlobalConfig.Divisions.FirstOrDefault(d => txt.Contains(d.name)); - if (province == null) - return; - this.orderItem.ItemOrder.province_name = province.name; - var city = province.children.FirstOrDefault(c => txt.Contains(c.name)); - if (city == null) - return; - this.orderItem.ItemOrder.city_name = city.name; - var county = city.children.FirstOrDefault(c => txt.Contains(c.name)); - if (county == null) - return; - this.orderItem.ItemOrder.county_name = county.name; - txt = txt.Replace(county.name, " ").Replace(city.name, " ").Replace(province.name, " "); + var province = GlobalConfig.Divisions.FirstOrDefault(d => txt.Contains(d.name)); + if (province == null) + return; + this.orderItem.ItemOrder.province_name = province.name; + var city = province.children.FirstOrDefault(c => txt.Contains(c.name)); + if (city == null) + return; + this.orderItem.ItemOrder.city_name = city.name; + var county = city.children.FirstOrDefault(c => txt.Contains(c.name)); + if (county == null) + return; + this.orderItem.ItemOrder.county_name = county.name; + txt = txt.Replace(county.name, " ").Replace(city.name, " ").Replace(province.name, " "); - var tArr = txt.Split(new string[] { " ", ",", "," }, StringSplitOptions.RemoveEmptyEntries); - tArr = tArr.OrderBy(t => t.Length).ToArray(); - this.orderItem.ItemOrder.user_name = tArr.FirstOrDefault(); - this.orderItem.ItemOrder.detail_info = string.Join("", tArr).Replace(this.orderItem.ItemOrder.user_name, "").Trim(',',','); + var tArr = txt.Split(new string[] { " ", ",", "," }, StringSplitOptions.RemoveEmptyEntries); + tArr = tArr.OrderBy(t => t.Length).ToArray(); + this.orderItem.ItemOrder.user_name = tArr.FirstOrDefault(); + this.orderItem.ItemOrder.detail_info = string.Join("", tArr).Replace(this.orderItem.ItemOrder.user_name, "").Trim(',', ','); - order.AddressStr = order.user_name + "," + order.tel_number + "," + order.province_name + order.city_name + order.county_name + order.detail_info; + order.AddressStr = order.user_name + "," + order.tel_number + "," + order.province_name + order.city_name + order.county_name + order.detail_info; - this.txtBuyTransitWarehouse.Text = this.orderItem.ItemOrder.AddressStr; + this.txtBuyTransitWarehouse.Text = this.orderItem.ItemOrder.AddressStr; try { await ChangeAddress(null); } catch (Exception ex) - { + { } - } + } private void cmbMapSkusProd_SelectedIndexChanged(object sender, EventArgs e) { @@ -1765,7 +1783,7 @@ namespace TemuKJD.ToolForms var mapSku = orderItem.PddBuyMapSkus.FirstOrDefault(m => m.map_goods_name + m.map_goods_id == cmbMapSkusProd.Text); if (mapSku != null) { - foreach(var pddsku in mapSku.pdd_front_goods3_Lite.skus) + foreach (var pddsku in mapSku.pdd_front_goods3_Lite.skus) { cmbMapSkus.Items.Add(string.Join(";", pddsku.specs.Select(sp => sp.spec_value))); }