226 lines
9.0 KiB
C#
226 lines
9.0 KiB
C#
using _29WxOrderWpf.BaseWindows;
|
|
using AllBase;
|
|
using AllBase.Helper;
|
|
using AllBase.Model.Config;
|
|
using AllBase.Model.DBModel;
|
|
using AllBase.Model.Result;
|
|
using NaiBa.Util.Extension;
|
|
using Newtonsoft.Json.Linq;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
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.Interop;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Shapes;
|
|
using Work._29Tools.BLL;
|
|
|
|
namespace _29WxOrderWpf.Windows.OrderWindows
|
|
{
|
|
/// <summary>
|
|
/// TransitReturnOrderWindow.xaml 的交互逻辑
|
|
/// </summary>
|
|
public partial class TransitReturnOrderWindow : BaseWindow
|
|
{
|
|
public static TransitReturnOrderWindow instance { get; set; }
|
|
public oms_wei_order_item_info OrderItem { get; set; }
|
|
|
|
public TransitReturnOrderWindow(oms_wei_order_item_info orderItem)
|
|
{
|
|
InitializeComponent();
|
|
|
|
instance = this;
|
|
|
|
if (orderItem != null)
|
|
OrderItem = orderItem;
|
|
}
|
|
|
|
private void mainGrid_Loaded(object sender, RoutedEventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void TransitAfterSaleWindow_Loaded(object sender, RoutedEventArgs e)
|
|
{
|
|
this.cmbExpressName.Items.Add("");
|
|
this.cmbExpressName.Items.Add("邮政EMS");
|
|
this.cmbExpressName.Items.Add("极兔速递");
|
|
this.cmbExpressName.Items.Add("申通快递");
|
|
this.cmbExpressName.Items.Add("韵达快递");
|
|
this.cmbExpressName.Items.Add("圆通快递");
|
|
this.cmbExpressName.Items.Add("中通快递");
|
|
this.cmbExpressName.Items.Add("百世快运");
|
|
this.cmbExpressName.Items.Add("顺丰速运");
|
|
this.cmbExpressName.Items.Add("京东快递");
|
|
this.cmbExpressName.Items.Add("其他快递");
|
|
|
|
if (OrderItem != null)
|
|
{
|
|
// 上海仓默认发货地址
|
|
// 随机用户名
|
|
txtSendUser.Text = TransitWaybillHelper.LastName[Randomx.GetId(TransitWaybillHelper.LastName.Count)] + (Randomx.GetId(2) == 1 ? "先生" : "女士");
|
|
// 固定手机号及地址
|
|
txtSendMobile.Text = "13024622251";
|
|
txtSendProvince.Text = "上海市";
|
|
txtSendCity.Text = "上海市";
|
|
txtSendCounty.Text = "普陀区";
|
|
txtSendDetailAddress.Text = GlobalConfig.TransitReturnOrderReturnAddress;
|
|
|
|
txtShopOrderId.Text = OrderItem.order_id;
|
|
txtShopName.Text = OrderItem.ItemOrder?.shop_name;
|
|
txtGoodsName.Text = OrderItem.title;
|
|
txtSpuId.Text = OrderItem.product_id.ParseToString();
|
|
txtSpecName.Text = OrderItem.sku_attr_str;
|
|
|
|
txtWaybillId.Text = OrderItem.ItemRefund?.return_waybill_id;
|
|
foreach (var cmbItem in cmbExpressName.Items)
|
|
{
|
|
if (PddBuyerOrderLiteInfo.GetWxExpressCodeToWxExpressName((OrderItem.ItemRefund?.return_delivery_id).ParseToString()) == cmbItem.ParseToString())
|
|
{
|
|
cmbExpressName.SelectedItem = cmbItem;
|
|
}
|
|
}
|
|
|
|
if (OrderItem.PddBuyerAfterSale != null)
|
|
{
|
|
this.txtAddressAnalysis.Text = OrderItem.PddBuyerAfterSale.afterSaleAddress;
|
|
btnAddressAnalysis_Click(null, null);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void btnAdd_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if ((OrderItem?.ItemTransitOrder?.warehouse_status).ParseToInt() < 1)
|
|
{
|
|
BaseMsgWindow.ShowError("当前订单仓库状态不支持创建退货订单!");
|
|
return;
|
|
}
|
|
|
|
JObject jObj = new JObject();
|
|
|
|
jObj["orderCodeSource"] = OrderItem.order_id;
|
|
jObj["logisticsCode"] = PddBuyerOrderLiteInfo.GetPddToTransitWarehouseExpressCompanyCode(cmbExpressName.SelectedItem.ParseToString());
|
|
jObj["logisticsExpressNo"] = txtWaybillId.Text.Trim();
|
|
jObj["platform"] = "OTHER";
|
|
jObj["shopName"] = OrderItem.ItemOrder?.shop_name;
|
|
jObj["senderName"] = txtSendUser.Text.Trim();
|
|
jObj["senderPhone"] = txtSendMobile.Text.Trim();
|
|
jObj["senderProvince"] = txtSendProvince.Text.Trim();
|
|
jObj["senderCity"] = txtSendCity.Text.Trim();
|
|
jObj["senderArea"] = txtSendCounty.Text.Trim();
|
|
jObj["senderAddress"] = txtSendDetailAddress.Text.Trim();
|
|
jObj["receiverName"] = txtUser.Text.Trim();
|
|
jObj["receiverPhone"] = txtMobile.Text.Trim();
|
|
jObj["receiverProvince"] = txtProvince.Text.Trim();
|
|
jObj["receiverCity"] = txtCity.Text.Trim();
|
|
jObj["receiverArea"] = txtCounty.Text.Trim();
|
|
jObj["receiverAddress"] = txtDetailAddress.Text.Trim();
|
|
jObj["orderCreateTime"] = (OrderItem.ItemOrder?.CreateDateTime).ParseToString();
|
|
jObj["userAccount"] = BaseClass.UserName;
|
|
jObj["platformCode"] = "WEISHOP";
|
|
jObj["afterSaleNo"] = OrderItem.ItemRefund?.after_sale_order_id;
|
|
jObj["platformOrderNo"] = OrderItem.order_id;
|
|
|
|
string basePostageKey = WarehousePostageInfo.DicWarehousePostage.Keys.FirstOrDefault(pk => (txtProvince.Text.Trim()).ParseToString().Contains(pk));
|
|
decimal basePostage = basePostageKey.IsNullOrEmpty() ? WarehousePostageInfo.DicWarehousePostage.Values.Min() : WarehousePostageInfo.DicWarehousePostage[basePostageKey];
|
|
basePostage += 0.3m; // 送货2.2 退货2.5(+3毛)
|
|
|
|
jObj["oemAmount"] = (BaseClass.RefundPostagePerOrderDiff * 100).ParseToInt().ParseToString();
|
|
jObj["firstWeightFee"] = ((basePostage + BaseClass.RefundPostagePerOrderDiff) * 100).ParseToInt().ParseToString();
|
|
|
|
JObject jItemObj = new JObject();
|
|
jItemObj["spuCode"] = OrderItem.product_id.ParseToString();
|
|
jItemObj["spuName"] = OrderItem.title;
|
|
jItemObj["skuCode"] = OrderItem.sku_id.ParseToString();
|
|
jItemObj["specInfo"] = OrderItem.sku_attr_str;
|
|
jItemObj["skuUrl"] = OrderItem.thumb_img;
|
|
jItemObj["picUrl"] = OrderItem.thumb_img;
|
|
jItemObj["returnQuantity"] = OrderItem.sku_cnt;
|
|
jObj["orderDetailsList"] = new JArray();
|
|
(jObj["orderDetailsList"] as JArray).Add(jItemObj);
|
|
|
|
|
|
|
|
var createReturnOrderUrl = "https://po.e57.cn/prod-api/api/oms-api/api/distribution/returns/addReturnOrder";
|
|
var createReturnOrderStr = JsonHelper.SerializeObject(jObj);
|
|
var getTransitAfterSaleRst = HttpResponseWXBLL.e57PostResponse(createReturnOrderUrl, createReturnOrderStr, "");
|
|
if (!getTransitAfterSaleRst.ParseToString().Contains("<code>200</code>") && !getTransitAfterSaleRst.ParseToString().Contains("<code>0</code>"))
|
|
{
|
|
string msg = BaseRegex.GetStringXml(ref getTransitAfterSaleRst, "msg");
|
|
if (msg.IsNullOrEmpty())
|
|
msg = getTransitAfterSaleRst;
|
|
BaseMsgWindow.ShowError("中转售后添加失败,服务端返回 " + msg, "", this);
|
|
}
|
|
else
|
|
{
|
|
//<AjaxResult><msg>创建退货包裹成功</msg><code>0</code></AjaxResult>
|
|
MainWindow.Instance.orderListCtrl.GetOrder(OrderItem.order_id);
|
|
MainWindow.Instance.orderListCtrl.FilterOneOrder(OrderItem.order_id, true);
|
|
StartUp.UpdateBalance();
|
|
BaseMsgWindow.ShowInfo("添加退货包裹成功", "", this);
|
|
this.Close();
|
|
}
|
|
}
|
|
|
|
private void btnAddressAnalysis_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var txt = txtAddressAnalysis.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))
|
|
{
|
|
txtMobile.Text = phone;
|
|
}
|
|
|
|
var province = GlobalConfig.Divisions.FirstOrDefault(d => txt.Contains(d.name));
|
|
if (province == null)
|
|
return;
|
|
txtProvince.Text = province.name;
|
|
var city = province.children.FirstOrDefault(c => txt.Contains(c.name));
|
|
if (city == null)
|
|
return;
|
|
txtCity.Text = city.name;
|
|
var county = city.children.FirstOrDefault(c => txt.Contains(c.name));
|
|
if (county == null)
|
|
return;
|
|
txtCounty.Text = 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.txtUser.Text = tArr.FirstOrDefault();
|
|
this.txtDetailAddress.Text = string.Join("", tArr).Replace(this.txtUser.Text, "");
|
|
}
|
|
}
|
|
}
|