1订单统计时区问题修复 2退货订单逻辑50% 3其他一些功能小改动

This commit is contained in:
wule committed 2026-08-08 10:31:07 +08:00
1 parent 342a66f940
commit 24cf1dba7b
11 files changed
+121 -89

No files matched your search

@@ -450,7 +450,13 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
{
BaseMsgWindow.ShowAnimateMessage("订单扩展信息查询失败 " + BaseRegex.GetStringJson(ref html, "msg"), "Error", 5);
}
existOrderExtList = JsonHelper.DeserializeJsonToList<order_item_ext>(JsonHelper.JObjectParse(html)["data"].ParseToString());
try
{
existOrderExtList = JsonHelper.DeserializeJsonToList<order_item_ext>(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;
}
}
@@ -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;
@@ -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);
}
@@ -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">
<Grid Background="Transparent" x:Name="mainGrid" Margin="2">
<Grid.RowDefinitions>
<RowDefinition Height="50"></RowDefinition>
@@ -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("<code>200</code>") && !getTransitAfterSaleRst.ParseToString().Contains("<code>0</code>"))
{
string msg = BaseRegex.GetStringXml(ref getTransitAfterSaleRst, "msg");
+1 -1
View File
@@ -177,7 +177,7 @@
<Compile Include="Model\DBModel\order_pdd_buyer_order.cs" />
<Compile Include="Model\DBModel\TransitWarehouseParam.cs" />
<Compile Include="Model\DBModel\user_payment_record.cs" />
<Compile Include="Model\DBModel\WaybillHelper.cs" />
<Compile Include="Model\DBModel\TransitWaybillHelper.cs" />
<Compile Include="Model\Division\Division.cs" />
<Compile Include="Model\Division\PddDivision.cs" />
<Compile Include="Model\Result\PddBuyerAfterSaleLiteInfo.cs" />
+5 -4
View File
@@ -32,7 +32,7 @@ namespace AllBase
/// 版本ID
/// </summary>
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
/// <param name="time"></param>
/// <returns></returns>
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);
}
/// <summary>
@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model.DBModel
{
/// <summary>
/// 中转仓地址/联系电话随机生成帮助类
/// </summary>
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<int> MobileHead { get; set; } = new List<int>()
{
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<string> LastName { get; set; } = new List<string>()
{
"赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈", "沈", "杨", "朱", "许", "何", "张",
};
}
}
-27
View File
@@ -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<int> MobileHead { get; set; } = new List<int>()
{
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<string> LastName { get; set; } = new List<string>()
{
"赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈", "沈", "杨", "朱", "许", "何", "张",
};
}
}
@@ -78,6 +78,23 @@ namespace AllBase.Model.DBModel
/// 中转出库时间
/// </summary>
public DateTime? outbound_time { get; set; }
public int has_reject { get; set; }
/// <summary>
/// 是否有退货: 0=无,1=有
/// </summary>
public int? has_return { get; set; }
/// <summary>
/// 订单初始金额(单位:分)
/// </summary>
public int? postage { get; set; }
/// <summary>
/// 重试取号是否成功:0=未尝试 1=成功 2=失败
/// </summary>
public int? retry_acquire_success { get; set; }
/// <summary>
/// 超重费用,单位:分
/// </summary>
public int? over_weight_fee { get; set; }
public int has_reject { get; set; }
}
}
+2 -2
View File
@@ -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);
}