1 修复淘宝拍单窗口可能崩溃问题

2 拼多多中转仓拍单随机地址支持随机繁体字
This commit is contained in:
wule_5900x committed 2026-11-07 22:35:03 +08:00
1 parent 5b9ed01fa1
commit ac93305d5f
8 files changed
+155 -21

No files matched your search

@@ -1738,7 +1738,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
/// </summary>
public void ManualUpdateBuyOrder()
{
if (BuyType == "transit" && txtSourceCodeVal.Trim().Length != 6)
if (BuyType == "transit" && txtSourceCodeVal.ParseToString().Trim().Length != 6)
{
ErrorMsg = "溯源码长度错误!";
return;
@@ -24,6 +24,24 @@
<TabItem Header="拍单">
<StackPanel>
<Border Style="{StaticResource SettingRow}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock Style="{StaticResource SettingTitle}" Text="云仓拍单" />
<TextBlock Style="{StaticResource SettingDesc}" Text="多多云仓拍单随机繁体详细地址" />
</StackPanel>
<CheckBox
Grid.Column="1"
VerticalAlignment="Center"
d:Visibility="Visible"
IsChecked="{Binding SwitchEnablePddTransitTraditionalAddress}"
Style="{StaticResource ToggleSwitch}" />
</Grid>
</Border>
<Border Style="{StaticResource SettingRow}">
<Grid>
<Grid.ColumnDefinitions>
@@ -31,10 +31,16 @@ public class SettingViewModel : BindableBaseEx
get => GetValue<bool>();
set => SetValue(value);
}
public bool SwitchEnablePddTransitTraditionalAddress
{
get => GetValue<bool>();
set => SetValue(value);
}
public void Assign(SettingConfig config)
{
AutoSwitchGiftType = config.AutoSwitchGiftType;
SwitchEnableDirectBuy = config.SwitchEnableDirectBuy;
SwitchEnablePddTransitTraditionalAddress = config.SwitchEnablePddTransitTraditionalAddress;
}
public SettingConfig ToConfig()
{
@@ -42,6 +48,7 @@ public class SettingViewModel : BindableBaseEx
{
AutoSwitchGiftType = AutoSwitchGiftType,
SwitchEnableDirectBuy = SwitchEnableDirectBuy,
SwitchEnablePddTransitTraditionalAddress = SwitchEnablePddTransitTraditionalAddress,
};
}
}
+15 -12
View File
@@ -345,18 +345,20 @@ namespace _29WxOrderWpf.ViewModels
// cef138必须init后方可设置或删除cookie
while (!CefWebBrowser.IsBrowserInitialized || !CefWebBrowser.GetBrowser().MainFrame.IsValid)
while (_isWindowLoaded && (!CefWebBrowser.IsBrowserInitialized || !CefWebBrowser.GetBrowser().MainFrame.IsValid))
await Task.Delay(20);
//await WPFCEFBrowser.DeleteCookieAsync(CefWebBrowser.GetCookieManager(null));
//cef 138 如果没有设置RequestContext 可能为空,直接getCookieManager
//await WPFCEFBrowser.SetCookieAsync(JsonHelper.SerializeObject(cookieLst), CefWebBrowser.GetCookieManager(null));
if (OpenType != EnumOpenType.login)
{
foreach (var cook in cookieLst)
{
await WPFCEFBrowser.SetCookieAsync(cook.Domain.Trim('.'), cook.Name + "=" + cook.Value + ";", CefWebBrowser.GetCookieManager(null));
//t.Wait(5000);
if (_isWindowLoaded)
await WPFCEFBrowser.SetCookieAsync(cook.Domain.Trim('.'), cook.Name + "=" + cook.Value + ";", CefWebBrowser.GetCookieManager(null));
}
}
//根据登录的具体店铺设置local storage
if (!string.IsNullOrEmpty(buyer?.buyer_id))
@@ -369,9 +371,9 @@ namespace _29WxOrderWpf.ViewModels
}
if (!string.IsNullOrEmpty(InitUrl))
CefWebBrowser.Load(InitUrl);
CefWebBrowser?.Load(InitUrl);
else
CefWebBrowser.Load(buyerMainUrl);
CefWebBrowser?.Load(buyerMainUrl);
//不是登录的话就此返回
if (OpenType != EnumOpenType.login)
@@ -381,14 +383,14 @@ namespace _29WxOrderWpf.ViewModels
for (int i = 0; i < 50; i++)
{
if (CefWebBrowser.IsLoading)
if (CefWebBrowser?.IsLoading == true)
await Task.Delay(100);
}
await Task.Delay(Randomx.GetId(1500, 2000));
if (!_isWindowLoaded)
return;
while (!CefWebBrowser.Address?.StartsWith(buyerLoginUrl) ?? false)
while (!CefWebBrowser?.Address?.StartsWith(buyerLoginUrl) ?? false)
{
await Task.Delay(1000);
if (!_isWindowLoaded)
@@ -396,8 +398,7 @@ namespace _29WxOrderWpf.ViewModels
}
}
}
);
});
}
@@ -426,7 +427,7 @@ namespace _29WxOrderWpf.ViewModels
sb.Append("(function(){");
sb.Append("CefSharp.BindObjectAsync('shopObj');");
sb.Append("})();");
CefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(sb.ToString());
CefWebBrowser?.GetBrowser().MainFrame.EvaluateScriptAsync(sb.ToString());
}
private bool RequestHandler_BeforeResourceLoad(object sender, string url, string postData, IRequest request)
@@ -489,6 +490,8 @@ namespace _29WxOrderWpf.ViewModels
{
Thread.Sleep(2000);
if (!_isWindowLoaded)
return;
//List<Cookie> cookieList = WPFCEFBrowser.GetCookieList(shopCookieHead, CefWebBrowser.GetCookieManager(null));
List<Cookie> cookieList = WPFCEFBrowser.GetCookieList("", CefWebBrowser.GetCookieManager(null));
@@ -555,9 +558,9 @@ namespace _29WxOrderWpf.ViewModels
if (CefWebBrowser != null)
{
if (Address != "about:blank")
CefWebBrowser.Load(Address);
CefWebBrowser?.Load(Address);
else
CefWebBrowser.Load(buyerMainUrl);
CefWebBrowser?.Load(buyerMainUrl);
}
}
+4
View File
@@ -21,5 +21,9 @@ public class SettingConfig
/// 允许直发拍单
/// </summary>
public bool SwitchEnableDirectBuy { get; set; } = false;
/// <summary>
/// 拼多多仓库订单使用随机繁体字
/// </summary>
public bool SwitchEnablePddTransitTraditionalAddress { get; set; } = false;
#endregion
}
+46 -5
View File
@@ -39,7 +39,9 @@ namespace AllBase.Model.DBModel
public int district_id { get; set; }
public string province_name { get;set; }
public string city_name { get; set; }
}
public string district_name { get; set; }
}
public class TransitWarehouseData
{
@@ -64,16 +66,52 @@ namespace AllBase.Model.DBModel
{ "XDYFJSSC", "福建仓" },
};
public static string TransitWarehouseDataStr = @"
public static string TransitWarehouseDataStr = @"
XDYBJC ;北京仓 ;胡萍 ;18565773752 ;北京市顺义区光明街道滨河小区七区1号楼 ;2 ;52 ;511 ;北京市 ;北京市 ;顺义区 ;光明街道 ;滨河小区七区1号楼108室
XDYGZC ;广州仓 ;何外华 ;13826339849 ;广州市增城区朱村街道育山一路68号国际物流园 ;6 ;76 ;702 ;广东省 ;广州市 ;增城区 ;朱村街道 ;育山一路68号国际物流园
XDYWHC ;武汉2仓 ;杨先生 ;13044121071 ;湖北省武汉市江汉区民族街道沿江大道轮渡龙王庙码头 ;13 ;180 ;1546 ;湖北省 ;武汉市 ;江汉区 ;民族街道 ;沿江大道轮渡龙王庙码头
XDYSHANDC ;山东2仓 ;鸿鹄小申 ;13044121239 ;山东省临沂市费县南外环东转盘往东200米顺通快递有限公司(仓库二楼) ;22 ;292 ;2415 ;山东省 ;临沂市 ;费县 ;费城街道 ;南外环东转盘往东200米顺通快递有限公司(仓库二楼)
XDYSHC ;上海新仓 ;纪先生 ;13044121150 ;上海市上海市徐汇区徐家汇街道虹桥路616号A座 ;25 ;321 ;2706 ;上海市 ;上海市 ;徐汇区 ;徐家汇街道 ;虹桥路616号A座
XDYSHC ;上海新仓 ;纪先生 ;13044121150 ;上海市徐汇区徐家汇街道虹桥路616号A座 ;25 ;321 ;2706 ;上海市 ;上海市 ;徐汇区 ;徐家汇街道 ;虹桥路616号A座
XDYSZC ;深圳仓 ;峰峰 ;15343351331 ;广东省东莞市凤岗镇浸校塘东良巷逸乐轩E栋5号楼 ;6 ;79 ;732 ;广东省 ;东莞市 ;凤岗镇 ;凤岗街道 ;浸校塘东良巷逸乐轩E栋5号楼
XDYYWC ;义乌仓 ;小田 ;19058117371 ;浙江省金华市义乌市后宅街道金城高尔夫二期别墅区401栋 ;31 ;386 ;3409 ;浙江省 ;金华市 ;义乌市 ;后宅街道 ;金城高尔夫二期别墅区401栋
XDYFJSSC ;福建仓 ;小张 ;13799125513 ;福建省泉州市晋江市青阳街道中堡电商园一栋 ;4 ;58 ;568 ;福建省 ;泉州市 ;晋江市 ;青阳街道 ;中堡电商园一栋";
public static Dictionary<char, List<char>> dicChineseNumberChar = new Dictionary<char, List<char>>()
{
{ '1', new List<char> { '一', '壹' } },
{ '2', new List<char> { '二', '贰' } },
{ '3', new List<char> { '三', '叁' } },
{ '4', new List<char> { '四', '肆' } },
{ '5', new List<char> { '五', '伍' } },
{ '6', new List<char> { '六', '陆' } },
{ '7', new List<char> { '七', '柒' } },
{ '8', new List<char> { '八', '捌' } },
{ '9', new List<char> { '九', '玖' } },
{ '0', new List<char> { '零', '〇' } },
{ '一', new List<char> { '壹' } },
{ '二', new List<char> { '贰' } },
{ '三', new List<char> { '叁' } },
{ '四', new List<char> { '肆' } },
{ '五', new List<char> { '伍' } },
{ '六', new List<char> { '陆' } },
{ '七', new List<char> { '柒' } },
{ '八', new List<char> { '捌' } },
{ '九', new List<char> { '玖' } },
{ '零', new List<char> { '〇' } },
};
// public static string TransitWarehouseDataStrTraditional = @"
//XDYBJC ;北京仓 ;胡萍 ;18565773752 ;北京市順義區光明街道濱河小區七區一號樓 ;2 ;52 ;511 ;北京市 ;北京市 ;顺义区 ;光明街道 ;濱河小區七區一號樓一零八室
//XDYGZC ;广州仓 ;何外华 ;13826339849 ;廣州市增城區朱村街道育山一路六八號國際物流園 ;6 ;76 ;702 ;广东省 ;广州市 ;增城区 ;朱村街道 ;育山一路六八號國際物流園
//XDYWHC ;武汉2仓 ;杨先生 ;13044121071 ;湖北省武漢市江漢區民族街道沿江大道輪渡龍王廟碼頭 ;13 ;180 ;1546 ;湖北省 ;武汉市 ;江汉区 ;民族街道 ;沿江大道輪渡龍王廟碼頭
//XDYSHANDC ;山东2仓 ;鸿鹄小申 ;13044121239 ;山東省臨沂市費縣南外環東轉盤往東二零零米順通快遞有限公司(倉庫二樓) ;22 ;292 ;2415 ;山东省 ;临沂市 ;费县 ;費城街道 ;南外環東轉盤往東二零零米順通快遞有限公司(倉庫二樓)
//XDYSHC ;上海新仓 ;纪先生 ;13044121150 ;上海市徐匯區徐家匯街道虹橋路六一六號A座 ;25 ;321 ;2706 ;上海市 ;上海市 ;徐汇区 ;徐家匯街道 ;虹橋路六一六號A座
//XDYSZC ;深圳仓 ;峰峰 ;15343351331 ;廣東省東莞市鳳崗鎮浸校塘東良巷逸樂軒E棟五號樓 ;6 ;79 ;732 ;广东省 ;东莞市 ;凤岗镇 ;鳳崗街道 ;浸校塘東良巷逸樂軒E棟五號樓
//XDYYWC ;义乌仓 ;小田 ;19058117371 ;浙江省金华市义乌市後宅街道金城高爾夫二期別墅區四零一棟 ;31 ;386 ;3409 ;浙江省 ;金华市 ;义乌市 ;後宅街道 ;金城高爾夫二期別墅區四零一棟
//XDYFJSSC ;福建仓 ;小张 ;13799125513 ;福建省泉州市晋江市青陽街道中堡電商園一棟 ;4 ;58 ;568 ;福建省 ;泉州市 ;晋江市 ;青陽街道 ;中堡電商園一棟";
//XDYSHC ;上海新仓 ;纪先生 ;13044121150 ;上海市上海市徐汇区徐家汇街道虹桥路616号A座 ;25 ;321 ;2706 ;上海市 ;上海市 ;徐汇区 ;徐家汇街道 ;虹桥路616号A座
//XDYSHC ;上海新仓 ;纪先生 ;13044121150 ;上海市上海市普陀区真如镇街道真北路2653弄T区 ;25 ;321 ;2709 ;上海市 ;上海市 ;普陀区 ;真如镇街道 ;真北路2653弄T区
//XDYFJSSC 石狮仓 福建省/泉州市/晋江市青阳街道中堡电商园一栋
//XDYYWC ;义乌仓 ;小田 ;19058117371 ;浙江省金华市义乌市北苑街道西站大道妈妈商贸18号库39号楼誉达 ;31 ;386 ;3409 ;浙江省 ;金华市 ;义乌市 ;北苑街道 ;西站大道妈妈商贸18号库39号楼誉达
@@ -99,7 +137,7 @@ XDYFJSSC ;福建仓 ;小张 ;13799125513 ;福建省泉州市晋江市青
static List<TransitWarehouseParam> transitWarehouseList = null;
public static List<TransitWarehouseParam> TransitWarehouseList
public static List<TransitWarehouseParam> TransitWarehouseList
{
get
{
@@ -125,6 +163,7 @@ XDYFJSSC ;福建仓 ;小张 ;13799125513 ;福建省泉州市晋江市青
district_id = arr[7].Trim().ParseToInt(),
province_name = arr[8].Trim(),
city_name = arr[9].Trim(),
district_name = arr[10].Trim(),
};
transitWarehouseList.Add(tw);
}
@@ -136,5 +175,7 @@ XDYFJSSC ;福建仓 ;小张 ;13799125513 ;福建省泉州市晋江市青
{
}
}
}
static List<TransitWarehouseParam> transitWarehouseTList = null;
}
}
+31
View File
@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Util;
public class ChineseStringConverter
{
private const int LCMAP_SIMPLIFIED_CHINESE = 0x02000000;
private const int LCMAP_TRADITIONAL_CHINESE = 0x04000000;
[DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int LCMapString(int Locale, int dwMapFlags, string lpSrcStr, int cchSrc, [Out] string lpDestStr, int cchDest);
public static string ToSimplified(string source)
{
string target = new string(' ', source.Length);
LCMapString(0x0800, LCMAP_SIMPLIFIED_CHINESE, source, source.Length, target, source.Length);
return target;
}
public static string ToTraditional(string source)
{
string target = new string(' ', source.Length);
LCMapString(0x0800, LCMAP_TRADITIONAL_CHINESE, source, source.Length, target, source.Length);
return target;
}
}
+33 -3
View File
@@ -4,6 +4,7 @@ using AllBase.Model;
using AllBase.Model.Config;
using AllBase.Model.DBModel;
using AllBase.Model.Result;
using AllBase.Util;
using CefSharp;
using CefSharp.DevTools;
using CefSharp.DevTools.IO;
@@ -94,10 +95,38 @@ namespace TemuKJD.ToolForms
// (拍单后)回调函数,更新拍单余额
private Action updateBalanceAction = null;
string _txtBuyTransitWarehouseStr = "";
/// <summary>
/// 拍单中转地址
/// </summary>
string txtBuyTransitWarehouseStr = "";
string txtBuyTransitWarehouseStr
{
get { return _txtBuyTransitWarehouseStr; }
set
{
if (!string.IsNullOrEmpty(value) && BuyType == "transit")
{
//txtBuyTransitWarehouseRandomStr = value;
var numberDic = TransitWarehouseData.dicChineseNumberChar;
var txtBuyTransitWarehouseRandomStrTmp = txtBuyTransitWarehouseRandomStr = transitWarehouse.TransFullAddress + Randomx.GetId(1, 35) + Randomx.GetId(1, 9).ToString().PadLeft(2, '0') + "室";
if (BaseClass.Setting.SwitchEnablePddTransitTraditionalAddress == true)
{
for (int i = 0; i < 10 && txtBuyTransitWarehouseRandomStrTmp == txtBuyTransitWarehouseRandomStr; i++)
{
txtBuyTransitWarehouseRandomStrTmp = string.Join("", txtBuyTransitWarehouseRandomStrTmp.Select(c => Randomx.GetId(2) == 0 ? c.ToString() : ChineseStringConverter.ToTraditional(c.ToString())));
txtBuyTransitWarehouseRandomStrTmp = string.Join("", txtBuyTransitWarehouseRandomStrTmp.Select(c => (Randomx.GetId(2) == 0 || !numberDic.Keys.Contains(c)) ? c : numberDic[c][Randomx.GetId(numberDic[c].Count)]));
}
txtBuyTransitWarehouseRandomStr = txtBuyTransitWarehouseRandomStrTmp;
}
}
else
{
txtBuyTransitWarehouseRandomStr = value;
}
_txtBuyTransitWarehouseStr = value;
}
}
string txtBuyTransitWarehouseRandomStr = "";
bool IsChangeAddress = false;
bool HasChangeAddress = false;
@@ -377,7 +406,8 @@ namespace TemuKJD.ToolForms
jObj["province_id"] = transitWarehouse.province_id;
jObj["city_id"] = transitWarehouse.city_id;
jObj["district_id"] = transitWarehouse.district_id;
jObj["address"] = transitWarehouse.TransFullAddress + Randomx.GetId(1, 35) + Randomx.GetId(1, 9).ToString().PadLeft(2, '0') + "室" + txtSourceCode.Text;
//jObj["address"] = transitWarehouse.TransFullAddress + Randomx.GetId(1, 35) + Randomx.GetId(1, 9).ToString().PadLeft(2, '0') + "室" + txtSourceCode.Text;
jObj["address"] = txtBuyTransitWarehouseRandomStr + txtSourceCode.Text;
jObj["mobile"] = TransitWaybillHelper.MobileHead[Randomx.GetId(TransitWaybillHelper.MobileHead.Count)] + Randomx.GetNumber(8);
jObj["name"] = TransitWaybillHelper.LastName[Randomx.GetId(TransitWaybillHelper.LastName.Count)] + (Randomx.GetId(2) == 1 ? "先生" : "女士");
postData = JsonHelper.SerializeObject(jObj);
@@ -1029,7 +1059,7 @@ namespace TemuKJD.ToolForms
jsStr1 = @"(function() { var elements = document.getElementsByTagName('div');
for (i = elements.length - 1; i >= 0; i--){
var element = elements[i];
if (element.innerHTML.indexOf('" + txtBuyTransitWarehouseStr + @"') >= 0 && element.innerHTML.indexOf('" + txtSourceCode.Text.Trim() + @"') >= 0) {
if (element.innerHTML.indexOf('" + txtBuyTransitWarehouseRandomStr + @"') >= 0 && element.innerHTML.indexOf('" + txtSourceCode.Text.Trim() + @"') >= 0) {
element.click();
return 'success';
}