显示买手退款详情

This commit is contained in:
wule committed 2026-11-03 13:38:50 +08:00
1 parent 5777c30048
commit 85259d8335
7 files changed
+248 -110

No files matched your search

@@ -0,0 +1,91 @@
using _29WxOrderWpf.BaseWindows;
using _29WxOrderWpf.Ctrls.BuyerCtrls;
using _29WxOrderWpf.ViewModels;
using AllBase;
using AllBase.Helper;
using AllBase.Model.DBModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using TemuKJD.ToolForms;
using WxOrder.Framework.Commons;
namespace _29WxOrderWpf.Ctrls.OrderCtrls;
internal class OrderBuyerOrdersHelper
{
public static void ShowBuyerOrder(oms_wei_order_item_info orderItem, string buyerAccount, string buyerName, string outOrderId, bool isShowOrderList = false)
{
if (outOrderId.StartsWith("tb_")) // 淘宝买手及订单
{
var buyer = GlobalConfig.TaobaoBuyerLoginList.FirstOrDefault(p => p.buyer_id == buyerAccount || p.buyer_name == buyerName);
if (buyer == null)
{
BaseMsgWindow.ShowError("该订单买手号未在当前账户登录");
return;
}
var url = "";
if (isShowOrderList)
url = "https://buyertrade.taobao.com/trade/itemlist/list_bought_items.htm?";
else
url = "https://trade.tmall.com/detail/orderDetail.htm?bizOrderId=" + outOrderId.Replace("tb_", "");
TaobaoBuyOrderCtrl taobaoBuyView = new TaobaoBuyOrderCtrl(GlobalConfig.CurrentTaobaoBuyer, orderItem);
taobaoBuyView.ViewModel.InitUrl = url;
new DialogWindow()
{
Title = "订单查看 - 当前买手 " + buyer.buyer_nick,
Content = taobaoBuyView,
Width = SystemParameters.PrimaryScreenWidth < 1920 ? SystemParameters.PrimaryScreenWidth : SystemParameters.PrimaryScreenWidth * 90 / 100,
Height = SystemParameters.PrimaryScreenHeight * 90 / 100,
WindowStartupLocation = WindowStartupLocation.CenterScreen,
}.ShowDialog();
}
else // 拼多多买手及订单
{
var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(p => p.buyer_id == buyerAccount || p.buyer_name == buyerName);
if (buyer == null)
{
BaseMsgWindow.ShowError("该订单买手号未在当前账户登录");
return;
}
var url = "";
if (isShowOrderList)
url = "https://mobile.yangkeduo.com/index.html"; /* 订单列表 */
else
url = "https://mobile.yangkeduo.com/order.html?order_sn=" + outOrderId + "&page_from=1&main_orders=1&is_tester=1&refer_page_name=my_order" +
"&refer_page_id=10032_" + BaseClass.DateTimeToTimestampMilliseconds(DateTime.Now) + "_" + Randomx.GetWordNumber(10) + "&refer_page_sn=10032";
// 拍单的时候检测一下买手号
if (buyer.status == "在线")
{
PddMobileLoginViewModel.CheckBuyerLogin(buyer);
}
if (buyer.status != "在线")
{
BaseMsgWindow.ShowError("买手号掉线");
return;
}
PddMobileBuyOrderForm buyOrderForm = new PddMobileBuyOrderForm(MainWindow.Instance.orderListCtrl.FilterOneOrder, StartUp.UpdateBalance, orderItem, buyer, orderItem.PddBuyMap)
{
TitleText = "订单查看 - 当前买手 " + buyer.buyer_nick,
InitUrl = url /* 订单页面 */
};
buyOrderForm.pnlBuy.Visible = false;
//已有拍单关联的控制界面显示隐藏
if (orderItem.PddBuyMap != null)
{
buyOrderForm.pnlBuy.Visible = true;
buyOrderForm.pnlMap.Visible = false;
}
buyOrderForm.ShowDialog();
}
}
}
@@ -852,90 +852,23 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
private void TransitOrderBuy_Click(object sender, MouseButtonEventArgs e)
{
var orderItem = this.DataContext as oms_wei_order_item_info;
if (orderItem == null)
if (this.DataContext is oms_wei_order_item_info orderItem)
{
BaseMsgWindow.ShowError("订单信息为空");
return;
}
var buyerName = txtTransitOrderBuyerStr.Text;
var buyerAccount = txtTransitOrderBuyerStr.Tag.ParseToString();
var outOrderId = txtTransitOrderNumStr.Text;
if (string.IsNullOrEmpty(buyerName) || string.IsNullOrEmpty(outOrderId))
{
return;
}
if (outOrderId.StartsWith("tb_")) // 淘宝买手及订单
{
var buyer = GlobalConfig.TaobaoBuyerLoginList.FirstOrDefault(p => p.buyer_id == buyerAccount || p.buyer_name == buyerName);
if (buyer == null)
var buyerName = txtTransitOrderBuyerStr.Text;
var buyerAccount = txtTransitOrderBuyerStr.Tag.ParseToString();
var outOrderId = txtTransitOrderNumStr.Text;
if (string.IsNullOrEmpty(buyerName) || string.IsNullOrEmpty(outOrderId))
{
BaseMsgWindow.ShowError("该订单买手号未在当前账户登录");
return;
}
var url = "";
if (sender == txtTransitOrderBuyerStr)
url = "https://buyertrade.taobao.com/trade/itemlist/list_bought_items.htm?";
else
url = "https://trade.tmall.com/detail/orderDetail.htm?bizOrderId=" + outOrderId.Replace("tb_", "");
bool isShowOrderList = sender == txtTransitOrderBuyerStr;
TaobaoBuyOrderCtrl taobaoBuyView = new TaobaoBuyOrderCtrl(GlobalConfig.CurrentTaobaoBuyer, orderItem);
taobaoBuyView.ViewModel.InitUrl = url;
new DialogWindow()
{
Title = "订单查看 - 当前买手 " + buyer.buyer_nick,
Content = taobaoBuyView,
Width = SystemParameters.PrimaryScreenWidth < 1920 ? SystemParameters.PrimaryScreenWidth : SystemParameters.PrimaryScreenWidth * 90 / 100,
Height = SystemParameters.PrimaryScreenHeight * 90 / 100,
WindowStartupLocation = WindowStartupLocation.CenterScreen,
}.ShowDialog();
}
else // 拼多多买手及订单
{
var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(p => p.buyer_id == buyerAccount || p.buyer_name == buyerName);
if (buyer == null)
{
BaseMsgWindow.ShowError("该订单买手号未在当前账户登录");
return;
}
var url = "";
if (sender == txtTransitOrderBuyerStr)
url = "https://mobile.yangkeduo.com/index.html";
else
url = "https://mobile.yangkeduo.com/order.html?order_sn=" + outOrderId + "&page_from=1&main_orders=1&is_tester=1&refer_page_name=my_order" +
"&refer_page_id=10032_" + BaseClass.DateTimeToTimestampMilliseconds(DateTime.Now) + "_" + Randomx.GetWordNumber(10) + "&refer_page_sn=10032";
// 拍单的时候检测一下买手号
if (buyer.status == "在线")
{
PddMobileLoginViewModel.CheckBuyerLogin(buyer);
}
if (buyer.status != "在线")
{
BaseMsgWindow.ShowError("买手号掉线");
return;
}
PddMobileBuyOrderForm buyOrderForm = new PddMobileBuyOrderForm(MainWindow.Instance.orderListCtrl.FilterOneOrder, StartUp.UpdateBalance,
orderItem, buyer, orderItem.PddBuyMap);
buyOrderForm.TitleText = "订单查看 - 当前买手 " + buyer.buyer_nick;
//所有订单页面
buyOrderForm.InitUrl = url;
buyOrderForm.pnlBuy.Visible = false;
//已有拍单关联的控制界面显示隐藏
if (orderItem.PddBuyMap != null)
{
buyOrderForm.pnlBuy.Visible = true;
buyOrderForm.pnlMap.Visible = false;
}
buyOrderForm.ShowDialog();
OrderBuyerOrdersHelper.ShowBuyerOrder(orderItem, buyerAccount, buyerName, outOrderId, isShowOrderList);
}
}
private void txtDirectOrderNumStr_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
var orderItem = this.DataContext as oms_wei_order_item_info;
@@ -7,7 +7,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:wpf="WPFCommon"
d:DesignHeight="280"
d:DesignWidth="1000"
d:DesignWidth="1200"
Background="White"
mc:Ignorable="d">
<UserControl.Resources>
@@ -75,55 +75,100 @@
<Border
Margin="0,10"
BorderBrush="LightSkyBlue"
BorderThickness="0,0,1,0"
Opacity="0.5">
BorderThickness="0,0,1,0">
<wpf:SpacingStackPanel
Margin="10,10"
VerticalAlignment="Center"
Orientation="Vertical"
VerticalSpacing="4">
<wpf:TitleContent Title="交易单号:">
<wpf:TitleContent Title="交易单号:" Foreground="#FF666666">
<TextBox
d:Text="371234567890123456"
Background="Transparent"
BorderThickness="0"
Foreground="#FF888888"
IsReadOnly="True"
Text="{Binding WxOrderId}"
TextWrapping="Wrap" />
</wpf:TitleContent>
<wpf:TitleContent Title="买手单号:">
<wpf:TitleContent Title="采购账户:" Foreground="#FF666666">
<WrapPanel>
<TextBox
x:Name="txtOutOrderBuyer"
d:Text="张三"
Background="Transparent"
BorderThickness="0"
Cursor="Hand"
Foreground="#AA0000FF"
IsReadOnly="True"
Tag="{Binding OutBuyerId}"
Text="{Binding OutBuyerName}"
TextWrapping="Wrap" />
<Border
x:Name="borderTransitBuyerRefundStatus"
Height="auto"
MinWidth="30"
Margin="2,0,0,0"
HorizontalAlignment="Center"
d:Background="{StaticResource PageOkBrush}"
d:BorderBrush="{StaticResource PageOkBrush}"
Background="{Binding TransitDetailRefundStatusBackColor}"
BorderBrush="{Binding TransitDeatilRefundStatusBackColor}"
BorderThickness="1"
CornerRadius="2"
Visibility="{Binding TransitDetailRefundStatusStrVisibility}">
<TextBlock
x:Name="txtRefundStatus"
MinWidth="20"
Padding="0"
VerticalAlignment="Center"
d:Text="退货成功"
Background="Transparent"
Foreground="White"
Text="{Binding TransitDetailRefundStatusStr}" />
</Border>
</WrapPanel>
</wpf:TitleContent>
<wpf:TitleContent Title="采购单号:" Foreground="#FF666666">
<TextBox
x:Name="txtOutOrderId"
d:Text="261008-1234567890123456"
Background="Transparent"
BorderThickness="0"
Cursor="Hand"
Foreground="#AA0000FF"
IsReadOnly="True"
Text="{Binding OutOrderId}"
TextWrapping="Wrap" />
</wpf:TitleContent>
<wpf:TitleContent Title="下单时间:">
<wpf:TitleContent Title="下单时间:" Foreground="#FF666666">
<TextBox
d:Text="26-10-07 10:33:33"
Background="Transparent"
BorderThickness="0"
Foreground="#FF888888"
IsReadOnly="True"
Text="{Binding WxOrderCreateTimeStr}"
TextWrapping="Wrap" />
</wpf:TitleContent>
<wpf:TitleContent Title="添加时间:">
<wpf:TitleContent Title="添加时间:" Foreground="#FF666666">
<TextBox
d:Text="26-10-07 18:33:33"
Background="Transparent"
BorderThickness="0"
Foreground="#FF888888"
IsReadOnly="True"
Text="{Binding TransitAddTimeStr}"
TextWrapping="Wrap" />
</wpf:TitleContent>
<wpf:TitleContent Title="创建时间:">
<wpf:TitleContent Title="创建时间:" Foreground="#FF666666">
<TextBox
d:Text="26-10-08 00:33:33"
Background="Transparent"
BorderThickness="0"
Foreground="#FF888888"
IsReadOnly="True"
Text="{Binding CreateTimeStr}"
TextWrapping="Wrap" />
@@ -2,6 +2,7 @@
using AllBase;
using AllBase.Helper;
using AllBase.Model.DBModel;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
@@ -30,6 +31,9 @@ public partial class OrderTransitListDetailCtrl : UserControl
public OrderTransitListDetailCtrl()
{
InitializeComponent();
this.txtOutOrderId.AddHandler(TextBox.MouseUpEvent, new MouseButtonEventHandler(txtOutOrderId_MouseLeftButtonUp), true);
this.txtOutOrderBuyer.AddHandler(TextBox.MouseUpEvent, new MouseButtonEventHandler(txtOutOrderId_MouseLeftButtonUp), true);
}
/// <summary> 作废包裹 </summary>
@@ -230,4 +234,22 @@ public partial class OrderTransitListDetailCtrl : UserControl
return FindParent<T>(parentObject);
}
}
private void txtOutOrderId_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_transit_detail_info transitDetailInfo && transitDetailInfo.oms_wei_order_item_info is oms_wei_order_item_info orderItem)
{
var buyerId = txtOutOrderBuyer.Tag as string;
var buyerName = txtOutOrderBuyer.Text;
var outOrderId = txtOutOrderId.Text;
if (string.IsNullOrEmpty(buyerName) || string.IsNullOrEmpty(outOrderId))
{
return;
}
bool isShowOrderList = sender == txtOutOrderBuyer;
OrderBuyerOrdersHelper.ShowBuyerOrder(orderItem, buyerId, buyerName, outOrderId, isShowOrderList);
}
}
}
@@ -21,18 +21,31 @@ namespace AllBase.Model.DBModel
return this.GetValue(x => x.OutOrderNumStr);
}
set { this.SetValue(x => x.OutOrderNumStr, value); }
}
}
public string OutOrderBuyerStr
{
get { return this.GetValue(x => x.OutOrderBuyerStr); }
set { this.SetValue(x => x.OutOrderBuyerStr, value); }
}
}
public string OutOrderBuyerIdStr
{
get { return this.GetValue(x => x.OutOrderBuyerIdStr); }
set { this.SetValue(x => x.OutOrderBuyerIdStr, value); }
}
public void SetOutOrderBuyerStr()
{
if (!out_order_no.ParseToString().StartsWith("tb_"))
OutOrderBuyerStr = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_id == buyer_account)?.buyer_name ?? buyer_account;
{
var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_id == buyer_account);
OutOrderBuyerStr = buyer?.buyer_name ?? buyer_account;
OutOrderBuyerIdStr = buyer?.buyer_id ?? buyer_account;
}
else
OutOrderBuyerStr = GlobalConfig.TaobaoBuyerLoginList.FirstOrDefault(b => b.buyer_id == buyer_account)?.buyer_name ?? buyer_account;
{
var buyer = GlobalConfig.TaobaoBuyerLoginList.FirstOrDefault(b => b.buyer_id == buyer_account);
OutOrderBuyerStr = buyer?.buyer_name ?? buyer_account;
OutOrderBuyerIdStr = buyer?.buyer_id ?? buyer_account;
}
}
@@ -887,29 +887,7 @@ namespace AllBase.Model.DBModel
}
public void SetTransitRefundStatusStr()
{
if (!string.IsNullOrEmpty(ItemTransitOrderWithVoid?.refund_status))
{
// 店铺售后又取消的,如果是买手还没申请售后,不显示需手动申请售后文字
if (ItemTransitOrderWithVoid.refund_status.Contains("需手动申请售后") && this.refund_status <= 1)
TransitRefundStatusStr = "";
// 显示售后金额(如果有)
else if (ItemTransitOrderWithVoid.refund_status.EndsWith("买手退款成功"))
{
if (PddBuyerAfterSale?.refundAmount != null)
TransitRefundStatusStr = ItemTransitOrderWithVoid.refund_status + "(¥" + PddBuyerAfterSale.refundAmount * 0.01m + ")";
else
TransitRefundStatusStr = ItemTransitOrderWithVoid.refund_status + "(退款金额待获取)";
}
else if (!ItemTransitOrderWithVoid.refund_status.Contains("需手动申请售后") && !ItemTransitOrderWithVoid.refund_status.Contains("已超过可申请售后的时间"))
TransitRefundStatusStr = "已申请售后 " + ItemTransitOrderWithVoid.refund_status.Replace("申请收到,", "");
else
TransitRefundStatusStr = ItemTransitOrderWithVoid.refund_status;
}
else
TransitRefundStatusStr = "";
TransitRefundStatusStr = oms_wei_order_item_transit_info.GetTransitBuyerRefundStatusStr(this, ItemTransitOrder ?? ItemTransitOrderWithVoid);
if (TransitRefundStatusStr.Contains("退款成功"))
TransitRefundStatusBackColor = GlobalConfig.GreenBrush;
@@ -153,6 +153,8 @@ public class oms_wei_order_item_transit_info : PropertyNotifyObject
else if (transitOrder.intercept_return_status == 2)
transitDetail.TransitReturnStatus = "拦截失败";
transitDetail.TransitDetailRefundStatusStr = GetTransitBuyerRefundStatusStr(OrderItem, transitOrder);
detailList.Add(transitDetail);
}
catch (Exception ex)
@@ -384,6 +386,31 @@ public class oms_wei_order_item_transit_info : PropertyNotifyObject
}
return detailList;
}
public static string GetTransitBuyerRefundStatusStr(oms_wei_order_item_info orderItem, oms_wei_external_procurement_log_info itemTransitOrder)
{
if (!string.IsNullOrEmpty(itemTransitOrder?.refund_status))
{
var pddBuyerAfterSale = orderItem.PddBuyerAfterSales.FirstOrDefault(af => af.orderSn == itemTransitOrder.out_order_no);
// 店铺售后又取消的,如果是买手还没申请售后,不显示需手动申请售后文字
if (itemTransitOrder.refund_status.Contains("需手动申请售后") && orderItem.refund_status <= 1)
return "";
// 显示售后金额(如果有)
else if (itemTransitOrder.refund_status.EndsWith("买手退款成功"))
{
if (pddBuyerAfterSale?.refundAmount != null)
return itemTransitOrder.refund_status + "(¥" + pddBuyerAfterSale.refundAmount * 0.01m + ")";
else
return itemTransitOrder.refund_status + "(退款金额待获取)";
}
else if (!itemTransitOrder.refund_status.Contains("需手动申请售后") && !itemTransitOrder.refund_status.Contains("已超过可申请售后的时间"))
return "已申请售后 " + itemTransitOrder.refund_status.Replace("申请收到,", "");
else
return itemTransitOrder.refund_status;
}
return "";
}
}
public class oms_wei_order_item_transit_detail_info : PropertyNotifyObject
@@ -630,4 +657,33 @@ public class oms_wei_order_item_transit_detail_info : PropertyNotifyObject
get { return this.GetValue(x => x.ExtraPackagesBtnVisibility); }
set { this.SetValue(x => x.ExtraPackagesBtnVisibility, value); }
}
public string TransitDetailRefundStatusStr
{
get { return this.GetValue(x => x.TransitDetailRefundStatusStr); }
set
{
this.SetValue(x => x.TransitDetailRefundStatusStr, value);
TransitDetailRefundStatusStrVisibility = string.IsNullOrWhiteSpace(value) ? Visibility.Collapsed : Visibility.Visible;
if (value.Contains("退款成功"))
TransitDetailRefundStatusBackColor = GlobalConfig.GreenBrush;
else if (value.Contains("需手动申请售后") || value.Contains("已超过可申请售后的时间") || value.Contains("退款失败"))
TransitDetailRefundStatusBackColor = GlobalConfig.RedBrush;
else
TransitDetailRefundStatusBackColor = GlobalConfig.LightOrangeBrush;
}
}
public Visibility TransitDetailRefundStatusStrVisibility
{
get { return this.GetValue(x => x.TransitDetailRefundStatusStrVisibility); }
set { this.SetValue(x => x.TransitDetailRefundStatusStrVisibility, value); }
}
/// <summary> 中转仓买手售后字段文字显示背景颜色 </summary>
public SolidColorBrush TransitDetailRefundStatusBackColor
{
get { return this.GetValue(x => x.TransitDetailRefundStatusBackColor); }
set { this.SetValue(x => x.TransitDetailRefundStatusBackColor, value); }
}
}