中转订单自动退货仓退货全流程

This commit is contained in:
wule committed 2026-08-20 10:13:20 +08:00
1 parent 10d6a9cd94
commit a7076e7f3f
12 files changed
+572 -106

No files matched your search

@@ -5,6 +5,7 @@ using _29WxOrderWpf.Ctrls.BuyerCtrls;
using _29WxOrderWpf.Ctrls.Statistics;
using _29WxOrderWpf.Services;
using _29WxOrderWpf.Utils;
using _29WxOrderWpf.Windows.OrderWindows;
using AllBase;
using AllBase.Extension;
using AllBase.Helper;
@@ -378,8 +379,14 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
if (string.IsNullOrEmpty(orderIds))
AutoUpdateTransitPackageToPddShop();
// 处理退货仓分销退货
if (string.IsNullOrEmpty(orderIds))
Task.Run(DoReturnOrderBuyerRefendSlient);
Task.Run(async () =>
{
await DoReturnOrderBuyerRefendSlient();
await DoReturnOrderTransitCreateSlient();
await AutoUpdateTransitReturnOrderToPddShop();
});
if (string.IsNullOrEmpty(orderIds))
hasReadOrder = true;
@@ -785,6 +792,10 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
}
}
}
/// <summary>
/// 中转仓拦截去总店填写退货物流信息
/// </summary>
public void AutoUpdateTransitPackageToPddShop()
{
Task.Run(() =>
@@ -863,6 +874,139 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
});
}
/// <summary>
/// 退货仓去总店填写退货物流信息
/// </summary>
public async Task AutoUpdateTransitReturnOrderToPddShop()
{
await Task.Run(() =>
{
foreach (var order in GlobalConfig.lstOrder)
{
foreach (var orderItem in order.orderItems)
{
if (order.OrderBuyType == "直发" || order.OrderBuyType == "云改直")
{
//if (order.out_after_sale_status.ParseToString().Contains("待用户发货") && !(orderItem.DistribReturnOrderInfo?.real_logistics_express_code).IsNullOrEmpty())
//{
// string orderSn = order.out_order_no;
// if (orderSn.IsNullOrEmpty())
// continue;
// string buyerNickName = order.out_account;
// if (buyerNickName.IsNullOrEmpty())
// continue;
// var buyer = GlobalConfig.PDDBuyerLoginList.ToList().FirstOrDefault(b => b.buyer_nick == buyerNickName);
// if (buyer == null)
// continue;
// var afterSalesId = orderItem.PddBuyerAfterSale?.afterSalesId;
// if (string.IsNullOrEmpty(afterSalesId))
// continue;
// var waybillId = orderItem.DistribReturnOrderInfo?.real_logistics_express_code;
// var chkRst = AddReturnPddShopPackageInfocheck(buyer, orderSn, afterSalesId, waybillId);
// var type = 4;
// if (chkRst.Contains("\"interactType\":0"))
// type = 2;
// var result = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString());
// if (!result.Contains("\"result\":\"ok\""))
// {
// type = type == 4 ? 2 : 4;
// chkRst = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString());
// }
// if (result.Contains("\"result\":\"ok\""))
// {
// order.out_after_sale_status = "商家处理中";
// }
// else
// {
// order.out_after_sale_status = "待用户发货 自动退货失败";
// }
// var pddBuyerOrderLiteInfo = new PddBuyerOrderLiteInfo()
// {
// ShopOrderIdStr = orderItem.order_id,
// order_sn = orderSn,
// };
// // 更新中转仓退货信息
// var e57Rst = PDDBuyerOrderReadCtrl.SendAfterSaleE57NeedManual(pddBuyerOrderLiteInfo, order.out_after_sale_status);
// if (e57Rst.Contains("<code>0</code>") || e57Rst.Contains("<code>200</code>"))
// {
// BaseMsgWindow.ShowAnimateMessage("买手退款信息更新成功", "Msg", 3);
// Thread.Sleep(Randomx.GetId(10000, 12001));
// }
// else
// {
// var msg = BaseRegex.GetStringXml(ref e57Rst, "msg");
// BaseMsgWindow.ShowAnimateMessage("买手退款信息更新失败,服务端返回 " + msg, "Error", 5);
// }
//}
}
else
{
if (orderItem.TransitRefundStatusStr.ParseToString().Contains("待用户发货") && !(orderItem.DistribReturnOrderInfo?.real_logistics_express_code).IsNullOrEmpty())
{
string orderSn = orderItem.ItemTransitOrderWithVoid.out_order_no;
if (orderSn.IsNullOrEmpty())
continue;
string buyerNickName = orderItem.ItemTransitOrderWithVoid.buyer_account;
if (buyerNickName.IsNullOrEmpty())
continue;
var buyer = GlobalConfig.PDDBuyerLoginList.ToList().FirstOrDefault(b => b.buyer_nick == buyerNickName);
if (buyer == null)
continue;
var afterSalesId = orderItem.PddBuyerAfterSale?.afterSalesId;
if (string.IsNullOrEmpty(afterSalesId))
continue;
var waybillId = orderItem.DistribReturnOrderInfo?.real_logistics_express_code;
var chkRst = AddReturnPddShopPackageInfocheck(buyer, orderSn, afterSalesId, waybillId);
var type = 4;
if (chkRst.Contains("\"interactType\":0"))
type = 2;
var result = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId,"韵达快递", "121", type.ToString());
if (!result.Contains("\"result\":\"ok\""))
{
type = type == 4 ? 2 : 4;
chkRst = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString());
}
if (result.Contains("\"result\":\"ok\""))
{
orderItem.ItemTransitOrderWithVoid.refund_status = "商家处理中";
}
else
{
orderItem.ItemTransitOrderWithVoid.refund_status = "待用户发货 自动退货失败";
}
var pddBuyerOrderLiteInfo = new PddBuyerOrderLiteInfo()
{
ShopOrderIdStr = orderItem.order_id,
order_sn = orderSn,
};
// 更新中转仓退货信息
var e57Rst = PDDBuyerOrderReadCtrl.SendTransitAfterSaleE57(pddBuyerOrderLiteInfo, orderItem.ItemTransitOrderWithVoid.refund_status);
if (e57Rst.Contains("<code>0</code>") || e57Rst.Contains("<code>200</code>"))
{
BaseMsgWindow.ShowAnimateMessage("买手退款信息更新成功", "Msg", 5);
}
else
{
var msg = BaseRegex.GetStringXml(ref e57Rst, "msg");
BaseMsgWindow.ShowAnimateMessage("买手退款信息更新失败,服务端返回 " + msg, "Error", 5);
}
}
}
// 赋值显示订单元素
Dispatcher.Invoke(new Action(() =>
{
InitOrderItemObservableProp(orderItem);
MainWindow.Instance.orderListCtrl.FilterOneOrder(order);
}));
}
}
});
}
public void disPlayOrderTabOrderCount()
{
@@ -1589,7 +1733,53 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
}
/// <summary>
/// 退货仓退货
/// 退货仓创建退货单
/// </summary>
/// <returns></returns>
public async Task DoReturnOrderTransitCreateSlient()
{
List<oms_wei_order_info> emergencyRefundOrders = new List<oms_wei_order_info>();
Dispatcher.Invoke(new Action(() =>
{
emergencyRefundOrders = GlobalConfig.lstOrder.Where(o => o.IsEmergency).ToList();
}));
List<oms_wei_order_item_info> tmpOrderItems = new List<oms_wei_order_item_info>();
foreach (var order in emergencyRefundOrders)
{
foreach (var orderItem in order.orderItems)
{
if (order.order_id == "3738480261631214336")
{
}
// 退货地址不是退货仓,跳过
if (orderItem.ItemRefund?.return_detail != GlobalConfig.TransitReturnOrderReturnAddress)
continue;
if (orderItem.DistribReturnOrderInfo == null || orderItem.DistribReturnOrderInfo.warehouse_status == 0)
{
if (!tmpOrderItems.Any(oi => oi.order_id == orderItem.order_id))
tmpOrderItems.Add(orderItem);
}
}
}
if (tmpOrderItems.Count > 0)
{
foreach (var orderItem in tmpOrderItems)
{
if (orderItem.order_id == "3738480261631214336")
{
}
await Task.Run(() => { TransitReturnOrderWindow.AddReturnOrder(orderItem); });
}
}
}
/// <summary>
/// 退货仓买手申请退货
/// </summary>
/// <returns></returns>
public async Task DoReturnOrderBuyerRefendSlient()
@@ -1604,10 +1794,16 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
{
foreach (var orderItem in order.orderItems)
{
// 退货地址是退货仓的,直接申请退货退款,取到地址后直接去填写退货仓退货信息
if (order.order_id == "3738480261631214336")
{
}
// 退货地址不是退货仓,跳过
if (orderItem.ItemRefund?.return_detail != GlobalConfig.TransitReturnOrderReturnAddress)
continue;
// 退货地址是退货仓的,直接申请退货退款,取到地址后直接去填写退货仓退货信息
if (orderItem?.ItemOrder?.OrderBuyType == "云仓")
{
if (!string.IsNullOrEmpty(orderItem.ItemTransitOrderWithVoid?.out_order_no) && orderItem.PddBuyerAfterSaleAddressStr.IsNullOrEmpty() &&
@@ -1621,6 +1817,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
((orderItem.ItemOrder?.out_after_sale_status).ParseToString().Contains("需手动申请售后") || (orderItem.ItemOrder?.out_after_sale_status).ParseToString().Contains("待用户发货")))
tmpOrderItems.Add(orderItem);
}
// 云改直有两个买手单,暂时只处理直发的,云仓默认已退款
if (orderItem?.ItemOrder?.OrderBuyType == "云改直")
{
@@ -1634,6 +1831,10 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
await DoBuyerRefend(tmpOrderItems);
}
/// <summary>
/// 退货仓买手退货
/// </summary>
/// <returns></returns>
public async Task DoBuyerRefend(List<oms_wei_order_item_info> tmpOrderItems)
{
if (tmpOrderItems == null)
@@ -1658,6 +1859,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
if (buyer == null)
{
BaseMsgWindow.ShowAnimateMessage("买手单:" + pddOrderSn + " 买手不在当前账户下,跳过", "Error", 3);
continue;
}
// 检测一下买手号
@@ -539,11 +539,12 @@
Margin="12,0,2,0"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
d:Text="礼品单已购买"
Background="Transparent"
BorderThickness="0"
Foreground="{StaticResource PageWarningBrush}"
IsReadOnly="True"
Text="礼品单已购买" />
Text="{Binding ItemOrder.GiftOrderStatusStr}" />
</Grid>
</Border>
@@ -1588,7 +1589,7 @@
Background="Transparent"
BorderThickness="1"
IsReadOnly="True"
Text="{Binding DistribReturnOrderInfo.real_logistics_express_code}"
Text="{Binding AddEditTransitWarehouseReturnOrderWaybillStr}"
TextWrapping="Wrap"
WaterMark="云仓退货" />
<Button
@@ -1,4 +1,5 @@
using _29WxOrderWpf.BaseWindows;
using _29WxOrderWpf.Ctrls.OrderCtrls;
using AllBase;
using AllBase.Helper;
using AllBase.Model.Config;
@@ -89,21 +90,50 @@ namespace _29WxOrderWpf.Windows.OrderWindows
}
}
if (OrderItem.PddBuyerAfterSale != null)
this.txtAddressAnalysis.Text = OrderItem.PddBuyerAfterSale?.afterSaleAddress;
if (OrderItem?.ItemOrder?.OrderBuyType == "直发" || OrderItem?.ItemOrder?.OrderBuyType == "云改直")
{
this.txtAddressAnalysis.Text = OrderItem.PddBuyerAfterSale.afterSaleAddress;
btnAddressAnalysis_Click(null, null);
this.txtAddressAnalysis.Text = OrderItem?.DirectPddBuyerAfterSale?.afterSaleAddress;
}
btnAddressAnalysis_Click(null, null);
if (OrderItem.AddEditTransitWarehouseReturnOrderStr == "已添加")
{
// 回填库内信息
btnAdd.Content = "创 建";
txtProvince.Text = OrderItem.DistribReturnOrderInfo.receiver_province;
txtCity.Text = OrderItem.DistribReturnOrderInfo.receiver_city;
txtCounty.Text = OrderItem.DistribReturnOrderInfo.receiver_area;
txtDetailAddress.Text = OrderItem.DistribReturnOrderInfo.receiver_address;
txtUser.Text = OrderItem.DistribReturnOrderInfo.receiver_name;
txtMobile.Text = OrderItem.DistribReturnOrderInfo.receiver_phone;
}
if (OrderItem.AddEditTransitWarehouseReturnOrderStr == "已创建" || OrderItem.AddEditTransitWarehouseReturnOrderStr == "处理中")
btnAdd.IsEnabled = false;
}
}
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
if ((OrderItem?.ItemTransitOrder?.warehouse_status).ParseToInt() < 1)
{
BaseMsgWindow.ShowError("当前订单仓库状态不支持创建退货订单!");
return;
}
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
if ((OrderItem?.ItemTransitOrder?.warehouse_status).ParseToInt() < 1)
{
BaseMsgWindow.ShowError("当前订单仓库状态不支持创建退货订单!");
return;
}
if (txtWaybillId.Text.Trim().IsNullOrEmpty() || PddBuyerOrderLiteInfo.GetPddToTransitWarehouseExpressCompanyCode(cmbExpressName.SelectedItem.ParseToString()).IsNullOrEmpty())
{
BaseMsgWindow.ShowError("缺少店铺退货单号!");
return;
}
if (txtUser.Text.Trim().IsNullOrEmpty() || txtMobile.Text.Trim().IsNullOrEmpty() || txtProvince.Text.Trim().IsNullOrEmpty() || txtCity.Text.Trim().IsNullOrEmpty() ||
txtCounty.Text.Trim().IsNullOrEmpty() || txtDetailAddress.Text.Trim().IsNullOrEmpty())
{
BaseMsgWindow.ShowError("缺少收货人信息!");
return;
}
JObject jObj = new JObject();
@@ -120,7 +150,7 @@ namespace _29WxOrderWpf.Windows.OrderWindows
jObj["senderAddress"] = txtSendDetailAddress.Text.Trim();
jObj["receiverName"] = txtUser.Text.Trim();
jObj["receiverPhone"] = txtMobile.Text.Trim();
jObj["receiverProvince"] = txtProvince.Text.Trim();
jObj["receiverProvince"] = txtProvince.Text.Trim();
jObj["receiverCity"] = txtCity.Text.Trim();
jObj["receiverArea"] = txtCounty.Text.Trim();
jObj["receiverAddress"] = txtDetailAddress.Text.Trim();
@@ -148,78 +178,234 @@ namespace _29WxOrderWpf.Windows.OrderWindows
jObj["orderDetailsList"] = new JArray();
(jObj["orderDetailsList"] as JArray).Add(jItemObj);
if (btnAdd.Content.ToString() == "添 加")
{
var addReturnOrderUrl = "https://po.e57.cn/prod-api/api/oms-api/api/distribution/returns/addReturnOrder";
var addReturnOrderStr = JsonHelper.SerializeObject(jObj);
var getTransitAfterSaleRst = HttpResponseWXBLL.e57PostResponse(addReturnOrderUrl, addReturnOrderStr, "");
if (!getTransitAfterSaleRst.ParseToString().Contains("<code>200</code>") && !getTransitAfterSaleRst.ParseToString().Contains("<code>0</code>"))
{
string msg = BaseRegex.GetStringXml(ref getTransitAfterSaleRst, "msg");
if (msg.IsNullOrEmpty())
msg = getTransitAfterSaleRst;
BaseMsgWindow.ShowError("中转仓退货订单添加失败,服务端返回 " + msg);
return;
}
}
var createReturnOrderUrl = "https://po.e57.cn/prod-api/api/oms-api/api/distribution/returns/addReturnOrder";
var createReturnOrderStr = JsonHelper.SerializeObject(jObj);
var getTransitAfterSaleRst = HttpResponseWXBLL.e57PostResponse(createReturnOrderUrl, createReturnOrderStr, "");
if (!getTransitAfterSaleRst.ParseToString().Contains("<code>200</code>") && !getTransitAfterSaleRst.ParseToString().Contains("<code>0</code>"))
{
string msg = BaseRegex.GetStringXml(ref getTransitAfterSaleRst, "msg");
if (msg.IsNullOrEmpty())
msg = getTransitAfterSaleRst;
BaseMsgWindow.ShowError("中转售后添加失败,服务端返回 " + msg, "", this);
}
else
{
//<AjaxResult><msg>创建退货包裹成功</msg><code>0</code></AjaxResult>
MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id);
MainWindow.Instance.orderListCtrl.FilterOneOrder(OrderItem.order_id, true);
StartUp.UpdateBalance();
BaseMsgWindow.ShowInfo("添加退货包裹成功", "", this);
this.Close();
}
}
var returnOrders = OrderListCtrl.GetTransitReturnOrderList(OrderItem.order_id);
var orderCode = returnOrders.OrderBy(o => o.created_at).LastOrDefault()?.order_code;
if (string.IsNullOrEmpty(orderCode))
{
BaseMsgWindow.ShowError("中转仓退货订单创建失败,售后单获取失败");
MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id);
return;
}
var createReturnOrderUrl = "https://po.e57.cn/prod-api/api/oms-api/api/distribution/returns/createReturnOrder";
var createObj = new JObject();
createObj["orderCode"] = orderCode;
createObj["logisticsCode"] = jObj["logisticsCode"].ParseToString();
createObj["logisticsExpressCode"] = jObj["logisticsExpressNo"].ParseToString();
var createReturnOrderStr = JsonHelper.SerializeObject(createObj);
var createReturnOrderRst = HttpResponseWXBLL.e57PostResponse(createReturnOrderUrl, createReturnOrderStr, "");
if (!createReturnOrderRst.ParseToString().Contains("<code>200</code>") && !createReturnOrderRst.ParseToString().Contains("<code>0</code>"))
{
string msg = BaseRegex.GetStringXml(ref createReturnOrderRst, "msg");
if (msg.IsNullOrEmpty())
msg = createReturnOrderRst;
BaseMsgWindow.ShowError("中转仓退货订单创建失败,服务端返回 " + msg);
MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id);
return;
}
MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id);
StartUp.UpdateBalance();
BaseMsgWindow.ShowInfo("中转仓退货订单创建成功", "", this);
this.Close();
}
public static void AddReturnOrder(oms_wei_order_item_info OrderItem)
{
// 订单不存在或已作废的,直接返回
if (OrderItem == null || OrderItem.ItemRefund == null)
{
return;
}
// 已创建退货订单,直接返回
if (OrderItem.DistribReturnOrderInfo != null && OrderItem.DistribReturnOrderInfo.warehouse_status != 0)
{
return;
}
var wxExpressName = PddBuyerOrderLiteInfo.GetWxExpressCodeToWxExpressName((OrderItem?.ItemRefund?.return_delivery_id).ParseToString());
var aftersaleAddress = OrderItem?.PddBuyerAfterSale?.afterSaleAddress;
if (OrderItem?.ItemOrder.OrderBuyType == "直发" || OrderItem?.ItemOrder.OrderBuyType == "云改直")
{
aftersaleAddress = OrderItem?.DirectPddBuyerAfterSale?.afterSaleAddress;
}
var receiver = AddressAnalysis(aftersaleAddress.ParseToString());
// 单号不存在或者地址识别失败的直接返回
if (wxExpressName.IsNullOrEmpty() || OrderItem.ItemRefund.return_waybill_id.IsNullOrEmpty() || receiver.receiver_name.IsNullOrEmpty() || receiver.receiver_phone.IsNullOrEmpty() ||
receiver.receiver_province.IsNullOrEmpty() || receiver.receiver_city.IsNullOrEmpty() || receiver.receiver_area.IsNullOrEmpty() || receiver.receiver_address.IsNullOrEmpty())
{
return;
}
JObject jObj = new JObject();
jObj["orderCodeSource"] = OrderItem.order_id;
jObj["logisticsCode"] = PddBuyerOrderLiteInfo.GetPddToTransitWarehouseExpressCompanyCode(wxExpressName); ;
jObj["logisticsExpressNo"] = OrderItem.ItemRefund?.return_waybill_id;
jObj["platform"] = "OTHER";
jObj["shopName"] = OrderItem.ItemOrder?.shop_name;
jObj["senderName"] = TransitWaybillHelper.LastName[Randomx.GetId(TransitWaybillHelper.LastName.Count)] + (Randomx.GetId(2) == 1 ? "先生" : "女士");
jObj["senderPhone"] = "13024622251";
jObj["senderProvince"] = "上海市";
jObj["senderCity"] = "上海市";
jObj["senderArea"] = "普陀区";
jObj["senderAddress"] = GlobalConfig.TransitReturnOrderReturnAddress;
jObj["receiverName"] = receiver.receiver_name;
jObj["receiverPhone"] = receiver.receiver_phone;
jObj["receiverProvince"] = receiver.receiver_province;
jObj["receiverCity"] = receiver.receiver_city;
jObj["receiverArea"] = receiver.receiver_area;
jObj["receiverAddress"] = receiver.receiver_address;
jObj["orderCreateTime"] = (OrderItem.ItemOrder?.CreateDateTime).ParseToString();
jObj["userAccount"] = BaseClass.UserName;
jObj["platformCode"] = "WEISHOP";
jObj["afterSaleNo"] = OrderItem.ItemRefund?.after_sale_order_id;
jObj["platformOrderNo"] = OrderItem.order_id;
string basePostageKey = WarehousePostageInfo.DicWarehousePostage.Keys.FirstOrDefault(pk => receiver.receiver_province.ParseToString().Contains(pk));
decimal basePostage = basePostageKey.IsNullOrEmpty() ? WarehousePostageInfo.DicWarehousePostage.Values.Min() : WarehousePostageInfo.DicWarehousePostage[basePostageKey];
basePostage += 0.3m; // 送货2.2 退货2.5(+3毛)
jObj["oemAmount"] = (BaseClass.RefundPostagePerOrderDiff * 100).ParseToInt().ParseToString();
jObj["firstWeightFee"] = ((basePostage + BaseClass.RefundPostagePerOrderDiff) * 100).ParseToInt().ParseToString();
JObject jItemObj = new JObject();
jItemObj["spuCode"] = OrderItem.product_id.ParseToString();
jItemObj["spuName"] = OrderItem.title;
jItemObj["skuCode"] = OrderItem.sku_id.ParseToString();
jItemObj["specInfo"] = OrderItem.sku_attr_str;
jItemObj["skuUrl"] = OrderItem.thumb_img;
jItemObj["picUrl"] = OrderItem.thumb_img;
jItemObj["returnQuantity"] = OrderItem.sku_cnt;
jObj["orderDetailsList"] = new JArray();
(jObj["orderDetailsList"] as JArray).Add(jItemObj);
if (OrderItem.DistribReturnOrderInfo == null)
{
var addReturnOrderUrl = "https://po.e57.cn/prod-api/api/oms-api/api/distribution/returns/addReturnOrder";
var addReturnOrderStr = JsonHelper.SerializeObject(jObj);
var getTransitAfterSaleRst = HttpResponseWXBLL.e57PostResponse(addReturnOrderUrl, addReturnOrderStr, "");
if (!getTransitAfterSaleRst.ParseToString().Contains("<code>200</code>") && !getTransitAfterSaleRst.ParseToString().Contains("<code>0</code>"))
{
string msg = BaseRegex.GetStringXml(ref getTransitAfterSaleRst, "msg");
if (msg.IsNullOrEmpty())
msg = getTransitAfterSaleRst;
BaseMsgWindow.ShowAnimateMessage("中转仓退货订单添加失败,服务端返回 " + msg, "Error", 5);
return;
}
}
var returnOrders = OrderListCtrl.GetTransitReturnOrderList(OrderItem.order_id);
var orderCode = returnOrders.OrderBy(o => o.created_at).LastOrDefault()?.order_code;
if (string.IsNullOrEmpty(orderCode))
{
BaseMsgWindow.ShowAnimateMessage("中转仓退货订单创建失败,售后单获取失败", "Error", 5);
MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id);
return;
}
var createReturnOrderUrl = "https://po.e57.cn/prod-api/api/oms-api/api/distribution/returns/createReturnOrder";
var createObj = new JObject();
createObj["orderCode"] = orderCode;
createObj["logisticsCode"] = jObj["logisticsCode"].ParseToString();
createObj["logisticsExpressCode"] = jObj["logisticsExpressNo"].ParseToString();
var createReturnOrderStr = JsonHelper.SerializeObject(createObj);
var createReturnOrderRst = HttpResponseWXBLL.e57PostResponse(createReturnOrderUrl, createReturnOrderStr, "");
if (!createReturnOrderRst.ParseToString().Contains("<code>200</code>") && !createReturnOrderRst.ParseToString().Contains("<code>0</code>"))
{
string msg = BaseRegex.GetStringXml(ref createReturnOrderRst, "msg");
if (msg.IsNullOrEmpty())
msg = createReturnOrderRst;
BaseMsgWindow.ShowAnimateMessage("中转仓退货订单创建失败,服务端返回 " + msg, "Error", 5);
MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id);
return;
}
//<AjaxResult><msg>创建退货包裹成功</msg><code>0</code></AjaxResult>
MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id);
StartUp.UpdateBalance();
BaseMsgWindow.ShowAnimateMessage("中转仓退货订单创建成功", "Msg", 2);
}
private void btnAddressAnalysis_Click(object sender, RoutedEventArgs e)
{
var txt = txtAddressAnalysis.Text.Trim();
txt = txt.Replace("\r", "").Replace("\n", "");
var receiver = AddressAnalysis(txtAddressAnalysis.Text.Trim());
this.txtUser.Text = receiver.receiver_name;
this.txtMobile.Text = receiver.receiver_phone;
this.txtProvince.Text = receiver.receiver_province;
this.txtCity.Text = receiver.receiver_city;
this.txtCounty.Text = receiver.receiver_area;
this.txtDetailAddress.Text = receiver.receiver_address;
}
public static distrib_receiver_info AddressAnalysis(string AddressText)
{
distrib_receiver_info receiver = new distrib_receiver_info();
var txt = AddressText;
txt = txt.Replace("\r", "").Replace("\n", "");
// 定义座机号的正则表达式
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))
{
txtMobile.Text = 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))
{
receiver.receiver_phone = phone;
}
var province = GlobalConfig.Divisions.FirstOrDefault(d => txt.Contains(d.name));
if (province == null)
return;
txtProvince.Text = province.name;
var city = province.children.FirstOrDefault(c => txt.Contains(c.name));
if (city == null)
return;
txtCity.Text = city.name;
var county = city.children.FirstOrDefault(c => txt.Contains(c.name));
if (county == null)
return;
txtCounty.Text = 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 receiver;
receiver.receiver_province = province.name;
var city = province.children.FirstOrDefault(c => txt.Contains(c.name));
if (city == null)
return receiver;
receiver.receiver_city = city.name;
var county = city.children.FirstOrDefault(c => txt.Contains(c.name));
if (county == null)
return receiver;
receiver.receiver_area = 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.txtUser.Text = tArr.FirstOrDefault();
this.txtDetailAddress.Text = string.Join("", tArr).Replace(this.txtUser.Text, "");
}
var tArr = txt.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
tArr = tArr.OrderBy(t => t.Length).ToArray();
receiver.receiver_name = tArr.FirstOrDefault();
receiver.receiver_address = string.Join("", tArr).Replace(receiver.receiver_name, "");
return receiver;
}
}
}
+1
View File
@@ -169,6 +169,7 @@
<Compile Include="DouYinModel\Result\DouOrderListInfo.cs" />
<Compile Include="Model\Config\BuyConfig.cs" />
<Compile Include="Model\Config\WarehousePostageInfo.cs" />
<Compile Include="Model\DBModel\distrib_receiver_info.cs" />
<Compile Include="Model\DBModel\distrib_return_order_info.cs" />
<Compile Include="Model\DBModel\ErpMerchantInfo.cs" />
<Compile Include="Model\DBModel\oms_wei_external_procurement_after_sale_info.cs" />
+1 -1
View File
@@ -36,7 +36,7 @@ namespace AllBase
/// 版本ID
/// </summary>
public static int VersionCount = 251;
public static int VersionCount = 252;
public static string ServerUrl { get; set; } = "http://1.13.195.131:9000";
public static string DebugUrl { get; set; } = "http://localhost:9000";
@@ -45,7 +45,7 @@ XDYBJC ;北京仓 ;胡萍 ;18565773752 ;北京市顺义区光明街道
XDYGZC ;广州仓 ;何外华 ;13826339849 ;广州市从化区太平镇高埔细埔街99号东门4栋3楼 ;6 ;76 ;692 ;广东省 ;广州市
XDYWHC ;武汉2仓 ;杨先生 ;13044121071 ;湖北省武汉市汉阳区洲头街道汉新大道2号3栋17楼 ;13 ;180 ;1548 ;湖北省 ;武汉市
XDYSHANDC ;山东2仓 ;鸿鹄小申 ;13044121239 ;山东省临沂市费县南外环东转盘往东200米顺通快递有限公司(仓库二楼) ;22 ;292 ;2415 ;山东省 ;临沂市
XDYSHC ;上海新仓 ;纪先生 ;13044121150 ;上海市上海市普陀区真如镇街道真北路2653弄G区 ;25 ;321 ;2709 ;上海市 ;上海市
XDYSHC ;上海新仓 ;纪先生 ;13044121150 ;上海市上海市普陀区真如镇街道真北路2653弄T区 ;25 ;321 ;2709 ;上海市 ;上海市
XDYSZC ;深圳仓 ;峰峰 ;15343351331 ;广东省东莞市凤岗镇浸校塘东良巷逸乐轩E栋5号楼 ;6 ;79 ;732 ;广东省 ;东莞市";
//XDYJJC ;晋江仓 ;安群 ;19905951984 ;福建省泉州市南安市霞美镇温山村431号鸿鹄大厦 ;4 ;58 ;569 ;福建省 ;泉州市
//XDYCDC ;成都仓 ;谢春虹 ;15828201479 ;四川省资阳市乐至县仙鹤大道桑都街15-19号仓库(不要放驿站,送到仓库) ;26 ;340 ;2898 ;四川省 ;资阳市
@@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model.DBModel
{
public class distrib_receiver_info
{
/// <summary>
/// 收货人姓名
/// </summary>
public string receiver_name { get; set; }
/// <summary>
/// 收货人电话
/// </summary>
public string receiver_phone { get; set; }
/// <summary>
/// 收货省份
/// </summary>
public string receiver_province { get; set; }
/// <summary>
/// 收货城市
/// </summary>
public string receiver_city { get; set; }
/// <summary>
/// 收货区县
/// </summary>
public string receiver_area { get; set; }
/// <summary>
/// 收货详细地址
/// </summary>
public string receiver_address { get; set; }
}
}
@@ -9,6 +9,17 @@ using System.Threading.Tasks;
namespace AllBase.Model.DBModel
{
public class distrib_return_order_ext : distrib_return_order_info
{
public string SenderProvince { get; set; }
public string SenderCity { get; set; }
public string SenderArea { get; set; }
public string SenderAddress { get; set; }
public string OrderCreateTime { get; set; }
public string UserAccount { get; set; }
public string PlatformCode { get; set; }
}
/// <summary>
/// 分销退货表
/// </summary>
@@ -148,14 +159,14 @@ namespace AllBase.Model.DBModel
/// </summary>
public int? postage { get; set; }
[JsonIgnore]
public ObservableCollection<distrib_return_order_item> distrib_return_order_items
public ObservableCollection<distrib_return_order_item_info> distrib_return_order_items
{
get { return this.GetValue(x => x.distrib_return_order_items); }
set { this.SetValue(x => x.distrib_return_order_items, value); }
}
}
public class distrib_return_order_item : PropertyNotifyObject
public class distrib_return_order_item_info : PropertyNotifyObject
{
public long id { get; set; }
public string order_code { get; set; }
@@ -177,7 +188,7 @@ namespace AllBase.Model.DBModel
if (value != null)
{
if (value.distrib_return_order_items == null)
value.distrib_return_order_items = new ObservableCollection<distrib_return_order_item>();
value.distrib_return_order_items = new ObservableCollection<distrib_return_order_item_info>();
//if (value.distrib_return_order_items.FirstOrDefault(it => it.spu_code + it.sku_code == this.spu_code + this.sku_code) is distrib_return_order_item item)
//{
@@ -187,7 +198,7 @@ namespace AllBase.Model.DBModel
//{
// value.distrib_return_order_items.Add(this);
//}
while (value.distrib_return_order_items.FirstOrDefault(it => it.spu_code + it.sku_code == this.spu_code + this.sku_code) is distrib_return_order_item item)
while (value.distrib_return_order_items.FirstOrDefault(it => it.spu_code + it.sku_code == this.spu_code + this.sku_code) is distrib_return_order_item_info item)
{
value.distrib_return_order_items.Remove(item);
}
+22 -6
View File
@@ -387,10 +387,16 @@ namespace AllBase.Model.DBModel
}
}
/// <summary>
/// 是否被选中
/// </summary>
public bool IsSelect
public string GiftOrderStatusStr
{
get { return this.GetValue(x => x.GiftOrderStatusStr); }
set { this.SetValue(x => x.GiftOrderStatusStr, value); }
}
/// <summary>
/// 是否被选中
/// </summary>
public bool IsSelect
{
get { return this.GetValue(x => x.IsSelect); }
set { this.SetValue(x => x.IsSelect, value); }
@@ -616,12 +622,22 @@ namespace AllBase.Model.DBModel
/// </summary>
public string supplier_remark_exception { get; set; }
/// <summary>
/// 礼物单状态,默认值0:不存在礼物单,1:礼物单已发货,2:礼物单信息已更正
/// 礼物单状态,默认值0:不存在礼物单,1:礼物单已发货,2:礼物单信息已更正 3 礼物单发货失败
/// </summary>
public int? gift_order_status
{
get { return this.GetValue(x => x.gift_order_status); }
set { this.SetValue(x => x.gift_order_status, value); }
set
{
this.SetValue(x => x.gift_order_status, value);
if (value == 1 || value == 2)
GiftOrderStatusStr = "礼品单已购买";
else if (value == 3)
GiftOrderStatusStr = "礼品单购买失败";
else
GiftOrderStatusStr = "";
return;
}
}
/// <summary>
/// 店铺备注:取微信ext_info.merchant_notes
@@ -302,10 +302,21 @@ namespace AllBase.Model.DBModel
AddEditTransitWarehouseReturnOrderStr = "";
if (ItemRefund?.return_detail == GlobalConfig.TransitReturnOrderReturnAddress)
{
if (order_id == "3738272473468804864")
{
}
// 关闭中转包裹退回,改为中转分销退货
if (AddEditTransitWarehouseAfterSaleStr != "已添加")
AddEditTransitWarehouseAfterSaleStr = "";
AddEditTransitWarehouseReturnOrderStr = DistribReturnOrderInfo == null ? "添加" : "已添加";
if (DistribReturnOrderInfo?.warehouse_status == 1)
AddEditTransitWarehouseReturnOrderStr = "已创建";
if (DistribReturnOrderInfo?.warehouse_status == 2)
AddEditTransitWarehouseReturnOrderStr = "创建异常";
if (DistribReturnOrderInfo?.warehouse_status == 3)
AddEditTransitWarehouseReturnOrderStr = "处理中";
}
// 云仓买手退货地址
@@ -368,16 +379,16 @@ namespace AllBase.Model.DBModel
{
get { return this.GetValue(x => x.TransitOrderWaybillFromWareHouseStr); }
set { this.SetValue(x => x.TransitOrderWaybillFromWareHouseStr, value); }
}
public string TransitWarehouseAfterSaleWayBillStr
{
get { return this.GetValue(x => x.TransitWarehouseAfterSaleWayBillStr); }
set { this.SetValue(x => x.TransitWarehouseAfterSaleWayBillStr, value); }
}
#endregion
}
public string TransitWarehouseAfterSaleWayBillStr
{
get { return this.GetValue(x => x.TransitWarehouseAfterSaleWayBillStr); }
set { this.SetValue(x => x.TransitWarehouseAfterSaleWayBillStr, value); }
}
#endregion
#region 买手物流参数
public string BuyerTransitWaybillStatusStr
#region 买手物流参数
public string BuyerTransitWaybillStatusStr
{
get { return this.GetValue(x => x.BuyerTransitWaybillStatusStr); }
set { this.SetValue(x => x.BuyerTransitWaybillStatusStr, value); }
@@ -26,13 +26,15 @@ namespace AllBase.Model.Result
if (expressCompanyName.Contains("邮政快递包裹")) return "EMS";
if (expressCompanyName.Contains("邮政电商标快")) return "EMS";
if (expressCompanyName.Contains("邮政EMS")) return "EMS";
if (expressCompanyName.Contains("圆通快递")) return "YTO";
if (expressCompanyName.Contains("中通快递")) return "ZTO";
if (expressCompanyName.Contains("圆通快递")) return "YTO";
if (expressCompanyName.Contains("圆通速递")) return "YTO";
if (expressCompanyName.Contains("中通快递")) return "ZTO";
if (expressCompanyName.Contains("百世快递")) return "HTKY";
if (expressCompanyName.Contains("百世快运")) return "HTKY";
if (expressCompanyName.Contains("申通快递")) return "STO";
if (expressCompanyName.Contains("韵达快递")) return "YUNDA";
if (expressCompanyName.Contains("京东快递")) return "JDKD";
if (expressCompanyName.Contains("韵达快递")) return "YUNDA";
if (expressCompanyName.Contains("韵达速递")) return "YUNDA";
if (expressCompanyName.Contains("京东快递")) return "JDKD";
if (expressCompanyName.Contains("京东快运")) return "JDKD";
if (expressCompanyName.Contains("京东大件物流")) return "JDKD";
if (expressCompanyName.Contains("极兔速递")) return "JTSD";
+2 -2
View File
@@ -14,14 +14,14 @@ public class Tests
[Test]
public async Task Test1()
{
var pp = new Work.ERP.API.PullWxOrder.PullWXOrderServiceApi();
var pp = new Work.ERP.API.Orders.PullWXOrderServiceApi();
await pp.PullOrderDetail(1960967267443621583, "3722940821913342976");
Assert.Pass();
}
[Test]
public async Task Test2()
{
var pp = new Work.ERP.API.PullWxOrder.PullWXOrderServiceApi();
var pp = new Work.ERP.API.Orders.PullWXOrderServiceApi();
await pp.PullOrderByShopIdsAndTimeRange([1960967267443621583, 1960967267443620449], DateTime.Now.AddDays(-1), DateTime.Now);
Assert.Pass();
}