From 3af9a8017a5106ac3ca64fc1f33dbc78d32a8524 Mon Sep 17 00:00:00 2001 From: wule Date: Thu, 22 Oct 2026 20:07:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E9=A2=86=E5=BA=97=E9=93=BA?= =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=88=B8=20=20=E4=BF=AE=E5=A4=8D=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E6=9C=8D=E5=8A=A1=E8=B4=B9=E4=B8=8D=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ctrls/OrderCtrls/OrderListCtrl.xaml.cs | 233 ++++++++++-------- .../TransitExtraPackagesViewModel.cs | 4 +- AllBase/Model/DBModel/oms_wei_order_info.cs | 2 +- .../Model/DBModel/oms_wei_order_item_info.cs | 8 +- Work/_29Tools/Forms/PddMobileBuyOrderForm.cs | 77 +++++- 5 files changed, 206 insertions(+), 118 deletions(-) diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs index ecd8081..85dad8a 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs @@ -351,6 +351,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls imgLoading.Visibility = Visibility.Visible; btnSearch.IsEnabled = false; })); + bool hasGetPage = false; int page = 0; int totalPage = 1; int pageSize = 50; @@ -360,7 +361,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls while (true && (IsAutoReadOrder || !string.IsNullOrEmpty(orderIds))) { - BottomMsg = "当前正在读取订单...,第" + (page + 1) + "页"; + BottomMsg = "当前正在读取订单...,第" + (page + 1) + "页" + (hasGetPage ? "" : ("/共" + totalPage + "页")); if (page >= totalPage) { break; @@ -383,7 +384,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls //指定订单id的查询,不再查询店铺id if (string.IsNullOrEmpty(orderIds)) data += "&erp_shop_id_in=" + shop_id; - + // 按过滤条件读取 已废弃 //if (filterGetCondition) //{ @@ -416,13 +417,16 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var totalCount = BaseRegex.GetIntJson(ref html, "count"); if (totalCount > 0) + { + hasGetPage = true; totalPage = Math.Ceiling(1m * totalCount / pageSize).ParseToInt(); + } else { } if (html.Contains("3738686976228742912")) - { + { } var seconds = BaseRegex.GetDecimalJson(ref html, "seconds"); @@ -479,7 +483,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls pddBuyerAfterSales.AddRange(GetTbBuyerAfterSales(order_ids)); // 同步单 - var buyerIds = string.Join(",", pddBuyerOrders.Select(o => o.order_sn)); + var buyerIds = string.Join(",", pddBuyerOrders.Select(o => o.order_sn)); var syncLogistics = GetSyncLogistics(buyerIds); // 读取关联拍单商品 @@ -520,7 +524,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls var pddBuyMapLst = buyMapList.Where(m => m.platform == "pdd").ToList(); item.PddBuyMap = pddBuyMapLst.FirstOrDefault(b => b.sku_code == item.out_sku_id && b.spu_code == item.out_product_id); if (item.PddBuyMap == null) - item.PddBuyMap = pddBuyMapLst.FirstOrDefault(b => b.sku_code == item.SkuAttrStr && b.spu_code == item.out_product_id); + item.PddBuyMap = pddBuyMapLst.FirstOrDefault(b => b.sku_code == item.SkuAttrStr && b.spu_code == item.out_product_id); if (item.PddBuyMap == null) item.PddBuyMap = pddBuyMapLst.FirstOrDefault(b => b.sku_code == item.out_sku_id && b.spu_code == item.product_id); if (item.PddBuyMap == null) @@ -1551,7 +1555,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } - public void disPlayOrderTabOrderCount() + public async Task disPlayOrderTabOrderCount() { //var orders = string.Join("','", GlobalConfig.lstFilterOrder.Select(o => o.order_id)); //var orders1 = string.Join(",", GlobalConfig.lstFilterOrder.Select(o => o.order_id)); @@ -1559,46 +1563,57 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls //TabItem tabItem = null; //List tabItems = this.tabOrderType.Items.Cast().ToList(); + var task1 = Task.Run(() => { var lstCount = userOrderLst.Where(r => r.IsWaitBuy).Count(); var filteLstTmpCount = userOrderLst.Where(o => !GetOrderIsFilter(o, "待采购")).Count(); WaitBuyTabTxt = "待采购(" + lstCount + "|" + filteLstTmpCount + ")"; - } + }); + var task2 = Task.Run(() => { var lstCount = userOrderLst.Where(r => r.IsWaitSend).Count(); var filteLstTmpCount = userOrderLst.Where(o => !GetOrderIsFilter(o, "待发货")).Count(); WaitSendTabTxt = "待发货(" + lstCount + "|" + filteLstTmpCount + ")"; - } + }); + var task3 = Task.Run(() => { var lstCount = userOrderLst.Where(r => r.IsWaitReceive).Count(); var filteLstTmpCount = userOrderLst.Where(o => !GetOrderIsFilter(o, "待收货")).Count(); WaitReceiveTabTxt = "待收货(" + lstCount + "|" + filteLstTmpCount + ")"; - } + }); + var task4 = Task.Run(() => { var lstCount = userOrderLst.Where(r => r.IsRefund).Count(); var filteLstTmpCount = userOrderLst.Where(o => !GetOrderIsFilter(o, "售后完成单")).Count(); RefundTabTxt = "售后完成单(" + lstCount + "|" + filteLstTmpCount + ")"; - } + }); + await Task.WhenAll(task1, task2, task3, task4); + + var task5 = Task.Run(() => { var lstCount = userOrderLst.Where(r => r.IsEmergencyManualReturnOrder).Count(); var filteLstTmpCount = userOrderLst.Where(o => !GetOrderIsFilter(o, "需处理售后单")).Count(); EmergencyManualReturnOrderTabTxt = "需处理售后单(" + lstCount + "|" + filteLstTmpCount + ")"; - } + }); + var task6 = Task.Run(() => { var lstCount = userOrderLst.Where(r => r.IsEmergencyDistribReturnOrder).Count(); var filteLstTmpCount = userOrderLst.Where(o => !GetOrderIsFilter(o, "退货仓自动售后单")).Count(); EmergencyDistribReturnOrderTabTxt = "退货仓自动售后单(" + lstCount + "|" + filteLstTmpCount + ")"; - } + }); + var task7 = Task.Run(() => { var lstCount = userOrderLst.Where(r => r.IsAbnormal).Count(); var filteLstTmpCount = userOrderLst.Where(o => !GetOrderIsFilter(o, "异常需重拍")).Count(); AbnormalTabTxt = "异常需重拍(" + lstCount + "|" + filteLstTmpCount + ")"; - } + }); + var task8 = Task.Run(() => { var lstCount = userOrderLst.Count(); var filteLstTmpCount = userOrderLst.Where(o => !GetOrderIsFilter(o, "全部订单")).Count(); AllOrderTabTxt = "全部订单(" + lstCount + "|" + filteLstTmpCount + ")"; - } + }); + await Task.WhenAll(task5, task6, task7, task8); } CancellationTokenSource TokenSource = null; @@ -1680,7 +1695,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls return; oms_wei_order_info orderExist = null; - + lock (MainWindow._orderLock) { orderExist = GlobalConfig.lstFilterOrder.ToList().FirstOrDefault(o => o.order_id == order.order_id); @@ -1925,8 +1940,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls (bOrder?.tracking_number).IsNullOrEmpty() && bOrder?.order_time <= BaseClass.DateTimeToTimestampSeconds(DateTime.Now.AddHours(-72)))) { } // 直发没有单号正常发货才判断中转仓总店是否超时发货 - else if (order.orderItems.Any(oi => (oi.DirectPddBuyerOrders?.Count).IsNullOrZero() && - oi.PddBuyerOrders.OrderByDescending(bo => bo.order_time).FirstOrDefault() is order_pdd_buyer_order bOrder && + else if (order.orderItems.Any(oi => (oi.DirectPddBuyerOrders?.Count).IsNullOrZero() && + oi.PddBuyerOrders.OrderByDescending(bo => bo.order_time).FirstOrDefault() is order_pdd_buyer_order bOrder && (bOrder?.tracking_number).IsNullOrEmpty() && bOrder?.order_time <= BaseClass.DateTimeToTimestampSeconds(DateTime.Now.AddHours(-72)))) { } else @@ -1939,8 +1954,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls bOrder.order_time >= BaseClass.DateTimeToTimestampSeconds(DateTime.Now.AddHours(-72))))) { } // 直发没有单号才判断中转仓总店是否超时发货 - else if (order.orderItems.Any(oi => (oi.DirectPddBuyerOrders?.Count).IsNullOrZero() && - oi.PddBuyerOrders.OrderByDescending(bo => bo.order_time).FirstOrDefault() is order_pdd_buyer_order bOrder && + else if (order.orderItems.Any(oi => (oi.DirectPddBuyerOrders?.Count).IsNullOrZero() && + oi.PddBuyerOrders.OrderByDescending(bo => bo.order_time).FirstOrDefault() is order_pdd_buyer_order bOrder && (bOrder?.tracking_number).IsNullOrEmpty() && (bOrder?.order_time < BaseClass.DateTimeToTimestampSeconds(DateTime.Now.AddHours(-48)) && bOrder.order_time >= BaseClass.DateTimeToTimestampSeconds(DateTime.Now.AddHours(-72))))) { } @@ -1982,10 +1997,10 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (order.orderItems.Any(oi => oi.DirectPddBuyerOrders.OrderByDescending(bo => bo.order_time).FirstOrDefault() is order_pdd_buyer_order bOrder && (bOrder?.tracking_number).IsNullOrEmpty() && bOrder?.order_time <= BaseClass.DateTimeToTimestampSeconds(DateTime.Now.AddHours(-72)))) { } - else if (order.orderItems.Any(oi => (oi.DirectPddBuyerOrders?.Count).IsNullOrZero() && + else if (order.orderItems.Any(oi => (oi.DirectPddBuyerOrders?.Count).IsNullOrZero() && oi.PddBuyerOrders.OrderByDescending(bo => bo.order_time).FirstOrDefault() is order_pdd_buyer_order bOrder && (bOrder?.tracking_number).IsNullOrEmpty() && bOrder?.order_time <= BaseClass.DateTimeToTimestampSeconds(DateTime.Now.AddHours(-72)))) - { } + { } else return true; } @@ -1996,8 +2011,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls (bOrder?.tracking_number).IsNullOrEmpty() && (bOrder?.order_time < BaseClass.DateTimeToTimestampSeconds(DateTime.Now.AddHours(-48)) && bOrder.order_time >= BaseClass.DateTimeToTimestampSeconds(DateTime.Now.AddHours(-72))))) { } - else if (order.orderItems.Any(oi =>(oi.DirectPddBuyerOrders?.Count).IsNullOrZero() && - oi.PddBuyerOrders.OrderByDescending(bo => bo.order_time).FirstOrDefault() is order_pdd_buyer_order bOrder && + else if (order.orderItems.Any(oi => (oi.DirectPddBuyerOrders?.Count).IsNullOrZero() && + oi.PddBuyerOrders.OrderByDescending(bo => bo.order_time).FirstOrDefault() is order_pdd_buyer_order bOrder && (bOrder?.tracking_number).IsNullOrEmpty() && (bOrder?.order_time < BaseClass.DateTimeToTimestampSeconds(DateTime.Now.AddHours(-48)) && bOrder.order_time >= BaseClass.DateTimeToTimestampSeconds(DateTime.Now.AddHours(-72))))) { } @@ -2295,7 +2310,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls GlobalConfig.OrderTabHeaderStr = ((tabOrderType.SelectedItem as TabItem)?.Header).ParseToString(); FilterOrders(); } - + private void chkMapProd_Click(object sender, RoutedEventArgs e) { if (sender is CheckBox chk) @@ -2361,10 +2376,10 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls chkEmergencyBuyerWaitAfterSale.IsChecked = chkEmergencyBuyerWaitSendBack.IsChecked = chkEmergencyBuyerWaitSupplierRefund.IsChecked = chkEmergencyBuyerRefundFail.IsChecked = false; chk.IsChecked = !isCheck; - chkEmergencyBuyerWaitAfterSaleIsChecked = chkEmergencyBuyerWaitAfterSale.IsChecked.ParseToBool(); - chkEmergencyBuyerWaitSendBackIsChecked = chkEmergencyBuyerWaitSendBack.IsChecked.ParseToBool(); - chkEmergencyBuyerWaitSupplierRefundIsChecked = chkEmergencyBuyerWaitSupplierRefund.IsChecked.ParseToBool(); - chkEmergencyBuyerRefundFailIsChecked = chkEmergencyBuyerRefundFail.IsChecked.ParseToBool(); + chkEmergencyBuyerWaitAfterSaleIsChecked = chkEmergencyBuyerWaitAfterSale.IsChecked.ParseToBool(); + chkEmergencyBuyerWaitSendBackIsChecked = chkEmergencyBuyerWaitSendBack.IsChecked.ParseToBool(); + chkEmergencyBuyerWaitSupplierRefundIsChecked = chkEmergencyBuyerWaitSupplierRefund.IsChecked.ParseToBool(); + chkEmergencyBuyerRefundFailIsChecked = chkEmergencyBuyerRefundFail.IsChecked.ParseToBool(); } FilterOrders(); } @@ -2397,10 +2412,10 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls chkEmergencyWaitSupplierReceive.IsChecked = chkEmergencyWaitSupplierAccept.IsChecked = chkEmergencyShopAfterSaleSuccess.IsChecked = chkEmergencyShopInAfterSale.IsChecked = false; chk.IsChecked = !isCheck; - chkEmergencyWaitSupplierReceiveIsChecked = chkEmergencyWaitSupplierReceive.IsChecked.ParseToBool(); - chkEmergencyWaitSupplierAcceptIsChecked = chkEmergencyWaitSupplierAccept.IsChecked.ParseToBool(); + chkEmergencyWaitSupplierReceiveIsChecked = chkEmergencyWaitSupplierReceive.IsChecked.ParseToBool(); + chkEmergencyWaitSupplierAcceptIsChecked = chkEmergencyWaitSupplierAccept.IsChecked.ParseToBool(); chkEmergencyShopAfterSaleSuccessIsChecked = chkEmergencyShopAfterSaleSuccess.IsChecked.ParseToBool(); - chkEmergencyShopInAfterSaleIsChecked = chkEmergencyShopInAfterSale.IsChecked.ParseToBool(); + chkEmergencyShopInAfterSaleIsChecked = chkEmergencyShopInAfterSale.IsChecked.ParseToBool(); } FilterOrders(); } @@ -2434,8 +2449,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls chk.IsChecked = !isCheck; chkWaitReceiveWarehouseIsNotPickupIsChecked = chkWaitReceiveWarehouseIsNotPickup.IsChecked.ParseToBool(); - chkWaitReceiveWarehouseIsPickupIsChecked = chkWaitReceiveWarehouseIsPickup.IsChecked.ParseToBool(); - chkWaitReceiveWarehouseIsSendOutIsChecked = chkWaitReceiveWarehouseIsSendOut.IsChecked.ParseToBool(); + chkWaitReceiveWarehouseIsPickupIsChecked = chkWaitReceiveWarehouseIsPickup.IsChecked.ParseToBool(); + chkWaitReceiveWarehouseIsSendOutIsChecked = chkWaitReceiveWarehouseIsSendOut.IsChecked.ParseToBool(); } FilterOrders(); } @@ -2699,7 +2714,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls outOrderSn = tmpOrderItem.ItemOrder?.out_order_no; if (outOrderSn.StartsWith("tb_")) - { + { // todo 淘宝退货暂时不处理 } else @@ -3194,7 +3209,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls e.Column.Header = ColumnHeaderTitle = "交易时间 ▲"; } } - + } private void cmbFilterRemark_SelectionChanged(object sender, SelectionChangedEventArgs e) @@ -3431,80 +3446,80 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } public class OrderFilterConfig : PropertyNotifyObject +{ + public string FilterGoodsNameType { get; set; } = "标题包含"; + public string FilterRemarkType { get; set; } = "店铺备注包含"; + public List lstFilterGoodsName { get; set; } = new List(); + /// + /// 隐藏标记 + /// + public bool chkHideGreenFlagIsChecked { - public string FilterGoodsNameType { get; set; } = "标题包含"; - public string FilterRemarkType { get; set; } = "店铺备注包含"; - public List lstFilterGoodsName { get; set; } = new List(); - /// - /// 隐藏标记 - /// - public bool chkHideGreenFlagIsChecked - { - get { return this.GetValue(x => x.chkHideGreenFlagIsChecked); } - set { this.SetValue(x => x.chkHideGreenFlagIsChecked, value); } - } - /// - /// 过滤非本系统订单 - /// - public bool chkOnlyWarehouseOrderIsChecked - { - get { return this.GetValue(x => x.chkOnlyWarehouseOrderIsChecked); } - set { this.SetValue(x => x.chkOnlyWarehouseOrderIsChecked, value); } - } - /// - /// 过滤多子单订单 - /// - public bool chkNoMultiOrderIsChecked - { - get { return this.GetValue(x => x.chkNoMultiOrderIsChecked); } - set { this.SetValue(x => x.chkNoMultiOrderIsChecked, value); } - } - /// - /// 云仓 - /// - public bool chkTransitOrderIsChecked - { - get { return this.GetValue(x => x.chkTransitOrderIsChecked); } - set { this.SetValue(x => x.chkTransitOrderIsChecked, value); } - } - /// - /// 直发 - /// - public bool chkDirectOrderIsChecked - { - get { return this.GetValue(x => x.chkDirectOrderIsChecked); } - set { this.SetValue(x => x.chkDirectOrderIsChecked, value); } - } - /// - /// 云改直 - /// - public bool chkTransitChangeDirectOrderIsChecked - { - get { return this.GetValue(x => x.chkTransitChangeDirectOrderIsChecked); } - set { this.SetValue(x => x.chkTransitChangeDirectOrderIsChecked, value); } - } - /// - /// 过滤备注 - /// - public bool chkFilterRemarkIsChecked - { - get { return this.GetValue(x => x.chkFilterRemarkIsChecked); } - set { this.SetValue(x => x.chkFilterRemarkIsChecked, value); } - } - public ConcurrentList lstFilterOrderIds - { - get { return this.GetValue(x => x.lstFilterOrderIds); } - set { this.SetValue(x => x.lstFilterOrderIds, value); } - } - public ConcurrentList lstFilterRemarkText - { - get { return this.GetValue(x => x.lstFilterRemarkText); } - set { this.SetValue(x => x.lstFilterRemarkText, value); } - } - public string txtFilterShopNameText - { - get { return this.GetValue(x => x.txtFilterShopNameText); } - set { this.SetValue(x => x.txtFilterShopNameText, value); } - } + get { return this.GetValue(x => x.chkHideGreenFlagIsChecked); } + set { this.SetValue(x => x.chkHideGreenFlagIsChecked, value); } + } + /// + /// 过滤非本系统订单 + /// + public bool chkOnlyWarehouseOrderIsChecked + { + get { return this.GetValue(x => x.chkOnlyWarehouseOrderIsChecked); } + set { this.SetValue(x => x.chkOnlyWarehouseOrderIsChecked, value); } + } + /// + /// 过滤多子单订单 + /// + public bool chkNoMultiOrderIsChecked + { + get { return this.GetValue(x => x.chkNoMultiOrderIsChecked); } + set { this.SetValue(x => x.chkNoMultiOrderIsChecked, value); } + } + /// + /// 云仓 + /// + public bool chkTransitOrderIsChecked + { + get { return this.GetValue(x => x.chkTransitOrderIsChecked); } + set { this.SetValue(x => x.chkTransitOrderIsChecked, value); } + } + /// + /// 直发 + /// + public bool chkDirectOrderIsChecked + { + get { return this.GetValue(x => x.chkDirectOrderIsChecked); } + set { this.SetValue(x => x.chkDirectOrderIsChecked, value); } + } + /// + /// 云改直 + /// + public bool chkTransitChangeDirectOrderIsChecked + { + get { return this.GetValue(x => x.chkTransitChangeDirectOrderIsChecked); } + set { this.SetValue(x => x.chkTransitChangeDirectOrderIsChecked, value); } + } + /// + /// 过滤备注 + /// + public bool chkFilterRemarkIsChecked + { + get { return this.GetValue(x => x.chkFilterRemarkIsChecked); } + set { this.SetValue(x => x.chkFilterRemarkIsChecked, value); } + } + public ConcurrentList lstFilterOrderIds + { + get { return this.GetValue(x => x.lstFilterOrderIds); } + set { this.SetValue(x => x.lstFilterOrderIds, value); } + } + public ConcurrentList lstFilterRemarkText + { + get { return this.GetValue(x => x.lstFilterRemarkText); } + set { this.SetValue(x => x.lstFilterRemarkText, value); } + } + public string txtFilterShopNameText + { + get { return this.GetValue(x => x.txtFilterShopNameText); } + set { this.SetValue(x => x.txtFilterShopNameText, value); } } } +} diff --git a/29WxOrderWpf/ViewModels/TransitExtraPackagesViewModel.cs b/29WxOrderWpf/ViewModels/TransitExtraPackagesViewModel.cs index 5ae4caa..65c30a7 100644 --- a/29WxOrderWpf/ViewModels/TransitExtraPackagesViewModel.cs +++ b/29WxOrderWpf/ViewModels/TransitExtraPackagesViewModel.cs @@ -142,7 +142,7 @@ namespace _29WxOrderWpf.ViewModels // 创建额外包裹异常: 用户账户余额不足,需至少 2.20 元用于中转仓取号, userId:17333276316, balance:0.852 if (BaseRegex.GetStringXml(ref rst, "code") != "0" && BaseRegex.GetStringXml(ref rst, "code") != "200") { - BaseMsgWindow.ShowError(BaseRegex.GetStringXml(ref rst, "msg")); + BaseMsgWindow.ShowError("服务端返回:" + BaseRegex.GetStringXml(ref rst, "msg")); return; } @@ -156,7 +156,7 @@ namespace _29WxOrderWpf.ViewModels // 额外信息已保存200 if (BaseRegex.GetStringXml(ref rst, "code") != "0" && BaseRegex.GetStringXml(ref rst, "code") != "200") { - BaseMsgWindow.ShowError(BaseRegex.GetStringXml(ref rst, "msg")); + BaseMsgWindow.ShowError("服务端返回:" + BaseRegex.GetStringXml(ref rst, "msg")); return; } diff --git a/AllBase/Model/DBModel/oms_wei_order_info.cs b/AllBase/Model/DBModel/oms_wei_order_info.cs index 3385a18..0a56e98 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); if (!Shop.ShopAccount.IsNullOrEmpty()) shop_name = Shop.ShopAccount; } + set { this.SetValue(x => x.Shop, value); if (!(Shop?.ShopAccount).IsNullOrEmpty()) shop_name = Shop?.ShopAccount; } } public int Index { diff --git a/AllBase/Model/DBModel/oms_wei_order_item_info.cs b/AllBase/Model/DBModel/oms_wei_order_item_info.cs index f7560f0..01f02e4 100644 --- a/AllBase/Model/DBModel/oms_wei_order_item_info.cs +++ b/AllBase/Model/DBModel/oms_wei_order_item_info.cs @@ -1241,6 +1241,10 @@ namespace AllBase.Model.DBModel //get { if (ItemOrder.out_amount > 0 || ItemTransitOrder?.out_amount > 0) return Visibility.Collapsed; return Visibility.Visible; } FreightVisibility = Visibility.Collapsed; + if (order_id == "3740014218899272960") + { + + } //get { return "¥" + (order_items.Sum(oi => oi.predict_commission_fee.ParseToInt()) * 0.01m).ParseToDecimal().ToString("0.00"); } PredictCommissionFeeStr = "¥" + (predict_commission_fee * 0.01m).ParseToDecimal().ToString("0.00"); @@ -1346,8 +1350,8 @@ namespace AllBase.Model.DBModel /// public string CommissionAmountStr { - get { return this.GetValue(x => x.PredictCommissionFeeStr); } - set { this.SetValue(x => x.PredictCommissionFeeStr, value); } + get { return this.GetValue(x => x.CommissionAmountStr); } + set { this.SetValue(x => x.CommissionAmountStr, value); } } /// diff --git a/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs b/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs index 2a68dd2..a1c23b7 100644 --- a/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs +++ b/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs @@ -611,7 +611,13 @@ namespace TemuKJD.ToolForms } } } - var rst = await ChangeAddress(transit); + + // 填地址 + var rst = await ChangeAddress(transit); + + // 领优惠券 + await AutoGetCoupon(); + IsChangeAddress = false; } } @@ -654,7 +660,7 @@ namespace TemuKJD.ToolForms while (this.Created && IsAutoBuy) { Thread.Sleep(100); - if (HasChangeAddress && (this.cefWebBrowser?.GetMainFrame()?.Url).ParseToString().StartsWith("https://mobile.yangkeduo.com/order_checkout.html?sku_id=")) + if (!IsChangeAddress && HasChangeAddress && (this.cefWebBrowser?.GetMainFrame()?.Url).ParseToString().StartsWith("https://mobile.yangkeduo.com/order_checkout.html?sku_id=")) { try { @@ -772,7 +778,7 @@ namespace TemuKJD.ToolForms IBrowserHost host = null; DevToolsClient client = null; - public async Task EvaluateJsBuyTagNameAndInnerHtml(string tagName, string innerHTML, bool isClick = false) + public async Task EvaluateJsBuyTagNameAndInnerHtml(string tagName, string innerHTML, bool isClick = false, bool isOuterHtml = false) { if (!this.Created) throw new Exception("窗口已关闭"); @@ -796,7 +802,7 @@ namespace TemuKJD.ToolForms var jsStr1 = @"(function() { var elements = document.getElementsByTagName('" + tagName + @"'); for (i = elements.length - 1; i >= 0; i--){ var element = elements[i]; - if (element.innerHTML.indexOf('" + innerHTML + @"') >= 0) {"; + if (element." + (isOuterHtml ? "outerHTML" : "innerHTML") + @".indexOf('" + innerHTML + @"') >= 0) {"; if (isClick) jsStr1 += @"element.click();"; jsStr1 += @" @@ -840,6 +846,69 @@ namespace TemuKJD.ToolForms } } + public async Task AutoGetCoupon() + { + for (int i = 0; i < 10; i++) + { + Thread.Sleep(100); + if (host == null || client == null) + { + host = cefWebBrowser?.GetBrowser().GetHost(); + client = cefWebBrowser?.GetDevToolsClient(); + } + else + break; + } + if (host == null || client == null) + { + throw new Exception("页面加载异常"); + } + + // 点击领取优惠券 + for (int i = 0; i < 20; i++) + { + Thread.Sleep(150); + if (!this.Created) return "窗口已关闭"; + + var ts1 = await EvaluateJsBuyTagNameAndInnerHtml("span", "领券可减", true); + if (ts1.Result.Value is string rstStr && rstStr == "success") + { + break; + } + } + Thread.Sleep(Randomx.GetId(200, 400)); + + //点击领取优惠券 + for (int i = 0; i < 20; i++) + { + Thread.Sleep(150); + if (!this.Created) return "窗口已关闭"; + + var ts1 = await EvaluateJsBuyTagNameAndInnerHtml("div", "领取", true); + if (ts1.Result.Value is string rstStr && rstStr == "success") + { + break; + } + } + Thread.Sleep(Randomx.GetId(200, 400)); + + // 点击关闭 + for (int i = 0; i < 20; i++) + { + Thread.Sleep(150); + if (!this.Created) return "窗口已关闭"; + + var ts1 = await EvaluateJsBuyTagNameAndInnerHtml("div", "aria-label=\"关闭\"", true, true); + if (ts1.Result.Value is string rstStr && rstStr == "success") + { + break; + } + } + Thread.Sleep(Randomx.GetId(200, 400)); + + return ""; + } + /// /// 自动填写地址 ///