Files
29WxOrder/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs
T

1591 lines
57 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using _29WxOrderWpf.BaseWindows;
using _29WxOrderWpf.Common;
using _29WxOrderWpf.Converters;
using _29WxOrderWpf.Ctrls.BuyerCtrls;
using _29WxOrderWpf.UserControls;
using _29WxOrderWpf.Windows.OrderWindows;
using AllBase;
using AllBase.Helper;
using AllBase.Model;
using AllBase.Model.DBModel;
using AllBase.Model.Result;
using CefSharp.DevTools.DOM;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Policy;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
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;
using Work._29Tools.Forms.ShopForms;
using Work._29Tools.Forms.ToolForms;
using Work.BaseForms;
using static _29WxOrderWpf.Services.ShipGiftService;
using static System.Net.WebRequestMethods;
namespace _29WxOrderWpf.Ctrls.OrderCtrls
{
/// <summary>
/// OrderListRowItemCtrl.xaml 的交互逻辑
/// </summary>
public partial class OrderListRowItemCtrl : UserControl
{
public OrderListRowItemCtrl()
{
InitializeComponent();
txtTransitOrderBuyerStr.AddHandler(TextBox.MouseUpEvent, new MouseButtonEventHandler(txtTransitOrderNumStr_MouseLeftButtonUp), true);
txtTransitOrderNumStr.AddHandler(TextBox.MouseUpEvent, new MouseButtonEventHandler(txtTransitOrderNumStr_MouseLeftButtonUp), true);
txtDirectBuyer.AddHandler(TextBox.MouseUpEvent, new MouseButtonEventHandler(txtDirectOrderNumStr_MouseLeftButtonUp), true);
txtDirectBuyerOrderNo.AddHandler(TextBox.MouseUpEvent, new MouseButtonEventHandler(txtDirectOrderNumStr_MouseLeftButtonUp), true);
txtRefundId.AddHandler(TextBox.MouseUpEvent, new MouseButtonEventHandler(txtRefundId_MouseLeftButtonUp), true);
txtWarehouseStatus.AddHandler(TextBox.MouseEnterEvent, new MouseEventHandler(txtWarehouseStatus_MouseEnter), true);
}
private void txtRefundId_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == order_item.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=" + order_item.ItemRefund.after_sale_order_id;
}
shopLoginForm.Show();
}
}
}
private async void btnSeeAddressDetail_Click(object sender, RoutedEventArgs e)
{
var orderItem = this.DataContext as oms_wei_order_item_info;
if (orderItem == null)
return;
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == orderItem.shop_id.ParseToString());
if (shop == null)
return;
ShowOrderAddress(shop, orderItem.order_id);
}
void ShowOrderAddress(ShopLoginInfo shop, string orderId, bool ShowErrorDialog = true)
{
//var rows = dgvOrder.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colOrderId"].Value.ParseToString() == orderId);
var order = GlobalConfig.lstOrder.FirstOrDefault(o => o.order_id == orderId);
var deRst = "测试地址写入{\"code\"0}";
deRst = decryptOrder(shop, orderId);
if (deRst.Contains("\"code\":0"))
{
var url = BaseClass.Build29WxObjString("shop/wx_add_mdy_order_address");
var data = UserLogin.GetSignaturex();
data += "&shop_id=" + shop.ShopId;
data += "&order_id=" + orderId;
data += "&order_address=" + GetHtml.UrlEncodeUtf8(deRst);
var html = GetHtml.PostUtf8(url, data);
if (!html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (!html.Contains("\"code\":200"))
{
var errMsg = BaseRegex.GetStringJsonByRegs(ref html, html, "msg");
if (order != null)
{
this.Dispatcher.Invoke(new Action(() =>
{
GetDecryptOrder(deRst, order);
GlobalConfig.DicDecryptOrderAddress[order.order_id] = order;
if (ShowErrorDialog)
BaseMsgWindow.ShowAnimateMessage("查看地址成功但保存到服务端失败:" + errMsg, "Error", 5);
}));
}
}
else
{
if (order != null)
{
this.Dispatcher.Invoke(new Action(() =>
{
GetDecryptOrder(deRst, order);
GlobalConfig.DicDecryptOrderAddress[order.order_id] = order;
BaseMsgWindow.ShowAnimateMessage("查看地址成功");
}));
}
}
}
else
{
var error = BaseRegex.GetStringJsonByRegs(ref deRst, deRst, "err_msg", "error_msg", "errMsg", "errorMsg", "msg");
if (error.Contains("\"code\":17899002") || error.Contains("\"code\":10020123"))
{
if (error.Contains("\"code\":17899002"))
error = "基于用户隐私保护,无法查看收货信息";
if (error.Contains("\"code\":10020123"))
error = "今日查看次数已用完";
Dispatcher.Invoke(new Action(() =>
{
if (ShowErrorDialog)
BaseMsgWindow.ShowAnimateMessage("查看地址失败:" + error, "Error", 5);
}));
}
else
{
Dispatcher.Invoke(new Action(() =>
{
if (ShowErrorDialog)
BaseMsgWindow.ShowAnimateMessage("查看地址失败:" + error, "Error", 5);
}));
}
}
}
public string GetDecryptOrder(string sourceOrderAddressStr, oms_wei_order_info order)
{
//黄颖飞(4559),18466134204-4559,广西壮族自治区柳州市柳南区福柳宏都8-1-701 (拨打请输入分机号4559)
var userName = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "userName"); // 黄颖飞
var extension = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "extension"); // 4559
var virtualNumber = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "virtualNumber"); // 18466134204
var provinceName = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "provinceName"); // 广西壮族自治区
var cityName = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "cityName"); // 柳州市
var countyName = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "countyName"); // 柳南区
var detailInfo = BaseRegex.GetStringJson(ref sourceOrderAddressStr, "detailInfo"); // 福柳宏都8-1-701
if (userName.IsNullOrEmpty() || extension.IsNullOrEmpty() || virtualNumber.IsNullOrEmpty() || provinceName.IsNullOrEmpty() || cityName.IsNullOrEmpty() ||
countyName.IsNullOrEmpty() || detailInfo.IsNullOrEmpty())
{
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 + ")";
order.AddressStr = userName + "(" + extension + ")" + "," + virtualNumber + "," + provinceName + cityName + countyName + detailInfo;
return order.AddressStr;
}
public static string decryptOrder(ShopLoginInfo shop, string orderId)
{
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeorder/common/cgi/decryptOrder?token=&lang=zh_CN";
string body = @"{""id"":""" + orderId + @"""}";
string refere = "https://store.weixin.qq.com/shop/order/list";
var result = HttpResponseWXBLL.WeiXinPostResponse(shop, url, body, refere);
return result;
}
private void btnGetRefundAddress_Click(object sender, RoutedEventArgs e)
{
var order = this.DataContext as oms_wei_order_item_info;
if (order == null)
return;
}
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
}
private void btnEditShopRemark_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == orderItem.shop_id.ParseToString());
if (shop == null)
return;
if (btnEditShopRemark.Content.ParseToString() == "保存")
{
var notesRst = OrderListCtrl.addNotes(shop, orderItem.order_id, txtShopRemark.Text);
if (!notesRst.Contains("\"code\":0"))
{
ShopBLL.CheckShopLogin(shop);
BaseMsgForm.ShowError("保存失败请重试");
return;
}
btnCancelEditShopRemark.Visibility = Visibility.Collapsed;
btnEditShopRemark.Content = "编辑";
txtShopRemark.SetValue(WidthProperty, Double.NaN);
txtShopRemark.BorderBrush = new SolidColorBrush(Color.FromArgb(0, 0, 50, 150));
txtShopRemark.IsReadOnly = true;
}
else
{
btnCancelEditShopRemark.Visibility = Visibility.Visible;
btnEditShopRemark.Content = "保存";
txtShopRemark.SetValue(WidthProperty, 135.0);
txtShopRemark.BorderBrush = new SolidColorBrush(Color.FromArgb(50, 0, 50, 150));
txtShopRemark.IsReadOnly = false;
}
}
}
private void btnCancelEditShopRemark_Click(object sender, RoutedEventArgs e)
{
btnCancelEditShopRemark.Visibility = Visibility.Collapsed;
btnEditShopRemark.Content = "编辑";
txtShopRemark.SetValue(WidthProperty, Double.NaN);
txtShopRemark.BorderBrush = new SolidColorBrush(Color.FromArgb(0, 0, 50, 150));
txtShopRemark.IsReadOnly = true;
}
private void btnEditAppRemark_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == orderItem.shop_id.ParseToString());
if (shop == null)
return;
if (btnEditAppRemark.Content.ParseToString() == "保存")
{
var url = BaseClass.Build29WxObjString("order/wx_update_erp_soft_remark");
var data = UserLogin.GetSignaturex();
data += "&order_id=" + orderItem.order_id;
data += "&soft_remark=" + txtAppRemark.Text;
var html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (!html.Contains("\"code\":200"))
{
BaseMsgForm.ShowError("保存失败请重试");
return;
}
if (BaseRegex.GetIntJson(ref html, "affected_rows") == 0)
{
BaseMsgForm.ShowError("未找到指定订单");
return;
}
orderItem.ItemOrder.soft_remark = txtAppRemark.Text;
btnCancelEditAppRemark.Visibility = Visibility.Collapsed;
btnEditAppRemark.Content = "编辑";
txtAppRemark.SetValue(WidthProperty, Double.NaN);
txtAppRemark.BorderBrush = new SolidColorBrush(Color.FromArgb(0, 0, 50, 150));
txtAppRemark.IsReadOnly = true;
}
else
{
btnCancelEditAppRemark.Visibility = Visibility.Visible;
btnEditAppRemark.Content = "保存";
txtAppRemark.SetValue(WidthProperty, 135.0);
txtAppRemark.BorderBrush = new SolidColorBrush(Color.FromArgb(50, 0, 50, 150));
txtAppRemark.IsReadOnly = false;
}
}
}
private void btnCancelEditAppRemark_Click(object sender, RoutedEventArgs e)
{
btnCancelEditAppRemark.Visibility = Visibility.Collapsed;
btnEditAppRemark.Content = "编辑";
txtAppRemark.SetValue(WidthProperty, Double.NaN);
txtAppRemark.BorderBrush = new SolidColorBrush(Color.FromArgb(0, 0, 50, 150));
txtAppRemark.IsReadOnly = true;
}
private void btnBuyOrder_Click(object sender, RoutedEventArgs e)
{
BuyOrder();
}
public void BuyOrder(bool isAbnormalOrder = false)
{
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.ItemOrder.orderItems.Count > 1)
{
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)))
{
OrderListCtrl.InitOrderItemObservableProp(orderItem);
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 (!isAbnormalOrder && orderItem.ItemTransitOrder != null)
{
// 正常单有未作废订单的,不可再拍单
BaseMsgWindow.ShowAnimateMessage("该订单已有采购记录", "Error", 5);
return;
}
if (isAbnormalOrder && (orderItem.ItemOrder.status <= 21 || orderItem.ItemTransitOrder == null || orderItem.ItemTransitOrder.refund_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;
}
orderRetry:
// 拍单前查询账户余额
if (!isAbnormalOrder)
{
// 强制使用软件而非erp拍单
if (GlobalConfig.BuyConfig.IsUseAppBalance)
{
if (BaseClass.Balance < 10)
{
Dispatcher.Invoke(new Action(() =>
{
BaseMsgWindow.ShowError("软件快递余额不足(剩余" + BaseClass.Balance.ToString("0.00") + "元,拍单至少需保留10元),无法中转拍单,请先充值!");
}));
return;
}
}
else
{
var url = BaseClass.Build29WxObjString("shop/get_shop_erp_merchant");
var data = UserLogin.GetSignaturex();
data += "&corporate_account_user_id=" + orderItem.Shop.ErpCorporateAccountUserId;
data += "&manage_user_id=" + orderItem.Shop.ErpManageUserId;
data += "&shop_id=" + orderItem.Shop.ErpShopId;
var html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
{
Dispatcher.Invoke(new Action(() =>
{
btnBuyOrder.Cursor = Cursors.Hand;
}));
GlobalConfig.BuyConfig.IsUseAppBalance = true;
StartUp.SaveBuyConfig();
BaseMsgWindow.ShowError("未找到店铺账户!" + BaseRegex.GetStringJson(ref html, "msg") + ",自动切换为快递余额拍单。");
goto orderRetry;
}
if (!string.IsNullOrEmpty(html) && html.Contains("\"code\":200"))
{
try
{
var erpMs = JsonHelper.DeserializeJsonToList<ErpMerchantInfo>(JsonHelper.JObjectParse(html)["data"].ParseToString());
var erpM = erpMs.FirstOrDefault();
if (erpM == null)
{
Dispatcher.Invoke(new Action(() =>
{
btnBuyOrder.Cursor = Cursors.Hand;
}));
GlobalConfig.BuyConfig.IsUseAppBalance = true;
StartUp.SaveBuyConfig();
BaseMsgWindow.ShowError("未找到店铺账户!自动切换为快递余额拍单。");
goto orderRetry;
}
var balance = erpM.balance.ParseToDecimal();
if (balance < 10)
{
Dispatcher.Invoke(new Action(() =>
{
btnBuyOrder.Cursor = Cursors.Hand;
}));
GlobalConfig.BuyConfig.IsUseAppBalance = true;
StartUp.SaveBuyConfig();
BaseMsgWindow.ShowError("ERP账户余额不足(剩余" + balance.ToString("0.00") + "元,拍单至少需保留10元),无法中转拍单,自动切换为快递余额拍单。");
goto orderRetry;
}
}
catch
{
Dispatcher.Invoke(new Action(() =>
{
BaseMsgWindow.ShowError("拍单校验出错,请稍后重试");
btnBuyOrder.Cursor = Cursors.Hand;
}));
return;
}
}
}
}
if (orderItem.BuyGoodsBtnTxt == "去店铺后台绑定代发")
{
if (orderItem.Shop != null)
{
WXShopLoginForm shopLoginForm = new WXShopLoginForm(orderItem.Shop);
shopLoginForm.openType = Work._29Tools.Forms.ShopForms.EnumOpenType.manage;
shopLoginForm.WindowState = System.Windows.Forms.FormWindowState.Maximized;
shopLoginForm.InitUrl = "https://store.weixin.qq.com/shop/supply/consignmentOrderList";
shopLoginForm.IsGetSupplierPage = true;
shopLoginForm.ShowDialog();
// 不是立即生效的,不用立即刷新
//var is29SupplierRst = WxOrderSupplierBLL.GetWxSupplierList(orderItem.Shop);
//if (!is29SupplierRst.Contains("\"code\":0"))
// is29SupplierRst = WxOrderSupplierBLL.GetWxSupplierList(orderItem.Shop);
//if (is29SupplierRst.Contains("\"code\":0") && is29SupplierRst.Contains("\"name\":\"29供货商\""))
//{
// orderItem.Shop.Is29Supplier = true;
//}
//else
//{
// ShopBLL.CheckShopLogin(orderItem.Shop);
// orderItem.Shop.Is29Supplier = false;
//}
//foreach (var order in GlobalConfig.lstFilterOrder.Where(o => o.shop_id.ParseToString() == orderItem.Shop.ErpShopId).ToList())
//{
// // 更新代发管理情况
// foreach (var o in order.orderItems)
// Dispatcher.Invoke(new Action(() => { o.UpdateOrderItemBuyButton(); }));
//}
}
Dispatcher.Invoke(new Action(() =>
{
btnBuyOrder.Cursor = Cursors.Hand;
}));
return;
}
// Api检测是否加入代发
if (orderItem.BuyGoodsBtnTxt == "云仓拍单" && !isAbnormalOrder)
{
var apiSearchDropship = new WxApiBLL().WxApiDropshipSearch(orderItem.Shop, orderItem.order_id, 100);
if (!apiSearchDropship.Contains("\"errcode\":0"))
{
BaseMsgWindow.ShowError("查询代发失败!" + BaseRegex.GetStringJson(ref apiSearchDropship, "msg"));
return;
}
if (apiSearchDropship.Contains("\"ds_order_id_list\":[]"))
{
var apiAddDropship = new WxApiBLL().WxApiDropshipAssign(orderItem.Shop, orderItem.order_id, orderItem.product_id, orderItem.sku_id, orderItem.sku_cnt.ParseToInt());
if (!apiAddDropship.Contains("\"errcode\":0"))
{
BaseMsgWindow.ShowError("设置代发失败!请确商品已加入29供货商代发!" + BaseRegex.GetStringJson(ref apiAddDropship, "msg"));
return;
}
}
}
// 模拟检测是否加入代发
//if (orderItem.Shop?.LoginStatus == "登录成功" && orderItem.BuyGoodsBtnTxt == "云仓拍单" && !isAbnormalOrder)
//{
// var is29SupplierRst = WxOrderSupplierBLL.GetWxSupplierOrderList(orderItem.Shop, orderItem.order_id);
// if (!is29SupplierRst.Contains("\"code\":0"))
// is29SupplierRst = WxOrderSupplierBLL.GetWxSupplierOrderList(orderItem.Shop, orderItem.order_id);
// if (!is29SupplierRst.Contains("\"code\":0"))
// {
// ShopBLL.CheckShopLogin(orderItem.Shop);
// if (orderItem.Shop?.LoginStatus != "登录成功")
// {
// Dispatcher.Invoke(new Action(() =>
// {
// BaseMsgWindow.ShowAnimateMessage("店铺掉线", "Error", 5);
// btnBuyOrder.Cursor = Cursors.Hand;
// }));
// return;
// }
// }
// if (!is29SupplierRst.Contains("\"supplierName\":\"29供货商\"")) // "supplierName":"29供货商"
// {
// Dispatcher.Invoke(new Action(() =>
// {
// BaseMsgWindow.ShowError("店铺后台未查询到该代发单,请确认店铺在线且商品加入代发");
// btnBuyOrder.Cursor = Cursors.Hand;
// }));
// return;
// }
// orderItem.Shop.Is29Supplier = true;
//}
// 掉线提示重登
if (orderItem.Shop?.LoginStatus != "登录成功")
{
foreach (var ord in GlobalConfig.lstFilterOrder.Where(o => o.shop_id.ParseToString() == orderItem.Shop.ErpShopId).ToList())
{
// 更新代发管理情况
foreach (var oi in ord.orderItems)
Dispatcher.Invoke(new Action(() => { oi.UpdateOrderItemBuyButton(); }));
}
Dispatcher.Invoke(new Action(() =>
{
BaseMsgWindow.ShowError("请登录店铺");
btnBuyOrder.Cursor = Cursors.Hand;
}));
return;
}
//BaseMsgWindow.ShowAnimateMessage("触发成功!" + DateTime.Now.ParseToString(), "Msg", 5);
//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.InitUrl = "https://mobile.yangkeduo.com/orders.html"; //"?type=0&comment_tab=1&combine_orders=1&main_orders=1&refer_page_name=personal&refer_page_id=10001_1782219035613_a9ulipk4k3&refer_page_sn=10001";
buyOrderForm.pnlBuy.Visible = false;
// 已有拍单关联的跳的到订单确认界面
if (orderItem.BuyMap != null)
{
//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&detail_id=" + Randomx.GetNumber(11) + "&_oak_rcto=YW" +
// Randomx.GetWordNumber("JvLXvJ8Fx9mUIW34yn103TOlATJGk5PaZshD6pY1bsVrsIjWdxWwjCoNX3IGT".Length) + "_VWkP5_q-1QNqGg" +
// "&order_extra_type=1&refer_page_element=open_btn&source_channel=0&refer_page_name=goods_detail" +
// "&refer_page_id=10014_" + BaseClass.DateTimeToTimestampSeconds(DateTime.Now) + Randomx.GetNumber(3) + "_tny5ifswls&refer_page_sn=10014";
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.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=0&refer_page_element=open_btn&source_channel=0&refer_page_name=goods_detail&refer_page_id=10014_" +
// BaseClass.DateTimeToTimestampSeconds(DateTime.Now) + Randomx.GetNumber(3) + "_" + Randomx.GetWordNumber(10) + "&refer_page_sn=10014";
buyOrderForm.pnlBuy.Visible = true;
buyOrderForm.pnlMap.Visible = false;
}
if (isAbnormalOrder)
buyOrderForm.AbnormalTransitWarehouseOrderInfo = orderItem.ItemTransitOrder;
buyOrderForm.ShowDialog();
}));
});
}
private void UserControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
//btnBuyOrder.Content = "关联拍单";
// 显示预估利润
//if (order_item.BuyMap == null && order_item.ItemOrder.out_amount == 0)
// txtProfitForecast.Visibility = Visibility.Visible;
// 绑定时即刻生效,无需再次手动调用
//order_item.UpdateOrderItemBuyButton();
Task.Run(() =>
{
// 异步加载图片防止卡顿
// 缩略图在有的电脑上无法显示
//BitmapImage bImg = ImageUrlToBitmapImageConverter.LoadImageFromUrl(order_item.thumb_img + "?imageView2/1/w/100/format/webp|imageMogr2/auto-orient=");
BitmapImage bImg = AllBase.ImageBuild.LoadBitmipImageFromUrl(order_item.thumb_img);
Thread.Sleep(Randomx.GetId(1000));
Dispatcher.Invoke(new Action(() =>
{
imgOrderItem.Source = bImg;
}));
});
// 作废重拍
if (order_item.ItemOrder.status == 20 /*&& order_item.refund_status <= 1*/ && order_item.ItemTransitOrder != null)
{
btnVoidTransitOrder.Visibility = Visibility.Visible;
}
else
{
btnVoidTransitOrder.Visibility = Visibility.Collapsed;
}
// 异常重拍
if (GetIsAbnormalOrderRebuy(order_item))
{
btnAbnormalOrderRebuy.Visibility = Visibility.Visible;
}
else
{
btnAbnormalOrderRebuy.Visibility = Visibility.Collapsed;
}
// 待采购不显示所有采购信息状态(否则会显示作废订单状态)
if (GlobalConfig.OrderTabHeaderStr.StartsWith("待采购"))
{
//wpBuyAccount.Visibility = Visibility.Collapsed;
//wpBuyOrderId.Visibility = Visibility.Collapsed;
//wpBuyTime.Visibility = Visibility.Collapsed;
//wpTransitWaybillStatus.Visibility = Visibility.Collapsed;
//wpTransitBuyerRefundStatus.Visibility = Visibility.Collapsed;
wpBuyAccount.Opacity = 0.5;
wpBuyOrderId.Opacity = 0.5;
wpBuyTime.Opacity = 0.5;
wpTransitWaybillStatus.Opacity = 0.5;
wpTransitBuyerRefundStatus.Opacity = 0.5;
}
}
}
/// <summary>
/// 判断中转仓订单是否可以异常重拍
/// </summary>
/// <param name="order_item"></param>
/// <returns></returns>
bool GetIsAbnormalOrderRebuy(oms_wei_order_item_info order_item)
{
// 不是异常单的不可异常重拍
if (order_item?.ItemOrder?.isAbnormal != true)
return false;
// 买手未退款的,中转正式取号以后的,不可异常重拍
if (order_item.ItemTransitOrder?.refund_status != "买手退款成功" ||
order_item.WarehouseWaybillStatusStr == "中转已取号" || order_item.WarehouseWaybillStatusStr == "中转已入库" || order_item.WarehouseWaybillStatusStr == "中转已出库")
return false;
// 已正式取号的,不可异常重拍
if (order_item.ItemTransitOrder?.pre_allocated_order_no == 1 || order_item.ItemTransitOrder?.pre_allocated_order_no == 3)
return false;
// 仓库异常的异常单不可异常重拍
List<string> rawMsgKeyWords = new List<string> { "取号异常", "无法调用" };
if (rawMsgKeyWords.Any(k => (order_item.ItemTransitOrderWithVoid?.raw_message).ParseToString().Contains(k)) && order_item.ItemTransitOrderWithVoid?.transfer_warehouse_status != 1)
return false;
return true;
}
private void txtTransitOrderNumStr_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
var buyerName = txtTransitOrderBuyerStr.Text.Split(':').LastOrDefault();
var outOrderId = txtTransitOrderNumStr.Text.Split(':').LastOrDefault();
if (string.IsNullOrEmpty(buyerName) || string.IsNullOrEmpty(outOrderId))
{
return;
}
var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(p => p.buyer_name == buyerName);
if (buyer == null)
{
BaseMsgWindow.ShowError("该订单买手号未在当前账户登录");
return;
}
//GlobalConfig.CurrentPddBuyer = buyer;
var url = "";
if (buyer != null)
{
if (sender == txtTransitOrderBuyerStr)
url = "https://mobile.yangkeduo.com/index.html";
else
url = "https://mobile.yangkeduo.com/order.html?order_sn=" + outOrderId + "&page_from=1&main_orders=1&is_tester=1&refer_page_name=my_order" +
"&refer_page_id=10032_" + BaseClass.DateTimeToTimestampMilliseconds(DateTime.Now) + "_" + Randomx.GetWordNumber(10) + "&refer_page_sn=10032";
}
var orderItem = this.DataContext as oms_wei_order_item_info;
if (orderItem == null)
{
BaseMsgWindow.ShowError("订单信息为空");
return;
}
// 拍单的时候检测一下买手号
if (buyer.status == "在线")
{
PddMobileLoginForm.CheckBuyerLogin(buyer);
}
if (buyer.status != "在线")
{
BaseMsgWindow.ShowError("买手号掉线");
return;
}
PddMobileBuyOrderForm buyOrderForm = new PddMobileBuyOrderForm(MainWindow.Instance.orderListCtrl.FilterOneOrder, StartUp.UpdateBalance,
orderItem, buyer, orderItem.BuyMap);
buyOrderForm.TitleText = "订单查看 - 当前买手 " + buyer.buyer_nick;
//所有订单页面
buyOrderForm.InitUrl = url;
buyOrderForm.pnlBuy.Visible = false;
//已有拍单关联的控制界面显示隐藏
if (orderItem.BuyMap != null)
{
buyOrderForm.pnlBuy.Visible = true;
buyOrderForm.pnlMap.Visible = false;
}
buyOrderForm.ShowDialog();
}
private void txtDirectOrderNumStr_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
var buyerName = txtDirectBuyer.Text.Split(':').LastOrDefault();
var outOrderId = txtDirectBuyerOrderNo.Text.Split(':').LastOrDefault();
if (string.IsNullOrEmpty(buyerName) || string.IsNullOrEmpty(outOrderId))
{
return;
}
var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(p => p.buyer_name == buyerName);
if (buyer == null)
{
BaseMsgWindow.ShowError("该订单买手号未在当前账户登录");
return;
}
//GlobalConfig.CurrentPddBuyer = buyer;
var url = "";
if (buyer != null)
{
if (sender == txtDirectBuyer)
url = "https://mobile.yangkeduo.com/index.html";
else
url = "https://mobile.yangkeduo.com/order.html?order_sn=" + outOrderId + "&page_from=1&main_orders=1&is_tester=1&refer_page_name=my_order" +
"&refer_page_id=10032_" + BaseClass.DateTimeToTimestampMilliseconds(DateTime.Now) + "_" + Randomx.GetWordNumber(10) + "&refer_page_sn=10032";
}
var orderItem = this.DataContext as oms_wei_order_item_info;
if (orderItem == null)
{
BaseMsgWindow.ShowError("订单信息为空");
return;
}
// 拍单的时候检测一下买手号
if (buyer.status == "在线")
{
PddMobileLoginForm.CheckBuyerLogin(buyer);
}
if (buyer.status != "在线")
{
BaseMsgWindow.ShowError("买手号掉线");
return;
}
//PddMobileBuyOrderForm buyOrderForm = new PddMobileBuyOrderForm(MainWindow.Instance.orderListCtrl.FilterOneOrder, StartUp.UpdateBalance, orderItem, buyer, orderItem.BuyMap);
PddMobileBuyOrderForm buyOrderForm = new PddMobileBuyOrderForm(null, null, orderItem, buyer, orderItem.BuyMap);
buyOrderForm.BuyType = "direct";
buyOrderForm.TitleText = "直发订单查看 - 当前买手 " + buyer.buyer_nick;
//所有订单页面
buyOrderForm.InitUrl = url;
buyOrderForm.pnlBuy.Visible = false;
//已有拍单关联的控制界面显示隐藏
if (orderItem.BuyMap != null)
{
buyOrderForm.pnlBuy.Visible = true;
buyOrderForm.pnlMap.Visible = false;
}
buyOrderForm.ShowDialog();
}
private void Path_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
try
{
Clipboard.SetDataObject(orderItem.ItemTransitOrderWithVoid.out_order_no);
BaseMsgWindow.ShowAnimateMessage("复制成功");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError("复制失败 " + ex.Message);
}
}
}
private void pathRefundId_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
try
{
Clipboard.SetDataObject(order_item.ItemRefund.after_sale_order_id);
BaseMsgWindow.ShowAnimateMessage("复制成功");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError("复制失败 " + ex.Message);
}
}
}
private void imgOrderItem_MouseEnter(object sender, MouseEventArgs e)
{
}
private void imgOrderItem_MouseLeave(object sender, MouseEventArgs e)
{
}
private void imgOrderItem_MouseDown(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
ShowImgForm imgFrom = new ShowImgForm(orderItem.thumb_img);
imgFrom.ShowDialog();
}
}
private async void btnVoidTransitOrder_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
VoidOrder(orderItem);
}
}
/// <summary>
/// 作废中转仓订单
/// </summary>
/// <param name="orderItem"></param>
/// <param name="isSilent"></param>
/// <param name="UpdateOrderBeforeVoid">作废前是否更新服务端订单状态</param>
public static async void VoidOrder(oms_wei_order_item_info orderItem, bool isSilent = false, bool UpdateOrderBeforeVoid = true)
{
// 作废前查询订单状态
var orderId = orderItem.order_id;
var skuId = orderItem.sku_id;
await Task.Run(() =>
{
if (UpdateOrderBeforeVoid)
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)
{
if (!isSilent)
BaseMsgWindow.ShowError("订单查询失败,请重试");
return;
}
if (orderItem.ItemTransitOrder == null)
{
if (!isSilent)
BaseMsgWindow.ShowError("要作废的中转订单不存在,请确认后重试");
return;
}
bool noBuyer = false;
var buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_name == orderItem?.ItemTransitOrder?.buyer_account);
if (buyer == null)
{
if (!isSilent)
if (BaseMsgWindow.ShowConfirm("拍单买手不存在,点击确定直接作废中转单并手动取消买手单,点击取消登录买手后重试").DialogResult != true)
return;
noBuyer = true;
}
// 检测一下买手号
if (GlobalConfig.CurrentPddBuyer.status == "在线")
{
await Task.Run(() =>
{
PddMobileLoginForm.CheckBuyerLogin(GlobalConfig.CurrentPddBuyer);
});
}
if (GlobalConfig.CurrentPddBuyer.status != "在线")
{
if (!isSilent)
if (BaseMsgWindow.ShowConfirm("买手号掉线,点击确定直接作废中转单并手动取消买手单,点击取消登录买手后重试").DialogResult != true)
return;
noBuyer = true;
}
if (!noBuyer)
{
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
{
if (!isSilent)
if (BaseMsgWindow.ShowConfirm("买手退款失败,点击确定直接作废中转单并手动取消买手单,点击取消稍候重试").DialogResult != true)
return;
}
}
//订单作废接口(作废重拍)
//postman request POST 'http://localhost:8088/oms-api/external_procurement/discardOrder' \
// --header 'Content-Type: application/json' \
// --body '{
// "orderNo":"12334534534",
// "outOrderNo":"12312312"
//}' 成功返回code:0 失败返回code:1
string url2 = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/discardOrder";
var data2 = new JObject();
data2["orderNo"] = orderItem.order_id;
data2["outOrderNo"] = orderItem.ItemTransitOrder.out_order_no;
//data2["outOrderNo"] = orderItem.ItemTransitOrder.order_code;
var dataStr2 = JsonHelper.SerializeObject(data2);
var discardRst = HttpResponseWXBLL.e57PostResponse(url2, dataStr2, "");
if (discardRst.Contains("<code>0</code>") || discardRst.Contains("<code>200</code>"))
{
//MainWindow.Instance.orderListCtrl.GetOrder(orderId);
#region 立即更新订单
orderItem.ItemTransitOrder.order_void_status = 1;
orderItem.SetOrderItemTextProperty();
#endregion
#region 重新过滤订单
OrderListCtrl.InitOrderItemObservableProp(orderItem);
MainWindow.Instance.orderListCtrl.FilterOrders();
if (!isSilent)
BaseMsgWindow.ShowInfo("订单作废成功,请重新拍单");
#endregion
#region 更新拍单余额
StartUp.UpdateBalance();
#endregion
}
else
{
var msg = BaseRegex.GetStringXml(ref discardRst, "msg");
if (!isSilent)
BaseMsgWindow.ShowInfo("订单作废失败,服务端返回 " + msg);
}
}
private void txtWarehouseStatus_MouseEnter(object sender, MouseEventArgs e)
{
if (txtWarehouseStatus.ToolTip == null)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
if (orderItem.ItemTransitOrderWithVoid.raw_message != null && orderItem.ItemTransitOrderWithVoid.raw_message.Contains("取号异常"))
this.txtWarehouseStatus.ToolTip = orderItem.ItemTransitOrderWithVoid.raw_message;
}
}
}
private void btnAddEditTransitWarehouseReject_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
orderItem.ItemTransitOrders = OrderListCtrl.GetTransitWarehouseList(orderItem.order_id);
orderItem.PddBuyerOrders = OrderListCtrl.GetPddBuyerOrders(orderItem.order_id).Where(o => o.wx_send_type == 0).ToList();
OrderListCtrl.InitOrderItemObservableProp(orderItem);
if (orderItem.ItemTransitOrder?.warehouse_status == 3)
{
BaseMsgWindow.ShowError("商品已拒收或拦截!");
return;
}
if (orderItem.ItemTransitOrder?.warehouse_status == 2)
{
BaseMsgWindow.ShowError("商品已出库,请选择退回中转仓!");
return;
}
if (string.IsNullOrEmpty(orderItem.PddBuyerOrder?.order_sn))
{
BaseMsgWindow.ShowError("商品未出单,请直接去拼多多买手申请退款");
return;
}
if (orderItem.ItemTransitOrder?.has_reject == 1 || orderItem.ItemTransitOrder?.has_reject == 3)
{
BaseMsgWindow.ShowAnimateMessage("已申请拒收", "Msg", 3);
return;
}
// 中转仓拒收(已产生物流)
string url = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/orders/rejectApply";
var dataObj = new JObject();
dataObj["orderCode"] = orderItem.ItemTransitOrder?.order_code;
dataObj["orderId"] = orderItem.order_id;
dataObj["logisticsExpressCode"] = orderItem.PddBuyerOrder?.order_sn;
var data = JsonHelper.SerializeObject(dataObj);
var html = HttpResponseWXBLL.e57PostResponse(url, data, "");
int rejectStatus = 0;
if (html.Contains("<code>0</code>") || html.Contains("<code>200</code>"))
{
rejectStatus = 1;
BaseMsgWindow.ShowAnimateMessage("申请成功", "Msg", 3);
}
else
{
rejectStatus = 2;
var err = BaseRegex.GetStringXmlByRegs(ref html, "msg");
BaseMsgWindow.ShowAnimateMessage("申请失败", "Error", 3);
}
url = BaseClass.Build29WxObjString("order/wx_update_transit_order_reject_status");
data = UserLogin.GetSignaturex();
data += "&order_no=" + orderItem.order_id;
data += "&order_sku_id=" + orderItem.sku_id;
data += "&has_reject=" + rejectStatus;
html = GetHtml.PostUtf8(url, data);
orderItem.ItemTransitOrderWithVoid.has_reject = rejectStatus;
OrderListCtrl.InitOrderItemObservableProp(orderItem);
}
}
private void btnAddEditTransitWarehouseAfterSale_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
if (orderItem.ItemTransitOrder?.warehouse_status != 3 && orderItem.ItemTransitOrder?.warehouse_status != 2 && orderItem.ItemTransitOrder?.warehouse_status != 1 && orderItem.AddEditTransitWarehouseAfterSaleStr == "添加")
{
BaseMsgWindow.ShowError("商品未出库,请选择中转仓拒收!");
return;
}
TransitAfterSaleWindow transitAfterSaleWindow = new TransitAfterSaleWindow(orderItem);
transitAfterSaleWindow.ShowDialog();
}
}
private void btnAbnormalOrderRebuy_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
if (orderItem.ItemOrder.status > 21 && orderItem.ItemTransitOrder != null && orderItem.ItemTransitOrder.refund_status == "买手退款成功")
BuyOrder(true);
}
}
private void pathBuyerAfterSaleAddress_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
try
{
Clipboard.SetDataObject(order_item.PddBuyerAfterSaleAddressStr);
BaseMsgWindow.ShowAnimateMessage("复制成功");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError("复制失败 " + ex.Message);
}
}
}
private void pathDirectBuyerAfterSaleAddress_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
try
{
Clipboard.SetDataObject(order_item.DirectPddBuyerAfterSaleAddressStr);
BaseMsgWindow.ShowAnimateMessage("复制成功");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError("复制失败 " + ex.Message);
}
}
}
private void pathCopyAddress_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
try
{
Clipboard.SetDataObject((order_item.ItemOrder?.AddressStr).ParseToString());
BaseMsgWindow.ShowAnimateMessage("复制成功");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError("复制失败 " + ex.Message);
}
}
}
private void btnDirectBuyOrder_Click(object sender, RoutedEventArgs e)
{
directBuyOrder();
}
/// <summary>
/// 直发拍单
/// </summary>
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;
}
btnBuyOrder.Cursor = Cursors.Wait;
btnBuyOrder.IsEnabled = false;
Task.Run(() =>
{
Thread.Sleep(2000);
Dispatcher.Invoke(new Action(() => { btnBuyOrder.IsEnabled = true; }));
});
Task.Run(async() =>
{
// 拍单前查询订单是否退款
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 != "退款成功")
{
// 外采单已存在的,不可再拍单
BaseMsgWindow.ShowAnimateMessage("该订单已有直发采购记录", "Error", 5);
return;
}
// 如果是退款单,弹出退款窗口
if (CheckIsRefund(orderItem))
return;
// 查询订单是否在代发货中,如果代发需要取消代发
var apiSearchDropship = new WxApiBLL().WxApiDropshipSearch(orderItem.Shop, orderItem.order_id, 100);
if (!apiSearchDropship.Contains("\"errcode\":0"))
{
BaseMsgWindow.ShowError("代发查询失败," + BaseRegex.GetStringJsonByRegs(ref apiSearchDropship, apiSearchDropship, "errmsg"));
return;
}
if (apiSearchDropship.Contains("ds_order_id_list") && !apiSearchDropship.Contains("\"ds_order_id_list\":[]"))
{
var dsOrderId = JsonHelper.JObjectParse(apiSearchDropship)["ds_order_id_list"].FirstOrDefault().ParseToString();
var apiCancelDropship = await new WxApiBLL().WxApiDropshipCancel(orderItem.Shop, orderItem.ItemOrder, dsOrderId);
if (!apiCancelDropship.Contains("\"errcode\":0"))
{
BaseMsgWindow.ShowError("取消代发失败!请确商品未加入代发!" + BaseRegex.GetStringJsonByRegs(ref apiSearchDropship, apiSearchDropship, "errmsg"));
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;
}
private void PathCopyDirectBuyerOrderNo_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
try
{
Clipboard.SetDataObject((order_item.ItemOrder?.out_order_no).ParseToString());
BaseMsgWindow.ShowAnimateMessage("复制成功");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError("复制失败 " + ex.Message);
}
}
}
private void pathCopyProdName_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
}
private void pathCopyRefundAddress_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info order_item)
{
try
{
Clipboard.SetDataObject(order_item.RefundAddressStr.ParseToString());
BaseMsgWindow.ShowAnimateMessage("复制成功");
}
catch (Exception ex)
{
BaseMsgWindow.ShowError("复制失败 " + ex.Message);
}
}
}
private void btnReturnOrder_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
//if (orderItem.ItemTransitOrder?.warehouse_status != 2 && orderItem.AddEditTransitWarehouseAfterSaleStr == "添加")
//{
// BaseMsgWindow.ShowError("商品未出库,请选择中转仓拒收!");
// return;
//}
if (TransitReturnOrderWindow.instance != null)
TransitReturnOrderWindow.instance.Close();
TransitReturnOrderWindow.instance = new TransitReturnOrderWindow(orderItem);
TransitReturnOrderWindow.instance.Show();
}
}
private void btn_ShipGiftCommand(object sender, RoutedEventArgs e)
{
btnShipGift.IsEnabled = false;
var orderItem = this.DataContext as oms_wei_order_item_info;
if (orderItem == null)
return;
GiftType giftType = GiftType._160;
if (MainWindow.Instance.orderListCtrl.cb_gift.SelectedIndex == 0)
{
giftType = GiftType._155;
}
else
{
giftType = GiftType._160;
}
Task.Run(async () =>
{
try
{
var rst = await WxApiBLL.WxSearchAndDropshipCancelAsync(orderItem.Shop, orderItem.ItemOrder);
if (rst == "success")
{
var ret = await MainWindow.Instance.orderListCtrl._shipGiftService.Send(orderItem.order_id, giftType);
if (ret)
{
Application.Current.Dispatcher.Invoke(() =>
{
orderItem.ItemOrder.gift_order_status = 1;
OrderListCtrl.InitOrderItemObservableProp(orderItem);
MainWindow.Instance.orderListCtrl.FilterOneOrder(orderItem.ItemOrder, true);
});
}
}
}
catch (Exception ex)
{
Application.Current.Dispatcher.Invoke(() =>
{
BaseMsgWindow.ShowError("礼品单发货失败\n" + ex.Message ?? "未知错误", "Error");
});
}
finally
{
btnShipGift.IsEnabled = true;
}
});
}
private async void btnPddRefundTransitWarehouseRejectOrder_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem && orderItem.ItemTransitOrderWithVoid != null && orderItem.ItemOrder != null)
{
await PddRefundTransitRejectOrder(orderItem);
// 赋值显示订单元素
Dispatcher.Invoke(new Action(() =>
{
OrderListCtrl.InitOrderItemObservableProp(orderItem);
MainWindow.Instance.orderListCtrl.FilterOneOrder(orderItem.ItemOrder);
}));
}
}
public static async Task PddRefundTransitRejectOrder(oms_wei_order_item_info orderItem)
{
var pddOrderSn = orderItem.ItemTransitOrderWithVoid?.out_order_no;
if (string.IsNullOrEmpty(pddOrderSn))
return;
BuyerLoginInfo buyer = null;
buyer = GlobalConfig.PDDBuyerLoginList.FirstOrDefault(b => b.buyer_nick == orderItem.ItemTransitOrderWithVoid.buyer_account);
if (buyer == null)
{
return;
}
// 检测一下买手号
if (buyer.status == "在线")
{
PddMobileLoginForm.CheckBuyerLogin(buyer);
}
if (buyer.status != "在线")
{
BaseMsgWindow.ShowAnimateMessage("买手单:" + pddOrderSn + " 买手号掉线,跳过", "Error", 5);
return;
}
// 拒收一定是云仓
string refundStatusStr = (orderItem.TransitRefundStatusStr).ParseToString();
PddBuyerOrderLiteInfo pddBuyerOrderLiteInfo = new PddBuyerOrderLiteInfo();
pddBuyerOrderLiteInfo.ShopOrderIdStr = orderItem.order_id;
pddBuyerOrderLiteInfo.order_sn = pddOrderSn;
pddBuyerOrderLiteInfo.order_amount = orderItem.ItemTransitOrderWithVoid?.out_amount;
order_pdd_buyer_after_sale pddBuyerAfterSale = new order_pdd_buyer_after_sale()
{
wx_order_id = orderItem.order_id,
wx_sku_id = orderItem.sku_id,
TransitCreateTime = orderItem.ItemTransitOrderWithVoid?.created_time == null ? DateTime.MinValue : orderItem.ItemTransitOrderWithVoid.created_time,
pre_allocated_order_no = orderItem.ItemTransitOrderWithVoid?.pre_allocated_order_no,
buyerId = buyer.buyer_id,
buyerName = buyer.buyer_name,
orderSn = pddOrderSn,
orderAmount = pddBuyerOrderLiteInfo.order_amount,
refundAmount = pddBuyerOrderLiteInfo.order_amount,
orderDate = pddOrderSn.ParseToString().Split('-').FirstOrDefault().ParseToInt(),
};
if (orderItem.PddBuyerAfterSale != null)
pddBuyerAfterSale = orderItem.PddBuyerAfterSale;
if (refundStatusStr.Contains("需手动申请售后")) // 退款失败 // 申请已撤销
{
await Task.Run(() =>
{
// {\"after_sales_id\":22312641041100,\"after_sales_status\":11,\"after_sales_type\":2,\"not_really_created\":true}
string rst = "";
rst = PDDBuyerOrderReadCtrl.SimPddAfterSaleWithRejected(buyer, pddBuyerOrderLiteInfo, pddBuyerAfterSale);
var afterSalesStatus = BaseRegex.GetIntJson(ref rst, "after_sales_status");
var afterSalesId = BaseRegex.GetLongJson(ref rst, "after_sales_id");
if (afterSalesId.IsNullOrZero())
return;
pddBuyerAfterSale.afterSalesId = afterSalesId.ToString();
// 更新内存数据 ----------------------------------------------------------------
pddBuyerAfterSale.statusText = "商家处理中";
orderItem.ItemTransitOrderWithVoid.refund_status = "商家处理中";
// --------------------------------------------------------------------------//
if (afterSalesStatus == 0)
{
var msg = BaseRegex.GetStringJsonByRegs(ref rst, rst, "msg", "err_msg", "error_msg", "errorMsg", "errMsg");
BaseMsgWindow.ShowAnimateMessage(msg, "Error", 5);
Thread.Sleep(5000);
if (msg == "已超过可申请售后的时间")
{
var e57Rst = PDDBuyerOrderReadCtrl.SendTransitAfterSaleE57(pddBuyerOrderLiteInfo, "已超过可申请售后的时间");
if (e57Rst.Contains("<code>0</code>") || e57Rst.Contains("<code>200</code>"))
{
BaseMsgWindow.ShowAnimateMessage("买手退款信息更新成功", "Msg", 3);
Thread.Sleep(Randomx.GetId(10000, 12001));
}
else
{
msg = BaseRegex.GetStringXml(ref e57Rst, "msg");
BaseMsgWindow.ShowAnimateMessage("买手退款信息更新失败,服务端返回 " + msg, "Error", 3);
}
}
}
else
{
var e57Rst = PDDBuyerOrderReadCtrl.SendTransitAfterSaleE57(pddBuyerOrderLiteInfo, "商家处理中");
if (e57Rst.Contains("<code>0</code>") || e57Rst.Contains("<code>200</code>"))
{
BaseMsgWindow.ShowAnimateMessage("买手退款信息更新成功" + orderItem.order_id, "Msg", 3);
Thread.Sleep(Randomx.GetId(2000, 5001));
}
else
{
var msg = BaseRegex.GetStringXml(ref e57Rst, "msg");
BaseMsgWindow.ShowAnimateMessage("买手退款信息更新失败,服务端返回 " + msg, "Error", 3);
}
}
});
}
}
private void btnOptimizeProduct_Click(object sender, RoutedEventArgs e)
{
if (this.DataContext is oms_wei_order_item_info orderItem)
{
WXOrderListOptimizeForm form = new WXOrderListOptimizeForm(orderItem.Shop);
form.lblOrderId.Text = orderItem.order_id;
form.lblSpuId.Text = orderItem.product_id;
form.lblSkuId.Text = orderItem.sku_id; // skuId
form.txtGoodsName.Text = orderItem.title; // 商品名称
form.txtSkuName.Text = orderItem.sku_attr_str; // sku规格名称
form.txtOrderPrice.Text = "" + (orderItem.real_price.ParseToInt() / 100m / orderItem.sku_cnt); // 订单价格
//form.txtCurrentPrice.Text = row.Cells["colCurrentPrice"].Value.ParseToString(); // 当前商品价格
//form.txtCurrentStock.Text = row.Cells["colCurrentStock"].Value.ParseToString(); // 当前库存;
form.numAddPrice.Value = 0;
form.ShowDialog();
}
}
}
}