本地直发逻辑
This commit is contained in:
1 parent
ac0430f3f7
commit
f00cdee502
19 files changed
+1590
-520
No files matched your search
@@ -120,6 +120,15 @@
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn Width="0.6*" Header="是否直发" Binding="{Binding IsDirectStr}">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="TextWrapping" Value="Wrap"/>
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
<Setter Property="Margin" Value="5"/>
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTextColumn Width="1.5*" Header="拍单订单号" Binding="{Binding order_sn}">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock">
|
||||
|
||||
@@ -50,11 +50,11 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
|
||||
{
|
||||
ChromiumWebBrowser cefWebBrowser = null;
|
||||
public string cefAddress = "";
|
||||
public ObservableCollection<PddBuyerOrderLiteInfo> lstPddBuyerOrderInfoLite { get; set; } = new ObservableCollection<PddBuyerOrderLiteInfo>();
|
||||
public ObservableCollection<PddBuyerOrderLiteInfo> lstFilterPddBuyerOrderInfoLite { get; set; } = new ObservableCollection<PddBuyerOrderLiteInfo>();
|
||||
public ObservableCollection<PddBuyerAfterSaleLiteInfo> lstPddBuyerAfterSaleInfoLite { get; set; } = new ObservableCollection<PddBuyerAfterSaleLiteInfo>();
|
||||
public ObservableCollection<PddBuyerAfterSaleLiteInfo> lstFilterPddBuyerAfterSaleInfoLite { get; set; } = new ObservableCollection<PddBuyerAfterSaleLiteInfo>();
|
||||
public ConcurrentList<string> lstPddBuyerOrderVoidAfterSaleOrderSn { get; set; } = new ConcurrentList<string>();
|
||||
public static ObservableCollection<PddBuyerOrderLiteInfo> lstPddBuyerOrderInfoLite { get; set; } = new ObservableCollection<PddBuyerOrderLiteInfo>();
|
||||
public static ObservableCollection<PddBuyerOrderLiteInfo> lstFilterPddBuyerOrderInfoLite { get; set; } = new ObservableCollection<PddBuyerOrderLiteInfo>();
|
||||
public static ObservableCollection<PddBuyerAfterSaleLiteInfo> lstPddBuyerAfterSaleInfoLite { get; set; } = new ObservableCollection<PddBuyerAfterSaleLiteInfo>();
|
||||
public static ObservableCollection<PddBuyerAfterSaleLiteInfo> lstFilterPddBuyerAfterSaleInfoLite { get; set; } = new ObservableCollection<PddBuyerAfterSaleLiteInfo>();
|
||||
public static ConcurrentList<string> lstPddBuyerOrderVoidAfterSaleOrderSn { get; set; } = new ConcurrentList<string>();
|
||||
public CancellationTokenSource cancellationTokenSource { get; set; } = new CancellationTokenSource();
|
||||
//public ChromiumWebBrowser cefWebBrowser = null;
|
||||
public BuyerReadOrderConfig buyerReadOrderConfig = new BuyerReadOrderConfig();
|
||||
@@ -462,6 +462,36 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
|
||||
return transitOrderList;
|
||||
}
|
||||
|
||||
List<order_item_ext> GetOrderItemExtInfo(string out_order_nos)
|
||||
{
|
||||
var url3 = BaseClass.Build29WxObjString("order/wx_get_order_item_ext_info");
|
||||
var data3 = UserLogin.GetSignaturex();
|
||||
data3 += "&out_order_id_in=" + out_order_nos;
|
||||
var html3 = GetHtml.PostUtf8(url3, data3);
|
||||
if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200"))
|
||||
html3 = GetHtml.PostUtf8(url3, data3);
|
||||
if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200"))
|
||||
{
|
||||
//Dispatcher.Invoke(new Action(() =>
|
||||
//{
|
||||
// BaseMsgWindow.ShowError(MainWindow.Instance, "订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg"));
|
||||
//}));
|
||||
//break;
|
||||
}
|
||||
List<order_item_ext> transitOrderList = new List<order_item_ext>();
|
||||
try
|
||||
{
|
||||
transitOrderList = JsonHelper.DeserializeJsonToList<order_item_ext>(JObject.Parse(html3)["data"].ParseToString());
|
||||
// 直接过滤掉仓库作废单
|
||||
//transitOrderList = transitOrderList.Where(t => t.order_void_status != 1).ToList();
|
||||
}
|
||||
catch
|
||||
{
|
||||
transitOrderList = new List<order_item_ext>();
|
||||
}
|
||||
return transitOrderList;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读取订单详情信息
|
||||
/// </summary>
|
||||
@@ -636,7 +666,15 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
|
||||
var out_order_nos = string.Join(",", list.Select(bo => bo.order_sn));
|
||||
var transitOrderList = GetOrderTransitWarehouseInfo(out_order_nos);
|
||||
|
||||
var orderExtList = GetOrderItemExtInfo(out_order_nos);
|
||||
if (orderExtList.Count > 0)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
var order_ids = string.Join(",", transitOrderList.Select(ts => ts.order_no));
|
||||
if(order_ids.Length == 0)
|
||||
order_ids = string.Join(",", orderExtList.Select(ts => ts.order_id));
|
||||
var orders = GetOrderInfo(order_ids);
|
||||
foreach(var order in orders)
|
||||
{
|
||||
@@ -651,30 +689,52 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
|
||||
}
|
||||
//var refunds = GetOrderRefundInfo(order_ids);
|
||||
|
||||
foreach (PddBuyerOrderLiteInfo o in list)
|
||||
foreach (PddBuyerOrderLiteInfo pddO in list)
|
||||
{
|
||||
o.buyerId = buyer.buyer_id;
|
||||
o.buyerName = buyer.buyer_name;
|
||||
pddO.buyerId = buyer.buyer_id;
|
||||
pddO.buyerName = buyer.buyer_name;
|
||||
|
||||
// 查找店铺订单并更新店铺订单状态
|
||||
var transit_item = transitOrderList.FirstOrDefault(t1 => t1.out_order_no == o.order_sn);
|
||||
if (transit_item != null)
|
||||
{
|
||||
var shopOrder = orders.FirstOrDefault(o1 => o1.order_id == transit_item.order_no);
|
||||
var order_item = shopOrder?.orderItems.FirstOrDefault(oi => oi.ItemTransitOrders.Any(t1 => t1.out_order_no == o.order_sn));
|
||||
//var refund_item = refunds.FirstOrDefault(ri => ri.order_id == order_item?.order_id) ?? order_item?.ItemRefund;
|
||||
|
||||
UpdateOrderStatus(o, order_item, transit_item);
|
||||
var orderItemExt = orderExtList.FirstOrDefault(oie => oie.out_order_id == pddO.order_sn);
|
||||
if (orderItemExt != null)
|
||||
{
|
||||
pddO.IsDirectStr = "是";
|
||||
pddO.ShopOrderIdStr = orderItemExt.order_id;
|
||||
pddO.ShopOrderSkuIdStr = orderItemExt.sku_id;
|
||||
pddO.sendStatus = "";
|
||||
var wxOrder = orders.FirstOrDefault(o => o.order_id == pddO.ShopOrderIdStr);
|
||||
if (wxOrder != null)
|
||||
{
|
||||
var wxOrderItem = wxOrder.orderItems.FirstOrDefault(oi => oi.sku_id == pddO.ShopOrderSkuIdStr);
|
||||
if (wxOrderItem != null)
|
||||
{
|
||||
pddO.ShopOrderSkuNameStr = wxOrderItem.sku_attr_str;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var transit_item = transitOrderList.FirstOrDefault(t1 => t1.out_order_no == pddO.order_sn);
|
||||
oms_wei_order_info shopOrder = null;
|
||||
oms_wei_order_item_info orderItem = null;
|
||||
if (transit_item != null)
|
||||
{
|
||||
shopOrder = orders.FirstOrDefault(o1 => o1.order_id == transit_item.order_no);
|
||||
orderItem = shopOrder?.orderItems.FirstOrDefault(oi => oi.ItemTransitOrders.Any(t1 => t1.out_order_no == pddO.order_sn));
|
||||
//var refund_item = refunds.FirstOrDefault(ri => ri.order_id == order_item?.order_id) ?? order_item?.ItemRefund;
|
||||
UpdateOrderStatus(pddO, orderItem, transit_item);
|
||||
}
|
||||
}
|
||||
|
||||
PddBuyerOrderLiteInfo order = null;
|
||||
Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
order = this.lstPddBuyerOrderInfoLite.FirstOrDefault(or => or.order_sn == o.order_sn);
|
||||
order = lstPddBuyerOrderInfoLite.FirstOrDefault(or => or.order_sn == pddO.order_sn);
|
||||
}));
|
||||
if (order == null)
|
||||
{
|
||||
order = o;
|
||||
order = pddO;
|
||||
Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
lstPddBuyerOrderInfoLite.Add(order);
|
||||
@@ -696,48 +756,50 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
|
||||
// if (o.PreAllocatedOrderNoStr.IsNullOrEmpty())
|
||||
// order.sendStatus = "";
|
||||
//}
|
||||
//if (!o.sendStatus .IsNullOrEmpty())
|
||||
if (!pddO.sendStatus.IsNullOrEmpty())
|
||||
{
|
||||
order.sendStatus = o.sendStatus;
|
||||
order.sendStatus = pddO.sendStatus;
|
||||
}
|
||||
|
||||
//order = JsonHelper.DeserializeJsonToObject<PddBuyerOrderInfoLite>(JsonHelper.SerializeObject(o));
|
||||
order.activity_type = o.activity_type;
|
||||
order.after_sales = o.after_sales;
|
||||
order.discount_amount = o.discount_amount;
|
||||
order.display_amount = o.display_amount;
|
||||
order.extra_info = JsonHelper.DeserializeJsonToObject<extra_info>(JsonHelper.SerializeObject(o.extra_info));
|
||||
order.order_amount = o.order_amount;
|
||||
order.order_Goods = JsonHelper.DeserializeJsonToList<order_good>(JsonHelper.SerializeObject(o.order_Goods));
|
||||
order.order_link_url = o.order_link_url;
|
||||
order.order_prompt_color = o.order_prompt_color;
|
||||
order.order_status_prompt = o.order_status_prompt;
|
||||
order.parent_order_sn = o.parent_order_sn;
|
||||
order.service_amount = o.service_amount;
|
||||
order.shipping_amount = o.shipping_amount;
|
||||
order.order_time = o.order_time;
|
||||
order.tracking_number = o.tracking_number;
|
||||
order.activity_type = pddO.activity_type;
|
||||
order.after_sales = pddO.after_sales;
|
||||
order.discount_amount = pddO.discount_amount;
|
||||
order.display_amount = pddO.display_amount;
|
||||
order.extra_info = JsonHelper.DeserializeJsonToObject<extra_info>(JsonHelper.SerializeObject(pddO.extra_info));
|
||||
order.order_amount = pddO.order_amount;
|
||||
order.order_Goods = JsonHelper.DeserializeJsonToList<order_good>(JsonHelper.SerializeObject(pddO.order_Goods));
|
||||
order.order_link_url = pddO.order_link_url;
|
||||
order.order_prompt_color = pddO.order_prompt_color;
|
||||
order.order_status_prompt = pddO.order_status_prompt;
|
||||
order.parent_order_sn = pddO.parent_order_sn;
|
||||
order.service_amount = pddO.service_amount;
|
||||
order.shipping_amount = pddO.shipping_amount;
|
||||
order.order_time = pddO.order_time;
|
||||
order.tracking_number = pddO.tracking_number;
|
||||
|
||||
order.TransitCreateTime = o.TransitCreateTime;
|
||||
order.TransitPickupTime = o.TransitPickupTime;
|
||||
order.TransitCreateTime = pddO.TransitCreateTime;
|
||||
order.TransitPickupTime = pddO.TransitPickupTime;
|
||||
|
||||
order.TransitWarehouseRawMessage = o.TransitWarehouseRawMessage;
|
||||
order.WxOrderCreateTime = o.WxOrderCreateTime;
|
||||
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.wxRefundStatus = o.wxRefundStatus;
|
||||
order.TransitWarehouseRawMessage = pddO.TransitWarehouseRawMessage;
|
||||
order.WxOrderCreateTime = pddO.WxOrderCreateTime;
|
||||
order.ShopOrderIdStr = pddO.ShopOrderIdStr;
|
||||
order.ShopOrderSkuIdStr = pddO.ShopOrderSkuIdStr;
|
||||
order.ShopOrderSkuNameStr = pddO.ShopOrderSkuNameStr;
|
||||
order.TransitBuyerOrderRefundStatus = pddO.TransitBuyerOrderRefundStatus;
|
||||
order.TransitWarehouseIdStr = pddO.TransitWarehouseIdStr;
|
||||
order.TransitWarehouseOrderCodeStr = pddO.TransitWarehouseOrderCodeStr;
|
||||
order.Express1WaybillStr = pddO.Express1WaybillStr;
|
||||
order.Express1CompanyStr = pddO.Express1CompanyStr;
|
||||
order.Express2WaybillStr = pddO.Express2WaybillStr;
|
||||
order.Express2CompanyStr = pddO.Express2CompanyStr;
|
||||
order.TransferWareHouseStatus = pddO.TransferWareHouseStatus;
|
||||
order.WxOrderVoidStatus = pddO.WxOrderVoidStatus;
|
||||
order.PreAllocatedOrderNoStr = pddO.PreAllocatedOrderNoStr;
|
||||
order.ShopOrderRefundStr = pddO.ShopOrderRefundStr;
|
||||
order.wxRefundStatus = pddO.wxRefundStatus;
|
||||
|
||||
order.IsDirectStr = pddO.IsDirectStr;
|
||||
|
||||
var index = lstPddBuyerOrderInfoLite.IndexOf(order);
|
||||
Dispatcher.Invoke(new Action(() =>
|
||||
@@ -774,32 +836,32 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
|
||||
//SendOrderE57(order);
|
||||
//if (order.sendStatus.ParseToString().Contains("售后"))
|
||||
|
||||
if (order.order_sn == "260711-223346705920980")
|
||||
{
|
||||
|
||||
}
|
||||
// 微信售后,服务端自动作废订单,客户端取消买手订单即可
|
||||
if (order.ShopOrderRefundStr.ParseToString().Contains("售后"))
|
||||
{
|
||||
if (!",2,3,4,5,7,8,10,31,".Contains("," + (order.after_sales?.after_sales_status).ParseToString() + ","))
|
||||
{
|
||||
// 待发货直接售后,并通知中转仓接口修改退货状态
|
||||
var afterSaleRst = PddAutoAfterSale(order);
|
||||
}
|
||||
}
|
||||
if (order.TransitWarehouseRawMessage.ParseToString().Contains("超出派送范围"))
|
||||
{
|
||||
if (!",2,3,4,5,7,8,10,31,".Contains("," + (order.after_sales?.after_sales_status).ParseToString() + ","))
|
||||
{
|
||||
// 待发货直接售后,并通知中转仓接口修改退货状态
|
||||
var afterSaleRst = PddAutoAfterSale(order);
|
||||
}
|
||||
}
|
||||
|
||||
// 根据订单状态 取号/修改取号
|
||||
SendTransitOrderE57(order);
|
||||
if (order.IsDirectStr == "是")
|
||||
SendOrderE57(order);
|
||||
else
|
||||
{
|
||||
// 微信售后,服务端自动作废订单,客户端取消买手订单即可
|
||||
if (order.ShopOrderRefundStr.ParseToString().Contains("售后"))
|
||||
{
|
||||
if (!",2,3,4,5,7,8,10,31,".Contains("," + (order.after_sales?.after_sales_status).ParseToString() + ","))
|
||||
{
|
||||
// 待发货直接售后,并通知中转仓接口修改退货状态
|
||||
var afterSaleRst = PddAutoAfterSale(order);
|
||||
}
|
||||
}
|
||||
if (order.TransitWarehouseRawMessage.ParseToString().Contains("超出派送范围"))
|
||||
{
|
||||
if (!",2,3,4,5,7,8,10,31,".Contains("," + (order.after_sales?.after_sales_status).ParseToString() + ","))
|
||||
{
|
||||
// 待发货直接售后,并通知中转仓接口修改退货状态
|
||||
var afterSaleRst = PddAutoAfterSale(order);
|
||||
}
|
||||
}
|
||||
SendTransitOrderE57(order);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(order.ShopOrderIdStr))
|
||||
if (!string.IsNullOrEmpty(order.ShopOrderIdStr) && order.IsDirectStr != "是")
|
||||
{
|
||||
// 买手订单状态记录到数据库
|
||||
order_pdd_buyer_order pddBuyerOrder = new order_pdd_buyer_order()
|
||||
@@ -899,7 +961,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
|
||||
|
||||
foreach (var af in list)
|
||||
{
|
||||
if (af.orderSn == "260718-221343925901688")
|
||||
if (af.orderSn == "260729-658558174861688")
|
||||
{
|
||||
|
||||
}
|
||||
@@ -929,7 +991,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
|
||||
|
||||
bool isUpdate = false;
|
||||
PddBuyerAfterSaleLiteInfo afterSale = null;
|
||||
if (!this.lstPddBuyerAfterSaleInfoLite.ToList().Any(or => or.afterSalesId == af.afterSalesId))
|
||||
if (!lstPddBuyerAfterSaleInfoLite.ToList().Any(or => or.afterSalesId == af.afterSalesId))
|
||||
{
|
||||
isUpdate = true;
|
||||
afterSale = af;
|
||||
@@ -937,7 +999,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
|
||||
}
|
||||
else
|
||||
{
|
||||
afterSale = this.lstPddBuyerAfterSaleInfoLite.FirstOrDefault(aft => aft.afterSalesId == af.afterSalesId);
|
||||
afterSale = lstPddBuyerAfterSaleInfoLite.FirstOrDefault(aft => aft.afterSalesId == af.afterSalesId);
|
||||
var afterSaleTmp = JsonHelper.DeserializeJsonToObject<PddBuyerAfterSaleLiteInfo>(JsonHelper.SerializeObject(afterSale));
|
||||
afterSaleTmp.sendStatus = "";
|
||||
afterSaleTmp.listItemMallVO = new ListItemMallVO();
|
||||
@@ -987,23 +1049,21 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
|
||||
}
|
||||
if (filterOneBuyerAfterSale(afterSale))
|
||||
{
|
||||
var afterSaleExist = lstFilterPddBuyerAfterSaleInfoLite.FirstOrDefault(afe => afe.orderSn == afterSale.orderSn);
|
||||
if (afterSaleExist == null)
|
||||
Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
Dispatcher.Invoke(new Action(() =>
|
||||
var afterSaleExist = lstFilterPddBuyerAfterSaleInfoLite.FirstOrDefault(afe => afe.orderSn == afterSale.orderSn);
|
||||
if (afterSaleExist == null)
|
||||
{
|
||||
lstFilterPddBuyerAfterSaleInfoLite.Add(afterSale);
|
||||
}));
|
||||
}
|
||||
else
|
||||
{
|
||||
var index = lstFilterPddBuyerAfterSaleInfoLite.IndexOf(afterSaleExist);
|
||||
Dispatcher.Invoke(new Action(() =>
|
||||
}
|
||||
else
|
||||
{
|
||||
var index = lstFilterPddBuyerAfterSaleInfoLite.IndexOf(afterSaleExist);
|
||||
|
||||
lstFilterPddBuyerAfterSaleInfoLite.Remove(afterSaleExist);
|
||||
lstFilterPddBuyerAfterSaleInfoLite.Insert(index, afterSale);
|
||||
}));
|
||||
}
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
if (afterSale.orderDate < DateTime.Now.AddMonths(-2).ToString("yyMMdd").ParseToInt())
|
||||
@@ -1043,7 +1103,7 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
|
||||
// 如果中转仓表买手售后状态不等于买手售后单售后,更新仓库买手售后状态
|
||||
else if (afterSale.TransitBuyerOrderRefundStatus != "买手退款成功" && afterSale.TransitBuyerOrderRefundStatus != afterSale.AfterSaleStatusStr)
|
||||
{
|
||||
if (afterSale.AfterSaleStatusStr == "退款失败" && this.lstPddBuyerAfterSaleInfoLite.Any(a => a.orderSn == afterSale.orderSn && a.AfterSaleStatusStr != afterSale.AfterSaleStatusStr))
|
||||
if (afterSale.AfterSaleStatusStr == "退款失败" && lstPddBuyerAfterSaleInfoLite.Any(a => a.orderSn == afterSale.orderSn && a.AfterSaleStatusStr != afterSale.AfterSaleStatusStr))
|
||||
{
|
||||
}
|
||||
else
|
||||
@@ -1138,11 +1198,6 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
|
||||
NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_after_sale_list", lstPddBuyerAfterSaleInfoLite);
|
||||
}
|
||||
|
||||
void ShowAfterSale(PddBuyerAfterSaleLiteInfo afterSale)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
TimeSpan PauseTick = new TimeSpan(1);
|
||||
private void chkAutoReadBuyerOrder_CheckedChanged(object sender, RoutedEventArgs e)
|
||||
@@ -1500,8 +1555,10 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
|
||||
UpdateOrderStatus(buyerOrder, order_item, transit_item);
|
||||
}
|
||||
|
||||
//SendOrderE57(order);
|
||||
SendTransitOrderE57(buyerOrder, true);
|
||||
if (buyerOrder.IsDirectStr == "是")
|
||||
SendOrderE57(buyerOrder);
|
||||
else
|
||||
SendTransitOrderE57(buyerOrder, true);
|
||||
|
||||
Dispatcher.Invoke(new Action(() => {
|
||||
btn.IsEnabled = true;
|
||||
@@ -1694,6 +1751,101 @@ namespace _29WxOrderWpf.Ctrls.BuyerCtrls
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 调用e57接口更新web端订单数据信息
|
||||
/// </summary>
|
||||
/// <param name="order"></param>
|
||||
/// <param name="resetSendStatus">手动强制重置状态,一定重新发送</param>
|
||||
public void SendOrderE57(PddBuyerOrderLiteInfo order, bool resetSendStatus = false)
|
||||
{
|
||||
if (order == null)
|
||||
return;
|
||||
if (resetSendStatus)
|
||||
order.sendStatus = "";
|
||||
Thread.Sleep(100);
|
||||
|
||||
if (order.sendStatus.Contains("外采订单已发货") || order.sendStatus.Contains("微信发货成功") ||
|
||||
order.sendStatus.Contains("已发送待发货订单") || order.sendStatus.Contains("接收成功") ||
|
||||
order.sendStatus.Contains("已发送售后订单"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
JObject obj = new JObject();
|
||||
obj["platform"] = "WEISHOP";
|
||||
obj["outAmount"] = order.order_amount;
|
||||
obj["outAccount"] = order.buyerName;
|
||||
obj["outOrderNo"] = order.order_sn;
|
||||
obj["orderId"] = order.ShopOrderIdStr;
|
||||
if (!order.outExpressCompanyCode.IsNullOrEmpty() && !order.tracking_number.IsNullOrEmpty())
|
||||
{
|
||||
obj["outExpressCompany"] = order.outExpressCompanyCode;
|
||||
obj["outExpressNo"] = order.tracking_number;
|
||||
}
|
||||
var dataStr = JsonHelper.SerializeObject(obj);
|
||||
string url = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/bind/v2";
|
||||
//成功 "<ResultVo><code>0</code><msg>SUCCESS</msg><data/><totalRecords/></ResultVo>"
|
||||
//失败 已存在 <ResultVo><code>1505</code><msg>调用微信接口更新物流信息失败: 非法参数, 同运单号拦截 rid: 69d8ab9c-22baa3b1-67de0d95</msg><data/><totalRecords/></ResultVo>
|
||||
var exportRst = HttpResponseWXBLL.e57PostResponse(url, dataStr, "");
|
||||
if (exportRst == null)
|
||||
{
|
||||
|
||||
}
|
||||
for (int i = 0; i < 3 && exportRst.Contains("操作超时") && resetSendStatus == false; i++)
|
||||
{
|
||||
Thread.Sleep(210000);
|
||||
HttpResponseWXBLL.e57PostResponse(url, dataStr, "");
|
||||
}
|
||||
if (exportRst.Contains("操作超时"))
|
||||
{
|
||||
order.sendStatus = "发送失败 操作超时";
|
||||
NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite);
|
||||
return;
|
||||
}
|
||||
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
|
||||
string msg = "";
|
||||
string data = "";
|
||||
string code = "";
|
||||
try
|
||||
{
|
||||
xmlDoc.LoadXml(exportRst); //<ResultVo><code>1505</code><msg>不支持的平台类型: WEISHOP</msg><data/><totalRecords/></ResultVo>
|
||||
code = xmlDoc["AjaxResult"]["code"].InnerText;
|
||||
msg = xmlDoc["AjaxResult"]["msg"].InnerText;
|
||||
//data = xmlDoc["AjaxResult"]["data"].InnerText;
|
||||
|
||||
// <AjaxResult><msg>更新微信外采订单信息成功, orderNo:260430-306551232030257</msg><code>1</code></AjaxResult>
|
||||
}
|
||||
catch
|
||||
{
|
||||
msg = exportRst.ParseToString();
|
||||
}
|
||||
if (code == "0" || code == "1") //if (msg == "SUCCESS") // || msg == "SUCCESS"
|
||||
{
|
||||
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("pdd_buyer_order_list", lstPddBuyerOrderInfoLite);
|
||||
}
|
||||
else
|
||||
{
|
||||
order.sendStatus = "发送失败 " + (string.IsNullOrEmpty(msg) ? data : msg);
|
||||
NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过服务端批量读取微信售后并触发拼多多售后或显示提示供买手手动退货
|
||||
/// </summary>
|
||||
|
||||
@@ -58,7 +58,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
{
|
||||
lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder;
|
||||
|
||||
dateStart.SelectedDate = DateTime.Now.Date.AddDays(-10);
|
||||
dateStart.SelectedDate = DateTime.Now.Date.AddDays(-7);
|
||||
dateEnd.SelectedDate = DateTime.Now.Date.AddDays(1).AddSeconds(-1);
|
||||
|
||||
borderFilterRemarkSelect.Visibility = Visibility.Collapsed;
|
||||
@@ -97,7 +97,6 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
if (DateTime.Now > nextGetOrderTime)
|
||||
{
|
||||
GetOrder();
|
||||
GetShopWaybillExceptionOrder();
|
||||
|
||||
nextGetOrderTime = DateTime.Now.AddMinutes(25);
|
||||
}
|
||||
@@ -182,41 +181,29 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
|
||||
var order_ids = string.Join(",", jArr.Select(a => a["order_id"].ParseToString()));
|
||||
|
||||
//// 读取订单详情
|
||||
Thread.Sleep(100);
|
||||
//var url1 = BaseClass.Build29WxObjString("order/get_erp_order_item_list");
|
||||
//var data1 = UserLogin.GetSignaturex();
|
||||
//data1 += "&erp_order_id_in=" + order_ids;
|
||||
//data1 += "&page_size=" + 2500;
|
||||
//var html1 = GetHtml.PostUtf8(url1, data1);
|
||||
//if (string.IsNullOrEmpty(html1) || !html1.Contains("\"code\":200"))
|
||||
// html1 = GetHtml.PostUtf8(url1, data1);
|
||||
//if (string.IsNullOrEmpty(html1) || !html1.Contains("\"code\":200"))
|
||||
//{
|
||||
// BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html1, "msg"));
|
||||
// break;
|
||||
//}
|
||||
//List<oms_wei_order_item_info> orderItems = new List<oms_wei_order_item_info>();
|
||||
//try { orderItems = JsonHelper.DeserializeJsonToList<oms_wei_order_item_info>(JObject.Parse(html1)["data"].ParseToString()); } catch { }
|
||||
// 读取订单详情
|
||||
if (string.IsNullOrEmpty(order_ids))
|
||||
Thread.Sleep(100);
|
||||
List<oms_wei_order_item_info> orderItems = GetOrderItemInfo(order_ids);
|
||||
|
||||
// 读取售后单
|
||||
Thread.Sleep(100);
|
||||
//var url2 = BaseClass.Build29WxObjString("order/get_erp_refund_list");
|
||||
//var data2 = UserLogin.GetSignaturex();
|
||||
//data2 += "&erp_order_id_in=" + order_ids;
|
||||
//var html2 = GetHtml.PostUtf8(url2, data2);
|
||||
//if (string.IsNullOrEmpty(html2) || !html2.Contains("\"code\":200"))
|
||||
// html2 = GetHtml.PostUtf8(url, data);
|
||||
//if (string.IsNullOrEmpty(html2) || !html2.Contains("\"code\":200"))
|
||||
//{
|
||||
// BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html2, "msg"));
|
||||
// break;
|
||||
//}
|
||||
//List<oms_wei_refund_info> refunds = new List<oms_wei_refund_info>();
|
||||
//try { refunds = JsonHelper.DeserializeJsonToList<oms_wei_refund_info>(JObject.Parse(html2)["data"].ParseToString()); } catch { }
|
||||
if (string.IsNullOrEmpty(order_ids))
|
||||
Thread.Sleep(100);
|
||||
List<oms_wei_refund_info> refunds = GetOrderRefundInfo(order_ids);
|
||||
|
||||
// 读订单扩展
|
||||
if (string.IsNullOrEmpty(order_ids))
|
||||
Thread.Sleep(100);
|
||||
List<order_item_ext> orderItemExts = GetOrderItemExts(order_ids);
|
||||
if (string.IsNullOrEmpty(order_ids))
|
||||
{
|
||||
foreach (var oie in orderItemExts)
|
||||
{
|
||||
// 移除订单物流异常信息,每次批量读单最后要去微信获取
|
||||
oie.abnormal_text = "";
|
||||
}
|
||||
}
|
||||
|
||||
// 读取中转仓拍单订单
|
||||
var url3 = BaseClass.Build29WxObjString("order/wx_get_transit_order");
|
||||
var data3 = UserLogin.GetSignaturex();
|
||||
@@ -344,6 +331,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
item.ItemOrder = order;
|
||||
order.orderItems.Add(item);
|
||||
|
||||
item.OrderItemExt = orderItemExts.FirstOrDefault(ext => ext.order_id == item.order_id && item.sku_id == item.sku_id);
|
||||
|
||||
// 已放到赋值函数中处理
|
||||
// 更新店铺是否加入代发情况
|
||||
//item.Shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == item.order_id);
|
||||
@@ -380,9 +369,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
// 读取订单后立即赋值,防止滚动时实时赋值造成卡顿
|
||||
foreach (var orderItem in order.orderItems)
|
||||
{
|
||||
orderItem.Dispatcher = this.Dispatcher;
|
||||
orderItem.SetOrderItemTextProperty();
|
||||
}
|
||||
order.SetOrderTextProperty();
|
||||
|
||||
// 删除再添加,触发更新。 todo: 如果已存在相同订单,则直接修改更新
|
||||
var orderExist = GlobalConfig.lstOrder.FirstOrDefault(o => o.order_id == order.order_id);
|
||||
@@ -417,6 +406,9 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
}
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(orderIds))
|
||||
GetShopWaybillExceptionOrder();
|
||||
|
||||
hasReadOrder = true;
|
||||
Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
@@ -434,7 +426,6 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
{
|
||||
if (string.IsNullOrEmpty(order_ids))
|
||||
return new List<oms_wei_order_item_info>();
|
||||
Thread.Sleep(100);
|
||||
var url = BaseClass.Build29WxObjString("order/get_erp_order_item_list");
|
||||
var data = UserLogin.GetSignaturex();
|
||||
data += "&erp_order_id_in=" + order_ids;
|
||||
@@ -460,6 +451,26 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
return orderItems;
|
||||
}
|
||||
|
||||
public static List<order_item_ext> GetOrderItemExts(string order_ids)
|
||||
{
|
||||
List<order_item_ext> existOrderExtList = new List<order_item_ext>();
|
||||
if (!string.IsNullOrEmpty(order_ids))
|
||||
{
|
||||
var url = BaseClass.Build29WxObjString("order/wx_get_order_item_ext_info");
|
||||
var data = UserLogin.GetSignaturex();
|
||||
data += "&wx_order_id_in=" + order_ids;
|
||||
var html = GetHtml.PostUtf8(url, data);
|
||||
if (!html.Contains("\"code\":200"))
|
||||
html = GetHtml.PostUtf8(url, data);
|
||||
if (!html.Contains("\"code\":200"))
|
||||
{
|
||||
BaseMsgWindow.ShowAnimateMessage("订单扩展信息查询失败 " + BaseRegex.GetStringJson(ref html, "msg"), "Error", 5);
|
||||
}
|
||||
existOrderExtList = JsonHelper.DeserializeJsonToList<order_item_ext>(JsonHelper.JObjectParse(html)["data"].ParseToString());
|
||||
}
|
||||
return existOrderExtList;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读取售后单
|
||||
/// </summary>
|
||||
@@ -467,6 +478,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
/// <returns></returns>
|
||||
public static List<oms_wei_refund_info> GetOrderRefundInfo(string order_ids)
|
||||
{
|
||||
if (string.IsNullOrEmpty(order_ids))
|
||||
return new List<oms_wei_refund_info>();
|
||||
Thread.Sleep(100);
|
||||
var url2 = BaseClass.Build29WxObjString("order/get_erp_refund_list");
|
||||
var data2 = UserLogin.GetSignaturex();
|
||||
@@ -494,7 +507,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
continue;
|
||||
|
||||
var rst = WxSimAbnormalOrderSeach(shop, 100);
|
||||
Thread.Sleep(Randomx.GetId(50, 150));
|
||||
//Thread.Sleep(Randomx.GetId(50, 150));
|
||||
if (rst.Contains("\"code\":0"))
|
||||
{
|
||||
try
|
||||
@@ -527,13 +540,18 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
|
||||
//var orderId = o["commonInfo"]["orderId"].ParseToString();
|
||||
var orderId = BaseRegex.GetStringJson(ref oStr, "orderId");
|
||||
|
||||
if (orderId == "3737914129536416512")
|
||||
{
|
||||
|
||||
}
|
||||
var skuId = BaseRegex.GetStringJson(ref oStr, "skuId");
|
||||
|
||||
// 存在状态完全一样的订单异常信息就跳过
|
||||
order_item_ext orderExt = new order_item_ext() { order_id = orderId, sku_id = skuId, shop_app_id = shop.ShopId, shop_name = shop.ShopAccount, abnormal_text = "物流异常" };
|
||||
|
||||
if (!existOrderExtList.Any(eoe => eoe.order_id == orderExt.order_id && eoe.sku_id == orderExt.sku_id && eoe.abnormal_text == orderExt.abnormal_text))
|
||||
{
|
||||
|
||||
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");
|
||||
@@ -550,6 +568,11 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
orderExt = existOrderExtList.FirstOrDefault(eoe => eoe.order_id == orderExt.order_id && eoe.sku_id == orderExt.sku_id && eoe.abnormal_text == orderExt.abnormal_text);
|
||||
}
|
||||
|
||||
// 更新订单附加信息
|
||||
if (orderExt.order_id == "3737845591459133952")
|
||||
{
|
||||
@@ -561,12 +584,18 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
var orderItem = order.orderItems.FirstOrDefault(oi => oi.sku_id == orderExt.sku_id);
|
||||
if (orderItem != null)
|
||||
{
|
||||
//orderItem.OrderItemExt = orderExt;
|
||||
//Dispatcher.Invoke(new Action(() => { MainWindow.Instance.orderListCtrl.FilterOneOrder(order, true); }));
|
||||
orderItem.OrderItemExt = orderExt;
|
||||
Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
foreach (var oi in order.orderItems)
|
||||
oi.SetOrderItemTextProperty();
|
||||
order.SetOrderTextProperty();
|
||||
|
||||
MainWindow.Instance.orderListCtrl.FilterOneOrder(order, true);
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
//var abnormalOrder = GlobalConfig.lstOrder.FirstOrDefault()
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -19,10 +19,13 @@
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBox Grid.Column="0" Margin="8,8,-4,8" VerticalAlignment="Center" FontSize="14" Background="Transparent" IsReadOnly="True" Text="店铺单号:" BorderThickness="0" />
|
||||
<uc:UcWaterMarkTextBox1 Foreground="{StaticResource PageLinkBrush}" Cursor="Hand" WaterMark="订单号" x:Name="txtOrderId" Grid.Column="1" Margin="0,8,4,8" VerticalAlignment="Center" FontSize="14" Background="Transparent" IsReadOnly="True" Text="{Binding order_id}" BorderThickness="0" />
|
||||
<Border Grid.Column="2" Width="12" Background="Transparent" Height="12" VerticalAlignment="Center" Cursor="Hand"
|
||||
<TextBox Grid.Column="0" Margin="8,8,-4,8" VerticalAlignment="Center" FontSize="20" Background="Transparent" IsReadOnly="True" Text="{Binding OrderBuyType}" BorderThickness="0"
|
||||
Visibility="{Binding OrderBuyType, Converter={StaticResource HasTextVisibility}}" Foreground="{Binding OrderBuyTypeColor}" FontWeight="ExtraBold"/>
|
||||
<TextBox Grid.Column="1" Margin="8,8,-4,8" VerticalAlignment="Center" FontSize="14" Background="Transparent" IsReadOnly="True" Text="店铺单号:" BorderThickness="0" />
|
||||
<uc:UcWaterMarkTextBox1 Grid.Column="2" Foreground="{StaticResource PageLinkBrush}" Cursor="Hand" WaterMark="订单号" x:Name="txtOrderId" Margin="0,8,4,8" VerticalAlignment="Center" FontSize="14" Background="Transparent" IsReadOnly="True" Text="{Binding order_id}" BorderThickness="0" />
|
||||
<Border Grid.Column="3" Width="12" Background="Transparent" Height="12" VerticalAlignment="Center" Cursor="Hand"
|
||||
Tag="{Binding order_id}" MouseLeftButtonDown="Path_MouseLeftButtonDown">
|
||||
<Path Margin="0,0,0,0" Fill="{StaticResource PageLinkBrush}" Tag="{Binding order_id}" MouseLeftButtonDown="Path_MouseLeftButtonDown" Data="M80 432a128 128 0 0 1 128-128h384a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128h-384a128 128 0 0 1-128-128v-384z m128-64a64 64 0 0 0-64 64v384a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64v-384a64 64 0 0 0-64-64h-384z M816 144h-384a64 64 0 0 0-64 64 32 32 0 0 1-64 0 128 128 0 0 1 128-128h384a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128 32 32 0 0 1 0-64 64 64 0 0 0 64-64v-384a64 64 0 0 0-64-64z" Stretch="Uniform" />
|
||||
</Border>
|
||||
@@ -41,7 +44,7 @@
|
||||
Text="{Binding DeliveryDeadlineStr}" BorderThickness="0" />
|
||||
</Grid>
|
||||
</Border>-->
|
||||
<Border x:Name="borderDeadline" Grid.Column="3" Margin="8,0,0,0" Background="{Binding StatusBoxBackColor}" BorderBrush="{Binding StatusBoxBorderColor}" BorderThickness="1" MinWidth="30" Height="24" CornerRadius="2">
|
||||
<Border Grid.Column="4" x:Name="borderDeadline" Margin="8,0,0,0" Background="{Binding StatusBoxBackColor}" BorderBrush="{Binding StatusBoxBorderColor}" BorderThickness="1" MinWidth="30" Height="24" CornerRadius="2">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
@@ -57,22 +60,22 @@
|
||||
</Border>
|
||||
|
||||
|
||||
<Image Margin="8,8,0,8" Grid.Column="4" Width="24" Height="24" Source="{StaticResource imgOrderWeishopIcon}"></Image>
|
||||
<uc:UcWaterMarkTextBox1 WaterMark="店铺状态" x:Name="txtShopLoginStatus" Grid.Column="4" HorizontalAlignment="Right" Margin="0,12,-6,0" Padding="0" FontWeight="Bold"
|
||||
<Image Grid.Column="5" Margin="8,8,0,8" Width="24" Height="24" Source="{StaticResource imgOrderWeishopIcon}"></Image>
|
||||
<uc:UcWaterMarkTextBox1 WaterMark="店铺状态" x:Name="txtShopLoginStatus" Grid.Column="5" HorizontalAlignment="Right" Margin="0,12,-6,0" Padding="0" FontWeight="Bold"
|
||||
VerticalAlignment="Center" FontSize="7" Background="{StaticResource ListHeadBackColorBrush}" IsReadOnly="True"
|
||||
Text="{Binding order_item1.Shop.LoginStatusStr}" BorderThickness="0"
|
||||
Foreground="{Binding order_item1.Shop.LoginStatusStr, Converter={StaticResource statusToColorBrushConverter}}"/>
|
||||
<uc:UcWaterMarkTextBox1 Foreground="{StaticResource PageLinkBrush}" Cursor="Hand" WaterMark="店铺名称" x:Name="txtShopName" Grid.Column="5" Margin="4,8,4,8" VerticalAlignment="Center"
|
||||
<uc:UcWaterMarkTextBox1 Grid.Column="6" Foreground="{StaticResource PageLinkBrush}" Cursor="Hand" WaterMark="店铺名称" x:Name="txtShopName" Margin="4,8,4,8" VerticalAlignment="Center"
|
||||
FontSize="14" Background="Transparent" IsReadOnly="True" Text="{Binding shop_name}" BorderThickness="0" />
|
||||
|
||||
|
||||
<Border Grid.Column="6" Width="12" Background="Transparent" Height="12" VerticalAlignment="Center" Cursor="Hand"
|
||||
<Border Grid.Column="7" Width="12" Background="Transparent" Height="12" VerticalAlignment="Center" Cursor="Hand"
|
||||
Tag="{Binding order_id}" MouseLeftButtonDown="pathShop_MouseLeftButtonDown">
|
||||
<Path Margin="0,0,0,0" Fill="{StaticResource PageLinkBrush}" Tag="{Binding order_id}" MouseLeftButtonDown="pathShop_MouseLeftButtonDown" Data="M80 432a128 128 0 0 1 128-128h384a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128h-384a128 128 0 0 1-128-128v-384z m128-64a64 64 0 0 0-64 64v384a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64v-384a64 64 0 0 0-64-64h-384z M816 144h-384a64 64 0 0 0-64 64 32 32 0 0 1-64 0 128 128 0 0 1 128-128h384a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128 32 32 0 0 1 0-64 64 64 0 0 0 64-64v-384a64 64 0 0 0-64-64z" Stretch="Uniform" />
|
||||
</Border>
|
||||
|
||||
|
||||
<uc:UcWaterMarkTextBox1 WaterMark="该订单共有 1 条不同商品记录" x:Name="txtCount" Grid.Column="8" Margin="8,8,0,8" VerticalAlignment="Center" FontSize="14" Background="Transparent" IsReadOnly="True" BorderThickness="0" />
|
||||
<uc:UcWaterMarkTextBox1 WaterMark="该订单共有 1 条不同商品记录" x:Name="txtCount" Grid.Column="9" Margin="8,8,0,8" VerticalAlignment="Center" FontSize="14" Background="Transparent" IsReadOnly="True" BorderThickness="0" />
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
<Path Margin="0,0,0,0" Fill="{StaticResource PageLinkBrush}" MouseLeftButtonDown="pathCopyAddress_MouseLeftButtonDown" Data="M80 432a128 128 0 0 1 128-128h384a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128h-384a128 128 0 0 1-128-128v-384z m128-64a64 64 0 0 0-64 64v384a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64v-384a64 64 0 0 0-64-64h-384z M816 144h-384a64 64 0 0 0-64 64 32 32 0 0 1-64 0 128 128 0 0 1 128-128h384a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128 32 32 0 0 1 0-64 64 64 0 0 0 64-64v-384a64 64 0 0 0-64-64z" Stretch="Uniform" />
|
||||
</Border>
|
||||
<Button x:Name="btnSeeAddressDetail" Background="Transparent" Foreground="{StaticResource PageLinkBrush}" BorderBrush="Transparent"
|
||||
Margin="4,0,0,0" Content="👁" Click="btnSeeAddressDetail_Click" Tag="{Binding order_id}" Cursor="Hand"></Button>
|
||||
Margin="4,0,0,0" Content="👁" Click="btnSeeAddressDetail_Click" Tag="{Binding order_id}" Cursor="Hand"></Button>
|
||||
</WrapPanel>
|
||||
<!--<Button Grid.Column="1" Grid.Row="6" x:Name="btnGetRefundAddress" Background="Transparent" HorizontalAlignment="Center" Foreground="{StaticResource PageLinkBrush}" BorderBrush="Transparent"
|
||||
Margin="4,0,0,0" Content="仓库退货地址:点击复制" Click="btnGetRefundAddress_Click" Tag="{Binding order_id}"></Button>-->
|
||||
@@ -314,16 +314,21 @@
|
||||
Background="Transparent" IsReadOnly="True" BorderThickness="0" TextWrapping="Wrap"/>
|
||||
</WrapPanel>
|
||||
|
||||
<WrapPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="9" Visibility="{Binding ItemOrder.out_express_no, Converter={StaticResource HasTextVisibility}}">
|
||||
<WrapPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="9" Visibility="{Binding ItemOrder.out_order_no, Converter={StaticResource HasTextVisibility}}">
|
||||
<TextBox Text="外采:" Grid.Column="1" Grid.Row="1" Margin="0,2,0,2" VerticalAlignment="Top" Background="Transparent" IsReadOnly="True" BorderThickness="0"/>
|
||||
<uc:UcWaterMarkTextBox1 WaterMark="外采" Text="{Binding ItemOrder.out_express_company}" Grid.Column="1" Grid.Row="1" Padding="0" Margin="-2,2" VerticalAlignment="Top"
|
||||
<uc:UcWaterMarkTextBox1 WaterMark="外采" Text="{Binding ItemOrder.out_order_no}" Grid.Column="1" Grid.Row="1" Padding="0" Margin="-2,2,4,2" VerticalAlignment="Top"
|
||||
Background="Transparent" IsReadOnly="True" BorderThickness="0" TextWrapping="Wrap"/>
|
||||
</WrapPanel>
|
||||
<WrapPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="10" Visibility="{Binding ItemOrder.out_express_no, Converter={StaticResource HasTextVisibility}}">
|
||||
<TextBox Text="物流:" Grid.Column="1" Grid.Row="1" Margin="0,2,0,2" VerticalAlignment="Top" Background="Transparent" IsReadOnly="True" BorderThickness="0"/>
|
||||
<uc:UcWaterMarkTextBox1 WaterMark="物流" Text="{Binding ItemOrder.out_express_company}" Grid.Column="1" Grid.Row="1" Padding="0" Margin="-2,2" VerticalAlignment="Top"
|
||||
Background="Transparent" IsReadOnly="True" BorderThickness="0" TextWrapping="Wrap"/>
|
||||
<uc:UcWaterMarkTextBox1 WaterMark="-" Text="-" Grid.Column="1" Grid.Row="1" Padding="0" Margin="-2,2" VerticalAlignment="Top"
|
||||
Background="Transparent" IsReadOnly="True" BorderThickness="0" TextWrapping="Wrap"/>
|
||||
<uc:UcWaterMarkTextBox1 WaterMark="外采" Text="{Binding ItemOrder.out_express_no}" Grid.Column="1" Grid.Row="1" Padding="0" Margin="-2,2,4,2" VerticalAlignment="Top"
|
||||
<uc:UcWaterMarkTextBox1 WaterMark="物流" Text="{Binding ItemOrder.out_express_no}" Grid.Column="1" Grid.Row="1" Padding="0" Margin="-2,2,4,2" VerticalAlignment="Top"
|
||||
Background="Transparent" IsReadOnly="True" BorderThickness="0" TextWrapping="Wrap"/>
|
||||
</WrapPanel>
|
||||
<WrapPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="10" Visibility="{Binding ReturnWaybillIdStr, Converter={StaticResource HasTextVisibility}}">
|
||||
<WrapPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="11" Visibility="{Binding ReturnWaybillIdStr, Converter={StaticResource HasTextVisibility}}">
|
||||
<TextBox Text="退货:" Grid.Column="1" Grid.Row="1" Margin="0,2,0,2" VerticalAlignment="Top" Background="Transparent" IsReadOnly="True" BorderThickness="0"/>
|
||||
<uc:UcWaterMarkTextBox1 WaterMark="退货" Text="{Binding ItemRefund.return_delivery_name}" Grid.Column="1" Grid.Row="1" Padding="0" Margin="-2,2" VerticalAlignment="Top"
|
||||
Background="Transparent" IsReadOnly="True" BorderThickness="0" TextWrapping="Wrap"/>
|
||||
@@ -418,7 +423,7 @@
|
||||
<!--<Button Grid.Column="1" Grid.Row="1" Background="Transparent" x:Name="btnBuyOrder" Click="btnBuyOrder_Click"
|
||||
Visibility="{Binding ItemOrder.IsWaitBuy, Converter={StaticResource visibleToVisibilityConverter}}"
|
||||
Style="{StaticResource BasePageButtonLightStyle}" Margin="4,0,0,0" Content="关联拍单" Width="56" Height="24"/>-->
|
||||
<WrapPanel Grid.Row="1">
|
||||
<WrapPanel Grid.Row="1" HorizontalAlignment="Center">
|
||||
|
||||
<Button Grid.Column="1" Grid.Row="1" x:Name="btnBuyOrder" Click="btnBuyOrder_Click"
|
||||
Visibility="{Binding ItemOrder.IsWaitBuy, Converter={StaticResource visibleToVisibilityConverter}}"
|
||||
@@ -438,6 +443,11 @@
|
||||
</Button>
|
||||
|
||||
</WrapPanel>
|
||||
<Button Grid.Column="1" Grid.Row="2" x:Name="btnDirectBuyOrder" Click="btnDirectBuyOrder_Click"
|
||||
Visibility="{Binding BtnDirectBuyOrderVisibility}"
|
||||
Content="直发拍单" Style="{StaticResource BasePageButtonLightStyle}"
|
||||
HorizontalAlignment="Center" MinWidth="38" Height="24" Margin="4,20,0,0">
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
@@ -28,6 +28,7 @@ using System.Windows.Media.Animation;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using System.Windows.Threading;
|
||||
using TemuKJD.ToolForms;
|
||||
using Work;
|
||||
using Work._29Tools.BLL;
|
||||
@@ -106,7 +107,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
{
|
||||
this.Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
order.AddressStr = GetDecryptOrder(deRst);
|
||||
GetDecryptOrder(deRst, order);
|
||||
GlobalConfig.DicDecryptOrderAddress[order.order_id] = order;
|
||||
if (ShowErrorDialog)
|
||||
BaseMsgWindow.ShowAnimateMessage("查看地址成功但保存到服务端失败:" + errMsg, "Error", 5);
|
||||
}));
|
||||
@@ -118,7 +120,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
{
|
||||
this.Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
order.AddressStr = GetDecryptOrder(deRst);
|
||||
GetDecryptOrder(deRst, order);
|
||||
GlobalConfig.DicDecryptOrderAddress[order.order_id] = order;
|
||||
BaseMsgWindow.ShowAnimateMessage("查看地址成功");
|
||||
}));
|
||||
}
|
||||
@@ -149,7 +152,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
}
|
||||
}
|
||||
}
|
||||
public string GetDecryptOrder(string sourceOrderAddressStr)
|
||||
public string GetDecryptOrder(string sourceOrderAddressStr, oms_wei_order_info order)
|
||||
{
|
||||
//黄颖飞(4559),18466134204-4559,广西壮族自治区柳州市柳南区福柳宏都8-1-701 (拨打请输入分机号4559)
|
||||
var userName = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "userName"); // 黄颖飞
|
||||
@@ -164,8 +167,18 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
{
|
||||
return sourceOrderAddressStr;
|
||||
}
|
||||
|
||||
order.user_name = userName + "(" + extension + ")";
|
||||
order.tel_number = virtualNumber;
|
||||
order.tel_number_ext_info = extension;
|
||||
order.province_name = provinceName;
|
||||
order.city_name = cityName;
|
||||
order.county_name = countyName;
|
||||
order.detail_info = detailInfo;
|
||||
|
||||
//return userName + "(" + extension + ")," + virtualNumber + "-" + extension + "," + provinceName + cityName + countyName + detailInfo + "(拨打请输入分机号" + extension + ")";
|
||||
return userName + "" + extension + "," + virtualNumber + "-" + extension + "," + provinceName + cityName + countyName + detailInfo + "拨打请输入分机号" + extension + "";
|
||||
order.AddressStr = userName + "(" + extension + ")" + "," + virtualNumber + "," + provinceName + cityName + countyName + detailInfo;
|
||||
return order.AddressStr;
|
||||
}
|
||||
|
||||
public static string decryptOrder(ShopLoginInfo shop, string orderId)
|
||||
@@ -308,9 +321,8 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
BaseMsgWindow.ShowError("请选择买手号");
|
||||
return;
|
||||
}
|
||||
if (/*orderItem.sku_cnt > 1 ||*/ orderItem.ItemOrder.orderItems.Count > 1)
|
||||
if (orderItem.ItemOrder.orderItems.Count > 1)
|
||||
{
|
||||
//BaseMsgWindow.ShowError("多子单或多件商品订单中转仓暂不支持");
|
||||
BaseMsgWindow.ShowError("多子单订单中转仓暂不支持");
|
||||
return;
|
||||
}
|
||||
@@ -356,28 +368,10 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
BaseMsgWindow.ShowAnimateMessage("该异常单不符合重拍条件", "Error", 5);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// 如果是退款单,弹出退款窗口
|
||||
if (/*orderItem?.ItemRefund?.count > 0 &&*/ orderItem.refund_status > 1)
|
||||
{
|
||||
Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == orderItem.shop_id.ParseToString());
|
||||
if (shop != null)
|
||||
{
|
||||
WXShopLoginForm shopLoginForm = new WXShopLoginForm(shop);
|
||||
shopLoginForm.openType = Work._29Tools.Forms.ShopForms.EnumOpenType.manage;
|
||||
shopLoginForm.WindowState = System.Windows.Forms.FormWindowState.Maximized;
|
||||
shopLoginForm.InitUrl = "https://store.weixin.qq.com/shop/aftersale/detail?orderid=" + orderItem.ItemRefund.after_sale_order_id;
|
||||
shopLoginForm.Show();
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseMsgWindow.ShowError("订单有售后,请去店铺后台退款");
|
||||
}
|
||||
}));
|
||||
if (CheckIsRefund(orderItem))
|
||||
return;
|
||||
}
|
||||
|
||||
// 拍单前检测买手号是否在线
|
||||
if (GlobalConfig.CurrentPddBuyer.status == "在线")
|
||||
@@ -513,7 +507,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
}
|
||||
|
||||
// 检测是否加入代发
|
||||
if (orderItem.Shop?.LoginStatus == "登录成功" && !isAbnormalOrder)
|
||||
if (orderItem.Shop?.LoginStatus == "登录成功" && orderItem.BuyGoodsBtnTxt == "云仓拍单" && !isAbnormalOrder)
|
||||
{
|
||||
var is29SupplierRst = WxOrderSupplierBLL.GetWxSupplierOrderList(orderItem.Shop, orderItem.order_id);
|
||||
if (!is29SupplierRst.Contains("\"code\":0"))
|
||||
@@ -869,14 +863,34 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
|
||||
if (!noBuyer)
|
||||
{
|
||||
var pddAfterRst = PDDBuyerOrderReadCtrl.SimPddAfterSale(buyer, new PddBuyerOrderLiteInfo()
|
||||
PddBuyerOrderLiteInfo order = null;
|
||||
MainWindow.Instance.Dispatcher.Invoke(new Action(() => { }));
|
||||
order = PDDBuyerOrderReadCtrl.lstPddBuyerOrderInfoLite.FirstOrDefault(o => o.order_sn == orderItem.ItemTransitOrder.out_order_no);
|
||||
if (order == null)
|
||||
order = new PddBuyerOrderLiteInfo()
|
||||
{
|
||||
order_status_prompt = "待发货",
|
||||
order_amount = orderItem.ItemTransitOrder.out_amount,
|
||||
order_sn = orderItem.ItemTransitOrder.out_order_no
|
||||
});
|
||||
};
|
||||
PDDBuyerOrderReadCtrl.lstPddBuyerOrderInfoLite.Add(order);
|
||||
var pddAfterRst = PDDBuyerOrderReadCtrl.SimPddAfterSale(buyer, order);
|
||||
if (pddAfterRst.Contains("\"after_sales_status\":1") || pddAfterRst.Contains("该订单已全额退款") || pddAfterRst.Contains("订单未付款"))
|
||||
{
|
||||
// 保存退款成功状态
|
||||
order.order_status_prompt = pddAfterRst.Contains("订单未付款") ? "订单未付款" : "退款成功";
|
||||
// 中转仓订单买手号售后信息 存到服务端
|
||||
var refundRst = PDDBuyerOrderReadCtrl.SendTransitAfterSaleE57(order);
|
||||
if (refundRst.Contains("<code>0</code>") || refundRst.Contains("<code>200</code>"))
|
||||
{
|
||||
order.sendStatus = "退款成功 买手退款信息更新成功";
|
||||
}
|
||||
else
|
||||
{
|
||||
var msg = BaseRegex.GetStringXml(ref refundRst, "msg");
|
||||
order.sendStatus = "退款成功 买手退款信息更新失败,服务端返回 " + msg;
|
||||
}
|
||||
NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", PDDBuyerOrderReadCtrl.lstPddBuyerOrderInfoLite);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -994,5 +1008,147 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void btnDirectBuyOrder_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
directBuyOrder();
|
||||
}
|
||||
|
||||
void directBuyOrder()
|
||||
{
|
||||
var orderItem = this.DataContext as oms_wei_order_item_info;
|
||||
if (orderItem == null)
|
||||
{
|
||||
BaseMsgWindow.ShowError("订单信息为空");
|
||||
return;
|
||||
}
|
||||
if (GlobalConfig.CurrentPddBuyer == null)
|
||||
{
|
||||
BaseMsgWindow.ShowError("请选择买手号");
|
||||
return;
|
||||
}
|
||||
if (/*orderItem.sku_cnt > 1 ||*/ orderItem.ItemOrder.orderItems.Count > 1)
|
||||
{
|
||||
//BaseMsgWindow.ShowError("多子单或多件商品订单中转仓暂不支持");
|
||||
BaseMsgWindow.ShowError("多子单订单中转仓暂不支持");
|
||||
return;
|
||||
}
|
||||
|
||||
//if (!GetIsAbnormalOrderRebuy(orderItem) && GlobalConfig.lstOrder.Any(o => o.orderItems
|
||||
// .Any(oi => oi.ItemTransitOrder?.order_no == orderItem.order_id && oi.ItemTransitOrder?.order_sku_id == orderItem.sku_id)))
|
||||
//{
|
||||
// MainWindow.Instance.orderListCtrl.FilterOneOrder(orderItem.ItemOrder);
|
||||
// BaseMsgWindow.ShowError("已存在中转拍单信息,请核对后再拍单");
|
||||
// return;
|
||||
//}
|
||||
|
||||
btnBuyOrder.Cursor = Cursors.Wait;
|
||||
btnBuyOrder.IsEnabled = false;
|
||||
Task.Run(() =>
|
||||
{
|
||||
Thread.Sleep(2000);
|
||||
Dispatcher.Invoke(new Action(() => { btnBuyOrder.IsEnabled = true; }));
|
||||
});
|
||||
Task.Run(() =>
|
||||
{
|
||||
// 拍单前查询订单是否退款
|
||||
var orderId = orderItem.order_id;
|
||||
var skuId = orderItem.sku_id;
|
||||
MainWindow.Instance.orderListCtrl.GetOrder(orderId);
|
||||
var newOrder = GlobalConfig.lstOrder.FirstOrDefault(or => or.order_id == orderId);
|
||||
if (newOrder.orderItems.Count == 1)
|
||||
orderItem = newOrder?.orderItems?.FirstOrDefault();
|
||||
else
|
||||
orderItem = newOrder?.orderItems?.FirstOrDefault(oi => oi.sku_id == skuId);
|
||||
if (orderItem == null)
|
||||
return;
|
||||
|
||||
if (!orderItem.ItemOrder.out_order_no.IsNullOrEmpty() && orderItem.ItemOrder.out_after_sale_status != "out_after_sale_status")
|
||||
{
|
||||
// 外采单已存在的,不可再拍单
|
||||
BaseMsgWindow.ShowAnimateMessage("该订单已有直发采购记录", "Error", 5);
|
||||
return;
|
||||
}
|
||||
|
||||
// 如果是退款单,弹出退款窗口
|
||||
if (CheckIsRefund(orderItem))
|
||||
return;
|
||||
|
||||
|
||||
// 检测买手号是否掉线
|
||||
if (GlobalConfig.CurrentPddBuyer.status == "在线")
|
||||
{
|
||||
PddMobileLoginForm.CheckBuyerLogin(GlobalConfig.CurrentPddBuyer);
|
||||
}
|
||||
if (GlobalConfig.CurrentPddBuyer.status != "在线")
|
||||
{
|
||||
Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
BaseMsgWindow.ShowError("买手号掉线");
|
||||
btnBuyOrder.Cursor = Cursors.Hand;
|
||||
}));
|
||||
return;
|
||||
}
|
||||
|
||||
// 打开拍单窗口
|
||||
Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
btnBuyOrder.Cursor = Cursors.Hand;
|
||||
|
||||
PddMobileBuyOrderForm buyOrderForm = new PddMobileBuyOrderForm(MainWindow.Instance.orderListCtrl.FilterOneOrder, StartUp.UpdateBalance,
|
||||
orderItem, GlobalConfig.CurrentPddBuyer, orderItem.BuyMap);
|
||||
|
||||
buyOrderForm.TitleText = "买手直发拍单 - 当前买手 " + GlobalConfig.CurrentPddBuyer.buyer_nick;
|
||||
buyOrderForm.BuyType = "direct";
|
||||
|
||||
// 未关联拍单的跳到所有订单页面
|
||||
buyOrderForm.InitUrl = "https://mobile.yangkeduo.com/orders.html";
|
||||
//https://mobile.yangkeduo.com/order.html?order_sn=260729-663591339661688
|
||||
if (orderItem.ItemTransitOrderWithVoid != null)
|
||||
buyOrderForm.InitUrl = "https://mobile.yangkeduo.com/order.html?order_sn=" + orderItem.ItemTransitOrderWithVoid.out_order_no;
|
||||
|
||||
buyOrderForm.pnlBuy.Visible = false;
|
||||
|
||||
|
||||
// 已有拍单关联的跳的到订单确认界面
|
||||
if (orderItem.BuyMap != null)
|
||||
{
|
||||
buyOrderForm.ShowBuyMask = true;
|
||||
buyOrderForm.InitUrl = "https://mobile.yangkeduo.com/order_checkout.html?sku_id=" + orderItem.BuyMap.map_sku_id +
|
||||
"&group_id=1" + Randomx.GetNumber(11) + "&goods_id=" + orderItem.BuyMap.map_goods_id + "&goods_number=" + orderItem.sku_cnt +
|
||||
"&page_from=101";
|
||||
|
||||
buyOrderForm.pnlBuy.Visible = true;
|
||||
buyOrderForm.pnlMap.Visible = false;
|
||||
}
|
||||
buyOrderForm.ShowDialog();
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
bool CheckIsRefund(oms_wei_order_item_info orderItem)
|
||||
{
|
||||
if (/*orderItem?.ItemRefund?.count > 0 &&*/ orderItem.refund_status > 1)
|
||||
{
|
||||
Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == orderItem.shop_id.ParseToString());
|
||||
if (shop != null)
|
||||
{
|
||||
WXShopLoginForm shopLoginForm = new WXShopLoginForm(shop);
|
||||
shopLoginForm.openType = Work._29Tools.Forms.ShopForms.EnumOpenType.manage;
|
||||
shopLoginForm.WindowState = System.Windows.Forms.FormWindowState.Maximized;
|
||||
shopLoginForm.InitUrl = "https://store.weixin.qq.com/shop/aftersale/detail?orderid=" + orderItem.ItemRefund.after_sale_order_id;
|
||||
shopLoginForm.Show();
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseMsgWindow.ShowError("订单有售后,请去店铺后台退款");
|
||||
}
|
||||
}));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -64,6 +64,7 @@ namespace _29WxOrderWpf
|
||||
|
||||
private void Window_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
GlobalConfig.Dispatcher = this.Dispatcher;
|
||||
lblDebug.Visibility = Visibility.Collapsed;
|
||||
|
||||
ucWindowBox.SetWindowMax();
|
||||
|
||||
@@ -178,6 +178,7 @@
|
||||
<Compile Include="Model\DBModel\user_payment_record.cs" />
|
||||
<Compile Include="Model\DBModel\WaybillHelper.cs" />
|
||||
<Compile Include="Model\Division\Division.cs" />
|
||||
<Compile Include="Model\Division\PddDivision.cs" />
|
||||
<Compile Include="Model\Result\PddBuyerAfterSaleLiteInfo.cs" />
|
||||
<Compile Include="Model\Result\PddBuyerOrderLiteInfo.cs" />
|
||||
<Compile Include="Model\DBModel\ShopLoginInfo.cs" />
|
||||
@@ -213,6 +214,7 @@
|
||||
<Compile Include="TempFileReadWrite.cs" />
|
||||
<Compile Include="Threadx.cs" />
|
||||
<Compile Include="TreadTime.cs" />
|
||||
<Compile Include="Util\ObservableCollectionThreadSafe.cs" />
|
||||
<Compile Include="WebClientx.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace AllBase
|
||||
/// 版本ID
|
||||
/// </summary>
|
||||
|
||||
public static int VersionCount = 190;
|
||||
public static int VersionCount = 195;
|
||||
|
||||
public static string ServerUrl { get; set; } = "http://1.13.195.131:9000";
|
||||
public static string DebugUrl { get; set; } = "http://localhost:9000";
|
||||
|
||||
@@ -11,11 +11,17 @@ using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Threading;
|
||||
|
||||
namespace AllBase.Helper
|
||||
{
|
||||
public class GlobalConfig
|
||||
{
|
||||
/// <summary>
|
||||
/// 颜色等图形元素需要在主线程操作
|
||||
/// </summary>
|
||||
public static Dispatcher Dispatcher { get; set; }
|
||||
/// <summary>
|
||||
/// 店铺列表
|
||||
/// </summary>
|
||||
@@ -41,7 +47,10 @@ namespace AllBase.Helper
|
||||
/// </summary>
|
||||
public static string OrderTabHeaderStr { get; set; } = "";
|
||||
|
||||
public static Dictionary<string, oms_wei_order_info> DicDecryptOrderAddress { get; set; } = new Dictionary<string, oms_wei_order_info>();
|
||||
|
||||
public static ConcurrentList<Division> Divisions { get; set; } = new ConcurrentList<Division>();
|
||||
public static ConcurrentList<PddDivision> PddDivisions { get; set; } = new ConcurrentList<PddDivision>();
|
||||
|
||||
public static SystemSettings SystemSettings { get; set; }
|
||||
|
||||
@@ -62,6 +71,7 @@ namespace AllBase.Helper
|
||||
public static string dangerItemWords = "打火机,压力罐,刀具,铡刀,充电宝,罂粟,礼炮,煤气罐,仿制枪,暖手宝,灭火器,火炮,纸炮枪,手枪,毫安,喷漆,酒精,锂电,电池,火柴,气罐,气泡弹";
|
||||
public static List<string> lstDangerItemWord { get; set; } = dangerItemWords.Split(',').ToList();
|
||||
|
||||
#region 界面颜色
|
||||
public static System.Drawing.Color DefaultMainColor { get; set; } = System.Drawing.Color.FromArgb(63, 126, 255);
|
||||
public static System.Drawing.Color DefaultMainColorLight { get; set; } = System.Drawing.Color.FromArgb(185, 215, 255);
|
||||
public static System.Drawing.Color DefaultBorderColor { get; set; } = System.Drawing.Color.FromArgb(25, 98, 200);
|
||||
@@ -77,7 +87,39 @@ namespace AllBase.Helper
|
||||
public static System.Drawing.Color WeiXinMainColor { get; set; } = System.Drawing.Color.FromArgb(152, 99, 143);
|
||||
public static System.Drawing.Color WeiXinMainColorLight { get; set; } = System.Drawing.Color.FromArgb(245, 235, 255);
|
||||
public static System.Drawing.Color WeiXinBorderColor { get; set; } = System.Drawing.Color.FromArgb(107, 83, 147);
|
||||
#endregion
|
||||
|
||||
public static BuyConfig BuyConfig { get; set; }
|
||||
|
||||
#region 文本颜色
|
||||
public static SolidColorBrush GreenBrush = new SolidColorBrush(Color.FromArgb(255, 19, 206, 102));
|
||||
public static SolidColorBrush GreenBrush75 = new SolidColorBrush(Color.FromArgb(75, 19, 206, 102));
|
||||
public static SolidColorBrush GreenBrush35 = new SolidColorBrush(Color.FromArgb(35, 19, 206, 102));
|
||||
|
||||
public static SolidColorBrush PurpleBrush = new SolidColorBrush(Color.FromArgb(255, 152, 99, 143));
|
||||
public static SolidColorBrush PurpleBrush100 = new SolidColorBrush(Color.FromArgb(100, 152, 99, 143));
|
||||
public static SolidColorBrush PurpleBrush75 = new SolidColorBrush(Color.FromArgb(75, 152, 99, 143));
|
||||
public static SolidColorBrush PurpleBrush50 = new SolidColorBrush(Color.FromArgb(50, 152, 99, 143));
|
||||
public static SolidColorBrush PurpleBrush35 = new SolidColorBrush(Color.FromArgb(35, 152, 99, 143));
|
||||
|
||||
public static SolidColorBrush YellowBrush = new SolidColorBrush(Color.FromArgb(255, 255, 186, 0));
|
||||
public static SolidColorBrush YellowBrush75 = new SolidColorBrush(Color.FromArgb(75, 255, 186, 0));
|
||||
public static SolidColorBrush YellowBrush35 = new SolidColorBrush(Color.FromArgb(35, 255, 186, 0));
|
||||
|
||||
public static SolidColorBrush LightOrangeBrush = new SolidColorBrush(Color.FromArgb(255, 255, 155, 0));
|
||||
public static SolidColorBrush OrangeBrush = new SolidColorBrush(Color.FromArgb(255, 250, 127, 51));
|
||||
public static SolidColorBrush OrangeBrush50 = new SolidColorBrush(Color.FromArgb(50, 250, 127, 51));
|
||||
|
||||
public static SolidColorBrush RedBrush = new SolidColorBrush(Color.FromArgb(255, 255, 73, 73));
|
||||
public static SolidColorBrush RedBrush75 = new SolidColorBrush(Color.FromArgb(75, 255, 73, 73));
|
||||
public static SolidColorBrush RedBrush35 = new SolidColorBrush(Color.FromArgb(35, 255, 73, 73));
|
||||
|
||||
public static SolidColorBrush GrayBrush = new SolidColorBrush(Color.FromArgb(255, 127, 127, 127));
|
||||
|
||||
public static SolidColorBrush GreenTextBrush = new SolidColorBrush(Color.FromArgb(255, 103, 194, 58));
|
||||
public static SolidColorBrush RedTextBrush = new SolidColorBrush(Color.FromArgb(255, 250, 71, 51));
|
||||
public static SolidColorBrush RedTextBrush205 = new SolidColorBrush(Color.FromArgb(205, 250, 71, 51));
|
||||
public static SolidColorBrush RedTextBrush50 = new SolidColorBrush(Color.FromArgb(50, 250, 71, 51));
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
using AllBase.Helper;
|
||||
using AllBase.Model.MvvmBaseClasses;
|
||||
using NaiBa.Util.Extension;
|
||||
using NPOI.OpenXmlFormats.Dml.Diagram;
|
||||
using NPOI.OpenXmlFormats.Spreadsheet;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@@ -11,11 +12,23 @@ using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
|
||||
|
||||
namespace AllBase.Model.DBModel
|
||||
{
|
||||
public class oms_wei_order_info : PropertyNotifyObject
|
||||
{
|
||||
public string OrderBuyType
|
||||
{
|
||||
get { return this.GetValue(x => x.OrderBuyType); }
|
||||
set { this.SetValue(x => x.OrderBuyType, value); }
|
||||
}
|
||||
public SolidColorBrush OrderBuyTypeColor
|
||||
{
|
||||
get { return this.GetValue(x => x.OrderBuyTypeColor); }
|
||||
set { this.SetValue(x => x.OrderBuyTypeColor, value); }
|
||||
}
|
||||
|
||||
public ObservableCollection<oms_wei_order_item_info> orderItems { get; set; } = new ObservableCollection<oms_wei_order_item_info>();
|
||||
|
||||
public oms_wei_order_item_info order_item1 { get { return orderItems?.Count > 0 ? orderItems[0] : null; } }
|
||||
@@ -38,7 +51,7 @@ namespace AllBase.Model.DBModel
|
||||
{
|
||||
get
|
||||
{
|
||||
if (order_id == "3737846414389704448")
|
||||
if (order_id == "3738070866253717760")
|
||||
{
|
||||
}
|
||||
if (status != 20 && status != 21) return false;
|
||||
@@ -47,9 +60,11 @@ namespace AllBase.Model.DBModel
|
||||
if (gift_order_status == 1 || gift_order_status == 2) return false;
|
||||
if (!string.IsNullOrEmpty(out_order_no))
|
||||
{
|
||||
var oi = orderItems.FirstOrDefault(o => o.ItemTransitOrders.Any(t => t.out_order_no == out_order_no && t.order_void_status == 1));
|
||||
if (oi == null && out_after_sale_status != "退款成功")
|
||||
return false;
|
||||
//var oi = orderItems.FirstOrDefault(o => o.ItemTransitOrders.Any(t => t.out_order_no == out_order_no && t.order_void_status == 1));
|
||||
//if (oi == null && out_after_sale_status != "退款成功")
|
||||
// return false;
|
||||
if (out_after_sale_status != "退款成功")
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -63,7 +78,7 @@ namespace AllBase.Model.DBModel
|
||||
//get { return (purchase_status == 1 || !string.IsNullOrEmpty(out_order_no)) && (status == 20 || status == 21); }
|
||||
get
|
||||
{
|
||||
if (order_id == "3737846414389704448")
|
||||
if (order_id == "3738070866253717760")
|
||||
{
|
||||
|
||||
}
|
||||
@@ -74,8 +89,10 @@ namespace AllBase.Model.DBModel
|
||||
if (gift_order_status == 1 || gift_order_status == 2) return false;
|
||||
if (!string.IsNullOrEmpty(out_order_no))
|
||||
{
|
||||
var oi = orderItems.FirstOrDefault(o => o.ItemTransitOrders.Any(t => t.out_order_no == out_order_no && t.order_void_status == 1));
|
||||
if (oi != null || out_after_sale_status == "退款成功")
|
||||
//var oi = orderItems.FirstOrDefault(o => o.ItemTransitOrders.Any(t => t.out_order_no == out_order_no && t.order_void_status == 1));
|
||||
//if (oi != null || out_after_sale_status == "退款成功")
|
||||
// return false;
|
||||
if (out_after_sale_status == "退款成功")
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@@ -460,7 +477,21 @@ namespace AllBase.Model.DBModel
|
||||
set
|
||||
{
|
||||
this.SetValue(x => x.house_number, value);
|
||||
|
||||
this.AddressStr = user_name + " " + tel_number + " " + province_name + " " + city_name + " " + county_name + " " + detail_info;
|
||||
if (GlobalConfig.DicDecryptOrderAddress.ContainsKey(this.order_id))
|
||||
{
|
||||
var addressOrder = GlobalConfig.DicDecryptOrderAddress[this.order_id];
|
||||
|
||||
this.user_name = addressOrder.user_name;
|
||||
this.tel_number = addressOrder.tel_number;
|
||||
this.tel_number_ext_info = addressOrder.tel_number_ext_info;
|
||||
this.province_name = addressOrder.province_name;
|
||||
this.city_name = addressOrder.city_name;
|
||||
this.county_name = addressOrder.county_name;
|
||||
this.detail_info = addressOrder.detail_info;
|
||||
this.AddressStr = addressOrder.AddressStr;
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
@@ -595,5 +626,25 @@ namespace AllBase.Model.DBModel
|
||||
/// 中转仓的状态 0未使用,1已创建,2创建失败(购买失败),3已创建未有上游快递单号,4已创建有上游快递单号
|
||||
/// </summary>
|
||||
public decimal? transfer_warehouse_status { get; set; }
|
||||
|
||||
public void SetOrderTextProperty()
|
||||
{
|
||||
if (order_id == "3737914129536416512")
|
||||
{
|
||||
|
||||
}
|
||||
if (this.orderItems.Any(oi => oi.OrderItemExt?.buy_type == "直发"))
|
||||
{
|
||||
OrderBuyType = "直发";
|
||||
OrderBuyTypeColor = GlobalConfig.RedTextBrush205;
|
||||
}
|
||||
else if (this.orderItems.Any(oi => oi.ItemTransitOrderWithVoid != null))
|
||||
{
|
||||
OrderBuyType = "云仓";
|
||||
OrderBuyTypeColor = GlobalConfig.GreenTextBrush;
|
||||
}
|
||||
else
|
||||
OrderBuyType = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,10 +20,6 @@ namespace AllBase.Model.DBModel
|
||||
{
|
||||
public class oms_wei_order_item_info : PropertyNotifyObject
|
||||
{
|
||||
/// <summary>
|
||||
/// 颜色等图形元素需要在主线程操作
|
||||
/// </summary>
|
||||
public Dispatcher Dispatcher { get; set; }
|
||||
/// <summary>
|
||||
/// 订单对应店铺
|
||||
/// </summary>
|
||||
@@ -243,13 +239,14 @@ namespace AllBase.Model.DBModel
|
||||
else
|
||||
TransitOrderWaybillFromWareHouseStr = "仓库物流:" + ItemTransitOrder.express_2_company + "-" + ItemTransitOrder.express_2_waybill;
|
||||
|
||||
if (order_id == "3737937905497545216")
|
||||
if (order_id == "3737914129536416512")
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// 仓库物流售后按钮上的文字,仓库作废单不存在仓库物流,所以此处必须是有效的仓库单(含作废失败)
|
||||
if (this.ItemTransitOrder == null || !this.ItemOrder.IsRefundWithCancel)
|
||||
//if (this.ItemTransitOrder == null || !this.ItemOrder.IsRefundWithCancel)
|
||||
if (this.ItemTransitOrderWithVoid == null || (!this.ItemOrder.IsEmergency && !this.ItemOrder.isAbnormal))
|
||||
AddEditTransitWarehouseAfterSaleStr = "";
|
||||
else
|
||||
AddEditTransitWarehouseAfterSaleStr = this.ItemTransitOrderAfterSale == null ? "添加" : "查看";
|
||||
@@ -353,15 +350,9 @@ namespace AllBase.Model.DBModel
|
||||
}
|
||||
|
||||
// 文本确定后设置颜色
|
||||
if (Dispatcher != null)
|
||||
{
|
||||
Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
SetBuyerTransitWaybillStatusStrColor();
|
||||
SetBuyerTransitWaybillStatusBorderColor();
|
||||
SetBuyerTransitWaybillStatusBackColor();
|
||||
}));
|
||||
}
|
||||
SetBuyerTransitWaybillStatusStrColor();
|
||||
SetBuyerTransitWaybillStatusBorderColor();
|
||||
SetBuyerTransitWaybillStatusBackColor();
|
||||
}
|
||||
public SolidColorBrush BuyerTransitWaybillStatusStrColor
|
||||
{
|
||||
@@ -371,15 +362,15 @@ namespace AllBase.Model.DBModel
|
||||
public void SetBuyerTransitWaybillStatusStrColor()
|
||||
{
|
||||
if (BuyerTransitWaybillStatusStr.StartsWith("买手已退款"))
|
||||
BuyerTransitWaybillStatusStrColor = PurpleBrush;
|
||||
BuyerTransitWaybillStatusStrColor = GlobalConfig.PurpleBrush;
|
||||
else if (BuyerTransitWaybillStatusStr.StartsWith("买手已送达"))
|
||||
BuyerTransitWaybillStatusStrColor = GreenBrush;
|
||||
BuyerTransitWaybillStatusStrColor = GlobalConfig.GreenBrush;
|
||||
else if (BuyerTransitWaybillStatusStr.StartsWith("买手已发货"))
|
||||
BuyerTransitWaybillStatusStrColor = YellowBrush;
|
||||
BuyerTransitWaybillStatusStrColor = GlobalConfig.YellowBrush;
|
||||
else if (BuyerTransitWaybillStatusStr.StartsWith("买手未发货"))
|
||||
BuyerTransitWaybillStatusStrColor = RedBrush;
|
||||
BuyerTransitWaybillStatusStrColor = GlobalConfig.RedBrush;
|
||||
else
|
||||
BuyerTransitWaybillStatusStrColor = RedBrush;
|
||||
BuyerTransitWaybillStatusStrColor = GlobalConfig.RedBrush;
|
||||
}
|
||||
public SolidColorBrush BuyerTransitWaybillStatusBorderColor
|
||||
{
|
||||
@@ -389,15 +380,15 @@ namespace AllBase.Model.DBModel
|
||||
public void SetBuyerTransitWaybillStatusBorderColor()
|
||||
{
|
||||
if (BuyerTransitWaybillStatusStr.StartsWith("买手已退款"))
|
||||
BuyerTransitWaybillStatusBorderColor = PurpleBrush75;
|
||||
BuyerTransitWaybillStatusBorderColor = GlobalConfig.PurpleBrush75;
|
||||
else if (BuyerTransitWaybillStatusStr.StartsWith("买手已送达"))
|
||||
BuyerTransitWaybillStatusBorderColor = GreenBrush75;
|
||||
BuyerTransitWaybillStatusBorderColor = GlobalConfig.GreenBrush75;
|
||||
else if (BuyerTransitWaybillStatusStr.StartsWith("买手已发货"))
|
||||
BuyerTransitWaybillStatusBorderColor = YellowBrush75;
|
||||
BuyerTransitWaybillStatusBorderColor = GlobalConfig.YellowBrush75;
|
||||
else if (BuyerTransitWaybillStatusStr.StartsWith("买手未发货"))
|
||||
BuyerTransitWaybillStatusBorderColor = RedBrush75;
|
||||
BuyerTransitWaybillStatusBorderColor = GlobalConfig.RedBrush75;
|
||||
else
|
||||
BuyerTransitWaybillStatusBorderColor = RedBrush75;
|
||||
BuyerTransitWaybillStatusBorderColor = GlobalConfig.RedBrush75;
|
||||
}
|
||||
public SolidColorBrush BuyerTransitWaybillStatusBackColor
|
||||
{
|
||||
@@ -407,15 +398,15 @@ namespace AllBase.Model.DBModel
|
||||
public void SetBuyerTransitWaybillStatusBackColor()
|
||||
{
|
||||
if (BuyerTransitWaybillStatusStr.StartsWith("买手已退款"))
|
||||
BuyerTransitWaybillStatusBackColor = PurpleBrush35;
|
||||
BuyerTransitWaybillStatusBackColor = GlobalConfig.PurpleBrush35;
|
||||
else if (BuyerTransitWaybillStatusStr.StartsWith("买手已送达"))
|
||||
BuyerTransitWaybillStatusBackColor = GreenBrush35;
|
||||
BuyerTransitWaybillStatusBackColor = GlobalConfig.GreenBrush35;
|
||||
else if (BuyerTransitWaybillStatusStr.StartsWith("买手已发货"))
|
||||
BuyerTransitWaybillStatusBackColor = YellowBrush35;
|
||||
BuyerTransitWaybillStatusBackColor = GlobalConfig.YellowBrush35;
|
||||
else if (BuyerTransitWaybillStatusStr.StartsWith("买手未发货"))
|
||||
BuyerTransitWaybillStatusBackColor = RedBrush35;
|
||||
BuyerTransitWaybillStatusBackColor = GlobalConfig.RedBrush35;
|
||||
else
|
||||
BuyerTransitWaybillStatusBackColor = RedBrush35;
|
||||
BuyerTransitWaybillStatusBackColor = GlobalConfig.RedBrush35;
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -470,12 +461,12 @@ namespace AllBase.Model.DBModel
|
||||
//if (WarehouseWaybillStatusStr.StartsWith("中转已作废"))
|
||||
// return PurpleBrush;
|
||||
if (WarehouseWaybillStatusStr.StartsWith("中转已出库"))
|
||||
return GreenBrush;
|
||||
return GlobalConfig.GreenBrush;
|
||||
if (WarehouseWaybillStatusStr.StartsWith("中转已入库") || WarehouseWaybillStatusStr.StartsWith("中转已取号") || WarehouseWaybillStatusStr.StartsWith("中转提前取号"))
|
||||
return YellowBrush;
|
||||
return GlobalConfig.YellowBrush;
|
||||
if (WarehouseWaybillStatusStr.StartsWith("中转待取号"))
|
||||
return RedBrush;
|
||||
return RedBrush;
|
||||
return GlobalConfig.RedBrush;
|
||||
return GlobalConfig.RedBrush;
|
||||
}
|
||||
set { }
|
||||
}
|
||||
@@ -490,12 +481,12 @@ namespace AllBase.Model.DBModel
|
||||
//if (WarehouseWaybillStatusStr.StartsWith("中转已作废"))
|
||||
// return PurpleBrush75;
|
||||
if (WarehouseWaybillStatusStr.StartsWith("中转已出库"))
|
||||
return GreenBrush75;
|
||||
return GlobalConfig.GreenBrush75;
|
||||
if (WarehouseWaybillStatusStr.StartsWith("中转已入库") || WarehouseWaybillStatusStr.StartsWith("中转已取号") || WarehouseWaybillStatusStr.StartsWith("中转提前取号"))
|
||||
return YellowBrush75;
|
||||
return GlobalConfig.YellowBrush75;
|
||||
if (WarehouseWaybillStatusStr.StartsWith("中转待取号"))
|
||||
return RedBrush75;
|
||||
return RedBrush75;
|
||||
return GlobalConfig.RedBrush75;
|
||||
return GlobalConfig.RedBrush75;
|
||||
}
|
||||
set { }
|
||||
}
|
||||
@@ -506,12 +497,12 @@ namespace AllBase.Model.DBModel
|
||||
//if (WarehouseWaybillStatusStr.StartsWith("中转已作废"))
|
||||
// return PurpleBrush35
|
||||
if (WarehouseWaybillStatusStr.StartsWith("中转已出库"))
|
||||
return GreenBrush35;
|
||||
return GlobalConfig.GreenBrush35;
|
||||
if (WarehouseWaybillStatusStr.StartsWith("中转已入库") || WarehouseWaybillStatusStr.StartsWith("中转已取号") || WarehouseWaybillStatusStr.StartsWith("中转提前取号"))
|
||||
return YellowBrush35;
|
||||
return GlobalConfig.YellowBrush35;
|
||||
if (WarehouseWaybillStatusStr.StartsWith("中转待取号"))
|
||||
return RedBrush35;
|
||||
return RedBrush35;
|
||||
return GlobalConfig.RedBrush35;
|
||||
return GlobalConfig.RedBrush35;
|
||||
}
|
||||
set { }
|
||||
}
|
||||
@@ -566,10 +557,10 @@ namespace AllBase.Model.DBModel
|
||||
get
|
||||
{
|
||||
if (TransitRefundStatusStr.Contains("退款成功"))
|
||||
return GreenBrush;
|
||||
return GlobalConfig.GreenBrush;
|
||||
if (TransitRefundStatusStr.Contains("需手动申请售后"))
|
||||
return RedBrush;
|
||||
return LightOrangeBrush;
|
||||
return GlobalConfig.RedBrush;
|
||||
return GlobalConfig.LightOrangeBrush;
|
||||
//return YellowBrush;
|
||||
}
|
||||
set
|
||||
@@ -613,7 +604,7 @@ namespace AllBase.Model.DBModel
|
||||
{
|
||||
get
|
||||
{
|
||||
return OutOrderTimeQualifiedStr.EndsWith("√") ? GreenTextBrush : RedTextBrush;
|
||||
return OutOrderTimeQualifiedStr.EndsWith("√") ? GlobalConfig.GreenTextBrush : GlobalConfig.RedTextBrush;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -650,12 +641,12 @@ namespace AllBase.Model.DBModel
|
||||
get
|
||||
{
|
||||
if ("未知状态,未付款已取消,售后完成订单取消".Contains(OrderItemStatusStr))
|
||||
return RedBrush;
|
||||
return GlobalConfig.RedBrush;
|
||||
if ("订单完成".Contains(OrderItemStatusStr))
|
||||
return GreenBrush;
|
||||
return GlobalConfig.GreenBrush;
|
||||
if ("待买家收货,店铺部分发货,待店铺发货,待付款".Contains(OrderItemStatusStr))
|
||||
return YellowBrush;
|
||||
return YellowBrush;
|
||||
return GlobalConfig.YellowBrush;
|
||||
return GlobalConfig.YellowBrush;
|
||||
}
|
||||
set { }
|
||||
}
|
||||
@@ -664,12 +655,12 @@ namespace AllBase.Model.DBModel
|
||||
get
|
||||
{
|
||||
if ("未知状态,未付款已取消,售后完成订单取消".Contains(OrderItemStatusStr))
|
||||
return RedBrush75;
|
||||
return GlobalConfig.RedBrush75;
|
||||
if ("订单完成".Contains(OrderItemStatusStr))
|
||||
return GreenBrush75;
|
||||
return GlobalConfig.GreenBrush75;
|
||||
if ("待买家收货,店铺部分发货,待店铺发货,待付款".Contains(OrderItemStatusStr))
|
||||
return YellowBrush75;
|
||||
return YellowBrush75;
|
||||
return GlobalConfig.YellowBrush75;
|
||||
return GlobalConfig.YellowBrush75;
|
||||
}
|
||||
set { }
|
||||
}
|
||||
@@ -678,12 +669,12 @@ namespace AllBase.Model.DBModel
|
||||
get
|
||||
{
|
||||
if ("未知状态,未付款已取消,售后完成订单取消".Contains(OrderItemStatusStr))
|
||||
return RedBrush35;
|
||||
return GlobalConfig.RedBrush35;
|
||||
if ("订单完成".Contains(OrderItemStatusStr))
|
||||
return GreenBrush35;
|
||||
return GlobalConfig.GreenBrush35;
|
||||
if ("待买家收货,店铺部分发货,待店铺发货,待付款".Contains(OrderItemStatusStr))
|
||||
return YellowBrush35;
|
||||
return YellowBrush35;
|
||||
return GlobalConfig.YellowBrush35;
|
||||
return GlobalConfig.YellowBrush35;
|
||||
}
|
||||
set { }
|
||||
}
|
||||
@@ -773,10 +764,13 @@ namespace AllBase.Model.DBModel
|
||||
//get { return "¥" + (ItemOrder.out_amount * 0.01m).ParseToDecimal().ToString("0.00"); }
|
||||
get
|
||||
{
|
||||
if (ItemTransitOrder?.out_amount > 0)
|
||||
return "¥" + (ItemTransitOrder.out_amount * 0.01m).ParseToDecimal().ToString("0.00");
|
||||
//if (ItemTransitOrder?.out_amount > 0)
|
||||
// return "¥" + (ItemTransitOrder.out_amount * 0.01m).ParseToDecimal().ToString("0.00");
|
||||
|
||||
if (ItemTransitOrders.Any(t => t.refund_status != "买手退款成功"))
|
||||
return "¥" + (ItemTransitOrders.Where(t => t.refund_status != "买手退款成功").Sum(t => t.out_amount) * 0.01m).ParseToDecimal().ToString("0.00");
|
||||
else
|
||||
return "¥" + (commission_amount.ParseToInt() * 0.01m).ParseToDecimal().ToString("0.00");
|
||||
return "¥" + ((ItemOrder?.out_amount).ParseToInt() * 0.01m).ParseToDecimal().ToString("0.00");
|
||||
}
|
||||
set { }
|
||||
}
|
||||
@@ -825,9 +819,9 @@ namespace AllBase.Model.DBModel
|
||||
get
|
||||
{
|
||||
if (refund_status == 2 || refund_status == 3 || refund_status == 4 || refund_status == 11)
|
||||
return GrayBrush;
|
||||
return GlobalConfig.GrayBrush;
|
||||
//return ProfitCount > 0 ? new SolidColorBrush(Color.FromRgb(103, 194, 58)) : new SolidColorBrush(Color.FromRgb(250, 71, 51));
|
||||
return ProfitCount > 0 ? GreenTextBrush : RedTextBrush;
|
||||
return ProfitCount > 0 ? GlobalConfig.GreenTextBrush : GlobalConfig.RedTextBrush;
|
||||
}
|
||||
set { }
|
||||
}
|
||||
@@ -874,6 +868,53 @@ namespace AllBase.Model.DBModel
|
||||
set { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 拼多多秒退异常重拍按钮可见条件
|
||||
/// </summary>
|
||||
public Visibility BtnAbnormalBtnVisibility
|
||||
{
|
||||
get { return this.GetValue(x => x.BtnAbnormalBtnVisibility); }
|
||||
set { this.SetValue(x => x.BtnAbnormalBtnVisibility, value); }
|
||||
}
|
||||
/// <summary>
|
||||
/// 直发按钮可见条件
|
||||
/// </summary>
|
||||
public Visibility BtnDirectBuyOrderVisibility
|
||||
{
|
||||
get { return this.GetValue(x => x.BtnDirectBuyOrderVisibility); }
|
||||
set { this.SetValue(x => x.BtnDirectBuyOrderVisibility, value); }
|
||||
}
|
||||
public void SetAbnormalAndDirectBtnVisibility()
|
||||
{
|
||||
// 买手秒退异常重拍
|
||||
BtnAbnormalBtnVisibility = Visibility.Visible;
|
||||
// 不是异常单的不可异常重拍
|
||||
if (this.ItemOrder?.isAbnormal != true)
|
||||
BtnAbnormalBtnVisibility = Visibility.Collapsed;
|
||||
// 买手未退款的,中转正式取号以后的,不可异常重拍
|
||||
else if (this.ItemTransitOrder?.refund_status != "买手退款成功" ||
|
||||
this.WarehouseWaybillStatusStr == "中转已取号" || this.WarehouseWaybillStatusStr == "中转已入库" || this.WarehouseWaybillStatusStr == "中转已出库")
|
||||
BtnAbnormalBtnVisibility = Visibility.Collapsed;
|
||||
// 已正式取号的,不可异常重拍
|
||||
if (this.ItemTransitOrder?.pre_allocated_order_no == 1 || this.ItemTransitOrder?.pre_allocated_order_no == 3)
|
||||
BtnAbnormalBtnVisibility = Visibility.Collapsed;
|
||||
// 仓库异常的异常单不可异常重拍
|
||||
List<string> rawMsgKeyWords = new List<string> { "取号异常", "无法调用" };
|
||||
if (rawMsgKeyWords.Any(k => (this.ItemTransitOrderWithVoid?.raw_message).ParseToString().Contains(k)) && this.ItemTransitOrderWithVoid?.transfer_warehouse_status != 1)
|
||||
BtnAbnormalBtnVisibility = Visibility.Collapsed;
|
||||
|
||||
// 直拍按钮
|
||||
BtnDirectBuyOrderVisibility = Visibility.Collapsed;
|
||||
if (this.ItemOrder?.IsWaitBuy == true && this.BuyGoodsBtnTxt != "关联拍单")
|
||||
BtnDirectBuyOrderVisibility = Visibility.Visible;
|
||||
if (this.ItemOrder?.isAbnormal == true)
|
||||
{
|
||||
//if (BtnAbnormalBtnVisibility == Visibility.Collapsed && (this.ItemOrder.out_order_no.IsNullOrEmpty() || this.ItemOrder.out_after_sale_status == "退款成功"))
|
||||
if (this.ItemOrder.out_order_no.IsNullOrEmpty() || this.ItemOrder.out_after_sale_status == "退款成功")
|
||||
BtnDirectBuyOrderVisibility = Visibility.Visible;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 订单商品表数据库id
|
||||
/// </summary>
|
||||
@@ -1017,73 +1058,20 @@ namespace AllBase.Model.DBModel
|
||||
/// </summary>
|
||||
public int? refund_status { get; set; }
|
||||
|
||||
|
||||
|
||||
public static SolidColorBrush PurpleBrush;
|
||||
public static SolidColorBrush PurpleBrush75;
|
||||
public static SolidColorBrush PurpleBrush50;
|
||||
public static SolidColorBrush PurpleBrush35;
|
||||
|
||||
public static SolidColorBrush GreenBrush;
|
||||
public static SolidColorBrush GreenBrush75;
|
||||
public static SolidColorBrush GreenBrush35;
|
||||
|
||||
public static SolidColorBrush YellowBrush;
|
||||
public static SolidColorBrush YellowBrush75;
|
||||
public static SolidColorBrush YellowBrush35;
|
||||
|
||||
public static SolidColorBrush LightOrangeBrush;
|
||||
public static SolidColorBrush OrangeBrush;
|
||||
public static SolidColorBrush OrangeBrush50;
|
||||
|
||||
public static SolidColorBrush RedBrush;
|
||||
public static SolidColorBrush RedBrush75;
|
||||
public static SolidColorBrush RedBrush35;
|
||||
|
||||
public static SolidColorBrush GrayBrush;
|
||||
|
||||
public static SolidColorBrush GreenTextBrush;
|
||||
public static SolidColorBrush RedTextBrush;
|
||||
public static SolidColorBrush RedTextBrush50;
|
||||
|
||||
public void SetOrderItemTextProperty()
|
||||
{
|
||||
CreateDateTime = BaseClass.StampToDateTime((ItemOrder?.create_time).ParseToInt());
|
||||
CreateDateTimeStr = CreateDateTime.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
UpdateTimeStr = BaseClass.StampToDateTime((ItemOrder?.update_time).ParseToInt()).ToString("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
if (PurpleBrush == null && this.Dispatcher != null)
|
||||
{
|
||||
Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
PurpleBrush = new SolidColorBrush(Color.FromArgb(255, 152, 99, 143));
|
||||
PurpleBrush75 = new SolidColorBrush(Color.FromArgb(75, 152, 99, 143));
|
||||
PurpleBrush50 = new SolidColorBrush(Color.FromArgb(50, 152, 99, 143));
|
||||
PurpleBrush35 = new SolidColorBrush(Color.FromArgb(35, 152, 99, 143));
|
||||
|
||||
GreenBrush = new SolidColorBrush(Color.FromArgb(255, 19, 206, 102));
|
||||
GreenBrush75 = new SolidColorBrush(Color.FromArgb(75, 19, 206, 102));
|
||||
GreenBrush35 = new SolidColorBrush(Color.FromArgb(35, 19, 206, 102));
|
||||
|
||||
YellowBrush = new SolidColorBrush(Color.FromArgb(255, 255, 186, 0));
|
||||
YellowBrush75 = new SolidColorBrush(Color.FromArgb(75, 255, 186, 0));
|
||||
YellowBrush35 = new SolidColorBrush(Color.FromArgb(35, 255, 186, 0));
|
||||
|
||||
LightOrangeBrush = new SolidColorBrush(Color.FromArgb(255, 255, 155, 0));
|
||||
OrangeBrush = new SolidColorBrush(Color.FromArgb(255, 250, 127, 51));
|
||||
OrangeBrush50 = new SolidColorBrush(Color.FromArgb(50, 250, 127, 51));
|
||||
|
||||
RedBrush = new SolidColorBrush(Color.FromArgb(255, 255, 73, 73));
|
||||
RedBrush75 = new SolidColorBrush(Color.FromArgb(75, 255, 73, 73));
|
||||
RedBrush35 = new SolidColorBrush(Color.FromArgb(35, 255, 73, 73));
|
||||
|
||||
GrayBrush = new SolidColorBrush(Color.FromArgb(255, 127, 127, 127));
|
||||
|
||||
GreenTextBrush = new SolidColorBrush(Color.FromArgb(255, 103, 194, 58));
|
||||
RedTextBrush = new SolidColorBrush(Color.FromArgb(255, 250, 71, 51));
|
||||
RedTextBrush50 = new SolidColorBrush(Color.FromArgb(50, 250, 71, 51));
|
||||
}));
|
||||
}
|
||||
//if (PurpleBrush == null && GlobalConfig.Dispatcher != null)
|
||||
//{
|
||||
// // 初始化笔刷,必修Invoke;
|
||||
// GlobalConfig.Dispatcher.Invoke(new Action(() =>
|
||||
// {
|
||||
|
||||
// }));
|
||||
//}
|
||||
|
||||
this.SetTransitOrder();
|
||||
this.SetItemRefund();
|
||||
@@ -1092,6 +1080,7 @@ namespace AllBase.Model.DBModel
|
||||
|
||||
// 拍单、代发等信息判断并控制拍单按钮
|
||||
this.UpdateOrderItemBuyButton();
|
||||
this.SetAbnormalAndDirectBtnVisibility();
|
||||
}
|
||||
|
||||
public void UpdateOrderItemBuyButton()
|
||||
@@ -1101,39 +1090,44 @@ namespace AllBase.Model.DBModel
|
||||
if (GlobalConfig.lstDangerItemWord.Any(d => order_item.title.Contains(d)))
|
||||
{
|
||||
order_item.IsBuyGoodsBtnEnabled = false;
|
||||
order_item.BuyGoodsBtnBackColor = RedTextBrush50;
|
||||
order_item.BuyGoodsBtnColor = RedTextBrush;
|
||||
order_item.BuyGoodsBtnBackColor = GlobalConfig.RedTextBrush50;
|
||||
order_item.BuyGoodsBtnColor = GlobalConfig.RedTextBrush;
|
||||
order_item.BuyGoodsBtnTxt = "危险品不支持中转拍单";
|
||||
}
|
||||
else if (Shop == null || (Shop?.LoginStatus != "登录成功" /*&& Shop?.Is29Supplier == null*/))
|
||||
{
|
||||
order_item.IsBuyGoodsBtnEnabled = false;
|
||||
//order_item.IsBuyGoodsBtnEnabled = true;
|
||||
order_item.BuyGoodsBtnBackColor = RedTextBrush50;
|
||||
order_item.BuyGoodsBtnColor = RedTextBrush;
|
||||
order_item.BuyGoodsBtnBackColor = GlobalConfig.RedTextBrush50;
|
||||
order_item.BuyGoodsBtnColor = GlobalConfig.RedTextBrush;
|
||||
order_item.BuyGoodsBtnTxt = "请登录店铺";
|
||||
}
|
||||
else if (Shop?.LoginStatus == "登录成功" && Shop?.Is29Supplier == null)
|
||||
{
|
||||
order_item.IsBuyGoodsBtnEnabled = false;
|
||||
order_item.BuyGoodsBtnBackColor = OrangeBrush50;
|
||||
order_item.BuyGoodsBtnColor = OrangeBrush;
|
||||
order_item.BuyGoodsBtnBackColor = GlobalConfig.OrangeBrush50;
|
||||
order_item.BuyGoodsBtnColor = GlobalConfig.OrangeBrush;
|
||||
order_item.BuyGoodsBtnTxt = "代发状态读取中请稍候";
|
||||
}
|
||||
else if (Shop?.Is29Supplier == false)
|
||||
{
|
||||
//order_item.IsBuyGoodsBtnEnabled = false;
|
||||
order_item.IsBuyGoodsBtnEnabled = true;
|
||||
order_item.BuyGoodsBtnBackColor = RedTextBrush50;
|
||||
order_item.BuyGoodsBtnColor = RedTextBrush;
|
||||
order_item.BuyGoodsBtnBackColor = GlobalConfig.RedTextBrush50;
|
||||
order_item.BuyGoodsBtnColor = GlobalConfig.RedTextBrush;
|
||||
order_item.BuyGoodsBtnTxt = "去店铺后台绑定代发";
|
||||
}
|
||||
else
|
||||
{
|
||||
order_item.IsBuyGoodsBtnEnabled = true;
|
||||
order_item.BuyGoodsBtnTxt = order_item.BuyMap == null ? "关联拍单" : "拍单";
|
||||
order_item.BuyGoodsBtnBackColor = PurpleBrush50;
|
||||
order_item.BuyGoodsBtnColor = PurpleBrush;
|
||||
order_item.BuyGoodsBtnTxt = order_item.BuyMap == null ? "关联拍单" : "云仓拍单";
|
||||
if (order_item.BuyMap == null)
|
||||
{
|
||||
order_item.BuyGoodsBtnBackColor = GlobalConfig.PurpleBrush100;
|
||||
}
|
||||
else
|
||||
order_item.BuyGoodsBtnBackColor = GlobalConfig.PurpleBrush35;
|
||||
order_item.BuyGoodsBtnColor = GlobalConfig.PurpleBrush;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,9 +11,14 @@ namespace AllBase.Model.DBModel
|
||||
public long? id { get; set; }
|
||||
public string order_id { get; set; }
|
||||
public string sku_id { get; set; }
|
||||
public string out_order_id { get; set; }
|
||||
public string shop_app_id { get; set; }
|
||||
public string shop_name { get; set; }
|
||||
/// <summary>
|
||||
/// 直发/云仓(一般只有直发才会写值,直发会覆盖中转)
|
||||
/// </summary>
|
||||
public string buy_type { get; set; }
|
||||
/// <summary>
|
||||
/// 订单异常文本
|
||||
/// </summary>
|
||||
public string abnormal_text { get; set; }
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Division
|
||||
{
|
||||
public class PddDivision
|
||||
{
|
||||
public int? code { get; set; } // null,
|
||||
public int? national_code { get; set; } // null,
|
||||
public int? pdd_region_id { get; set; } // 500,
|
||||
public int? parent_id { get; set; } // 52,
|
||||
public string name { get; set; } // "东城区",
|
||||
public string level { get; set; } // "district",
|
||||
public int? region_type { get; set; } // 3,
|
||||
public List<PddDivision> children { get; set; } // [],
|
||||
public int? region_tag { get; set; } // 1,
|
||||
public int? is_virtual { get; set; } // 0,
|
||||
public bool? is_capital { get; set; } // false,
|
||||
public int? is_state_subsidy_supported { get; set; } // 1,
|
||||
public int? street_required_for_state_subsidy { get; set; } // 0,
|
||||
public PddDivisionLocation location { get; set; } // { "lat": 39.92855, "lng": 116.41637 },
|
||||
public bool? pdd_only { get; set; } // true
|
||||
}
|
||||
|
||||
public class PddDivisionLocation
|
||||
{
|
||||
public decimal? lat { get; set; } // 39.92855
|
||||
public decimal? lng { get; set; } // 116.41637
|
||||
}
|
||||
}
|
||||
@@ -94,6 +94,15 @@ namespace AllBase.Model.Result
|
||||
if (expressCompanyName.Contains("其他快递")) return "OTHER";
|
||||
return "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否直发
|
||||
/// </summary>
|
||||
public string IsDirectStr
|
||||
{
|
||||
get { return this.GetValue(x => x.IsDirectStr); }
|
||||
set { this.SetValue(x => x.IsDirectStr, value); }
|
||||
}
|
||||
public string ShopOrderIdStr
|
||||
{
|
||||
get { return this.GetValue(x => x.ShopOrderIdStr); }
|
||||
@@ -346,7 +355,7 @@ namespace AllBase.Model.Result
|
||||
[JsonIgnore]
|
||||
public string outExpressCompanyMsg
|
||||
{
|
||||
get { return extra_info.order_hint?.message; }
|
||||
get { return extra_info?.order_hint?.message; }
|
||||
set { }
|
||||
}
|
||||
/// <summary>
|
||||
@@ -388,8 +397,22 @@ namespace AllBase.Model.Result
|
||||
}
|
||||
public string sendStatus
|
||||
{
|
||||
get { return this.GetValue(x => x.sendStatus); }
|
||||
set { this.SetValue(x => x.sendStatus, value); }
|
||||
get
|
||||
{
|
||||
if (this.order_sn == "260729-658558174861688")
|
||||
{
|
||||
|
||||
}
|
||||
return this.GetValue(x => x.sendStatus);
|
||||
}
|
||||
set
|
||||
{
|
||||
if (this.order_sn == "260729-658558174861688")
|
||||
{
|
||||
|
||||
}
|
||||
this.SetValue(x => x.sendStatus, value);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 微信退款单状态
|
||||
|
||||
@@ -0,0 +1,231 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Threading;
|
||||
|
||||
namespace AllBase.Util
|
||||
{
|
||||
public class ObservableCollectionThreadSafe<T>
|
||||
: ObservableCollection<T>, IDisposable
|
||||
{
|
||||
#region Data
|
||||
private Dispatcher _dispatcher;
|
||||
private ReaderWriterLockSlim _lock;
|
||||
#endregion
|
||||
|
||||
#region Constructor
|
||||
public ObservableCollectionThreadSafe()
|
||||
{
|
||||
_dispatcher = Dispatcher.CurrentDispatcher;
|
||||
_lock = new ReaderWriterLockSlim();
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region Overrides
|
||||
|
||||
/// <summary>
|
||||
/// Clear all items
|
||||
/// </summary>
|
||||
protected override void ClearItems()
|
||||
{
|
||||
_dispatcher.InvokeIfRequired(() =>
|
||||
{
|
||||
_lock.EnterWriteLock();
|
||||
try
|
||||
{
|
||||
base.ClearItems();
|
||||
}
|
||||
finally
|
||||
{
|
||||
_lock.ExitWriteLock();
|
||||
}
|
||||
}, DispatcherPriority.DataBind);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Inserts an item
|
||||
/// </summary>
|
||||
protected override void InsertItem(int index, T item)
|
||||
{
|
||||
_dispatcher.InvokeIfRequired(() =>
|
||||
{
|
||||
if (index > this.Count)
|
||||
return;
|
||||
|
||||
_lock.EnterWriteLock();
|
||||
try
|
||||
{
|
||||
base.InsertItem(index, item);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_lock.ExitWriteLock();
|
||||
}
|
||||
}, DispatcherPriority.DataBind);
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Moves an item
|
||||
/// </summary>
|
||||
protected override void MoveItem(int oldIndex, int newIndex)
|
||||
{
|
||||
_dispatcher.InvokeIfRequired(() =>
|
||||
{
|
||||
_lock.EnterReadLock();
|
||||
int itemCount = this.Count;
|
||||
_lock.ExitReadLock();
|
||||
|
||||
if (oldIndex >= itemCount |
|
||||
newIndex >= itemCount |
|
||||
oldIndex == newIndex)
|
||||
return;
|
||||
|
||||
_lock.EnterWriteLock();
|
||||
try
|
||||
{
|
||||
base.MoveItem(oldIndex, newIndex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_lock.ExitWriteLock();
|
||||
}
|
||||
}, DispatcherPriority.DataBind);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Removes an item
|
||||
/// </summary>
|
||||
protected override void RemoveItem(int index)
|
||||
{
|
||||
|
||||
_dispatcher.InvokeIfRequired(() =>
|
||||
{
|
||||
if (index >= this.Count)
|
||||
return;
|
||||
|
||||
_lock.EnterWriteLock();
|
||||
try
|
||||
{
|
||||
base.RemoveItem(index);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_lock.ExitWriteLock();
|
||||
}
|
||||
}, DispatcherPriority.DataBind);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets an item
|
||||
/// </summary>
|
||||
protected override void SetItem(int index, T item)
|
||||
{
|
||||
_dispatcher.InvokeIfRequired(() =>
|
||||
{
|
||||
_lock.EnterWriteLock();
|
||||
try
|
||||
{
|
||||
base.SetItem(index, item);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_lock.ExitWriteLock();
|
||||
}
|
||||
}, DispatcherPriority.DataBind);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Public Methods
|
||||
/// <summary>
|
||||
/// Return as a cloned copy of this Collection
|
||||
/// </summary>
|
||||
public T[] ToSyncArray()
|
||||
{
|
||||
_lock.EnterReadLock();
|
||||
try
|
||||
{
|
||||
T[] _sync = new T[this.Count];
|
||||
this.CopyTo(_sync, 0);
|
||||
return _sync;
|
||||
}
|
||||
finally
|
||||
{
|
||||
_lock.ExitReadLock();
|
||||
}
|
||||
}
|
||||
|
||||
#region IDisposable Support
|
||||
private bool disposedValue = false; // To detect redundant calls
|
||||
|
||||
protected virtual void Dispose(bool disposing)
|
||||
{
|
||||
if (!disposedValue)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (_lock != null)
|
||||
_lock.Dispose();
|
||||
}
|
||||
|
||||
// TODO: free unmanaged resources (unmanaged objects) and override a finalizer below.
|
||||
// TODO: set large fields to null.
|
||||
|
||||
disposedValue = true;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: override a finalize only if Dispose(bool disposing) above has code to free unmanaged resources.
|
||||
// ~ObservableCollectionThreadSafe() {
|
||||
// // Do not change this code. Put cleanup code in Dispose(bool disposing) above.
|
||||
// Dispose(false);
|
||||
// }
|
||||
|
||||
// This code added to correctly implement the disposable pattern.
|
||||
public void Dispose()
|
||||
{
|
||||
// Do not change this code. Put cleanup code in Dispose(bool disposing) above.
|
||||
Dispose(true);
|
||||
// TODO: uncomment the following line if the finalize is overridden above.
|
||||
// GC.SuppressFinalize(this);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// WPF Threading extension methods
|
||||
/// </summary>
|
||||
public static class WPFControlThreadingExtensions
|
||||
{
|
||||
#region Public Methods
|
||||
/// <summary>
|
||||
/// A simple WPF threading extension method, to invoke a delegate
|
||||
/// on the correct thread if it is not currently on the correct thread
|
||||
/// Which can be used with DispatcherObject types
|
||||
/// </summary>
|
||||
/// <param name="disp">The Dispatcher object on which to do the Invoke</param>
|
||||
/// <param name="performAction">The delegate to run</param>
|
||||
/// <param name="priority">The DispatcherPriority</param>
|
||||
public static void InvokeIfRequired(this Dispatcher disp,
|
||||
Action performAction, DispatcherPriority priority)
|
||||
{
|
||||
if (disp.Thread != Thread.CurrentThread)
|
||||
{
|
||||
disp.Invoke(priority, performAction);
|
||||
}
|
||||
else
|
||||
performAction();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -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命令
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user