diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs index 0c6108f..e312e5b 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs @@ -450,7 +450,13 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls { BaseMsgWindow.ShowAnimateMessage("订单扩展信息查询失败 " + BaseRegex.GetStringJson(ref html, "msg"), "Error", 5); } - existOrderExtList = JsonHelper.DeserializeJsonToList(JsonHelper.JObjectParse(html)["data"].ParseToString()); + try + { + existOrderExtList = JsonHelper.DeserializeJsonToList(JsonHelper.JObjectParse(html)["data"].ParseToString()); + } + catch + { + } } return existOrderExtList; } @@ -998,14 +1004,14 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls { if (order.UpdateDateTime < dateStart.SelectedDate.Value) return true; - if (chkEndDate.IsChecked == true && order.UpdateDateTime > dateEnd.SelectedDate.Value) + if (chkEndDate.IsChecked == true && order.UpdateDateTime > dateEnd.SelectedDate.Value.AddDays(1)) return true; } if (tb.Text == "成交时间") { if (order.CreateDateTime < dateStart.SelectedDate.Value) return true; - if (chkEndDate.IsChecked == true && order.CreateDateTime > dateEnd.SelectedDate.Value) + if (chkEndDate.IsChecked == true && order.CreateDateTime > dateEnd.SelectedDate.Value.AddDays(1)) return true; } } diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs index eeb4a8c..f4e2d69 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListRowItemCtrl.xaml.cs @@ -709,7 +709,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls 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.ConvertDateTimeLong(DateTime.Now) + "_" + Randomx.GetWordNumber(10) + "&refer_page_sn=10032"; + "&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; @@ -769,7 +769,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls 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.ConvertDateTimeLong(DateTime.Now) + "_" + Randomx.GetWordNumber(10) + "&refer_page_sn=10032"; + "&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; diff --git a/29WxOrderWpf/Ctrls/Statistics/Models/ShopRevenueStatisticsModels.cs b/29WxOrderWpf/Ctrls/Statistics/Models/ShopRevenueStatisticsModels.cs index 77ec3fa..6171f7f 100644 --- a/29WxOrderWpf/Ctrls/Statistics/Models/ShopRevenueStatisticsModels.cs +++ b/29WxOrderWpf/Ctrls/Statistics/Models/ShopRevenueStatisticsModels.cs @@ -359,7 +359,8 @@ namespace _29WxOrderWpf.Ctrls.Statistics.Models { long milliseconds = (long)reader.Value; // Unix 纪元:1970-01-01 UTC - DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + //DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + DateTime epoch = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); if (milliseconds.ToString().Length == 13) { return epoch.AddMilliseconds(milliseconds); @@ -373,7 +374,8 @@ namespace _29WxOrderWpf.Ctrls.Statistics.Models { if (long.TryParse((string)reader.Value, out long milliseconds)) { - DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + //DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + DateTime epoch = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); if (milliseconds.ToString().Length == 13) { return epoch.AddMilliseconds(milliseconds); @@ -388,7 +390,8 @@ namespace _29WxOrderWpf.Ctrls.Statistics.Models public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { // 序列化时转回时间戳 - DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + //DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + DateTime epoch = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long milliseconds = (long)((DateTime)value - epoch).TotalMilliseconds; writer.WriteValue(milliseconds); } diff --git a/29WxOrderWpf/Windows/OrderWindows/TransitReturnOrderWindow.xaml b/29WxOrderWpf/Windows/OrderWindows/TransitReturnOrderWindow.xaml index ecfee5a..3bf7d5a 100644 --- a/29WxOrderWpf/Windows/OrderWindows/TransitReturnOrderWindow.xaml +++ b/29WxOrderWpf/Windows/OrderWindows/TransitReturnOrderWindow.xaml @@ -6,7 +6,7 @@ xmlns:local="clr-namespace:_29WxOrderWpf.Windows.OrderWindows" xmlns:userctrls="clr-namespace:_29WxOrderWpf.UserControls" xmlns:buyerctrls="clr-namespace:_29WxOrderWpf.Ctrls.BuyerCtrls" mc:Ignorable="d" Style="{StaticResource BaseNoneBorderWindowStyle}" - Title="创建退货单" Height="650" Width="843" ResizeMode="NoResize" Loaded="TransitAfterSaleWindow_Loaded"> + Title="创建退货单" Height="650" Width="900" ResizeMode="NoResize" Loaded="TransitAfterSaleWindow_Loaded"> diff --git a/29WxOrderWpf/Windows/OrderWindows/TransitReturnOrderWindow.xaml.cs b/29WxOrderWpf/Windows/OrderWindows/TransitReturnOrderWindow.xaml.cs index 95fb730..2427ba1 100644 --- a/29WxOrderWpf/Windows/OrderWindows/TransitReturnOrderWindow.xaml.cs +++ b/29WxOrderWpf/Windows/OrderWindows/TransitReturnOrderWindow.xaml.cs @@ -62,21 +62,11 @@ namespace _29WxOrderWpf.Windows.OrderWindows this.cmbExpressName.Items.Add("其他快递"); if (OrderItem != null) - { - //if (OrderItem.ItemTransitOrderAfterSale != null) - //{ - // btnAdd.IsEnabled = false; - - // this.txtUser.Text = OrderItem.ItemTransitOrderAfterSale.recipient_name; - // this.txtMobile.Text = OrderItem.ItemTransitOrderAfterSale.recipient_phone; - // this.txtDetailAddress.Text = OrderItem.ItemTransitOrderAfterSale.refund_detail_address; - // this.txtProvince.Text = OrderItem.ItemTransitOrderAfterSale.refund_province; - // this.txtCity.Text = OrderItem.ItemTransitOrderAfterSale.refund_city; - // this.txtCounty.Text = OrderItem.ItemTransitOrderAfterSale.refund_county; - //} - + { // 上海仓默认发货地址 - txtSendUser.Text = "29供应链"; + // 随机用户名 + txtSendUser.Text = TransitWaybillHelper.LastName[Randomx.GetId(TransitWaybillHelper.LastName.Count)] + (Randomx.GetId(2) == 1 ? "先生" : "女士"); + // 固定手机号及地址 txtSendMobile.Text = "13024622251"; txtSendProvince.Text = "上海市"; txtSendCity.Text = "上海市"; @@ -89,7 +79,6 @@ namespace _29WxOrderWpf.Windows.OrderWindows 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) { @@ -98,8 +87,6 @@ namespace _29WxOrderWpf.Windows.OrderWindows cmbExpressName.SelectedItem = cmbItem; } } - //cmbExpressName.SelectedItem = - if (OrderItem.PddBuyerAfterSale != null) { @@ -111,39 +98,54 @@ namespace _29WxOrderWpf.Windows.OrderWindows private void btnAdd_Click(object sender, RoutedEventArgs e) { - if (OrderItem?.ItemTransitOrder?.warehouse_status != 0 && OrderItem?.ItemTransitOrder?.warehouse_status != 1) + if (OrderItem?.ItemTransitOrder?.warehouse_status != 2) { - BaseMsgWindow.ShowError("当前订单仓库状态不支持售后,请联系买家直接退回总店!"); + BaseMsgWindow.ShowError("当前订单仓库状态不支持创建退货订单!"); return; } - //http://localhost:8088/oms-api/external_procurement/createReturnPackage - //{ - // "orderNo": "3737011320735026432", - // "orderCode": "4600000167202606117621000767", - // "refundProvince": "安徽省", - // "refundCity": "合肥市", - // "refundCounty": "瑶海区", - // "refundDetailAddress": "某街道 1”, - // "recipientName": "张三", - // "recipientPhone": "13800138000" - //} post(json)请求方式,如果使用客户端账户扣款增加一个参数account_user + JObject jObj = new JObject(); - JObject data = new JObject(); - data["orderNo"] = OrderItem.order_id; - data["orderCode"] = OrderItem.ItemTransitOrder?.order_code; - data["refundProvince"] = txtProvince.Text.Trim(); - data["refundCity"] = txtCity.Text.Trim(); - data["refundCounty"] = txtCounty.Text.Trim(); - data["refundDetailAddress"] = txtDetailAddress.Text.Trim(); - data["recipientName"] = txtUser.Text.Trim(); - data["recipientPhone"] = txtMobile.Text.Trim(); - data["account_user"] = BaseClass.UserName; - data["accountUser"] = BaseClass.UserName; - //data["platform"] = "WEISHOP"; - var getTransitAfterSaleUrl = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/createReturnPackage"; - var getTransitAfterSaleStr = JsonHelper.SerializeObject(data); - var getTransitAfterSaleRst = HttpResponseWXBLL.e57PostResponse(getTransitAfterSaleUrl, getTransitAfterSaleStr, ""); + jObj["orderCodeSource"] = OrderItem.order_id; + jObj["logisticsCode"] = 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; + jObj["firstWeightFee"] = OrderItem.ItemTransitOrder.postage; + + 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("200") && !getTransitAfterSaleRst.ParseToString().Contains("0")) { string msg = BaseRegex.GetStringXml(ref getTransitAfterSaleRst, "msg"); diff --git a/AllBase/29WxOrderAllBase.csproj b/AllBase/29WxOrderAllBase.csproj index 1253318..d10f1dd 100644 --- a/AllBase/29WxOrderAllBase.csproj +++ b/AllBase/29WxOrderAllBase.csproj @@ -177,7 +177,7 @@ - + diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs index 95111f5..f8db96f 100644 --- a/AllBase/BaseClass.cs +++ b/AllBase/BaseClass.cs @@ -32,7 +32,7 @@ namespace AllBase /// 版本ID /// - public static int VersionCount = 212; + public static int VersionCount = 213; public static string ServerUrl { get; set; } = "http://1.13.195.131:9000"; public static string DebugUrl { get; set; } = "http://localhost:9000"; @@ -630,9 +630,10 @@ namespace AllBase /// /// public static long ConvertDateTimeLong(DateTime time) - { - TimeSpan ts = time - new DateTime(1970, 1, 1, 0, 0, 0, 0); - return Convert.ToInt64(ts.TotalMilliseconds); + { + //TimeSpan ts = time - new DateTime(1970, 1, 1, 0, 0, 0, 0); + TimeSpan ts = time - TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); + return Convert.ToInt64(ts.TotalMilliseconds); } /// diff --git a/AllBase/Model/DBModel/TransitWaybillHelper.cs b/AllBase/Model/DBModel/TransitWaybillHelper.cs new file mode 100644 index 0000000..5a0c463 --- /dev/null +++ b/AllBase/Model/DBModel/TransitWaybillHelper.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AllBase.Model.DBModel +{ + /// + /// 中转仓地址/联系电话随机生成帮助类 + /// + public class TransitWaybillHelper + { + //中国移动‌:134、135、136、137、138、139、147、150、151、152、157、158、159、172、178、182、183、184、187、188、195、197、198。 + //中国联通‌:130、131、132、145、155、156、166、175、176、185、186、196。其中‌145号段‌主要用于上网卡。 + //中国电信‌:133、149、153、173、177、180、181、189、190、191、193、199。 + //中国广电‌:192。作为第四大运营商,其号段于2022年开始放号。 + public static List MobileHead { get; set; } = new List() + { + 134, 135, 136, 137, 138, 139, 147, 150, 151, 152, 157, 158, 159, 172, 178, 182, 183, 184, 187, 188, 195, 197, 198, + 130, 131, 132, 155, 156, 166, 175, 176, 185, 186, 196, + 133, 149, 153, 173, 177, 180, 181, 189, 190, 191, 193, 199, + }; + + public static List LastName { get; set; } = new List() + { + "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈", "沈", "杨", "朱", "许", "何", "张", + }; + } +} diff --git a/AllBase/Model/DBModel/WaybillHelper.cs b/AllBase/Model/DBModel/WaybillHelper.cs deleted file mode 100644 index 17e33db..0000000 --- a/AllBase/Model/DBModel/WaybillHelper.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace AllBase.Model.DBModel -{ - public class WaybillHelper - { - //中国移动‌:134、135、136、137、138、139、147、150、151、152、157、158、159、172、178、182、183、184、187、188、195、197、198。 - //中国联通‌:130、131、132、145、155、156、166、175、176、185、186、196。其中‌145号段‌主要用于上网卡。 - //中国电信‌:133、149、153、173、177、180、181、189、190、191、193、199。 - //中国广电‌:192。作为第四大运营商,其号段于2022年开始放号。 - public static List MobileHead { get; set; } = new List() - { - 134, 135, 136, 137, 138, 139, 147, 150, 151, 152, 157, 158, 159, 172, 178, 182, 183, 184, 187, 188, 195, 197, 198, - 130, 131, 132, 155, 156, 166, 175, 176, 185, 186, 196, - 133, 149, 153, 173, 177, 180, 181, 189, 190, 191, 193, 199, - }; - - public static List LastName { get; set; } = new List() - { - "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈", "沈", "杨", "朱", "许", "何", "张", - }; - } -} diff --git a/AllBase/Model/DBModel/oms_wei_external_procurement_log_info.cs b/AllBase/Model/DBModel/oms_wei_external_procurement_log_info.cs index b8dc0a7..ee3f677 100644 --- a/AllBase/Model/DBModel/oms_wei_external_procurement_log_info.cs +++ b/AllBase/Model/DBModel/oms_wei_external_procurement_log_info.cs @@ -78,6 +78,23 @@ namespace AllBase.Model.DBModel /// 中转出库时间 /// public DateTime? outbound_time { get; set; } - public int has_reject { get; set; } + /// + /// 是否有退货: 0=无,1=有 + /// + public int? has_return { get; set; } + /// + /// 订单初始金额(单位:分) + /// + public int? postage { get; set; } + /// + /// 重试取号是否成功:0=未尝试 1=成功 2=失败 + /// + public int? retry_acquire_success { get; set; } + /// + /// 超重费用,单位:分 + /// + public int? over_weight_fee { get; set; } + + public int has_reject { get; set; } } } diff --git a/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs b/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs index 9476d99..1558c6c 100644 --- a/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs +++ b/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs @@ -327,8 +327,8 @@ namespace TemuKJD.ToolForms 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 ? "先生" : "女士"); + jObj["mobile"] = TransitWaybillHelper.MobileHead[Randomx.GetId(TransitWaybillHelper.MobileHead.Count)] + Randomx.GetNumber(8); + jObj["name"] = TransitWaybillHelper.LastName[Randomx.GetId(TransitWaybillHelper.LastName.Count)] + (Randomx.GetId(2) == 1 ? "先生" : "女士"); postData = JsonHelper.SerializeObject(jObj); request.PostData.Elements[0].Bytes = System.Text.Encoding.UTF8.GetBytes(postData); }