本地直发逻辑

This commit is contained in:
wule committed 2026-07-30 18:31:28 +08:00
1 parent ac0430f3f7
commit f00cdee502
19 files changed
+1590 -520

No files matched your search

+29
View File
@@ -460,6 +460,35 @@ namespace Work
}
}
}
// 拼多多区划
if (!FileBase.Exists("temp\\pdd_divisions_260729"))
{
if (GetHtml.DownloadFile(BaseClass.ServerUrl + "/Download/" + "pdd_divisions_260729.zip", "temp\\pdd_divisions_260729.dll" + ".bak"))
{
FileBase.Move("temp\\pdd_divisions_260729.dll" + ".bak", "temp\\pdd_divisions_260729.zip");
ZipFile.ExtractToDirectory(Path.Combine(Environment.CurrentDirectory, "temp\\pdd_divisions_260729.zip"), Path.Combine(Environment.CurrentDirectory, "temp"));
File.Delete(Path.Combine(Environment.CurrentDirectory, "temp\\pdd_divisions_260729.zip"));
}
}
if (1 == 1)
{
string filePath = Path.Combine(Environment.CurrentDirectory, "temp\\pdd_divisions_260729");
using (StreamReader sr = new StreamReader(filePath, System.Text.Encoding.UTF8))
{
try
{
string cateStr = sr.ReadToEnd().Trim();
GlobalConfig.PddDivisions.AddRange(JsonHelper.DeserializeJsonToList<PddDivision>(cateStr));
}
catch (Exception ex)
{
BaseMsgForm.ShowError("区划获取失败:" + ex.Message);
if (GlobalConfig.Divisions == null)
GlobalConfig.Divisions = new ConcurrentList<Division>();
}
}
}
}
/// <summary>
/// 执行CMD命令
+412 -180
View File
@@ -5,6 +5,7 @@ using AllBase.Model.DBModel;
using AllBase.Model.Result;
using CefSharp;
using CefSharp.DevTools.IO;
using CefSharp.DevTools.Profiler;
using CefSharp.WinForms;
using DevComponents.WinForms.Drawing;
@@ -25,6 +26,7 @@ using System.Linq;
using System.Runtime.InteropServices.ComTypes;
using System.Security.Policy;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
//using System.Web.Hosting;
@@ -33,6 +35,7 @@ using Work;
using Work._29Tools.BLL;
using Work._29Tools.CefTools;
using Work.BaseForms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
namespace TemuKJD.ToolForms
{
@@ -45,8 +48,14 @@ namespace TemuKJD.ToolForms
public bool IsFormLoad { get; set; } = false;
public bool ShowBuyMask { get; set; } = false;
/// <summary>
/// 直发direct 中转transit
/// </summary>
public string BuyType { get; set; } = "transit";
public int CloseAfterSecond { get; set; }
public string InitUrl = "";
public string BuyMapUrl = "";
private string shopCookieHead = "yangkeduo.com";
private string shopMainUrl = "https://mobile.yangkeduo.com/index.html";
private ChromiumWebBrowser cefWebBrowser = null;
@@ -81,6 +90,12 @@ namespace TemuKJD.ToolForms
private void PddBuyOrderForm_Load(object sender, EventArgs e)
{
if (this.BuyType == "direct" && pnlMap.Visible == false)
{
this.pnlDirectAddressAnalysis.Visible = true;
this.lblBuyAddress.Text = "拍单地址";
}
//splitContainer1.Dock = DockStyle.Fill;
this.Height = SystemInformation.WorkingArea.Height - 80;
this.CenterToScreen();
@@ -140,11 +155,15 @@ namespace TemuKJD.ToolForms
{
transitWarehouse = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransId == AbnormalTransitWarehouseOrderInfo.platform);
}
if (transitWarehouse != null)
if (transitWarehouse != null && this.BuyType == "transit")
{
cmbTransitWarehouse.Text = transitWarehouse?.TransName + " " + transitWarehouse?.TransDetailAddress;
txtBuyTransitWarehouse.Text = transitWarehouse?.TransDetailAddress;
}
else
{
txtBuyTransitWarehouse.Text = orderItem.ItemOrder.AddressStr;
}
}
pictureBox1.ImageLocation = orderItem.thumb_img;
@@ -298,18 +317,37 @@ namespace TemuKJD.ToolForms
//public Func<object, string, string, request, bool> BeforeResourceLoadEvent; // sender, requestUrl, postData, request, true(表示取消执行)
private bool RequestHandler_BeforeResourceLoad(object sender, string url, string postData, IRequest request)
{
if (url.StartsWith("https://mobile.yangkeduo.com/proxy/api/api/origenes/address_info") && chkAutoChangeWarehouseAddress.Checked && transitWarehouse != null)
if (url.StartsWith("https://mobile.yangkeduo.com/proxy/api/api/origenes/address_info"))
{
//var address = BaseRegex.GetStringJson(ref postData, "address");
JObject jObj = JsonHelper.JObjectParse(postData);
jObj["province_id"] = transitWarehouse.province_id;
jObj["city_id"] = transitWarehouse.city_id;
jObj["district_id"] = transitWarehouse.district_id;
jObj["address"] = transitWarehouse.TransDetailAddress + Randomx.GetId(1, 35) + Randomx.GetId(1, 9).ToString().PadLeft(2, '0') + "室" + txtSourceCode.Text;
jObj["mobile"] = WaybillHelper.MobileHead[Randomx.GetId(WaybillHelper.MobileHead.Count)] + Randomx.GetNumber(8);
jObj["name"] = WaybillHelper.LastName[Randomx.GetId(WaybillHelper.LastName.Count)] + (Randomx.GetId(2) == 1 ? "先生" : "女士");
postData = JsonHelper.SerializeObject(jObj);
request.PostData.Elements[0].Bytes = System.Text.Encoding.UTF8.GetBytes(postData);
if (chkAutoChangeWarehouseAddress.Checked && transitWarehouse != null && BuyType == "transit")
{
//var address = BaseRegex.GetStringJson(ref postData, "address");
JObject jObj = JsonHelper.JObjectParse(postData);
jObj["province_id"] = transitWarehouse.province_id;
jObj["city_id"] = transitWarehouse.city_id;
jObj["district_id"] = transitWarehouse.district_id;
jObj["address"] = transitWarehouse.TransDetailAddress + Randomx.GetId(1, 35) + Randomx.GetId(1, 9).ToString().PadLeft(2, '0') + "室" + txtSourceCode.Text;
jObj["mobile"] = WaybillHelper.MobileHead[Randomx.GetId(WaybillHelper.MobileHead.Count)] + Randomx.GetNumber(8);
jObj["name"] = WaybillHelper.LastName[Randomx.GetId(WaybillHelper.LastName.Count)] + (Randomx.GetId(2) == 1 ? "先生" : "女士");
postData = JsonHelper.SerializeObject(jObj);
request.PostData.Elements[0].Bytes = System.Text.Encoding.UTF8.GetBytes(postData);
}
else if (BuyType == "direct" && orderItem?.ItemOrder?.AddressStr.Contains("******") == false)
{
var dvProvince = GlobalConfig.PddDivisions.FirstOrDefault(d => d.name == orderItem.ItemOrder.province_name);
var dvCity = dvProvince.children.FirstOrDefault(d => d.name == orderItem.ItemOrder.city_name);
var dvCounty = dvCity.children.FirstOrDefault(d => d.name == orderItem.ItemOrder.county_name);
JObject jObj = JsonHelper.JObjectParse(postData);
jObj["province_id"] = dvProvince.pdd_region_id;
jObj["city_id"] = dvCity.pdd_region_id;
jObj["district_id"] = dvCounty.pdd_region_id;
jObj["address"] = orderItem.ItemOrder.detail_info;
jObj["mobile"] = orderItem.ItemOrder.tel_number;
jObj["name"] = orderItem.ItemOrder.user_name;
postData = JsonHelper.SerializeObject(jObj);
request.PostData.Elements[0].Bytes = System.Text.Encoding.UTF8.GetBytes(postData);
}
HasChangeAddress = true;
}
@@ -443,14 +481,20 @@ namespace TemuKJD.ToolForms
Invoke(new Action(() =>
{
// 自动修改收货地址为中转仓
if (BuyType == "direct" && txtBuyTransitWarehouse.Text.Contains("******"))
{
BaseMsgForm.ShowError("请手动输入合法地址信息再拍单!");
return;
}
// 自动修改收货地址为中转仓(或直发)
var transit = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransDetailAddress == txtBuyTransitWarehouse.Text.Trim());
if (transit == null)
if (transit == null && BuyType == "transit")
{
BaseMsgForm.ShowError("仓库已发生改变,请点击重新关联商品,选择仓库后重新拍单!");
return;
}
if (transit != null && IsChangeAddress == false && HasChangeAddress == false)
if ((transit != null || BuyType == "direct") && IsChangeAddress == false && HasChangeAddress == false)
{
if (IsSoldOut)
{
@@ -463,21 +507,24 @@ namespace TemuKJD.ToolForms
{
IsChangeAddress = true;
Thread.Sleep(100);
if(AbnormalTransitWarehouseOrderInfo != null)
if (BuyType == "transit")
{
Invoke(new Action(() => { txtSourceCode.Text = AbnormalTransitWarehouseOrderInfo.random_code; }));
}
else
{
var sourceCodeRst = GetSourceCode(transit);
if (sourceCodeRst.Contains("失败"))
if (AbnormalTransitWarehouseOrderInfo != null)
{
Invoke(new Action(() =>
Invoke(new Action(() => { txtSourceCode.Text = AbnormalTransitWarehouseOrderInfo.random_code; }));
}
else
{
var sourceCodeRst = GetSourceCode(transit);
if (sourceCodeRst.Contains("失败"))
{
this.cefWebBrowser.Visible = false;
BaseMsgForm.ShowError(sourceCodeRst);
}));
return;
Invoke(new Action(() =>
{
this.cefWebBrowser.Visible = false;
BaseMsgForm.ShowError(sourceCodeRst);
}));
return;
}
}
}
ChangeAddress(transit);
@@ -670,6 +717,18 @@ namespace TemuKJD.ToolForms
}
}
})();";
if (BuyType == "direct")
{
jsStr1 = @"(function() { var elements = document.getElementsByTagName('div');
for (i = elements.length - 1; i >= 0; i--){
var element = elements[i];
if (element.innerHTML.indexOf('" + orderItem?.ItemOrder?.detail_info + @"') >= 0) {
element.click();
return 'success';
}
}
})();";
}
ts1 = client.Runtime.EvaluateAsync(jsStr1, null, true, null, null, true, null, true);
for (int i = 0; i < 20; i++)
{
@@ -853,7 +912,7 @@ namespace TemuKJD.ToolForms
private async void btnManualUpdateBuyOrder_Click(object sender, EventArgs e)
{
if (txtSourceCode.Text.Trim().Length != 6)
if (BuyType == "transit" && txtSourceCode.Text.Trim().Length != 6)
{
BaseMsgForm.ShowError("溯源码长度错误!");
return;
@@ -864,18 +923,18 @@ namespace TemuKJD.ToolForms
BaseMsgForm.ShowError("页面未加载!");
return;
}
var sourceCode = txtSourceCode.Text.Trim();
var jsStr1 = @"(function() { var elements = document.getElementsByTagName('div');
for (i = elements.length - 1; i >= 0; i--){
var element = elements[i];
if (element.innerHTML.indexOf('" + sourceCode + @"') >= 0) {
return 'success';
}
}
return '';
})();";
var ts1 = client.Runtime.EvaluateAsync(jsStr1, null, true, null, null, true, null, true);
await ts1;
//var sourceCode = txtSourceCode.Text.Trim();
//var jsStr1 = @"(function() { var elements = document.getElementsByTagName('div');
// for (i = elements.length - 1; i >= 0; i--){
// var element = elements[i];
// if (element.innerHTML.indexOf('" + sourceCode + @"') >= 0) {
// return 'success';
// }
// }
// return '';
// })();";
//var ts1 = client.Runtime.EvaluateAsync(jsStr1, null, true, null, null, true, null, true);
//await ts1;
// 付款页面没法匹配,暂时注释
//if (ts1.Result?.Result?.Value.ParseToString() != "success")
//{
@@ -883,14 +942,13 @@ namespace TemuKJD.ToolForms
// return;
//}
if (string.IsNullOrEmpty(txtBuyTransitWarehouse.Text.Trim()))
if (BuyType == "transit" && string.IsNullOrEmpty(txtBuyTransitWarehouse.Text.Trim()))
{
BaseMsgForm.ShowError("缺少中转地址,请重新绑定商品并选择仓库地址");
return;
}
var transit = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransDetailAddress == txtBuyTransitWarehouse.Text.Trim());
if (transit == null)
if (BuyType == "transit" && transit == null)
{
BaseMsgForm.ShowError("中转地址对应的中转仓不存在,请核对");
return;
@@ -908,164 +966,274 @@ namespace TemuKJD.ToolForms
btnManualUpdateBuyOrder.Enabled = false;
#region 正常拍单
if (AbnormalTransitWarehouseOrderInfo == null)
if (BuyType == "transit")
{
JObject body = new JObject();
body["orderNo"] = orderItem.order_id;
body["orderSkuId"] = orderItem.sku_id;
body["outOrderNo"] = txtBuyOrderId.Text.Trim();
body["outAmount"] = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt() + "";
body["buyerAccount"] = buyer.buyer_nick; // 买手昵称
body["purchaserNote"] = BaseClass.NickName; // 购买软件账户备注
body["express1Company"] = ""; // 物流公司编号
body["express1Waybill"] = ""; // 物流编号
body["platform"] = transit.TransId; // 中转仓ID
body["orderPlatformCode"] = "WEISHOP";
body["randomCode"] = txtSourceCode.Text.Trim();
if (GlobalConfig.BuyConfig.IsUseAppBalance)
#region 正常中转拍单
if (AbnormalTransitWarehouseOrderInfo == null)
{
body["userName"] = BaseClass.UserName; // 软件端用户名
body["purchaserNote"] = BaseClass.UserName + "-" + BaseClass.NickName; // 购买软件账户备注
body["postage"] = (BaseClass.PostagePerOrder * 100).ParseToInt() + "";
}
var url = "https://po.e57.cn/prod-api/api/oms-api/externalProcurement/saveOrUpdate";
var dataStr = JsonHelper.SerializeObject(body);
//dataStr = "{\"orderNo\":\"3737339733954942720\",\"outOrderNo\":\"2606846854564\",\"buyerAccount\":\"测试\",\"outAmount\":\"2000\",\"purchaserNote\":\"测试\",\"express1Company\":\"\"" +
// ",\"express1Waybill\":\"\",\"platform\":\"XDYSHC\",\"orderPlatformCode\":\"WEISHOP\"}";
var exportRst = HttpResponseWXBLL.e57PostResponse(url, dataStr, "");
//<AjaxResult><msg>保存成功</msg><code>200</code></AjaxResult>
//<AjaxResult><msg>订单不存在:373733973395494272</msg><code>500</code></AjaxResult>
if (!exportRst.ParseToString().Contains("<code>200</code>"))
{
string msg = "";
string code = "";
try
JObject body = new JObject();
body["orderNo"] = orderItem.order_id;
body["orderSkuId"] = orderItem.sku_id;
body["outOrderNo"] = txtBuyOrderId.Text.Trim();
body["outAmount"] = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt() + "";
body["buyerAccount"] = buyer.buyer_nick; // 买手昵称
body["purchaserNote"] = BaseClass.NickName; // 购买软件账户备注
body["express1Company"] = ""; // 物流公司编号
body["express1Waybill"] = ""; // 物流编号
body["platform"] = transit.TransId; // 中转仓ID
body["orderPlatformCode"] = "WEISHOP";
body["randomCode"] = txtSourceCode.Text.Trim();
if (GlobalConfig.BuyConfig.IsUseAppBalance)
{
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
xmlDoc.LoadXml(exportRst);
code = xmlDoc["AjaxResult"]["code"].InnerText;
msg = xmlDoc["AjaxResult"]["msg"].InnerText;
body["userName"] = BaseClass.UserName; // 软件端用户名
body["purchaserNote"] = BaseClass.UserName + "-" + BaseClass.NickName; // 购买软件账户备注
body["postage"] = (BaseClass.PostagePerOrder * 100).ParseToInt() + "";
}
catch
var url = "https://po.e57.cn/prod-api/api/oms-api/externalProcurement/saveOrUpdate";
var dataStr = JsonHelper.SerializeObject(body);
//dataStr = "{\"orderNo\":\"3737339733954942720\",\"outOrderNo\":\"2606846854564\",\"buyerAccount\":\"测试\",\"outAmount\":\"2000\",\"purchaserNote\":\"测试\",\"express1Company\":\"\"" +
// ",\"express1Waybill\":\"\",\"platform\":\"XDYSHC\",\"orderPlatformCode\":\"WEISHOP\"}";
var exportRst = HttpResponseWXBLL.e57PostResponse(url, dataStr, "");
//<AjaxResult><msg>保存成功</msg><code>200</code></AjaxResult>
//<AjaxResult><msg>订单不存在:373733973395494272</msg><code>500</code></AjaxResult>
if (!exportRst.ParseToString().Contains("<code>200</code>"))
{
msg = exportRst.ParseToString();
string msg = "";
string code = "";
try
{
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
xmlDoc.LoadXml(exportRst);
code = xmlDoc["AjaxResult"]["code"].InnerText;
msg = xmlDoc["AjaxResult"]["msg"].InnerText;
}
catch
{
msg = exportRst.ParseToString();
}
BaseMsgForm.ShowError("拍单保存失败,服务端返回 " + msg, "拍单信息保存失败");
btnManualUpdateBuyOrder.Enabled = true;
return;
}
BaseMsgForm.ShowError("拍单保存失败,服务端返回 " + msg, "拍单信息保存失败");
btnManualUpdateBuyOrder.Enabled = true;
return;
if (updateBalanceAction != null)
updateBalanceAction();
orderItem.ItemTransitOrders.Insert(0, new oms_wei_external_procurement_log_info()
{
buyer_account = buyer.buyer_nick,
id = 0,
order_no = orderItem.order_id,
order_sku_id = orderItem.sku_id,
out_amount = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt(),
out_order_no = txtBuyOrderId.Text.Trim(),
purchaser_note = body["purchaserNote"].ParseToString(),
});
orderItem.SetOrderItemTextProperty();
// 利润计算重置为最小值,控件Resource更新时将计算利润
orderItem.ProfitCount = decimal.MinValue;
var order = orderItem?.ItemOrder;
if (filterOrderAction != null && order != null)
{
filterOrderAction(order, true);
}
//// 前一天的订单直接提前取号
//if (DateTime.Now.Date > BaseClass.StampToDateTime(order.create_time).Date)
//{
// JObject data = new JObject();
// data["outOrderNo"] = txtBuyOrderId.Text.Trim();
// //data2["outOrderNo"] = orderItem.ItemTransitOrder.order_code;
// data["warehouseCode"] = transit.TransId; // 中转仓仓库对应编码 XDYSZC XDYYWC ...
// //data["warehouseCode"] = txtBuyOrderId.Text.Trim(); // 中转仓仓库对应编码
// data["platform"] = "WEISHOP";
// var getVirtualTicketUrl = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/order/virtual/create";
// var getVirtualTicketDataStr = JsonHelper.SerializeObject(data);
// var getVirtualTicketRst = HttpResponseWXBLL.e57PostResponse(getVirtualTicketUrl, getVirtualTicketDataStr, "");
// if (!getVirtualTicketRst.ParseToString().Contains("<code>200</code>") && !getVirtualTicketRst.ParseToString().Contains("<code>0</code>"))
// {
// string msg = "";
// string code = "";
// try
// {
// System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
// xmlDoc.LoadXml(getVirtualTicketRst);
// code = xmlDoc["AjaxResult"]["code"].InnerText;
// msg = xmlDoc["AjaxResult"]["msg"].InnerText;
// }
// catch
// {
// msg = getVirtualTicketRst.ParseToString();
// }
// BaseMsgForm.ShowError("拍单信息保存成功,接收到服务端传递的错误消息:" + msg, "订单提前取号失败");
// btnManualUpdateBuyOrder.Enabled = true;
// return;
// }
//}
}
#endregion
if (updateBalanceAction != null)
updateBalanceAction();
#region 秒退异常单中转重拍
if (AbnormalTransitWarehouseOrderInfo != null)
{
var url = BaseClass.Build29WxObjString("order/wx_update_abnormal_transit_order");
var data = UserLogin.GetSignaturex();
data += "&out_order_no=" + txtBuyOrderId.Text.Trim();
data += "&order_no=" + orderItem.order_id;
data += "&order_sku_id=" + orderItem.sku_id;
data += "&buyer_account=" + buyer.buyer_nick;
data += "&out_amount=" + (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt() + "";
data += "&purchaser_note=" + BaseClass.UserName + "-" + BaseClass.NickName; // 购买软件账户备注
data += "&refund_status=" + "";
data += "&old_out_order_no=" + AbnormalTransitWarehouseOrderInfo.out_order_no;
data += "&old_order_no=" + AbnormalTransitWarehouseOrderInfo.order_no;
data += "&old_order_sku_id=" + AbnormalTransitWarehouseOrderInfo.order_sku_id;
data += "&old_buyer_account=" + AbnormalTransitWarehouseOrderInfo.buyer_account;
data += "&old_out_amount=" + AbnormalTransitWarehouseOrderInfo.out_amount;
data += "&old_purchaser_note=" + AbnormalTransitWarehouseOrderInfo.purchaser_note;
data += "&old_refund_status=" + AbnormalTransitWarehouseOrderInfo.refund_status;
data += "&order_code=" + AbnormalTransitWarehouseOrderInfo.order_code;
var html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
{
var msg = BaseRegex.GetStringJsonByRegs(ref html, html, "msg");
BaseMsgForm.ShowError("异常订单重拍保存失败");
btnManualUpdateBuyOrder.Enabled = true;
return;
}
orderItem.ItemTransitOrders.Insert(0, new oms_wei_external_procurement_log_info()
{
buyer_account = buyer.buyer_nick,
id = 0,
order_no = orderItem.order_id,
order_sku_id = orderItem.sku_id,
out_amount = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt(),
out_order_no = txtBuyOrderId.Text.Trim(),
purchaser_note = body["purchaserNote"].ParseToString(),
});
orderItem.SetOrderItemTextProperty();
// 利润计算重置为最小值,控件Resource更新时将计算利润
orderItem.ProfitCount = decimal.MinValue;
var order = orderItem?.ItemOrder;
if (filterOrderAction != null && order != null)
{
filterOrderAction(order, true);
if (orderItem.ItemTransitOrder != null)
{
orderItem.ItemTransitOrder.buyer_account = buyer.buyer_nick;
orderItem.ItemTransitOrder.id = 0;
orderItem.ItemTransitOrder.order_no = orderItem.order_id;
orderItem.ItemTransitOrder.order_sku_id = orderItem.sku_id;
orderItem.ItemTransitOrder.out_amount = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt();
orderItem.ItemTransitOrder.out_order_no = txtBuyOrderId.Text.Trim();
orderItem.ItemTransitOrder.purchaser_note = BaseClass.UserName + "-" + BaseClass.NickName;
orderItem.ItemTransitOrder.refund_status = "";
}
orderItem.SetOrderItemTextProperty();
// 利润计算重置为最小值,控件Resource更新时将计算利润
orderItem.ProfitCount = decimal.MinValue;
var order = orderItem?.ItemOrder;
if (filterOrderAction != null && order != null)
{
filterOrderAction(order, true);
}
}
#endregion
//// 前一天的订单直接提前取号
//if (DateTime.Now.Date > BaseClass.StampToDateTime(order.create_time).Date)
//{
// JObject data = new JObject();
// data["outOrderNo"] = txtBuyOrderId.Text.Trim();
// //data2["outOrderNo"] = orderItem.ItemTransitOrder.order_code;
// data["warehouseCode"] = transit.TransId; // 中转仓仓库对应编码 XDYSZC XDYYWC ...
// //data["warehouseCode"] = txtBuyOrderId.Text.Trim(); // 中转仓仓库对应编码
// data["platform"] = "WEISHOP";
// var getVirtualTicketUrl = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/order/virtual/create";
// var getVirtualTicketDataStr = JsonHelper.SerializeObject(data);
// var getVirtualTicketRst = HttpResponseWXBLL.e57PostResponse(getVirtualTicketUrl, getVirtualTicketDataStr, "");
// if (!getVirtualTicketRst.ParseToString().Contains("<code>200</code>") && !getVirtualTicketRst.ParseToString().Contains("<code>0</code>"))
// {
// string msg = "";
// string code = "";
// try
// {
// System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
// xmlDoc.LoadXml(getVirtualTicketRst);
// code = xmlDoc["AjaxResult"]["code"].InnerText;
// msg = xmlDoc["AjaxResult"]["msg"].InnerText;
// }
// catch
// {
// msg = getVirtualTicketRst.ParseToString();
// }
// BaseMsgForm.ShowError("拍单信息保存成功,接收到服务端传递的错误消息:" + msg, "订单提前取号失败");
// btnManualUpdateBuyOrder.Enabled = true;
// return;
// }
//}
BaseMsgForm.ShowInfo("拍单信息保存成功");
}
#endregion
#region 异常单重拍
if (AbnormalTransitWarehouseOrderInfo != null)
if (BuyType == "direct")
{
var url = BaseClass.Build29WxObjString("order/wx_update_abnormal_transit_order");
#region 直发拍单
var url = BaseClass.Build29WxObjString("order/wx_get_order_item_ext_info");
var data = UserLogin.GetSignaturex();
data += "&out_order_no=" + txtBuyOrderId.Text.Trim();
data += "&order_no=" + orderItem.order_id;
data += "&order_sku_id=" + orderItem.sku_id;
data += "&buyer_account=" + buyer.buyer_nick;
data += "&out_amount=" + (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt() + "";
data += "&purchaser_note=" + BaseClass.UserName + "-" + BaseClass.NickName; // 购买软件账户备注
data += "&refund_status=" + "";
data += "&old_out_order_no=" + AbnormalTransitWarehouseOrderInfo.out_order_no;
data += "&old_order_no=" + AbnormalTransitWarehouseOrderInfo.order_no;
data += "&old_order_sku_id=" + AbnormalTransitWarehouseOrderInfo.order_sku_id;
data += "&old_buyer_account=" + AbnormalTransitWarehouseOrderInfo.buyer_account;
data += "&old_out_amount=" + AbnormalTransitWarehouseOrderInfo.out_amount;
data += "&old_purchaser_note=" + AbnormalTransitWarehouseOrderInfo.purchaser_note;
data += "&old_refund_status=" + AbnormalTransitWarehouseOrderInfo.refund_status;
data += "&order_code=" + AbnormalTransitWarehouseOrderInfo.order_code;
data += "&wx_order_id_in=" + orderItem.order_id;
data += "&wx_sku_id_in=" + orderItem.sku_id;
var html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
if (!html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (!html.Contains("\"code\":200"))
{
var msg = BaseRegex.GetStringJsonByRegs(ref html, html, "msg");
BaseMsgForm.ShowError("异常订单重拍保存失败");
btnManualUpdateBuyOrder.Enabled = true;
BaseMsgForm.ShowError("直发拍单信息保存失败 " + BaseRegex.GetStringJson(ref html, "msg"));
return;
}
var existOrderExtList = JsonHelper.DeserializeJsonToList<order_item_ext>(JsonHelper.JObjectParse(html)["data"].ParseToString());
order_item_ext orderExt = new order_item_ext()
{
order_id = orderItem.order_id,
sku_id = orderItem.sku_id,
out_order_id = txtBuyOrderId.Text.Trim(),
shop_app_id = orderItem.Shop.ShopId,
shop_name = orderItem.Shop.ShopAccount,
buy_type = "直发",
};
var url1 = BaseClass.Build29WxObjString("order/wx_add_order_item_ext_info");
if (existOrderExtList.Any(eoe => eoe.order_id == orderExt.order_id && eoe.sku_id == orderExt.sku_id))
url1 = BaseClass.Build29WxObjString("order/wx_mdy_order_item_ext_info");
var data1 = UserLogin.GetSignaturex();
data1 += "&wx_order_id=" + orderExt.order_id;
data1 += "&wx_sku_id=" + orderExt.sku_id;
data1 += "&out_order_id=" + orderExt.out_order_id;
data1 += "&shop_app_id=" + orderExt.shop_app_id;
data1 += "&shop_name=" + orderExt.shop_name;
data1 += "&buy_type=" + orderExt.buy_type;
var html1 = GetHtml.PostUtf8(url1, data1);
if (string.IsNullOrEmpty(html1) || !html1.Contains("\"code\":200"))
{
BaseMsgForm.ShowError("直发拍单信息保存失败 " + BaseRegex.GetStringJson(ref html, "msg"));
return;
}
if (orderItem.ItemTransitOrder != null)
{
orderItem.ItemTransitOrder.buyer_account = buyer.buyer_nick;
orderItem.ItemTransitOrder.id = 0;
orderItem.ItemTransitOrder.order_no = orderItem.order_id;
orderItem.ItemTransitOrder.order_sku_id = orderItem.sku_id;
orderItem.ItemTransitOrder.out_amount = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt();
orderItem.ItemTransitOrder.out_order_no = txtBuyOrderId.Text.Trim();
orderItem.ItemTransitOrder.purchaser_note = BaseClass.UserName + "-" + BaseClass.NickName;
orderItem.ItemTransitOrder.refund_status = "";
}
orderItem.SetOrderItemTextProperty();
// 利润计算重置为最小值,控件Resource更新时将计算利润
orderItem.ProfitCount = decimal.MinValue;
var order = orderItem?.ItemOrder;
if (filterOrderAction != null && order != null)
{
filterOrderAction(order, true);
}
}
#endregion
JObject obj = new JObject();
obj["platform"] = "WEISHOP";
obj["outAmount"] = (txtBuyPrice.Text.ParseToDecimal() * 100).ParseToInt() + "";
obj["outAccount"] = buyer.buyer_name;
obj["orderId"] = orderItem.order_id;
obj["outOrderNo"] = txtBuyOrderId.Text.Trim();
//if (!order.outExpressCompanyCode.IsNullOrEmpty() && !order.tracking_number.IsNullOrEmpty())
//{
// obj["outExpressCompany"] = order.outExpressCompanyCode;
// obj["outExpressNo"] = order.tracking_number;
//}
var dataStr = JsonHelper.SerializeObject(obj);
url = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/bind/v2";
//成功 "<ResultVo><code>0</code><msg>SUCCESS</msg><data/><totalRecords/></ResultVo>"
//<AjaxResult><msg>更新微信外采订单状态成功</msg><code>1</code></AjaxResult>
//失败 已存在 <ResultVo><code>1505</code><msg>调用微信接口更新物流信息失败: 非法参数, 同运单号拦截 rid: 69d8ab9c-22baa3b1-67de0d95</msg><data/><totalRecords/></ResultVo>
var exportRst = HttpResponseWXBLL.e57PostResponse(url, dataStr, "");
var code = BaseRegex.GetStringXml(ref exportRst, "code");
var msg = BaseRegex.GetStringXml(ref exportRst, "msg");
BaseMsgForm.ShowInfo("拍单信息保存成功");
if (code == "0" || code == "1")
{
//var sendStatusTmp = string.IsNullOrEmpty(data) ? msg : data;
//order.sendStatus = sendStatusTmp;
//if (code == "0" && !order.sendStatus.Contains("微信发货成功"))
// order.sendStatus = ("微信发货成功 " + sendStatusTmp).Trim();
//if (code == "1" && !order.sendStatus.Contains("接收成功"))
// order.sendStatus = ("接收成功 " + sendStatusTmp).Trim();
//// 处理特殊情况 如未发货或退货订单
////if (order.sendStatus == "处理完成" || order.sendStatus == "快递公司和快递单号必须同时提供或同时为空")
//// order.sendStatus = "已发送完成";
//if (order.order_status_prompt.Contains("待发货")) // 更新微信外采订单状态成功
// order.sendStatus = "已发送待发货订单";
//if (order.after_sales != null)
// order.sendStatus = "已发送售后订单 " + sendStatusTmp;
//NaiBa.Util.Helper.ConfigHelper.SaveConfig("other_buyer_order_list", lstOtherBuyerOrderInfoLite);
// 利润计算重置为最小值,控件Resource更新时将计算利润
orderItem.ProfitCount = decimal.MinValue;
var order = orderItem?.ItemOrder;
if (filterOrderAction != null && order != null)
{
order.out_account = buyer.buyer_id;
order.out_express_company = "OTHER";
order.out_order_no = txtBuyOrderId.Text.Trim();
orderItem.SetOrderItemTextProperty();
order.SetOrderTextProperty();
filterOrderAction(order, true);
}
BaseMsgForm.ShowInfo("拍单信息保存成功");
}
else
{
//order.sendStatus = "发送失败 " + (string.IsNullOrEmpty(msg) ? data : msg);
//NaiBa.Util.Helper.ConfigHelper.SaveConfig("other_buyer_order_list", lstOtherBuyerOrderInfoLite);
BaseMsgForm.ShowError("直发拍单保存失败,服务端返回 " + msg, "拍单信息保存失败");
return;
}
#endregion
}
this.Close();
}
@@ -1115,5 +1283,69 @@ namespace TemuKJD.ToolForms
NaiBa.Util.Helper.ConfigHelper.SaveConfig("buy_config_260708", GlobalConfig.BuyConfig);
}
}
private void btnAnalysis_Click(object sender, EventArgs e)
{
var order = this.orderItem?.ItemOrder;
if (order == null)
return;
var txt = txtDirectAddress.Text.Trim();
txt = txt.Replace("\r", "").Replace("\n", "");
// 定义座机号的正则表达式
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);
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))
{
this.orderItem.ItemOrder.tel_number = phone;
}
var province = GlobalConfig.Divisions.FirstOrDefault(d => txt.Contains(d.name));
if (province == null)
return;
this.orderItem.ItemOrder.province_name = province.name;
var city = province.children.FirstOrDefault(c => txt.Contains(c.name));
if (city == null)
return;
this.orderItem.ItemOrder.city_name = city.name;
var county = city.children.FirstOrDefault(c => txt.Contains(c.name));
if (county == null)
return;
this.orderItem.ItemOrder.county_name = 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.orderItem.ItemOrder.user_name = tArr.FirstOrDefault();
this.orderItem.ItemOrder.detail_info = string.Join("", tArr).Replace(this.orderItem.ItemOrder.user_name, "").Trim(',',',');
order.AddressStr = order.user_name + "," + order.tel_number + "," + order.province_name + order.city_name + order.county_name + order.detail_info;
this.txtBuyTransitWarehouse.Text = this.orderItem.ItemOrder.AddressStr;
Task.Run(() =>
{
ChangeAddress(null);
});
}
}
}
+80 -12
View File
@@ -84,6 +84,10 @@
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.txtAddress = new System.Windows.Forms.TextBox();
this.panel1 = new System.Windows.Forms.Panel();
this.pnlDirectAddressAnalysis = new System.Windows.Forms.Panel();
this.btnAnalysis = new DevComponents.DotNetBar.PanelEx();
this.label25 = new System.Windows.Forms.Label();
this.txtDirectAddress = new System.Windows.Forms.TextBox();
this.chkUseAppBalance = new Work.UserComponents.UcCheckBox(this.components);
this.txtShopName = new System.Windows.Forms.TextBox();
this.label27 = new System.Windows.Forms.Label();
@@ -93,7 +97,7 @@
this.label28 = new System.Windows.Forms.Label();
this.txtSourceCode = new System.Windows.Forms.TextBox();
this.btnReMap = new DevComponents.DotNetBar.PanelEx();
this.label25 = new System.Windows.Forms.Label();
this.lblBuyAddress = new System.Windows.Forms.Label();
this.txtBuyTransitWarehouse = new System.Windows.Forms.TextBox();
this.label29 = new System.Windows.Forms.Label();
this.pnlMap = new System.Windows.Forms.Panel();
@@ -109,6 +113,7 @@
this.splitContainer2.Panel2.SuspendLayout();
this.splitContainer2.SuspendLayout();
this.panel1.SuspendLayout();
this.pnlDirectAddressAnalysis.SuspendLayout();
this.pnlBuy.SuspendLayout();
this.pnlMap.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
@@ -742,13 +747,14 @@
//
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel1.Controls.Add(this.pnlMap);
this.panel1.Controls.Add(this.pnlDirectAddressAnalysis);
this.panel1.Controls.Add(this.chkUseAppBalance);
this.panel1.Controls.Add(this.txtShopName);
this.panel1.Controls.Add(this.label27);
this.panel1.Controls.Add(this.label26);
this.panel1.Controls.Add(this.txtOrderId);
this.panel1.Controls.Add(this.pnlBuy);
this.panel1.Controls.Add(this.pnlMap);
this.panel1.Controls.Add(this.chkAutoChangeWarehouseAddress);
this.panel1.Controls.Add(this.pictureBox1);
this.panel1.Controls.Add(this.txtShopOrderItemPrice);
@@ -773,6 +779,62 @@
this.panel1.Size = new System.Drawing.Size(487, 730);
this.panel1.TabIndex = 0;
//
// pnlDirectAddressAnalysis
//
this.pnlDirectAddressAnalysis.Controls.Add(this.btnAnalysis);
this.pnlDirectAddressAnalysis.Controls.Add(this.label25);
this.pnlDirectAddressAnalysis.Controls.Add(this.txtDirectAddress);
this.pnlDirectAddressAnalysis.Location = new System.Drawing.Point(12, 520);
this.pnlDirectAddressAnalysis.Name = "pnlDirectAddressAnalysis";
this.pnlDirectAddressAnalysis.Size = new System.Drawing.Size(468, 61);
this.pnlDirectAddressAnalysis.TabIndex = 880;
this.pnlDirectAddressAnalysis.Visible = false;
//
// btnAnalysis
//
this.btnAnalysis.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnAnalysis.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnAnalysis.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAnalysis.DisabledBackColor = System.Drawing.Color.Empty;
this.btnAnalysis.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnAnalysis.Location = new System.Drawing.Point(390, 6);
this.btnAnalysis.Name = "btnAnalysis";
this.btnAnalysis.Size = new System.Drawing.Size(73, 23);
this.btnAnalysis.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnAnalysis.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(152)))), ((int)(((byte)(99)))), ((int)(((byte)(143)))));
this.btnAnalysis.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(152)))), ((int)(((byte)(99)))), ((int)(((byte)(143)))));
this.btnAnalysis.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnAnalysis.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnAnalysis.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnAnalysis.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnAnalysis.Style.GradientAngle = 90;
this.btnAnalysis.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnAnalysis.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(83)))), ((int)(((byte)(147)))));
this.btnAnalysis.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(83)))), ((int)(((byte)(147)))));
this.btnAnalysis.TabIndex = 883;
this.btnAnalysis.Text = "识别并替换";
this.btnAnalysis.Click += new System.EventHandler(this.btnAnalysis_Click);
//
// label25
//
this.label25.AutoSize = true;
this.label25.Location = new System.Drawing.Point(17, 8);
this.label25.Name = "label25";
this.label25.Size = new System.Drawing.Size(56, 17);
this.label25.TabIndex = 879;
this.label25.Text = "收件地址";
//
// txtDirectAddress
//
this.txtDirectAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtDirectAddress.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtDirectAddress.Location = new System.Drawing.Point(75, 5);
this.txtDirectAddress.Multiline = true;
this.txtDirectAddress.Name = "txtDirectAddress";
this.txtDirectAddress.Size = new System.Drawing.Size(311, 54);
this.txtDirectAddress.TabIndex = 878;
//
// chkUseAppBalance
//
this.chkUseAppBalance.AutoSize = true;
@@ -833,7 +895,7 @@
this.pnlBuy.Controls.Add(this.label28);
this.pnlBuy.Controls.Add(this.txtSourceCode);
this.pnlBuy.Controls.Add(this.btnReMap);
this.pnlBuy.Controls.Add(this.label25);
this.pnlBuy.Controls.Add(this.lblBuyAddress);
this.pnlBuy.Controls.Add(this.txtBuyTransitWarehouse);
this.pnlBuy.Controls.Add(this.txtBuySkuName);
this.pnlBuy.Controls.Add(this.label6);
@@ -902,14 +964,14 @@
this.btnReMap.Text = "重新关联商品";
this.btnReMap.Click += new System.EventHandler(this.btnReMap_Click);
//
// label25
// lblBuyAddress
//
this.label25.AutoSize = true;
this.label25.Location = new System.Drawing.Point(18, 176);
this.label25.Name = "label25";
this.label25.Size = new System.Drawing.Size(56, 17);
this.label25.TabIndex = 869;
this.label25.Text = "中转地址";
this.lblBuyAddress.AutoSize = true;
this.lblBuyAddress.Location = new System.Drawing.Point(18, 176);
this.lblBuyAddress.Name = "lblBuyAddress";
this.lblBuyAddress.Size = new System.Drawing.Size(56, 17);
this.lblBuyAddress.TabIndex = 869;
this.lblBuyAddress.Text = "中转地址";
//
// txtBuyTransitWarehouse
//
@@ -950,7 +1012,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, 521);
this.pnlMap.Location = new System.Drawing.Point(12, 525);
this.pnlMap.Name = "pnlMap";
this.pnlMap.Size = new System.Drawing.Size(468, 203);
this.pnlMap.TabIndex = 871;
@@ -1006,6 +1068,8 @@
this.splitContainer2.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.pnlDirectAddressAnalysis.ResumeLayout(false);
this.pnlDirectAddressAnalysis.PerformLayout();
this.pnlBuy.ResumeLayout(false);
this.pnlBuy.PerformLayout();
this.pnlMap.ResumeLayout(false);
@@ -1072,7 +1136,7 @@
private Work.UserComponents.UcCheckBox chkAutoChangeWarehouseAddress;
private System.Windows.Forms.Panel panel1;
private DevComponents.DotNetBar.PanelEx btnJumpOrderList;
private System.Windows.Forms.Label label25;
private System.Windows.Forms.Label lblBuyAddress;
private System.Windows.Forms.TextBox txtBuyTransitWarehouse;
public System.Windows.Forms.Panel pnlBuy;
public System.Windows.Forms.Panel pnlMap;
@@ -1086,5 +1150,9 @@
private System.Windows.Forms.TextBox txtSourceCode;
private System.Windows.Forms.Label label29;
public DevComponents.DotNetBar.PanelEx pnlMask;
private System.Windows.Forms.TextBox txtDirectAddress;
private System.Windows.Forms.Panel pnlDirectAddressAnalysis;
private DevComponents.DotNetBar.PanelEx btnAnalysis;
private System.Windows.Forms.Label label25;
}
}