拒收自动退款功能
This commit is contained in:
1 parent
5aaab77de3
commit
9ddc4c3640
7 files changed
+169
-69
No files matched your search
@@ -375,6 +375,13 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
if (string.IsNullOrEmpty(orderIds))
|
||||
GetShopWaybillExceptionOrder();
|
||||
|
||||
// 处理拒收单
|
||||
if (string.IsNullOrEmpty(orderIds))
|
||||
Task.Run(async () =>
|
||||
{
|
||||
await AutoUpdateTransitRejectedToPddShop();
|
||||
});
|
||||
|
||||
// 处理中转仓退货包裹
|
||||
if (string.IsNullOrEmpty(orderIds))
|
||||
AutoUpdateTransitPackageToPddShop();
|
||||
@@ -793,6 +800,42 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 中转仓拒收去总店填写退货拒收信息
|
||||
/// </summary>
|
||||
public async Task AutoUpdateTransitRejectedToPddShop()
|
||||
{
|
||||
foreach (var order in GlobalConfig.lstOrder)
|
||||
{
|
||||
foreach (var orderItem in order.orderItems)
|
||||
{
|
||||
if (orderItem.order_id == "3738552208766960384")
|
||||
{
|
||||
|
||||
}
|
||||
if (orderItem.TransitRefundStatusStr.ParseToString().Contains("需手动申请售后") &&
|
||||
orderItem.ItemTransitOrderWithVoid?.has_reject == 3 && orderItem.ItemTransitOrderWithVoid?.platform != "XDYYWC") // 义乌仓不支持拒收,等于3也是失败
|
||||
{
|
||||
// 拒收后24小时才去总店填拒收退货
|
||||
if (orderItem.ItemTransitOrderWithVoid?.rejected_time > DateTime.Now.AddHours(-24))
|
||||
break;
|
||||
|
||||
await OrderListRowItemCtrl.PddRefundTransitRejectOrder(orderItem);
|
||||
|
||||
// 赋值显示订单元素
|
||||
Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
InitOrderItemObservableProp(orderItem);
|
||||
MainWindow.Instance.orderListCtrl.FilterOneOrder(order);
|
||||
}));
|
||||
|
||||
// 第一个订单多个商品暂不支持,只操作一条记录
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 中转仓拦截去总店填写退货物流信息
|
||||
/// </summary>
|
||||
@@ -919,7 +962,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
// if (!result.Contains("\"result\":\"ok\""))
|
||||
// {
|
||||
// type = type == 4 ? 2 : 4;
|
||||
// chkRst = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString());
|
||||
// result = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString());
|
||||
// }
|
||||
|
||||
// if (result.Contains("\"result\":\"ok\""))
|
||||
@@ -980,7 +1023,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
if (!result.Contains("\"result\":\"ok\""))
|
||||
{
|
||||
type = type == 4 ? 2 : 4;
|
||||
chkRst = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString());
|
||||
result = AddReturnPddShopPackageInfo(buyer, orderSn, afterSalesId, waybillId, "韵达快递", "121", type.ToString());
|
||||
}
|
||||
|
||||
if (result.Contains("\"result\":\"ok\""))
|
||||
|
||||
@@ -1497,7 +1497,7 @@
|
||||
IsReadOnly="True"
|
||||
Text="中转仓拒收:" />
|
||||
<uc:UcWaterMarkTextBox1
|
||||
x:Name="txtTransitWarehouseReject"
|
||||
x:Name="txtTransitWarehouseRejectSuccessTime"
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Margin="0,1,0,1"
|
||||
@@ -1505,7 +1505,7 @@
|
||||
Background="Transparent"
|
||||
BorderThickness="1"
|
||||
IsReadOnly="True"
|
||||
Text=""
|
||||
Text="{Binding TransitWarehouseRejectSuccessTimeStr}"
|
||||
TextWrapping="Wrap"
|
||||
WaterMark="中转仓拒收" />
|
||||
<Button
|
||||
|
||||
@@ -1444,58 +1444,85 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
});
|
||||
}
|
||||
|
||||
private void btnPddRefundTransitWarehouseRejectOrder_Click(object sender, RoutedEventArgs e)
|
||||
private async void btnPddRefundTransitWarehouseRejectOrder_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (this.DataContext is oms_wei_order_item_info orderItem && orderItem.ItemTransitOrderWithVoid != null)
|
||||
if (this.DataContext is oms_wei_order_item_info orderItem && orderItem.ItemTransitOrderWithVoid != null && orderItem.ItemOrder != null)
|
||||
{
|
||||
var pddOrderSn = orderItem.ItemTransitOrderWithVoid.out_order_no;
|
||||
await PddRefundTransitRejectOrder(orderItem);
|
||||
|
||||
BuyerLoginInfo buyer = null;
|
||||
buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_nick == orderItem.ItemTransitOrderWithVoid.buyer_account);
|
||||
// 检测一下买手号
|
||||
if (buyer.status == "在线")
|
||||
// 赋值显示订单元素
|
||||
Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
PddMobileLoginForm.CheckBuyerLogin(buyer);
|
||||
}
|
||||
if (buyer.status != "在线")
|
||||
{
|
||||
BaseMsgWindow.ShowAnimateMessage("买手单:" + pddOrderSn + " 买手号掉线,跳过", "Error", 3);
|
||||
return;
|
||||
}
|
||||
OrderListCtrl.InitOrderItemObservableProp(orderItem);
|
||||
MainWindow.Instance.orderListCtrl.FilterOneOrder(orderItem.ItemOrder);
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
// 拒收一定是云仓
|
||||
string refundStatusStr = (orderItem.TransitRefundStatusStr).ParseToString();
|
||||
public static async Task PddRefundTransitRejectOrder(oms_wei_order_item_info orderItem)
|
||||
{
|
||||
var pddOrderSn = orderItem.ItemTransitOrderWithVoid?.out_order_no;
|
||||
if (string.IsNullOrEmpty(pddOrderSn))
|
||||
return;
|
||||
|
||||
PddBuyerOrderLiteInfo pddBuyerOrderLiteInfo = new PddBuyerOrderLiteInfo();
|
||||
pddBuyerOrderLiteInfo.ShopOrderIdStr = orderItem.order_id;
|
||||
pddBuyerOrderLiteInfo.order_sn = pddOrderSn;
|
||||
pddBuyerOrderLiteInfo.order_amount = orderItem.ItemTransitOrderWithVoid?.out_amount;
|
||||
BuyerLoginInfo buyer = null;
|
||||
buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_nick == orderItem.ItemTransitOrderWithVoid.buyer_account);
|
||||
if (buyer == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// 检测一下买手号
|
||||
if (buyer.status == "在线")
|
||||
{
|
||||
PddMobileLoginForm.CheckBuyerLogin(buyer);
|
||||
}
|
||||
if (buyer.status != "在线")
|
||||
{
|
||||
BaseMsgWindow.ShowAnimateMessage("买手单:" + pddOrderSn + " 买手号掉线,跳过", "Error", 5);
|
||||
return;
|
||||
}
|
||||
|
||||
order_pdd_buyer_after_sale pddBuyerAfterSale = new order_pdd_buyer_after_sale()
|
||||
{
|
||||
wx_order_id = orderItem.order_id,
|
||||
wx_sku_id = orderItem.sku_id,
|
||||
TransitCreateTime = orderItem.ItemTransitOrderWithVoid?.created_time == null ? DateTime.MinValue : orderItem.ItemTransitOrderWithVoid.created_time,
|
||||
pre_allocated_order_no = orderItem.ItemTransitOrderWithVoid?.pre_allocated_order_no,
|
||||
buyerId = buyer.buyer_id,
|
||||
buyerName = buyer.buyer_name,
|
||||
orderSn = pddOrderSn,
|
||||
orderAmount = pddBuyerOrderLiteInfo.order_amount,
|
||||
refundAmount = pddBuyerOrderLiteInfo.order_amount,
|
||||
orderDate = pddOrderSn.ParseToString().Split('-').FirstOrDefault().ParseToInt(),
|
||||
};
|
||||
if (orderItem.PddBuyerAfterSale != null)
|
||||
pddBuyerAfterSale = orderItem.PddBuyerAfterSale;
|
||||
// 拒收一定是云仓
|
||||
string refundStatusStr = (orderItem.TransitRefundStatusStr).ParseToString();
|
||||
|
||||
if (refundStatusStr.Contains("需手动申请售后")) // 退款失败 // 申请已撤销
|
||||
PddBuyerOrderLiteInfo pddBuyerOrderLiteInfo = new PddBuyerOrderLiteInfo();
|
||||
pddBuyerOrderLiteInfo.ShopOrderIdStr = orderItem.order_id;
|
||||
pddBuyerOrderLiteInfo.order_sn = pddOrderSn;
|
||||
pddBuyerOrderLiteInfo.order_amount = orderItem.ItemTransitOrderWithVoid?.out_amount;
|
||||
|
||||
order_pdd_buyer_after_sale pddBuyerAfterSale = new order_pdd_buyer_after_sale()
|
||||
{
|
||||
wx_order_id = orderItem.order_id,
|
||||
wx_sku_id = orderItem.sku_id,
|
||||
TransitCreateTime = orderItem.ItemTransitOrderWithVoid?.created_time == null ? DateTime.MinValue : orderItem.ItemTransitOrderWithVoid.created_time,
|
||||
pre_allocated_order_no = orderItem.ItemTransitOrderWithVoid?.pre_allocated_order_no,
|
||||
buyerId = buyer.buyer_id,
|
||||
buyerName = buyer.buyer_name,
|
||||
orderSn = pddOrderSn,
|
||||
orderAmount = pddBuyerOrderLiteInfo.order_amount,
|
||||
refundAmount = pddBuyerOrderLiteInfo.order_amount,
|
||||
orderDate = pddOrderSn.ParseToString().Split('-').FirstOrDefault().ParseToInt(),
|
||||
};
|
||||
if (orderItem.PddBuyerAfterSale != null)
|
||||
pddBuyerAfterSale = orderItem.PddBuyerAfterSale;
|
||||
|
||||
if (refundStatusStr.Contains("需手动申请售后")) // 退款失败 // 申请已撤销
|
||||
{
|
||||
await Task.Run(() =>
|
||||
{
|
||||
// {\"after_sales_id\":22312641041100,\"after_sales_status\":11,\"after_sales_type\":2,\"not_really_created\":true}
|
||||
var rst = PDDBuyerOrderReadCtrl.SimPddAfterSaleWithRejected(buyer, pddBuyerOrderLiteInfo, pddBuyerAfterSale);
|
||||
string rst = "";
|
||||
rst = PDDBuyerOrderReadCtrl.SimPddAfterSaleWithRejected(buyer, pddBuyerOrderLiteInfo, pddBuyerAfterSale);
|
||||
|
||||
var afterSalesStatus = BaseRegex.GetIntJson(ref rst, "after_sales_status");
|
||||
var afterSalesId = BaseRegex.GetLongJson(ref rst, "after_sales_id");
|
||||
if (afterSalesId.IsNullOrZero())
|
||||
return;
|
||||
pddBuyerAfterSale.afterSalesId = afterSalesId.ToString();
|
||||
// 更新内存数据 ----------------------------------------------------------------
|
||||
pddBuyerAfterSale.statusText = "商家处理中";
|
||||
orderItem.ItemTransitOrderWithVoid.refund_status = "商家处理中";
|
||||
// --------------------------------------------------------------------------//
|
||||
|
||||
if (afterSalesStatus == 0)
|
||||
{
|
||||
@@ -1523,7 +1550,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
if (e57Rst.Contains("<code>0</code>") || e57Rst.Contains("<code>200</code>"))
|
||||
{
|
||||
BaseMsgWindow.ShowAnimateMessage("买手退款信息更新成功" + orderItem.order_id, "Msg", 3);
|
||||
Thread.Sleep(Randomx.GetId(10000, 12001));
|
||||
Thread.Sleep(Randomx.GetId(2000, 5001));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1531,7 +1558,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
BaseMsgWindow.ShowAnimateMessage("买手退款信息更新失败,服务端返回 " + msg, "Error", 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace AllBase
|
||||
/// 版本ID
|
||||
/// </summary>
|
||||
|
||||
public static int VersionCount = 255;
|
||||
public static int VersionCount = 256;
|
||||
|
||||
public static string ServerUrl { get; set; } = "http://1.13.195.131:9000";
|
||||
public static string DebugUrl { get; set; } = "http://localhost:9000";
|
||||
|
||||
+21
-10
@@ -1158,16 +1158,27 @@ Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrom
|
||||
|
||||
request.KeepAlive = true;
|
||||
request.ContentType = "application/x-www-form-urlencoded; charset=utf-8";
|
||||
request.Headers.Add("sec-ch-ua", @"""Not(A:Brand"";v=""8"", ""Chromium"";v=""144"", ""Google Chrome"";v=""144""");
|
||||
request.Headers.Add("sec-ch-ua-mobile", @"?0");
|
||||
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
|
||||
request.Headers.Add("Upgrade-Insecure-Requests", @"1");
|
||||
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36";
|
||||
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7";
|
||||
request.Headers.Add("Sec-Fetch-Site", @"none");
|
||||
request.Headers.Add("Sec-Fetch-Mode", @"navigate");
|
||||
request.Headers.Add("Sec-Fetch-User", @"?1");
|
||||
request.Headers.Add("Sec-Fetch-Dest", @"document");
|
||||
//request.Headers.Add("sec-ch-ua", @"""Not(A:Brand"";v=""8"", ""Chromium"";v=""144"", ""Google Chrome"";v=""144""");
|
||||
//request.Headers.Add("sec-ch-ua-mobile", @"?0");
|
||||
//request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
|
||||
//request.Headers.Add("Upgrade-Insecure-Requests", @"1");
|
||||
//request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36";
|
||||
//request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7";
|
||||
request.Accept = "*/*";
|
||||
if (timeOut == -1)
|
||||
{
|
||||
request.Timeout = BaseClass.TimeOut * 1000;
|
||||
request.ReadWriteTimeout = BaseClass.TimeOut * 1000;
|
||||
}
|
||||
else
|
||||
{
|
||||
request.Timeout = timeOut * 1000;
|
||||
request.ReadWriteTimeout = timeOut * 1000;
|
||||
}
|
||||
//request.Headers.Add("Sec-Fetch-Site", @"none");
|
||||
//request.Headers.Add("Sec-Fetch-Mode", @"navigate");
|
||||
//request.Headers.Add("Sec-Fetch-User", @"?1");
|
||||
//request.Headers.Add("Sec-Fetch-Dest", @"document");
|
||||
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
|
||||
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
|
||||
request.AllowAutoRedirect = false;
|
||||
|
||||
@@ -94,7 +94,17 @@ namespace AllBase.Model.DBModel
|
||||
/// 超重费用,单位:分
|
||||
/// </summary>
|
||||
public int? over_weight_fee { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 0未申请拒收 1已申请拒收 2申请拒收失败 3已拒收成功 5取消拒收
|
||||
/// </summary>
|
||||
public int has_reject { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 拦截到仓时间
|
||||
/// </summary>
|
||||
public DateTime? blocked_arrival_time { get; set; }
|
||||
/// <summary>
|
||||
/// 拒收时间
|
||||
/// </summary>
|
||||
public DateTime? rejected_time { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -261,8 +261,11 @@ namespace AllBase.Model.DBModel
|
||||
else
|
||||
TransitOrderWaybillFromWareHouseStr = "仓库物流:" + ItemTransitOrder.express_2_company + "-" + ItemTransitOrder.express_2_waybill;
|
||||
|
||||
if (order_id == "3738552208766960384")
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
TransitWarehouseRejectSuccessTimeStr = this.ItemTransitOrderWithVoid?.rejected_time == null ? "" : this.ItemTransitOrderWithVoid.rejected_time.Value.ToString("yy-MM-dd HH:mm");
|
||||
AddEditTransitWarehouseRejectStr = "申请";
|
||||
if (this.ItemTransitOrderWithVoid?.has_reject == 1)
|
||||
AddEditTransitWarehouseRejectStr = "已申请拒收";
|
||||
@@ -337,18 +340,24 @@ namespace AllBase.Model.DBModel
|
||||
// 直发买手退货地址
|
||||
this.DirectPddBuyerAfterSaleAddressStr = this.DirectPddBuyerAfterSale?.afterSaleAddress;
|
||||
}
|
||||
/// <summary>
|
||||
/// 仓库拒收按钮文本参数
|
||||
/// </summary>
|
||||
public string AddEditTransitWarehouseRejectStr
|
||||
{
|
||||
get { return this.GetValue(x => x.AddEditTransitWarehouseRejectStr); }
|
||||
set { this.SetValue(x => x.AddEditTransitWarehouseRejectStr, value); }
|
||||
}
|
||||
/// <summary>
|
||||
/// 仓库退货编辑按钮文本参数
|
||||
/// </summary>
|
||||
public string AddEditTransitWarehouseAfterSaleStr
|
||||
/// <summary>
|
||||
/// 仓库拒收按钮文本参数
|
||||
/// </summary>
|
||||
public string AddEditTransitWarehouseRejectStr
|
||||
{
|
||||
get { return this.GetValue(x => x.AddEditTransitWarehouseRejectStr); }
|
||||
set { this.SetValue(x => x.AddEditTransitWarehouseRejectStr, value); }
|
||||
}
|
||||
public string TransitWarehouseRejectSuccessTimeStr
|
||||
{
|
||||
get { return this.GetValue(x => x.TransitWarehouseRejectSuccessTimeStr); }
|
||||
set { this.SetValue(x => x.TransitWarehouseRejectSuccessTimeStr, value); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 仓库退货编辑按钮文本参数
|
||||
/// </summary>
|
||||
public string AddEditTransitWarehouseAfterSaleStr
|
||||
{
|
||||
get { return this.GetValue(x => x.AddEditTransitWarehouseAfterSaleStr); }
|
||||
set { this.SetValue(x => x.AddEditTransitWarehouseAfterSaleStr, value); }
|
||||
|
||||
Reference in new issue
Block a user