From 87c1b8fc79d9a6c2e08dfa8b17b35ac6d713c7ce Mon Sep 17 00:00:00 2001 From: wule Date: Sat, 11 Jul 2026 15:25:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=BC=E5=A4=9A=E5=A4=9A=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BaseWindows/BaseMsgWindow.xaml.cs | 66 +++--- .../BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs | 105 ++++++--- .../Ctrls/OrderCtrls/OrderListCtrl.xaml | 2 +- .../Ctrls/OrderCtrls/OrderListCtrl.xaml.cs | 36 ++- .../OrderCtrls/OrderListRowItemCtrl.xaml | 30 +-- .../OrderCtrls/OrderListRowItemCtrl.xaml.cs | 110 ++++++++- AllBase/29WxOrderAllBase.csproj | 1 + AllBase/BaseClass.cs | 2 +- .../Local/oms_wei_external_procurement_log.cs | 1 + AllBase/Model/Local/oms_wei_order_info.cs | 23 ++ .../Model/Local/oms_wei_order_item_info.cs | 144 ++++++++++-- AllBase/Model/Local/order_pdd_buyer_order.cs | 32 +++ .../Model/Result/PddBuyerAfterSaleLiteInfo.cs | 212 +++++++++++++++++- AllBase/Model/Result/PddBuyerOrderLiteInfo.cs | 16 ++ 14 files changed, 679 insertions(+), 101 deletions(-) create mode 100644 AllBase/Model/Local/order_pdd_buyer_order.cs diff --git a/29WxOrderWpf/BaseWindows/BaseMsgWindow.xaml.cs b/29WxOrderWpf/BaseWindows/BaseMsgWindow.xaml.cs index ca44a11..0e7ebfc 100644 --- a/29WxOrderWpf/BaseWindows/BaseMsgWindow.xaml.cs +++ b/29WxOrderWpf/BaseWindows/BaseMsgWindow.xaml.cs @@ -12,6 +12,7 @@ using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Media.Imaging; using System.Windows.Shapes; +using System.Windows.Threading; using Work.BaseForms; namespace _29WxOrderWpf.BaseWindows @@ -43,47 +44,58 @@ namespace _29WxOrderWpf.BaseWindows public static BaseMsgWindow ShowInfo(string msg, string caption = "", Window window = null, MsgWindowLevel wl = MsgWindowLevel.MEDIUM) { string title = string.IsNullOrEmpty(caption) ? "系统提示" : caption; - BaseMsgWindow msgBox = CreateMsgForm(msg, title, wl); - msgBox.imgTip.Source = Application.Current.Resources["imgBaseMsgInfo"] as ImageSource; - if (window != null) - msgBox.Owner = window; - else msgBox.Owner = MainWindow.Instance; + + + BaseMsgWindow msgBox = null; + Window owner = window ?? MainWindow.Instance; + + owner.Dispatcher.Invoke(new Action(() => + { + msgBox = CreateMsgForm(msg, title, wl); + msgBox.imgTip.Source = Application.Current.Resources["imgBaseMsgInfo"] as ImageSource; + msgBox.Owner = owner; msgBox.ShowDialog(); + })); return msgBox; } public static BaseMsgWindow ShowError(string msg, string caption = "", Window window = null, MsgWindowLevel wl = MsgWindowLevel.MEDIUM) { string title = string.IsNullOrEmpty(caption) ? "系统错误" : caption; - BaseMsgWindow msgBox = CreateMsgForm(msg, title, wl); - msgBox.imgTip.Source = Application.Current.Resources["imgBaseMsgErr"] as ImageSource; - if (window != null) - msgBox.Owner = window; - else - msgBox.Owner = MainWindow.Instance; - msgBox.ShowDialog(); + BaseMsgWindow msgBox = null; + Window owner = window ?? MainWindow.Instance; + owner.Dispatcher.Invoke(new Action(() => + { + msgBox = CreateMsgForm(msg, title, wl); + msgBox.imgTip.Source = Application.Current.Resources["imgBaseMsgErr"] as ImageSource; + msgBox.Owner = owner; + msgBox.ShowDialog(); + })); return msgBox; } public static BaseMsgWindow ShowConfirm(string msg, string caption = "", Window window = null, MsgWindowLevel fl = MsgWindowLevel.MEDIUM) { string title = string.IsNullOrEmpty(caption) ? "确认系统提示" : caption; - BaseMsgWindow msgBox = new BaseMsgWindow + + BaseMsgWindow msgBox = null; + Window owner = window ?? MainWindow.Instance; + owner.Dispatcher.Invoke(() => { - lblTitle = { Content = title }, - tbkMsg = { Text = msg }, - imgTip = { Source = Application.Current.Resources["imgBaseMsgQue"] as ImageSource }, - }; - if (fl.Equals(MsgWindowLevel.LARGE)) - { - msgBox.Width = (int)MsgWindowLevel.LARGE; - msgBox.Height = 500; - } - if (window != null) - msgBox.Owner = window; - else - msgBox.Owner = MainWindow.Instance; - msgBox.ShowDialog(); + msgBox = new BaseMsgWindow + { + lblTitle = { Content = title }, + tbkMsg = { Text = msg }, + imgTip = { Source = Application.Current.Resources["imgBaseMsgQue"] as ImageSource }, + }; + if (fl.Equals(MsgWindowLevel.LARGE)) + { + msgBox.Width = (int)MsgWindowLevel.LARGE; + msgBox.Height = 500; + } + msgBox.Owner = owner; + msgBox.ShowDialog(); + }); return msgBox; } diff --git a/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs b/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs index 0acd3a4..5573289 100644 --- a/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/BuyerCtrls/PDDBuyerOrderReadCtrl.xaml.cs @@ -451,7 +451,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls { transitOrderList = JsonHelper.DeserializeJsonToList(JObject.Parse(html3)["data"].ParseToString()); // 直接过滤掉仓库作废单 - transitOrderList = transitOrderList.Where(t => t.order_void_status != 1).ToList(); + //transitOrderList = transitOrderList.Where(t => t.order_void_status != 1).ToList(); } catch { @@ -564,7 +564,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls pdd_order.WxOrderCreateTime = wx_order_item?.ItemOrder?.create_time == null ? DateTime.MinValue : BaseClass.StampToDateTime((wx_order_item?.ItemOrder?.create_time).ParseToInt()); pdd_order.ShopOrderRefundStr = ""; // (/*refund_item?.count > 0 &&*/ wx_order_item.refund_status > 1) ? "店铺售后" : ""; pdd_order.wxRefundStatus = ""; - if (wx_order_item.refund_status > 1) + if (wx_order_item?.refund_status > 1) { pdd_order.ShopOrderRefundStr = "店铺售后"; pdd_order.wxRefundStatus = pdd_order.order_status_prompt.Contains("待发货") ? "待退款" : "待退货"; @@ -576,9 +576,14 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls pdd_order.Express2WaybillStr = wx_transit_order?.express_2_waybill; pdd_order.Express2CompanyStr = wx_transit_order?.express_2_company; pdd_order.TransferWareHouseStatus = wx_transit_order?.transfer_warehouse_status.ParseToString(); + pdd_order.WxOrderVoidStatus = wx_transit_order?.order_void_status.ParseToString(); pdd_order.PreAllocatedOrderNoStr = wx_transit_order?.pre_allocated_order_no.ParseToString(); // 更新订单中转取号状态 pdd_order.sendStatus = (pdd_order.TransitOrderStatus + " " + pdd_order.ShopOrderRefundStr).Trim(); + if (pdd_order.WxOrderVoidStatus == "1") + { + pdd_order.sendStatus += " 已作废"; + } pdd_order.TransitCreateTime = wx_transit_order?.created_time ?? DateTime.MinValue; } @@ -603,6 +608,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls pdd_afterSale.Express2WaybillStr = wx_transit_order?.express_2_waybill; pdd_afterSale.Express2CompanyStr = wx_transit_order?.express_2_company; pdd_afterSale.TransferWareHouseStatus = wx_transit_order?.transfer_warehouse_status.ParseToString(); + pdd_afterSale.WxOrderVoidStatus = wx_transit_order?.transfer_warehouse_status.ParseToString(); pdd_afterSale.PreAllocatedOrderNoStr = wx_transit_order?.pre_allocated_order_no.ParseToString(); // 更新订单中转取号状态 pdd_afterSale.sendStatus = (pdd_afterSale.TransitOrderStatus + " " + pdd_afterSale.ShopOrderRefundStr).Trim(); @@ -675,8 +681,8 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (transit_item != null) { var shopOrder = orders.FirstOrDefault(o1 => o1.order_id == transit_item.order_no); - var order_item = shopOrder.orderItems.FirstOrDefault(oi => oi.ItemTransitOrders.Any(t1 => t1.out_order_no == o.order_sn)); - var refund_item = refunds.FirstOrDefault(ri => ri.order_id == order_item.order_id) ?? order_item?.ItemRefund; + var order_item = shopOrder?.orderItems.FirstOrDefault(oi => oi.ItemTransitOrders.Any(t1 => t1.out_order_no == o.order_sn)); + var refund_item = refunds.FirstOrDefault(ri => ri.order_id == order_item?.order_id) ?? order_item?.ItemRefund; UpdateOrderStatus(o, order_item, refund_item, transit_item); } @@ -731,6 +737,13 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls order.shipping_amount = o.shipping_amount; order.order_time = o.order_time; order.tracking_number = o.tracking_number; + + order.TransitCreateTime = o.TransitCreateTime; + if (o.TransitCreateTime > DateTime.MinValue) + { + + } + order.WxOrderCreateTime = o.WxOrderCreateTime; order.ShopOrderIdStr = o.ShopOrderIdStr; order.ShopOrderSkuIdStr = o.ShopOrderSkuIdStr; order.ShopOrderSkuNameStr = o.ShopOrderSkuNameStr; @@ -741,6 +754,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls order.Express2WaybillStr = o.Express2WaybillStr; order.Express2CompanyStr = o.Express2CompanyStr; order.TransferWareHouseStatus = o.TransferWareHouseStatus; + order.WxOrderVoidStatus = o.WxOrderVoidStatus; order.PreAllocatedOrderNoStr = o.PreAllocatedOrderNoStr; order.ShopOrderRefundStr = o.ShopOrderRefundStr; order.wxRefundStatus = o.wxRefundStatus; @@ -781,20 +795,55 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls //if (order.sendStatus.ParseToString().Contains("售后")) if (order.ShopOrderRefundStr.ParseToString().Contains("售后")) { - //if (!",2,3,4,5,7,8,10,31,".Contains((order.after_sales?.after_sales_status).ParseToString())) + if (!",2,3,4,5,7,8,10,31,".Contains("," + (order.after_sales?.after_sales_status).ParseToString() + ",")) { // 待发货直接售后,并通知中转仓接口修改退货状态 var afterSaleRst = PddAutoAfterSale(order); } } - SendTransitOrderE57(order); - }); - // 数据源绑定,不再需要显示指定显示的状态 - //Dispatcher.Invoke(new Action(() => - //{ - // ShowOrder(order); - //})); + // 根据订单状态 取号/修改取号 + SendTransitOrderE57(order); + + if (!string.IsNullOrEmpty(order.ShopOrderIdStr)) + { + // 买手订单状态记录到数据库 + order_pdd_buyer_order pddBuyerOrder = new order_pdd_buyer_order() + { + after_sales_status = (order.after_sales?.after_sales_status).ParseToInt(), + buyerId = order.buyerId, + buyerName = order.buyerName, + order_amount = order.order_amount.ParseToInt(), + order_sn = order.order_sn, + order_status_prompt = order.order_status_prompt, + outExpressCompanyCode = order.outExpressCompanyCode, + order_time = order.order_time, + pre_allocated_order_no = order.PreAllocatedOrderNoStr.ParseToInt(), + tracking_number = order.tracking_number, + TransitCreateTime = order.TransitCreateTime, + wx_order_id = order.ShopOrderIdStr, + wx_sku_id = order.ShopOrderSkuIdStr, + }; + var url3 = BaseClass.Build29WxObjString("order/wx_add_mdy_buyer_order"); + var data3 = UserLogin.GetSignaturex(); + data3 += "&after_sales_status=" + pddBuyerOrder.after_sales_status; + data3 += "&buyerId=" + pddBuyerOrder.buyerId; + data3 += "&buyerName=" + pddBuyerOrder.buyerName; + data3 += "&order_amount=" + pddBuyerOrder.order_amount; + data3 += "&pdd_order_sn=" + pddBuyerOrder.order_sn; + data3 += "&order_status_prompt=" + pddBuyerOrder.order_status_prompt; + data3 += "&outExpressCompanyCode=" + pddBuyerOrder.outExpressCompanyCode; + data3 += "&order_time=" + pddBuyerOrder.order_time; + data3 += "&pre_allocated_order_no=" + pddBuyerOrder.pre_allocated_order_no; + data3 += "&tracking_number=" + pddBuyerOrder.tracking_number; + data3 += "&TransitCreateTime=" + pddBuyerOrder.TransitCreateTime.ToString("yyyy-MM-dd HH:mm:ss"); + data3 += "&wx_order_id=" + pddBuyerOrder.wx_order_id; + data3 += "&wx_sku_id=" + pddBuyerOrder.wx_sku_id; + var html3 = GetHtml.PostUtf8(url3, data3); + if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200")) + html3 = GetHtml.PostUtf8(url3, data3); + } + }); } NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite); } @@ -863,8 +912,8 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (transit_item != null) { var shopOrder = orders.FirstOrDefault(o1 => o1.order_id == transit_item.order_no); - var order_item = shopOrder.orderItems.FirstOrDefault(oi => oi.ItemTransitOrders.Any(t1 => t1.out_order_no == af.orderSn)); - var refund_item = refunds.FirstOrDefault(ri => ri.order_id == order_item.order_id) ?? order_item?.ItemRefund; + var order_item = shopOrder?.orderItems.FirstOrDefault(oi => oi.ItemTransitOrders.Any(t1 => t1.out_order_no == af.orderSn)); + var refund_item = refunds.FirstOrDefault(ri => ri.order_id == order_item?.order_id) ?? order_item?.ItemRefund; UpdateAfterSaleStatus(af, order_item, refund_item, transit_item); } @@ -898,6 +947,8 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls afterSale.listItemMallVO = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(af.listItemMallVO)); afterSale.listItemStatusVO = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(af.listItemStatusVO)); + afterSale.TransitCreateTime = af.TransitCreateTime; + afterSale.WxOrderCreateTime = af.WxOrderCreateTime; afterSale.ShopOrderIdStr = af.ShopOrderIdStr; afterSale.ShopOrderSkuIdStr = af.ShopOrderSkuIdStr; afterSale.ShopOrderSkuNameStr = af.ShopOrderSkuNameStr; @@ -908,6 +959,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls afterSale.Express2WaybillStr = af.Express2WaybillStr; afterSale.Express2CompanyStr = af.Express2CompanyStr; afterSale.TransferWareHouseStatus = af.TransferWareHouseStatus; + afterSale.WxOrderVoidStatus = af.WxOrderVoidStatus; afterSale.PreAllocatedOrderNoStr = af.PreAllocatedOrderNoStr; afterSale.ShopOrderRefundStr = af.ShopOrderRefundStr; //afterSale.wxRefundStatus = af.wxRefundStatus; @@ -926,6 +978,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls if (isUpdate) { + // 如果买手退款成功,仓库不是买手退款成功,则修改仓库售后字段为买手退款成功 if (afterSale.AfterSaleStatusStr.Contains("退款成功") || afterSale.AfterSaleStatusStr.Contains("交易已取消")) { if (afterSale.TransitBuyerOrderRefundStatus != "买手退款成功") @@ -943,6 +996,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls } } } + // 如果中转仓表买手售后状态不等于买手售后单售后,更新仓库买手售后状态 else if (afterSale.TransitBuyerOrderRefundStatus != afterSale.AfterSaleStatusStr) { //if (!afterSale.AfterSaleStatusStr.Contains("关闭") && !afterSale.AfterSaleStatusStr.Contains("撤销") && !afterSale.AfterSaleStatusStr.Contains("失败")) @@ -1360,7 +1414,8 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls // "已取号(更正)", 已取号, 提前取号, 取号失败 // 正在处理取号、已取号(包括提前取号更正的订单)、有售后或者没有中转仓(非中转系统订单)的订单,不发送 if (order.sendStatus == "已取号" || order.sendStatus == "已取号(更正)" || - order.sendStatus.ParseToString().Contains("售后") || order.TransitWarehouseIdStr.IsNullOrEmpty()) + order.sendStatus.ParseToString().Contains("已作废") || order.sendStatus.ParseToString().Contains("售后") || + order.TransitWarehouseIdStr.IsNullOrEmpty()) { return; } @@ -1595,9 +1650,13 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls //// 退货详情页 ////https://mobile.yangkeduo.com/complaint.html?order_sn=260417-357103060621688&after_sales_reason=0&after_sales_type=1&after_sales_code=1001 - if (!order.order_status_prompt.Contains("待发货") && order.after_sales == null) + if (!order.order_status_prompt.Contains("待发货")) { - var refundRst = SendTransitAfterSaleE57(order, "买手已发货,需手动申请售后"); + // 如果中转单没记录买手售后,写入买手售后信息 + if (order.TransitBuyerOrderRefundStatus.IsNullOrEmpty()) + { + var refundRst = SendTransitAfterSaleE57(order, "买手已发货,需手动申请售后"); + } return "{\"success\":false,\"msg\":\"仅未发货单可以自动退货\"}"; } @@ -1640,6 +1699,10 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls var refundAmount = BaseRegex.GetIntJson(ref rst, "refundAmount"); var newMaxApplyAmount = BaseRegex.GetIntJson(ref rst, "newMaxApplyAmount"); var shippingStatus = BaseRegex.GetIntJson(ref rst, "shippingStatus"); + if (shippingStatus == -1) + { + return "{\"success\":false,\"msg\":\"订单未付款\"}"; + } if (shippingStatus == 1 || !rst.Contains("\"shippingStatus\":0,") || !order.order_status_prompt.Contains("待发货")) { return "{\"success\":false,\"msg\":\"仅未发货单可以自动退货\"}"; @@ -1663,14 +1726,6 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls /// public string SendTransitAfterSaleE57(PddBuyerOrderLiteInfo order, string refundStatus = "买手退款成功") { - //订单作废接口(作废重拍) - //postman request POST 'http://localhost:8088/oms-api/external_procurement/discardOrder' \ - // --header 'Content-Type: application/json' \ - // --body '{ - // "orderNo":"12334534534", - // "outOrderNo":"12312312" - //}' 成功返回code:0 失败返回code:1 - string url2 = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/purchase/refundStatus"; var data = new JObject(); data["orderId"] = order.ShopOrderIdStr; diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml index 0b964de..2f4c373 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml @@ -110,7 +110,7 @@ - + diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs index 8671a65..687a2c6 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs @@ -36,6 +36,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls { public CheckBox chkSelectAll = null; + public string headerStr { get; set; } = ""; public bool IsAutoReadOrder = true; public DateTime nextGetOrderTime = DateTime.MinValue; @@ -221,10 +222,35 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls try { transitOrderList = JsonHelper.DeserializeJsonToList(JObject.Parse(html3)["data"].ParseToString()); - transitOrderList = transitOrderList.Where(t => t.order_void_status != 1).ToList(); + // 直接过滤掉仓库作废单 + //transitOrderList = transitOrderList.Where(t => t.order_void_status != 1).ToList(); } catch { } + // 读取暂时记录的买手订单,后面想办法放到中转订单库里去 + // 读取中转仓拍单订单 + var url4 = BaseClass.Build29WxObjString("order/wx_get_buyer_order_list"); + var data4 = UserLogin.GetSignaturex(); + data4 += "&wx_order_id_in=" + order_ids; + var html4 = GetHtml.PostUtf8(url4, data4); + if (string.IsNullOrEmpty(html4) || !html4.Contains("\"code\":200")) + GetHtml.PostUtf8(url4, data4); + if (string.IsNullOrEmpty(html4) || !html4.Contains("\"code\":200")) + { + Dispatcher.Invoke(new Action(() => + { + BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg")); + })); + break; + } + List pddBuyerOrders = new List(); + try + { + pddBuyerOrders = JsonHelper.DeserializeJsonToList(JObject.Parse(html4)["data"].ParseToString()) + .OrderByDescending(p => p.TransitCreateTime).ToList(); + } + catch { } + // 读取关联拍单商品 var urlMap = BaseClass.Build29WxObjString("order/wx_get_buy_prod_map"); @@ -289,6 +315,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls item.ItemTransitOrders.AddRange(transitOrderList.Where(t => t.order_no == item.order_id && t.order_sku_id == item.sku_id)); else item.ItemTransitOrders.AddRange(transitOrderList.Where(t => t.order_no == item.order_id)); + + item.PddBuyerOrders = pddBuyerOrders.Where(po => po.wx_order_id == item.order_id && po.wx_sku_id == item.sku_id).ToList(); } //装载订单售后详情 order.refundItems = new ObservableCollection(refunds.Where(of => of.order_id == order.order_id)); @@ -346,7 +374,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls })); } - void disPlayOrderTabCount() + public void disPlayOrderTabCount() { var tabItem = this.tabOrderType.Items.Cast().FirstOrDefault(t => t.Header.ParseToString().StartsWith("待采购")); if (tabItem != null) @@ -381,7 +409,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls txtFilterCount.Text = "当前条件共计 " + GlobalConfig.lstFilterOrder.Count() + " 条订单记录"; } - void FilterOrders() + public void FilterOrders() { try { @@ -441,7 +469,6 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls if (order == null) return true; - var headerStr = ((tabOrderType.SelectedItem as TabItem)?.Header).ParseToString(); // 过滤店铺名称 if (!string.IsNullOrEmpty(txtShopName.Text.Trim()) && !(";" + txtShopName.Text.Trim() + ";").Contains(";" + order.shop_name + ";")) { @@ -605,6 +632,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls private void tabOrderType_SelectionChanged(object sender, SelectionChangedEventArgs e) { + headerStr = ((tabOrderType.SelectedItem as TabItem)?.Header).ParseToString(); FilterOrders(); } diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml index 60dbff5..2bde3c0 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml @@ -223,11 +223,11 @@ + BorderThickness="1" MinWidth="30" Height="auto" CornerRadius="2" HorizontalAlignment="Center" Visibility="{Binding BuyerWaybillStatusStr,Converter={StaticResource HasTextVisibility}}"> + Background="Transparent" IsReadOnly="True" MinWidth="20" Text="{Binding BuyerWaybillStatusStr}" BorderThickness="0" /> - @@ -243,17 +243,17 @@ - + - - + - - + --> - + - + Content="作废重拍" Style="{StaticResource BasePageButtonLightStyle}" HorizontalAlignment="Center" MinWidth="38" Height="24" Margin="4,0,0,0"> + + + diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs index dca5b71..9e2cc72 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs @@ -1,12 +1,15 @@ using _29WxOrderWpf.BaseWindows; using _29WxOrderWpf.Converters; +using _29WxOrderWpf.Ctrls.BuyerCtrls; using _29WxOrderWpf.UserControls; using AllBase; using AllBase.Helper; using AllBase.Model; using AllBase.Model.Local; +using AllBase.Model.Result; using CefSharp.DevTools.DOM; using NaiBa.Util.Extension; +using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; @@ -465,6 +468,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls { if (this.DataContext is oms_wei_order_item_info order_item) { + //btnBuyOrder.Content = "关联拍单"; + // 显示预估利润 //if (order_item.BuyMap == null && order_item.ItemOrder.out_amount == 0) // txtProfitForecast.Visibility = Visibility.Visible; @@ -488,10 +493,20 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls imgOrderItem.Source = bImg; })); }); + + if (order_item.ItemOrder.status == 20 /*&& order_item.refund_status <= 1*/ && order_item.ItemTransitOrder != null) + { + btnDeleteTransitOrder.Visibility = Visibility.Visible; + } + if (MainWindow.Instance.orderListCtrl.headerStr.StartsWith("待采购")) + { + wpBuyAccount.Visibility = Visibility.Collapsed; + wpBuyOrderId.Visibility = Visibility.Collapsed; + wpBuyTime.Visibility = Visibility.Collapsed; + } } else { - btnBuyOrder.Content = "关联拍单"; //imgOrderItem.Source = null; } } @@ -603,11 +618,98 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls } } - private void btnDeleteTransitOrder_Click(object sender, RoutedEventArgs e) + private async void btnDeleteTransitOrder_Click(object sender, RoutedEventArgs e) { + if (this.DataContext is oms_wei_order_item_info orderItem) + { + // 拍单前查询订单是否退款 + var orderId = orderItem.order_id; + var skuId = orderItem.sku_id; + await Task.Run(() => + { + MainWindow.Instance.orderListCtrl.GetOrder(orderId); + var newOrder = GlobalConfig.lstOrder.FirstOrDefault(or => or.order_id == orderId); + if (newOrder.orderItems.Count == 1) + orderItem = newOrder?.orderItems?.FirstOrDefault(); + else + orderItem = newOrder?.orderItems?.FirstOrDefault(oi => oi.sku_id == skuId); + if (orderItem == null) + { + BaseMsgWindow.ShowError("订单查询失败,请重试"); + return; + } + if (orderItem.ItemTransitOrder == null) + { + BaseMsgWindow.ShowError("订单状态已修改,请确认后重试"); + return; + } + }); + + bool noBuyer = false; + var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_name == orderItem.ItemTransitOrder.buyer_account); + if (buyer == null) + { + if (BaseMsgWindow.ShowConfirm("拍单买手不存在,点击确定直接作废中转单并手动取消买手单,点击取消登录买手后重试").DialogResult != true) + return; + noBuyer = true; + } + + // 检测一下买手号 + if (GlobalConfig.CurrentPddBuyer.status == "在线") + { + await Task.Run(() => + { + PddMobileLoginForm.CheckBuyerLogin(GlobalConfig.CurrentPddBuyer); + }); + } + if (GlobalConfig.CurrentPddBuyer.status != "在线") + { + if (BaseMsgWindow.ShowConfirm("买手掉线,点击确定直接作废中转单并手动取消买手单,点击取消登录买手后重试").DialogResult != true) + return; + noBuyer = true; + } + + if (!noBuyer) + { + var pddAfterRst = PDDBuyerOrderReadCtrl.SimPddAfterSale(buyer, new PddBuyerOrderLiteInfo() { order_status_prompt = "待发货", + order_amount = orderItem.ItemTransitOrder.out_amount, order_sn = orderItem.ItemTransitOrder.out_order_no }); + if (pddAfterRst.Contains("\"after_sales_status\":1") || pddAfterRst.Contains("该订单已全额退款") || pddAfterRst.Contains("订单未付款")) + { + } + else + { + if (BaseMsgWindow.ShowConfirm("买手退款失败,点击确定直接作废中转单并手动取消买手单,点击取消稍候重试").DialogResult != true) + return; + } + } + + //订单作废接口(作废重拍) + //postman request POST 'http://localhost:8088/oms-api/external_procurement/discardOrder' \ + // --header 'Content-Type: application/json' \ + // --body '{ + // "orderNo":"12334534534", + // "outOrderNo":"12312312" + //}' 成功返回code:0 失败返回code:1 + + string url2 = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/discardOrder"; + var data = new JObject(); + data["orderNo"] = orderItem.order_id; + data["outOrderNo"] = orderItem.ItemTransitOrder.out_order_no; + var dataStr2 = JsonHelper.SerializeObject(data); + var discardRst = HttpResponseWXBLL.e57PostResponse(url2, dataStr2, ""); + if (discardRst.Contains("0") || discardRst.Contains("200")) + { + MainWindow.Instance.orderListCtrl.GetOrder(orderId); + MainWindow.Instance.orderListCtrl.FilterOrders(); + BaseMsgWindow.ShowInfo("订单作废成功,请重新拍单"); + } + else + { + var msg = BaseRegex.GetStringXml(ref discardRst, "msg"); + BaseMsgWindow.ShowInfo("订单作废失败,服务端返回 " + msg); + } + } } } - - } diff --git a/AllBase/29WxOrderAllBase.csproj b/AllBase/29WxOrderAllBase.csproj index 58e3558..81a98d7 100644 --- a/AllBase/29WxOrderAllBase.csproj +++ b/AllBase/29WxOrderAllBase.csproj @@ -169,6 +169,7 @@ + diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs index 03811c9..d8530a2 100644 --- a/AllBase/BaseClass.cs +++ b/AllBase/BaseClass.cs @@ -22,7 +22,7 @@ namespace AllBase /// 版本ID /// - public static int VersionCount = 139; + public static int VersionCount = 151; public static string ServerUrl { get; set; } = "http://1.13.195.131:9000"; public static string DebugUrl { get; set; } = "http://localhost:9000"; diff --git a/AllBase/Model/Local/oms_wei_external_procurement_log.cs b/AllBase/Model/Local/oms_wei_external_procurement_log.cs index fc7ab27..2d41a7e 100644 --- a/AllBase/Model/Local/oms_wei_external_procurement_log.cs +++ b/AllBase/Model/Local/oms_wei_external_procurement_log.cs @@ -56,5 +56,6 @@ namespace AllBase.Model.Local public int? is_transfer_ship { get; set; } public string random_code { get; set; } public int? transfer_refund_status { get; set; } + public int? order_void_status { get; set; } } } diff --git a/AllBase/Model/Local/oms_wei_order_info.cs b/AllBase/Model/Local/oms_wei_order_info.cs index 8948082..207b068 100644 --- a/AllBase/Model/Local/oms_wei_order_info.cs +++ b/AllBase/Model/Local/oms_wei_order_info.cs @@ -73,11 +73,34 @@ namespace AllBase.Model.Local get { return status == 30 || status == 100; } set { } } + /// + /// 售后订单(含售后关闭) + /// public bool IsRefund { get { return refundItems?.Count > 0; } set { } } + /// + /// 紧急订单 + /// + public bool IsEmergency + { + get + { + if (orderItems.Any(oi => oi.refund_status > 0 && oi.ItemTransitOrders.Count > 0 && + oi.ItemTransitOrders.Any(t => !string.IsNullOrEmpty(t.refund_status) && + !t.refund_status.Contains("退款成功") && + !t.refund_status.Contains("关闭") && + !t.refund_status.Contains("撤销")))) + { + return true; + } + return false; + } + set { } + } + public string orderStatusStr { diff --git a/AllBase/Model/Local/oms_wei_order_item_info.cs b/AllBase/Model/Local/oms_wei_order_item_info.cs index f1b7072..9d77a47 100644 --- a/AllBase/Model/Local/oms_wei_order_item_info.cs +++ b/AllBase/Model/Local/oms_wei_order_item_info.cs @@ -39,6 +39,7 @@ namespace AllBase.Model.Local else ItemRefund = ItemOrder?.refundItems?.FirstOrDefault(r => r.sku_id == this.sku_id); } + /// /// 采购关联 /// @@ -81,7 +82,19 @@ namespace AllBase.Model.Local public List ItemTransitOrders { get; set; } = new List(); public oms_wei_external_procurement_log ItemTransitOrder { - get { return ItemTransitOrders.FirstOrDefault(t => t.transfer_refund_status.IsNullOrZero()); } + get { return ItemTransitOrders.FirstOrDefault(t => t.order_void_status != 1); } + set { } + } + public oms_wei_external_procurement_log ItemTransitOrderWithFake + { + get { return ItemTransitOrders.FirstOrDefault(); } + set { } + } + + public List PddBuyerOrders { get; set; } = new List(); + public order_pdd_buyer_order PddBuyerOrder + { + get { return PddBuyerOrders.FirstOrDefault(); } set { } } @@ -128,64 +141,151 @@ namespace AllBase.Model.Local set { } } - public string TransitWaybillStatusStr + public string BuyerWaybillStatusStr { get { - if ((ItemTransitOrder?.pre_allocated_order_no == 1 || ItemTransitOrder?.pre_allocated_order_no == 3) && !ItemTransitOrder.express_2_company.IsNullOrEmpty() && !ItemTransitOrder.express_2_waybill.IsNullOrEmpty()) - return "仓库已出单"; + if (PddBuyerOrder?.wx_order_id == "3737506236083093504") + { + + } + if ((PddBuyerOrder?.order_status_prompt).ParseToString().Contains("已签收")) + { + return "已到中转仓"; + } + else if ((PddBuyerOrder?.order_status_prompt).ParseToString().Contains("待用户退回商品")) + { + return "已到中转仓"; + } + else if ((PddBuyerOrder?.order_status_prompt).ParseToString().Contains("待收货")) + { + return "买手已发货"; + } + if (ItemTransitOrder?.pre_allocated_order_no == 1 || ItemTransitOrder?.pre_allocated_order_no == 3) - return "买手已出单"; + return "买手已发货"; if (ItemTransitOrder != null) - return "买手未出单"; + return "买手未发货"; return ""; } set { } } - - public SolidColorBrush TransitWaybillStatusStrColor + public SolidColorBrush BuyerWaybillStatusStrColor { get { - if (TransitWaybillStatusStr == "仓库已出单") + if (BuyerWaybillStatusStr.StartsWith("已到中转仓")) return new SolidColorBrush(Color.FromRgb(19, 206, 102)); - if (TransitWaybillStatusStr == "买手已出单") + if (BuyerWaybillStatusStr.StartsWith("买手已发货")) return new SolidColorBrush(Color.FromRgb(255, 186, 0)); - if (TransitWaybillStatusStr == "买手未出单") + if (BuyerWaybillStatusStr.StartsWith("买手未发货")) return new SolidColorBrush(Color.FromRgb(255, 73, 73)); return new SolidColorBrush(Color.FromRgb(255, 73, 73)); } set { } } - public SolidColorBrush TransitWaybillStatusBorderColor + public SolidColorBrush BuyerWaybillStatusBorderColor { get { - if (TransitWaybillStatusStr == "仓库已出单") + if (BuyerWaybillStatusStr.StartsWith("已到中转仓")) return new SolidColorBrush(Color.FromRgb(208, 245, 224)); - if (TransitWaybillStatusStr == "买手已出单") + if (BuyerWaybillStatusStr.StartsWith("买手已发货")) return new SolidColorBrush(Color.FromRgb(255, 241, 204)); - if (TransitWaybillStatusStr == "买手未出单") + if (BuyerWaybillStatusStr.StartsWith("买手未发货")) + return new SolidColorBrush(Color.FromRgb(255, 219, 219)); + return new SolidColorBrush(Color.FromRgb(255, 219, 219)); + } + set { } + } + public SolidColorBrush BuyerWaybillStatusBackColor + { + get + { + if (BuyerWaybillStatusStr.StartsWith("已到中转仓")) + return new SolidColorBrush(Color.FromRgb(231, 250, 240)); + if (BuyerWaybillStatusStr.StartsWith("买手已发货")) + return new SolidColorBrush(Color.FromRgb(255, 248, 230)); + if (BuyerWaybillStatusStr.StartsWith("买手未发货")) + return new SolidColorBrush(Color.FromRgb(255, 237, 237)); + return new SolidColorBrush(Color.FromRgb(255, 237, 237)); + } + set { } + } + + public string WarehouseWaybillStatusStr + { + get + { + if ((ItemTransitOrder?.pre_allocated_order_no == 1 || ItemTransitOrder?.pre_allocated_order_no == 3) && !ItemTransitOrder.express_2_company.IsNullOrEmpty() && !ItemTransitOrder.express_2_waybill.IsNullOrEmpty()) + return "中转已发货"; + if (ItemTransitOrder?.pre_allocated_order_no == 1 || ItemTransitOrder?.pre_allocated_order_no == 3) + return "待中转发货"; + if (ItemTransitOrder?.pre_allocated_order_no == 2) + return "中转提前取号"; + if (ItemTransitOrder?.pre_allocated_order_no == 0) + return "待中转取号"; + return ""; + } + set { } + } + public SolidColorBrush WarehouseWaybillStatusStrColor + { + get + { + if (WarehouseWaybillStatusStr.StartsWith("中转已发货")) + return new SolidColorBrush(Color.FromRgb(19, 206, 102)); + if (WarehouseWaybillStatusStr.StartsWith("待中转发货") || WarehouseWaybillStatusStr.StartsWith("中转提前取号")) + return new SolidColorBrush(Color.FromRgb(255, 186, 0)); + if (WarehouseWaybillStatusStr.StartsWith("待中转取号")) + return new SolidColorBrush(Color.FromRgb(255, 73, 73)); + return new SolidColorBrush(Color.FromRgb(255, 73, 73)); + } + set { } + } + public SolidColorBrush WarehouseWaybillStatusBorderColor + { + get + { + if (WarehouseWaybillStatusStr.StartsWith("中转已发货")) + return new SolidColorBrush(Color.FromRgb(208, 245, 224)); + if (WarehouseWaybillStatusStr.StartsWith("待中转发货") || WarehouseWaybillStatusStr.StartsWith("中转提前取号")) + return new SolidColorBrush(Color.FromRgb(255, 241, 204)); + if (WarehouseWaybillStatusStr.StartsWith("待中转取号")) return new SolidColorBrush(Color.FromRgb(255, 219, 219)); return new SolidColorBrush(Color.FromRgb(255, 73, 73)); } set { } } - public SolidColorBrush TransitWaybillStatusBackColor + public SolidColorBrush WarehouseWaybillStatusBackColor { get { - if (TransitWaybillStatusStr == "仓库已出单") + if (WarehouseWaybillStatusStr.StartsWith("中转已发货")) return new SolidColorBrush(Color.FromRgb(231, 250, 240)); - if (TransitWaybillStatusStr == "买手已出单") + if (WarehouseWaybillStatusStr.StartsWith("待中转发货") || WarehouseWaybillStatusStr.StartsWith("中转提前取号")) return new SolidColorBrush(Color.FromRgb(255, 248, 230)); - if (TransitWaybillStatusStr == "买手未出单") + if (WarehouseWaybillStatusStr.StartsWith("待中转取号")) return new SolidColorBrush(Color.FromRgb(255, 237, 237)); return new SolidColorBrush(Color.FromRgb(255, 73, 73)); } set { } } + public string TransitRefundStatusStr + { + get + { + if (!string.IsNullOrEmpty(ItemTransitOrder?.refund_status)) + { + if (!ItemTransitOrder.refund_status.Contains("需手动申请售后")) + return "已申请售后 " + ItemTransitOrder.refund_status.Replace("申请收到,", ""); + return ItemTransitOrder.refund_status; + } + return ""; + } + set { } + } // 仓库采购时间是否达标字段 @@ -193,14 +293,14 @@ namespace AllBase.Model.Local { get { - if (ItemTransitOrder == null) + if (ItemTransitOrderWithFake == null) return ""; if (ItemOrder.createDateTime == null) ItemOrder.createDateTime = BaseClass.StampToDateTime(ItemOrder.create_time); - string timeStr = "采购时间:" + ItemTransitOrder.created_time.ToString("yyyy-MM-dd HH:mm:ss"); - if (ItemOrder.createDateTime.Value.Date != ItemTransitOrder.created_time.Date && ItemTransitOrder.created_time > ItemTransitOrder.created_time.Date.AddHours(1.5)) + string timeStr = "采购时间:" + ItemTransitOrderWithFake.created_time.ToString("yyyy-MM-dd HH:mm:ss"); + if (ItemOrder.createDateTime.Value.Date != ItemTransitOrderWithFake.created_time.Date && ItemTransitOrderWithFake.created_time > ItemTransitOrderWithFake.created_time.Date.AddHours(1.5)) return timeStr + " ×"; return timeStr + " √"; } diff --git a/AllBase/Model/Local/order_pdd_buyer_order.cs b/AllBase/Model/Local/order_pdd_buyer_order.cs new file mode 100644 index 0000000..f7c1e4b --- /dev/null +++ b/AllBase/Model/Local/order_pdd_buyer_order.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AllBase.Model.Local +{ + public class order_pdd_buyer_order + { + public long? id { get; set; } + public string wx_order_id { get; set; } + public string wx_sku_id { get; set; } + public DateTime TransitCreateTime { get; set; } + public int? pre_allocated_order_no { get; set; } + public string buyerId { get; set; } + public string buyerName { get; set; } + public string order_sn { get; set; } + public int? order_amount { get; set; } + public long? order_time { get; set; } + public string outExpressCompanyCode { get; set; } + public string tracking_number { get; set; } + /// + /// 订单状态 + /// + public string order_status_prompt { get; set; } + public int? after_sales_status { get; set; } + public string order_detail { get; set; } + public DateTime add_time { get; set; } + public DateTime mdy_time { get; set; } + } +} diff --git a/AllBase/Model/Result/PddBuyerAfterSaleLiteInfo.cs b/AllBase/Model/Result/PddBuyerAfterSaleLiteInfo.cs index 7edfe2e..94ccb9a 100644 --- a/AllBase/Model/Result/PddBuyerAfterSaleLiteInfo.cs +++ b/AllBase/Model/Result/PddBuyerAfterSaleLiteInfo.cs @@ -1,4 +1,6 @@ -using NaiBa.Util.Extension; +using AllBase.Model.MvvmBaseClasses; +using NaiBa.Util.Extension; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; @@ -7,11 +9,211 @@ using System.Threading.Tasks; namespace AllBase.Model.Result { - public class PddBuyerAfterSaleLiteInfo + public class PddBuyerAfterSaleLiteInfo : PropertyNotifyObject { + public string ShopOrderIdStr + { + get { return this.GetValue(x => x.ShopOrderIdStr); } + set { this.SetValue(x => x.ShopOrderIdStr, value); } + } + public string ShopOrderSkuIdStr + { + get { return this.GetValue(x => x.ShopOrderSkuIdStr); } + set { this.SetValue(x => x.ShopOrderSkuIdStr, value); } + } + public string ShopOrderSkuNameStr + { + get { return this.GetValue(x => x.ShopOrderSkuNameStr); } + set { this.SetValue(x => x.ShopOrderSkuNameStr, value); } + } + /// + /// 店铺售后订单状态 无售后或售后关闭为空 否则为店铺售后 + /// + public string ShopOrderRefundStr + { + get { return this.GetValue(x => x.ShopOrderRefundStr); } + set { this.SetValue(x => x.ShopOrderRefundStr, value); } + } + public string TransitBuyerOrderRefundStatus + { + get { return this.GetValue(x => x.TransitBuyerOrderRefundStatus); } + set { this.SetValue(x => x.TransitBuyerOrderRefundStatus, value); } + } + /// + /// 中转仓仓库编号 + /// + public string TransitWarehouseIdStr + { + get { return this.GetValue(x => x.TransitWarehouseIdStr); } + set { this.SetValue(x => x.TransitWarehouseIdStr, value); } + } + /// + /// 拍单物流公司编码 + /// + public string Express1CompanyStr + { + get { return this.GetValue(x => x.Express1CompanyStr); } + set { this.SetValue(x => x.Express1CompanyStr, value); } + } + /// + /// 拍单物流 + /// + public string Express1WaybillStr + { + get { return this.GetValue(x => x.Express1WaybillStr); } + set { this.SetValue(x => x.Express1WaybillStr, value); } + } + /// + /// 中转仓物流公司编码(提前取号) + /// + public string Express2CompanyStr + { + get { return this.GetValue(x => x.Express2CompanyStr); } + set { this.SetValue(x => x.Express2CompanyStr, value); } + } + /// + /// 中转仓物流编码(提前取号) + /// + public string Express2WaybillStr + { + get { return this.GetValue(x => x.Express2WaybillStr); } + set { this.SetValue(x => x.Express2WaybillStr, value); } + } + /// + /// 中转仓状态:"0" 未使用,"1" 已创建,"2" 创建失败,"3" 处理中(业务方根据此字段处理中转流程) + /// 使用此字段判断中转仓库是否已取号 + /// + public string TransferWareHouseStatus + { + get { return this.GetValue(x => x.TransferWareHouseStatus); } + set { this.SetValue(x => x.TransferWareHouseStatus, value); } + } + /// + /// 微信订单作废状态 0 未作废 1已作废 2作废失败 + /// + public string WxOrderVoidStatus + { + get { return this.GetValue(x => x.WxOrderVoidStatus); } + set { this.SetValue(x => x.WxOrderVoidStatus, value); } + } + /// + /// 1 正常取号 2 提前取号 3 已更正 + /// + public string PreAllocatedOrderNoStr + { + get { return this.GetValue(x => x.PreAllocatedOrderNoStr); } + set { this.SetValue(x => x.PreAllocatedOrderNoStr, value); } + } + /// + /// 处理中, "已取号(更正)", 已取号, 提前取号, 取号失败 + /// + [JsonIgnore] + public string TransitOrderStatus + { + get + { + string wareHouseStatusStr = TransferWareHouseStatus == "3" ? " 仓库处理中" : ""; + //if (TransferWareHouseStatus == "3") + //{ + // return "处理中"; + //} + // 不考虑仓库取号失败情况,只要取号状态不是3或者1,且有仓库订单记录,就处理取号 + //if (TransferWareHouseStatus == "2") + //{ + // return "取号失败"; + //} + if (PreAllocatedOrderNoStr == "3") + { + return "已取号(更正)"; + } + if (PreAllocatedOrderNoStr == "1") + { + //if (OrderTime >= new DateTime(2026, 6, 29)) + if (orderDate >= 260629) + return "已取号"; + else + return "提前取号" + wareHouseStatusStr; + } + if (PreAllocatedOrderNoStr == "2") + { + return "提前取号" + wareHouseStatusStr; + } + + //if (!TransitWarehouseIdStr.IsNullOrEmpty() && OrderTime < new DateTime(2026, 6, 29)) + if (!TransitWarehouseIdStr.IsNullOrEmpty() && orderDate < 260629) + { + return "提前取号(旧订单)" + wareHouseStatusStr; + } + if (TransitWarehouseIdStr.IsNullOrEmpty()) + { + return "非中转仓订单"; + } + return ""; + } + set { } + } + + /// + /// 微信小店订单创建时间 + /// + public DateTime WxOrderCreateTime + { + get { return this.GetValue(x => x.WxOrderCreateTime); } + set { this.SetValue(x => x.WxOrderCreateTime, value); } + } + + /// + /// 中转单创建时间 + /// + public DateTime TransitCreateTime + { + get { return this.GetValue(x => x.TransitCreateTime); } + set { this.SetValue(x => x.TransitCreateTime, value); } + } + + + public string ProdInfoStr + { + get + { + var info = listItemGoodsVO == null ? "" : listItemGoodsVO.goodsName + " " + listItemGoodsVO.spec + " x" + listItemGoodsVO.goodsNumber; // 商品信息 + return info; + } + set + { + } + } + + public decimal? OrderAmountValue + { + get + { + return listItemAmountVO.orderAmount * 0.01m; + } + set { } + } + public decimal? RefundAmountValue + { + get + { + return listItemAmountVO.refundAmount * 0.01m; + } + set { } + } + public string AfterSaleStatusStr + { + get + { + return listItemStatusVO.statusText; + } + set { } + } + + public string sendStatus { get; set; } = ""; + public string afterSaleSendStatus { get; set; } = ""; + public string buyerId { get; set; } // 买手Id public string buyerName { get; set; } // 买手名称 - public string sendStatus { get; set; } = ""; public string orderSn { get @@ -19,11 +221,13 @@ namespace AllBase.Model.Result var detailPage = listItemExtraVO.navToDetailPageUrl; return BaseRegex.GetStringQuery(ref detailPage, "order_sn"); } + set { } } - public int? orderDate { get { return orderSn.Split('-').FirstOrDefault().ParseToInt(); } } + public int? orderDate { get { return orderSn.Split('-').FirstOrDefault().ParseToInt(); } set { } } public long? afterSalesId { get; set; } // 20129688312436, + public ListItemExtraVO listItemExtraVO { get; set; } public ListItemMallVO listItemMallVO { get; set; } public ListItemStatusVO listItemStatusVO { get; set; } diff --git a/AllBase/Model/Result/PddBuyerOrderLiteInfo.cs b/AllBase/Model/Result/PddBuyerOrderLiteInfo.cs index c7fc511..dbc9d9b 100644 --- a/AllBase/Model/Result/PddBuyerOrderLiteInfo.cs +++ b/AllBase/Model/Result/PddBuyerOrderLiteInfo.cs @@ -111,11 +111,19 @@ namespace AllBase.Model.Result get { return this.GetValue(x => x.ShopOrderSkuNameStr); } set { this.SetValue(x => x.ShopOrderSkuNameStr, value); } } + /// + /// 店铺售后订单状态 无售后或售后关闭为空 否则为"店铺售后" + /// public string ShopOrderRefundStr { get { return this.GetValue(x => x.ShopOrderRefundStr); } set { this.SetValue(x => x.ShopOrderRefundStr, value); } } + public string TransitBuyerOrderRefundStatus + { + get { return this.GetValue(x => x.TransitBuyerOrderRefundStatus); } + set { this.SetValue(x => x.TransitBuyerOrderRefundStatus, value); } + } /// /// 中转仓仓库编号 /// @@ -166,6 +174,14 @@ namespace AllBase.Model.Result set { this.SetValue(x => x.TransferWareHouseStatus, value); } } /// + /// 店铺订单作废状态 0 未作废 1已作废 2作废失败 + /// + public string WxOrderVoidStatus + { + get { return this.GetValue(x => x.WxOrderVoidStatus); } + set { this.SetValue(x => x.WxOrderVoidStatus, value); } + } + /// /// 1 正常取号 2 提前取号 3 已更正 /// public string PreAllocatedOrderNoStr