淘宝买手售后状态读取

This commit is contained in:
wule committed 2026-10-14 19:47:27 +08:00
1 parent 0f850b8840
commit 84a484a568
5 files changed
+185 -165

No files matched your search

@@ -346,7 +346,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
{
var cookiestr = JsonHelper.SerializeObject(cookies); // "Name":"unb","Value":"2210214614749"
var buyer = GlobalConfig.TaobaoBuyerLoginList.FirstOrDefault(u => cookiestr.Contains(cookiestr));
await CefReadBuyerOrder(url1, data1, buyer);
await HandleCefReadBuyerOrder(url1, data1, buyer);
}
//// 读取售后
@@ -569,39 +569,35 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
tb_afterSale.AfterSaleAddress = buyer_after_sale?.afterSaleAddress;
}
async Task CefReadBuyerOrder(string url, string data, BuyerLoginInfo buyer)
async Task HandleCefReadBuyerOrder(string url, string data, BuyerLoginInfo buyer)
{
if (buyer == null)
return;
lastCefReadOrderTime = DateTime.Now;
////https://h5api.m.taobao.com/h5/mtop.taobao.order.queryboughtlistv2/1.0/?jsv=2.7.2&appKey=12574478&t=1791888392155&sign=ae9eb598e5249794a0e324b94849d6e7&v=1.0&ecode=1&timeout=8000&dataType=json&valueType=original&ttid=1%40tbwang_windows_1.0.0%23pc&needLogin=true&type=originaljson&isHttps=1&needRetry=true&api=mtop.taobao.order.queryboughtlistV2&__customTag__=boughtList_all_OrderList&preventFallback=true
////{"api":"mtop.taobao.order.queryboughtlistv2","data":{"data":{"pcTaoBoughtList":{"tag":"pcTaoBoughtList"},"contentContainer":{"tag":"contentContainer"},"orderContainer":{"tag":"orderContainer"},"orderHeader":{"tag":"orderHeader","type":"native$tbpc_bought_list_order_header"},"shopOrderContainer_5127515318323214133":{"tag":"shopOrderContainer","id":"5127515318323214133","type":"layout$tbpc_container$0$0","fields":{"className":"trade-bought-list-order-container"}},"shopInfo_5127515318323214133":{"tag":"shopInfo","id":"5127515318323214133","type":"native$tbpc_bought_list_order_shop_info","fields":{"createDay":"2026-10-13","createTime":"2026-10-13 18:18:05","hideWangWang":false,"isInstallmentPay":"false","isNewShopImg":"true","isPurchaseUser":false,"isRelatedPay":"false","maxCheckCnt":0,"memoFlag":0,"newShopImg":"//gw.alicdn.com/imgextra/i2/O1CN01IBkgQN26Fy77Dv9zk_!!6000000007633-2-tps-80-36.png","orderDetailUrl":"//trade.taobao.com/trade/detail/trade_order_detail.htm?biz_order_id=5127515318323214133","orderId":"5127515318323214133","orderOperationList":[{"orderOperation":{"event":"delOrder","eventType":"delOrder","highLight":false,"name":"删除订单","status":"normal"}}],"outUrl":"https://shop445007916.taobao.com/category.htm","sellerName":"jtt_fan","shopImg":"//gtd.alicdn.com/tps/i4/TB1f.8ZFVXXXXXvaXXXEDhGGXXX-32-32.png","shopName":"JttFan的小店1313","supportBuyerFlagPopUpWindow":true,"tradeTitle":"交易关闭"},"events":{"delOrder":[{"type":"delOrderV2","fields":{"alert":{"cancelText":"取消","confirmText":"确定","msg":"删除之后可以从电脑端订单回收站恢复","title":"确认删除订单?"},"mtopConfig":{"apiMethod":"mtop.order.doOp","apiVersion":"3.0","data":{"archive":"false","code":"delOrder","orderId":"5127515318323214133"},"header":{},"isNeedWua":true,"needEcodeSign":true,"usePost":true},"toastError":"response_msg","toastSucceed":"response_msg"}}]}},"orderColContainer_5127515318323214133":{"tag":"orderColContainer","id":"5127515318323214133","type":"layout$tbpc_container$0$0","fields":{"type":"row"}},"orderDetailCol_5127515318323214133":{"tag":"orderDetailCol","id":"5127515318323214133","type":"layout$tbpc_container$0$0","fields":{"className":"trade-bought-col-order-detail"}},"orderItemGroup_5127515318323214133_1_1":{"tag":"orderItemGroup","id":"5127515318323214133_1_1"},"orderItemInfo_5127515318323214133_5127515318323214133":{"tag":"orderItemInfo","id":"5127515318323214133_5127515318323214133","type":"native$tbpc_order_item_info","fields":{"item":{"h5SnapshotUrl":"https://market.m.taobao.com/app/tp/snapshot-m/pages/index/index.html?bizOrderId=5127515318323214133","isUseH5SnapshotUrl":"true","itemId":"1086145916321","itemUrl":"https://item.taobao.com/item.htm?id=1086145916321&mi_id=0000yseHp6Dc14XqU9Z_3a3nhwRJZwD1uuo3Tl6yinmGo4w","outerUrl":"//trade.taobao.com/trade/detail/trade_order_detail.htm?biz_order_id=5127515318323214133","pic":"//img.alicdn.com/imgextra/i4/440631048/O1CN017oJSA71Jc1iDXhwgV_!!440631048.jpg_200x200.jpg","priceInfo":{"actualTotalFee":"¥5.00","promotion":"¥5.00"},"quantity":"1","refundStatus":"退款成功","skuInfo":[{"skuKey":"颜色分类","skuText":"颜色分类:发绳1条","skuValue":"发绳1条"}],"skuText":"发绳1条","title":"网红高弹力橡皮筋头绳女简约百搭扎可爱头发发饰发绳发圈头绳"},"orderId":"5127515318323214133","serviceinfo":{"main":[{"name":"极速退款"},{"name":"7天无理由退货"}]},"suborderop":{"values":[{"event":"wirelessRefund","eventData":{"addBagAgain":false,"alert":false,"alertWithOpenUrl":false,"degrade2OldVersion":false,"doPay":false,"eventType":"openUrl","eventUtArgsCondition":false,"eventUtArgsExposureCondition":false,"eventUtArgsNotExposureCondition":false,"openAnimateWin":false,"openBatchRefundPop":false,"openRefundPop":false,"openUrl":true,"openUrlUtArgs":{"url":"https://refund2.taobao.com/dispute/applyRouter.htm?bizOrderId=5127515318323214133"},"openUrlUtArgsCondition":true,"openUrlUtArgsExposureCondition":true,"openUrlUtArgsNotExposureCondition":false,"params":{"url":"https://refund2.taobao.com/dispute/applyRouter.htm?bizOrderId=5127515318323214133"},"refreshMtop":false,"remoteUltronPop":false,"utArg1":"Page_OrderDetail_Button-wirelessRefund","utWirelessRefund":true,"utWirelessRefundArgs":{"eventType":"openUrl"}},"eventType":"openUrl","highLight":"false","name":"退款成功"},{"event":"subAddBagAgain","eventData":{"addBagAgain":true,"alert":false,"alertWithOpenUrl":false,"degrade2OldVersion":false,"doPay":false,"eventType":"addBagAgain","eventUtArgsCondition":true,"eventUtArgsExposureCondition":true,"eventUtArgsNotExposureCondition":false,"openAnimateWin":false,"openBatchRefundPop":false,"openRefundPop":false,"openUrl":false,"openUrlUtArgsCondition":false,"openUrlUtArgsExposureCondition":false,"openUrlUtArgsNotExposureCondition":false,"params":{"failUrl":"https://market.m.taobao.com/app/tb-source-app/order-search/pages/orderPurchase?wh_weex=true&type=0&showSubTitle=0&showBenefit=false&beLine truncated
//if (data.Contains("退款成功"))
//{
//}
lastCefReadOrderTime = DateTime.Now;
if (data.Contains("\"orderContainer\":[]"))
{
Dispatcher.Invoke(new Action(() =>
{
lblMsg.Content = buyer.buyer_name + " 获取到空订单列表,退出自动读单 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}));
Dispatcher.Invoke(() => { lblMsg.Content = buyer.buyer_name + " 获取到空订单列表,退出自动读单 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); });
currentReadBuyer = "";
return;
}
Dispatcher.Invoke(new Action(() =>
{
lblMsg.Content = buyer.buyer_name + " 正在获取订单列表 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}));
//https://h5api.m.taobao.com/h5/mtop.taobao.order.queryboughtlistv2/1.0/?jsv=2.7.2&appKey=12574478&t=1791888392155&sign=ae9eb598e5249794a0e324b94849d6e7&v=1.0&ecode=1&timeout=8000&dataType=json&valueType=original&ttid=1%40tbwang_windows_1.0.0%23pc&needLogin=true&type=originaljson&isHttps=1&needRetry=true&api=mtop.taobao.order.queryboughtlistV2&__customTag__=boughtList_all_OrderList&preventFallback=true
//{"api":"mtop.taobao.order.queryboughtlistv2","data":{"data":{"pcTaoBoughtList":{"tag":"pcTaoBoughtList"},"contentContainer":{"tag":"contentContainer"},"orderContainer":{"tag":"orderContainer"},"orderHeader":{"tag":"orderHeader","type":"native$tbpc_bought_list_order_header"},"shopOrderContainer_5127515318323214133":{"tag":"shopOrderContainer","id":"5127515318323214133","type":"layout$tbpc_container$0$0","fields":{"className":"trade-bought-list-order-container"}},"shopInfo_5127515318323214133":{"tag":"shopInfo","id":"5127515318323214133","type":"native$tbpc_bought_list_order_shop_info","fields":{"createDay":"2026-10-13","createTime":"2026-10-13 18:18:05","hideWangWang":false,"isInstallmentPay":"false","isNewShopImg":"true","isPurchaseUser":false,"isRelatedPay":"false","maxCheckCnt":0,"memoFlag":0,"newShopImg":"//gw.alicdn.com/imgextra/i2/O1CN01IBkgQN26Fy77Dv9zk_!!6000000007633-2-tps-80-36.png","orderDetailUrl":"//trade.taobao.com/trade/detail/trade_order_detail.htm?biz_order_id=5127515318323214133","orderId":"5127515318323214133","orderOperationList":[{"orderOperation":{"event":"delOrder","eventType":"delOrder","highLight":false,"name":"删除订单","status":"normal"}}],"outUrl":"https://shop445007916.taobao.com/category.htm","sellerName":"jtt_fan","shopImg":"//gtd.alicdn.com/tps/i4/TB1f.8ZFVXXXXXvaXXXEDhGGXXX-32-32.png","shopName":"JttFan的小店1313","supportBuyerFlagPopUpWindow":true,"tradeTitle":"交易关闭"},"events":{"delOrder":[{"type":"delOrderV2","fields":{"alert":{"cancelText":"取消","confirmText":"确定","msg":"删除之后可以从电脑端订单回收站恢复","title":"确认删除订单?"},"mtopConfig":{"apiMethod":"mtop.order.doOp","apiVersion":"3.0","data":{"archive":"false","code":"delOrder","orderId":"5127515318323214133"},"header":{},"isNeedWua":true,"needEcodeSign":true,"usePost":true},"toastError":"response_msg","toastSucceed":"response_msg"}}]}},"orderColContainer_5127515318323214133":{"tag":"orderColContainer","id":"5127515318323214133","type":"layout$tbpc_container$0$0","fields":{"type":"row"}},"orderDetailCol_5127515318323214133":{"tag":"orderDetailCol","id":"5127515318323214133","type":"layout$tbpc_container$0$0","fields":{"className":"trade-bought-col-order-detail"}},"orderItemGroup_5127515318323214133_1_1":{"tag":"orderItemGroup","id":"5127515318323214133_1_1"},"orderItemInfo_5127515318323214133_5127515318323214133":{"tag":"orderItemInfo","id":"5127515318323214133_5127515318323214133","type":"native$tbpc_order_item_info","fields":{"item":{"h5SnapshotUrl":"https://market.m.taobao.com/app/tp/snapshot-m/pages/index/index.html?bizOrderId=5127515318323214133","isUseH5SnapshotUrl":"true","itemId":"1086145916321","itemUrl":"https://item.taobao.com/item.htm?id=1086145916321&mi_id=0000yseHp6Dc14XqU9Z_3a3nhwRJZwD1uuo3Tl6yinmGo4w","outerUrl":"//trade.taobao.com/trade/detail/trade_order_detail.htm?biz_order_id=5127515318323214133","pic":"//img.alicdn.com/imgextra/i4/440631048/O1CN017oJSA71Jc1iDXhwgV_!!440631048.jpg_200x200.jpg","priceInfo":{"actualTotalFee":"¥5.00","promotion":"¥5.00"},"quantity":"1","refundStatus":"退款成功","skuInfo":[{"skuKey":"颜色分类","skuText":"颜色分类:发绳1条","skuValue":"发绳1条"}],"skuText":"发绳1条","title":"网红高弹力橡皮筋头绳女简约百搭扎可爱头发发饰发绳发圈头绳"},"orderId":"5127515318323214133","serviceinfo":{"main":[{"name":"极速退款"},{"name":"7天无理由退货"}]},"suborderop":{"values":[{"event":"wirelessRefund","eventData":{"addBagAgain":false,"alert":false,"alertWithOpenUrl":false,"degrade2OldVersion":false,"doPay":false,"eventType":"openUrl","eventUtArgsCondition":false,"eventUtArgsExposureCondition":false,"eventUtArgsNotExposureCondition":false,"openAnimateWin":false,"openBatchRefundPop":false,"openRefundPop":false,"openUrl":true,"openUrlUtArgs":{"url":"https://refund2.taobao.com/dispute/applyRouter.htm?bizOrderId=5127515318323214133"},"openUrlUtArgsCondition":true,"openUrlUtArgsExposureCondition":true,"openUrlUtArgsNotExposureCondition":false,"params":{"url":"https://refund2.taobao.com/dispute/applyRouter.htm?bizOrderId=5127515318323214133"},"refreshMtop":false,"remoteUltronPop":false,"utArg1":"Page_OrderDetail_Button-wirelessRefund","utWirelessRefund":true,"utWirelessRefundArgs":{"eventType":"openUrl"}},"eventType":"openUrl","highLight":"false","name":"退款成功"},{"event":"subAddBagAgain","eventData":{"addBagAgain":true,"alert":false,"alertWithOpenUrl":false,"degrade2OldVersion":false,"doPay":false,"eventType":"addBagAgain","eventUtArgsCondition":true,"eventUtArgsExposureCondition":true,"eventUtArgsNotExposureCondition":false,"openAnimateWin":false,"openBatchRefundPop":false,"openRefundPop":false,"openUrl":false,"openUrlUtArgsCondition":false,"openUrlUtArgsExposureCondition":false,"openUrlUtArgsNotExposureCondition":false,"params":{"failUrl":"https://market.m.taobao.com/app/tb-source-app/order-search/pages/orderPurchase?wh_weex=true&type=0&showSubTitle=0&showBenefit=false&beneLine truncated
if (data.Contains("退款成功"))
{
}
Dispatcher.Invoke(() => { lblMsg.Content = buyer.buyer_name + " 正在获取订单列表 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); });
var shopOrderContainerString = BaseRegex.GetOneJsonArrStrJson(ref data, "orderContainer");
List<string> shopOrderContainerList = JsonHelper.DeserializeJsonToList<string>(shopOrderContainerString);
shopOrderContainerList.RemoveAll(o => !o.Contains("shopOrderContainer_"));
List<TbBuyerOrderLiteInfo> list = new List<TbBuyerOrderLiteInfo>();
List<TbBuyerOrderLiteInfo> oList = new List<TbBuyerOrderLiteInfo>();
List<TbBuyerAfterSaleLiteInfo> afList = new List<TbBuyerAfterSaleLiteInfo>();
var orderIdLst = shopOrderContainerList.Select(o => o.Replace("shopOrderContainer_", "")).ToList();
foreach (var orderId in orderIdLst)
{
@@ -609,8 +605,9 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
var orderPayment = JsonHelper.DeserializeJsonToObject<TaobaoOrderPayment>(orderPaymentStr);
var orderItemInfoStr = BaseRegex.GetOneJsonObjStrJson(ref data, "orderItemInfo_" + orderId + "_" + orderId).ParseToString();
var shopInfoStr = BaseRegex.GetOneJsonObjStrJson(ref data, "shopInfo_" + orderId);
var shopInfoStr = BaseRegex.GetOneJsonObjStrJson(ref data, "shopInfo_" + orderId);
var orderLogistics = BaseRegex.GetOneJsonObjStrJson(ref data, "orderLogistics_" + orderId);
var orderStatus = BaseRegex.GetOneJsonObjStrJson(ref data, "orderStatus_" + orderId);
TbBuyerOrderLiteInfo o = new TbBuyerOrderLiteInfo();
o.order_sn = "tb_" + orderId;
@@ -646,24 +643,13 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
o.order_prompt_color = "#E02E24";
// 买家已付款 卖家已发货 交易成功 交易关闭 退款成功
o.order_status_prompt = BaseRegex.GetStringJson(ref shopInfoStr, "tradeTitle");
if (orderItemInfoStr.Contains("退款成功"))
{
}
if (o.order_status_prompt.Contains("退款成功"))
{
}
o.parent_order_sn = "";
o.service_amount = 0;
o.shipping_amount = ((orderPayment.fields.pcPostFee?.value?.Replace("¥", "")).ParseToDecimal() * 100).ParseToInt();
o.order_time = BaseClass.DateTimeToTimestampSeconds(BaseRegex.GetStringJson(ref shopInfoStr, "createTime").ParseToDateTime());
if (o.order_time < BaseClass.DateTimeToTimestampSeconds(DateTime.Now.AddMonths(-2)))
{
Dispatcher.Invoke(new Action(() =>
{
lblMsg.Content = buyer.buyer_name + " 已读取近两个月订单,退出自动读单 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}));
Dispatcher.Invoke(() => { lblMsg.Content = buyer.buyer_name + " 已读取近两个月订单,退出自动读单 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); });
currentReadBuyer = "";
}
if (orderLogistics != null)
@@ -672,40 +658,66 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
o.tracking_number = BaseRegex.GetStringJson(ref orderLogistics, "mailNo");
}
//order.TransitCreateTime = o.TransitCreateTime;
//order.TransitPickupTime = o.TransitPickupTime;
oList.Add(o);
//order.TransitWarehouseRawMessage = o.TransitWarehouseRawMessage;
//order.WxOrderCreateTime = o.WxOrderCreateTime;
//order.ShopIdStr = o.ShopIdStr;
//order.ShopOrderIdStr = o.ShopOrderIdStr;
//order.ShopOrderSkuIdStr = o.ShopOrderSkuIdStr;
//order.ShopOrderSkuNameStr = o.ShopOrderSkuNameStr;
//order.TransitBuyerOrderRefundStatus = o.TransitBuyerOrderRefundStatus;
//order.TransitWarehouseIdStr = o.TransitWarehouseIdStr;
//order.TransitWarehouseOrderCodeStr = o.TransitWarehouseOrderCodeStr;
//order.Express1WaybillStr = o.Express1WaybillStr;
//order.Express1CompanyStr = o.Express1CompanyStr;
//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.OutAfterSaleStatusStr = o.OutAfterSaleStatusStr; // 店铺售后状态文本描述
//order.wxRefundStatus = o.wxRefundStatus;
//order.WxOrderStatus = o.WxOrderStatus;
// 售后单放在同一个列表中统一处理
var refundStatus = BaseRegex.GetStringJson(ref orderItemInfoStr, "refundStatus");
if (!string.IsNullOrEmpty(refundStatus) && !string.IsNullOrEmpty(orderStatus))
{
TbBuyerAfterSaleLiteInfo af = new TbBuyerAfterSaleLiteInfo();
af.buyerId = o.buyerId;
af.buyerName = o.buyerName;
//var index = lstTbBuyerOrderInfoLite.IndexOf(order);
//Dispatcher.Invoke(new Action(() =>
//{
// lstTbBuyerOrderInfoLite.Remove(order);
// lstTbBuyerOrderInfoLite.Insert(index, order);
//}));
var disputeUrl = BaseRegex.GetStringJson(ref orderStatus, "url");
af.afterSalesId = disputeUrl.ParseToString().Contains("disputeId=") ? BaseRegex.GetStringQuery(ref disputeUrl, "disputeId").ParseToLong() : null;
if (af.afterSalesId.IsNullOrZero())
af.afterSalesId = o.order_sn.Replace("tb_", "").ParseToLong();
af.listItemAmountVO = new ListItemAmountVO()
{
orderAmount = o.order_amount,
refundAmount = orderStatus.IsNullOrEmpty() ? o.order_amount : (BaseRegex.GetStringJson(ref orderStatus, "subTitle").Split('¥').LastOrDefault().ParseToDecimal() * 100).ParseToInt(),
};
if (af.listItemAmountVO.refundAmount == 0)
af.listItemAmountVO.refundAmount = o.order_amount;
af.listItemExtraVO = new ListItemExtraVO() { navToDetailPageUrl = disputeUrl.ParseToString().StartsWith("https") ? disputeUrl : ("https:" + disputeUrl) };
af.listItemGoodsVO = new ListItemGoodsVO
{
goodsImage = o.order_Goods.FirstOrDefault()?.thumb_url,
goodsName = o.order_Goods.FirstOrDefault()?.goods_name,
goodsNumber = o.order_Goods.FirstOrDefault()?.goods_number,
goodsPrice = o.order_Goods.FirstOrDefault()?.goods_price,
richTextList = null,
spec = o.order_Goods.FirstOrDefault()?.spec,
};
af.listItemMallVO = new ListItemMallVO();
// 售后状态
af.listItemStatusVO = new ListItemStatusVO()
{
statusText = refundStatus,
};
af.tbOrderSn = o.order_sn;
af.tbOrderDate = BaseClass.StampToDateTime(o.order_time.ParseToInt()).ToString("yyMMdd").ParseToInt();
list.Add(o);
if (af.afterSalesId > 0)
afList.Add(af);
}
}
await HandleCefReadBuyerOrder(buyer, oList);
if (afList.Count > 0)
{
if (afList.Any(o => o.orderSn.Contains("tb_5127796188031004903")))
{
}
await HandleCefReadBuyerAfterSale(buyer, afList);
}
}
async Task HandleCefReadBuyerOrder(BuyerLoginInfo buyer, List<TbBuyerOrderLiteInfo> list)
{
//var list = JsonHelper.DeserializeJsonToList<TbBuyerOrderLiteInfo>(JsonHelper.JObjectParse(data)["orders"].ParseToString());
// 提取外采订单列表
@@ -757,7 +769,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
o.buyerId = buyer.buyer_id;
o.buyerName = buyer.buyer_name;
if (o.order_sn == "260923-573109716621688")
if (o.order_sn == "tb_5127796188031004903")
{
}
@@ -1007,7 +1019,6 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
data3 += "&wx_order_id=" + tbBuyerOrder.wx_order_id;
data3 += "&wx_sku_id=" + tbBuyerOrder.wx_sku_id;
data3 += "&wx_send_type=" + tbBuyerOrder.wx_send_type;
data3 += "&platform=" + "tb";
var html3 = GetHtml.PostUtf8(url3, data3);
if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200"))
html3 = GetHtml.PostUtf8(url3, data3);
@@ -1036,42 +1047,46 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
NaiBa.Util.Helper.ConfigHelper.SaveConfig("tb_buyer_order_list", lstTbBuyerOrderInfoLite);
}
void CefReadBuyerAfterSale(string url, string data)
{
var buyer = GlobalConfig.TaobaoBuyerLoginList.FirstOrDefault(b => url.Contains(b.buyer_id));
if (buyer == null)
return;
async Task HandleCefReadBuyerAfterSale(string url, string data)
{
var buyer = GlobalConfig.TaobaoBuyerLoginList.FirstOrDefault(b => url.Contains(b.buyer_id));
if (buyer == null)
return;
lastCefReadOrderTime = DateTime.Now;
lastCefReadOrderTime = DateTime.Now;
if (data.Contains("\"listItemVOList\":[]") || data.Contains("\"hasNextQuery\":false"))
//if (!data.Contains("/complaints_new_detail.html?after_sales_id="))
{
Dispatcher.Invoke(new Action(() =>
{
lblMsg.Content = buyer.buyer_name + " 获取到空售后列表,退出自动滑动 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}));
currentReadBuyer = "";
//return;
}
if (data.Contains("\"listItemVOList\":[]") || data.Contains("\"hasNextQuery\":false"))
//if (!data.Contains("/complaints_new_detail.html?after_sales_id="))
{
Dispatcher.Invoke(new Action(() =>
{
lblMsg.Content = buyer.buyer_name + " 获取到空售后列表,退出自动滑动 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}));
currentReadBuyer = "";
//return;
}
//{\"error_code\":50000,\"error_msg\":\"http error:504\"}
//{"errorCode":72004,"errorMsg":"","error_code":72004,"error_msg":"","result":null}
if (data.Contains("\"error_code\":40001") || data.Contains("\"error_code\":50000") || data.Contains("\"error_code\":72004"))
{
TaobaoLoginViewModel.CheckBuyerLogin(new List<BuyerLoginInfo> { buyer }, false);
{
TaobaoLoginViewModel.CheckBuyerLogin(new List<BuyerLoginInfo> { buyer }, false);
if (buyer.status == "掉线")
currentReadBuyer = "";
return;
}
}
Dispatcher.Invoke(new Action(() =>
{
lblMsg.Content = buyer.buyer_name + " 正在获取售后列表 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}));
Dispatcher.Invoke(new Action(() =>
{
lblMsg.Content = buyer.buyer_name + " 正在获取售后列表 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}));
var list = JsonHelper.DeserializeJsonToList<TbBuyerAfterSaleLiteInfo>(JsonHelper.JObjectParse(data)["result"]["listItemVOList"].ParseToString());
var list = JsonHelper.DeserializeJsonToList<TbBuyerAfterSaleLiteInfo>(JsonHelper.JObjectParse(data)["result"]["listItemVOList"].ParseToString());
var out_order_nos = string.Join(",", list.Select(bo => bo.orderSn));
}
async Task HandleCefReadBuyerAfterSale(BuyerLoginInfo buyer, List<TbBuyerAfterSaleLiteInfo> list)
{
var out_order_nos = string.Join(",", list.Select(bo => bo.orderSn));
var transitOrderList = GetOrderTransitWarehouseInfo(out_order_nos);
var orderExtList = GetOrderItemExtInfo(out_order_nos);
@@ -1091,6 +1106,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
orderItem.ItemTransitOrders.AddRange(transitOrderList.Where(t => t.order_no == orderItem.order_id));
}
}
// 获取订单售后,暂时关闭,使用订单详情售后状态字段
//var refunds = GetOrderRefundInfo(order_ids);
var buyerAfterSales = GetOrderAfterSales(order_ids);
@@ -1100,7 +1116,12 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
foreach (TbBuyerAfterSaleLiteInfo af in list)
{
af.buyerId = buyer.buyer_id;
if (af?.orderSn == "tb_5127796188031004903")
{
}
af.buyerId = buyer.buyer_id;
af.buyerName = buyer.buyer_name;
oms_wei_external_procurement_log_info transitItem = null;
@@ -1143,11 +1164,6 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
}
}
if (af.ShopOrderIdStr == "3738122233932312576" || af.orderSn== "260803-433020014881353") //260803-433020014881353
{
}
bool isUpdate = false;
TbBuyerAfterSaleLiteInfo afterSale = null;
if (!lstTbBuyerAfterSaleInfoLite.Any(or => or.afterSalesId == af.afterSalesId))
@@ -1185,6 +1201,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
afterSale.sendStatus = af.sendStatus;
}
afterSale.tbOrderSn = af.tbOrderSn;
afterSale.afterSalesId = af.afterSalesId;
afterSale.listItemAmountVO = JsonHelper.DeserializeJsonToObject<ListItemAmountVO>(JsonHelper.SerializeObject(af.listItemAmountVO));
afterSale.listItemExtraVO = JsonHelper.DeserializeJsonToObject<ListItemExtraVO>(JsonHelper.SerializeObject(af.listItemExtraVO));
@@ -1223,8 +1240,9 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
}));
}
}
// 过滤显示订单
if (filterOneBuyerAfterSale(afterSale) == false)
// 过滤显示订单
if (filterOneBuyerAfterSale(afterSale) == false)
{
Dispatcher.Invoke(new Action(() =>
{
@@ -1243,17 +1261,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
}));
}
if (afterSale.orderDate < DateTime.Now.AddMonths(-2).ToString("yyMMdd").ParseToInt())
{
Dispatcher.Invoke(new Action(() =>
{
lblMsg.Content = buyer.buyer_name + " 近2个月售后列表获取完成,退出自动滑动 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}));
currentReadBuyer = "";
//return;
}
if (afterSale?.ShopIdStr == "3738859887048176128")
if (afterSale?.ShopIdStr == "3739817058390688256")
{
}
@@ -1266,7 +1274,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
// 退款状态有变化才发起修改(退款状态不能从退款成功变成未退款)
TbBuyerAfterSaleLiteInfo afterSaleRefundSuccessExist = null;
afterSaleRefundSuccessExist = lstTbBuyerAfterSaleInfoLite.FirstOrDefault(a => a.afterSalesId != afterSale.afterSalesId &&
a.orderSn == afterSale.orderSn && (a.AfterSaleStatusStr.Contains("退款成功") || a.AfterSaleStatusStr.Contains("交易已取消")));
a.orderSn == afterSale.orderSn && (a.AfterSaleStatusStr.Contains("退款成功") || a.AfterSaleStatusStr.Contains("交易关闭")));
if ((afterSaleRefundSuccessExist == null || afterSale.AfterSaleStatusStr == afterSaleRefundSuccessExist.AfterSaleStatusStr) &&
(afterSale.AfterSaleStatusOldStr != afterSale.AfterSaleStatusStr))
@@ -1278,7 +1286,8 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
else
{
// 如果买手退款成功,仓库不是买手退款成功,则修改仓库售后字段为买手退款成功
if (afterSale.AfterSaleStatusStr.Contains("退款成功") || afterSale.AfterSaleStatusStr.Contains("交易已取消"))
//if (afterSale.AfterSaleStatusStr.Contains("退款成功") || afterSale.AfterSaleStatusStr.Contains("交易已取消"))
if (afterSale.AfterSaleStatusStr.Contains("退款成功") || afterSale.AfterSaleStatusStr.Contains("交易关闭"))
{
if (afterSale.TransitBuyerOrderRefundStatus != "买手退款成功")
{
@@ -1380,7 +1389,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
refundAmount = afterSale.listItemAmountVO?.refundAmount,
statusText = afterSale.AfterSaleStatusStr,
};
var url3 = BaseClass.Build29WxObjString("order/wx_add_mdy_buyer_after_sale");
var url3 = BaseClass.Build29WxObjString("order/wx_add_mdy_tb_buyer_after_sale");
var data3 = UserLogin.GetSignaturex();
data3 += "&wx_order_id=" + tbBuyerAfterSale.wx_order_id;
data3 += "&wx_sku_id=" + tbBuyerAfterSale.wx_sku_id;
@@ -1396,7 +1405,6 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
data3 += "&refundAmount=" + tbBuyerAfterSale.refundAmount;
data3 += "&statusText=" + tbBuyerAfterSale.statusText;
data3 += "&wx_send_type=" + tbBuyerAfterSale.wx_send_type;
data3 += "&platform=" + "tb";
if(tbBuyerAfterSale.wx_send_type == 1)
{
@@ -1577,25 +1585,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
break;
times++;
Thread.Sleep(Randomx.GetId(100, 300));
//top += Randomx.GetId(450, 600);
//var jsStr = @"window.scroll({
// top: document.body.scrollHeight,
// left: 0,
// behavior: 'smooth' // 可选,使滚动平滑
// });";
//jsStr = @"window.scroll({
// top: " + top + @",
// left: 0,
// behavior: 'smooth' // 可选,使滚动平滑
// });";
//var client = buyer.wpf_browser.GetDevToolsClient();
//if (client != null)
//{
// var result = client.Runtime.EvaluateAsync(jsStr, null, true, null, null, true, null, true);
// result.Wait(5000);
//}
Thread.Sleep(Randomx.GetId(1000, 2000));
// 1.点击下一页按钮
string jsRst = "failed";
@@ -2207,7 +2197,6 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
data3 += "&pdd_order_sn=" + order.order_sn;
data3 += "&wx_order_id=" + order.ShopOrderIdStr;
data3 += "&wx_send_type=1";
data3 += "&platform=" + "tb";
var html3 = GetHtml.PostUtf8(url3, data3);
if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200"))
html3 = GetHtml.PostUtf8(url3, data3);
@@ -2380,11 +2369,6 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
/// <returns></returns>
public string TbTransitAutoAfterSale(TbBuyerOrderLiteInfo order)
{
//if (isReadOrder)
//{
// BaseMsgForm.ShowError("正再读取订单,请稍候");
// return;
//}
//// 订单详情页
////https://mobile.yangkeduo.com/order.html?order_sn=260417-318525949581688
//// 退货详情页
@@ -311,6 +311,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
// 读取暂时记录的买手售后单,后面想办法放到中转订单库里去
var pddBuyerAfterSales = GetPddBuyerAfterSales(order_ids);
// 读取暂时记录的淘宝买手售后单(格式与拼多多的一致,存在不同的表中),后面想办法放到中转订单库里去
pddBuyerAfterSales.AddRange(GetTbBuyerAfterSales(order_ids));
// 同步单
var buyerIds = string.Join(",", pddBuyerOrders.Select(o => o.order_sn));
@@ -794,6 +796,34 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
return new List<order_pdd_buyer_after_sale>();
}
public static List<order_pdd_buyer_after_sale> GetTbBuyerAfterSales(string order_ids)
{
var url6 = BaseClass.Build29WxObjString("order/wx_get_tb_buyer_after_sale_list");
var data6 = UserLogin.GetSignaturex();
data6 += "&wx_order_id_in=" + order_ids;
List<order_pdd_buyer_after_sale> pddBuyerAfterSales = new List<order_pdd_buyer_after_sale>();
if (!string.IsNullOrEmpty(order_ids))
{
var html6 = GetHtml.PostUtf8(url6, data6);
if (string.IsNullOrEmpty(html6) || !html6.Contains("\"code\":200"))
html6 = GetHtml.PostUtf8(url6, data6);
if (string.IsNullOrEmpty(html6) || !html6.Contains("\"code\":200"))
{
BaseMsgWindow.ShowAnimateMessage("订单读取失败(买手售后) " + BaseRegex.GetStringJson(ref html6, "msg"), "Error", 6);
return new List<order_pdd_buyer_after_sale>();
}
try
{
pddBuyerAfterSales = JsonHelper.DeserializeJsonToList<order_pdd_buyer_after_sale>(JObject.Parse(html6)["data"].ParseToString()).OrderByDescending(p => p.TransitCreateTime).ToList();
return pddBuyerAfterSales;
}
catch
{
}
}
return new List<order_pdd_buyer_after_sale>();
}
public static List<yh_sync_logistics> GetSyncLogistics(string buyer_order_ids, int? not_upload_pickup_status = null)
{
var url6 = BaseClass.Build29WxObjString("order/wx_get_sync_waybill");
@@ -3032,6 +3062,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
break;
}
IsAutoBuy = false;
BaseMsgWindow.ShowInfo("自动拍单结束!");
}
private void btnAutoBuyIntroduction_Click(object sender, RoutedEventArgs e)
@@ -257,16 +257,19 @@ namespace AllBase.Model.Result
public string buyerId { get; set; } // 买手Id
public string buyerName { get; set; } // 买手名称
public string tbOrderSn { get; set; } // 淘宝的买手单号
public string orderSn
{
get
{
if (!string.IsNullOrEmpty(tbOrderSn))
return tbOrderSn;
var detailPage = listItemExtraVO.navToDetailPageUrl;
return BaseRegex.GetStringQuery(ref detailPage, "order_sn");
}
set { }
}
public int? orderDate { get { return orderSn.Split('-').FirstOrDefault().ParseToInt(); } set { } }
public int? tbOrderDate { get; set; }
public int? orderDate { get { return tbOrderDate ?? orderSn.Split('-').FirstOrDefault().ParseToInt(); } }
public long? afterSalesId { get; set; } // 20129688312436,
@@ -284,12 +287,12 @@ namespace AllBase.Model.Result
public class ListItemAmountVO
{
public string orderAmountTitle { get; set; } // "实付:",
public string orderAmountTitle { get; set; } = "实付:"; // "实付:",
public int? orderAmount { get; set; } // 1580,
public object payLaterAmountTitle { get; set; } // null,
public object payLaterAmount { get; set; } // null,
public string refundAmountTitle { get; set; } // "退款金额:",
public int? refundAmount { get; set; } // 1580,
public string refundAmountTitle { get; set; } = "退款金额:"; // "退款金额:",
public int? refundAmount { get; set; } // 1580,
public object refundAmountText { get; set; } // null,
public bool? useCoupon { get; set; } // false
+2 -1
View File
@@ -158,6 +158,7 @@ namespace TemuKJD.ToolForms
if (this.Created)
Invoke(new Action(() =>
{
this.pnlMask.Dock = DockStyle.Fill;
this.pnlMask.Visible = true;
this.pnlMask.Text = "自动拍单倒计时\r\n" + i;
}));
@@ -548,7 +549,7 @@ namespace TemuKJD.ToolForms
var limitProfit = GlobalConfig.AutoBuyConfig.MinProfit * 0.01m;
if (profit < limitProfit)
{
throw new Exception("拍单利润" + profit + "小于设定的数值 " + limitProfit + ",跳过当前订单");
throw new Exception("拍单利润 " + profit + " 小于设定的数值 " + limitProfit + ",跳过当前订单");
}
}
+24 -23
View File
@@ -30,8 +30,8 @@
{
this.components = new System.ComponentModel.Container();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.pnlMask = new DevComponents.DotNetBar.PanelEx();
this.lblErrMsg = new System.Windows.Forms.Label();
this.pnlMask = new DevComponents.DotNetBar.PanelEx();
this.btnJumpOrderList = new DevComponents.DotNetBar.PanelEx();
this.txtBuySkuName = new System.Windows.Forms.TextBox();
this.label21 = new System.Windows.Forms.Label();
@@ -133,7 +133,6 @@
//
this.pbCloseBase.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.pbCloseBase.Location = new System.Drawing.Point(1326, 0);
this.pbCloseBase.Size = new System.Drawing.Size(32, 17);
//
// splitContainer1
//
@@ -149,30 +148,44 @@
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.lblErrMsg);
this.splitContainer1.Panel1.Controls.Add(this.pnlMask);
this.splitContainer1.Panel1MinSize = 0;
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.BackColor = System.Drawing.Color.White;
this.splitContainer1.Panel2.Controls.Add(this.lblErrMsg);
this.splitContainer1.Panel2.Controls.Add(this.btnJumpOrderList);
this.splitContainer1.Panel2MinSize = 0;
this.splitContainer1.Size = new System.Drawing.Size(864, 903);
this.splitContainer1.SplitterDistance = 875;
this.splitContainer1.Size = new System.Drawing.Size(864, 888);
this.splitContainer1.SplitterDistance = 860;
this.splitContainer1.SplitterWidth = 3;
this.splitContainer1.TabIndex = 4;
//
// lblErrMsg
//
this.lblErrMsg.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.lblErrMsg.BackColor = System.Drawing.Color.White;
this.lblErrMsg.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.lblErrMsg.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Bold);
this.lblErrMsg.ForeColor = System.Drawing.Color.Red;
this.lblErrMsg.Location = new System.Drawing.Point(47, 368);
this.lblErrMsg.Name = "lblErrMsg";
this.lblErrMsg.Size = new System.Drawing.Size(771, 128);
this.lblErrMsg.TabIndex = 893;
this.lblErrMsg.Text = "errMsg ";
this.lblErrMsg.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// pnlMask
//
this.pnlMask.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.pnlMask.Cursor = System.Windows.Forms.Cursors.Hand;
this.pnlMask.DisabledBackColor = System.Drawing.Color.Empty;
this.pnlMask.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlMask.Dock = System.Windows.Forms.DockStyle.Top;
this.pnlMask.Font = new System.Drawing.Font("微软雅黑", 50F);
this.pnlMask.Location = new System.Drawing.Point(0, 0);
this.pnlMask.Name = "pnlMask";
this.pnlMask.Size = new System.Drawing.Size(864, 875);
this.pnlMask.Size = new System.Drawing.Size(864, 426);
this.pnlMask.Style.Alignment = System.Drawing.StringAlignment.Center;
this.pnlMask.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(245)))), ((int)(((byte)(235)))), ((int)(((byte)(255)))));
this.pnlMask.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(245)))), ((int)(((byte)(235)))), ((int)(((byte)(255)))));
@@ -188,17 +201,6 @@
this.pnlMask.Text = "自动拍单倒计时\r\n8";
this.pnlMask.Visible = false;
//
// lblErrMsg
//
this.lblErrMsg.AutoSize = true;
this.lblErrMsg.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblErrMsg.ForeColor = System.Drawing.Color.Red;
this.lblErrMsg.Location = new System.Drawing.Point(166, 5);
this.lblErrMsg.Name = "lblErrMsg";
this.lblErrMsg.Size = new System.Drawing.Size(87, 17);
this.lblErrMsg.TabIndex = 893;
this.lblErrMsg.Text = "errMsg ";
//
// btnJumpOrderList
//
this.btnJumpOrderList.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
@@ -738,7 +740,7 @@
this.splitContainer2.BackColor = System.Drawing.Color.White;
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer2.Location = new System.Drawing.Point(1, 18);
this.splitContainer2.Location = new System.Drawing.Point(1, 33);
this.splitContainer2.Name = "splitContainer2";
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
@@ -750,7 +752,7 @@
//
this.splitContainer2.Panel2.Controls.Add(this.panel1);
this.splitContainer2.Panel2.Controls.Add(this.splitContainer1);
this.splitContainer2.Size = new System.Drawing.Size(1358, 941);
this.splitContainer2.Size = new System.Drawing.Size(1358, 926);
this.splitContainer2.SplitterDistance = 26;
this.splitContainer2.TabIndex = 5;
//
@@ -801,7 +803,7 @@
this.panel1.Controls.Add(this.pnlMap);
this.panel1.Location = new System.Drawing.Point(867, 3);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(487, 905);
this.panel1.Size = new System.Drawing.Size(487, 890);
this.panel1.TabIndex = 0;
//
// btnCancelAutoBuy
@@ -1174,7 +1176,7 @@
this.pnlMap.Controls.Add(this.cmbTransitWarehouse);
this.pnlMap.Controls.Add(this.txtMapGoodsId);
this.pnlMap.Controls.Add(this.txtMapSkuName);
this.pnlMap.Location = new System.Drawing.Point(12, 700);
this.pnlMap.Location = new System.Drawing.Point(12, 685);
this.pnlMap.Name = "pnlMap";
this.pnlMap.Size = new System.Drawing.Size(468, 203);
this.pnlMap.TabIndex = 871;
@@ -1196,7 +1198,6 @@
((System.ComponentModel.ISupportInitialize)(this.pbCloseBase)).EndInit();
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.splitContainer2.Panel1.ResumeLayout(false);