拍单功能继续优化

This commit is contained in:
wule committed 2026-06-25 02:46:02 +08:00
1 parent 29042424dc
commit 34c51c6fcd
64 files changed
+7138 -305

No files matched your search

@@ -0,0 +1,95 @@
using NaiBa.Util.Extension;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model.Params
{
public class TransitWarehouseParam
{
/// <summary>
/// 中转仓编码
/// </summary>
public string TransId { get; set; }
/// <summary>
/// 仓位
/// </summary>
public string TransName { get; set; }
/// <summary>
/// 收件人
/// </summary>
public string TransUserName { get; set; }
/// <summary>
/// 电话
/// </summary>
public string TransMobile { get; set; }
/// <summary>
/// 详细地址
/// </summary>
public string TransDetailAddress { get; set; }
public int province_id { get; set; }
public int city_id { get; set; }
public int district_id { get; set; }
}
public class TransitWarehouseData
{
public static string TransitWarehouseDataStr = @"
XDYWHC ;武汉2仓 ;杨先生 ;13044121071 ;湖北省武汉市汉阳区洲头街道汉新大道2号鲲鹏公司 ;13 ;180 ;1548
XDYSHANDC ;山东2仓 ;鸿鹄小申 ;13044121239 ;山东省临沂市费县南外环东转盘往东200米顺通快递有限公司(仓库二楼) ;22 ;292 ;2415
XDYCHONGQC ;重庆2仓 ;翁桂柱 ;18923911055 ;重庆市九龙坡区中梁山街道云飞九龙香山(二纵线东50米)重庆九龙坡区渝州公司 ;32 ;394 ;3339
XDYGZC ;广州仓 ;何外华 ;13826339849 ;广州市从化区太平镇高埔细埔街99号东门4栋3楼 ;6 ;76 ;692
XDYBJC ;北京仓 ;胡萍 ;18565773752 ;北京市顺义区光明街道滨河小区七区1号楼 ;2 ;52 ;511
XDYSHC ;上海新仓 ;纪先生 ;13044121150 ;上海市上海市普陀区真如镇街道真北路2653弄G区 ;25 ;321 ;2709
XDYJJC ;晋江仓 ;安群 ;19905951984 ;福建省泉州市南安市霞美镇温山村431号鸿鹄大厦 ;4 ;58 ;569
XDYHEBC ;哈尔滨仓 ;韩健 ;13044121250 ;黑龙江省哈尔滨市双城区新兴镇钱江路南侧韵达快递分拨中心发出库房84号装车口旁边电梯 ;12 ;167 ;1426
XDYXA ;西安仓 ;方先生 ;15813526665 ;陕西省西安市雁塔区田马路厨具市场内韵达超市(田马路店);24 ;311 ;2599
XDYYWC ;义乌仓 ;小田 ;19058117371 ;浙江省金华市义乌市北苑街道西站大道妈妈商贸6号库3楼中库走到底鸿鹄云仓(康诚楼上) ;31 ;386 ;3409
XDYZZC ;郑州仓 ;朱红艳 ;13044121247 ;河南省郑州市经济开发区祥云办公处润之新物流园韵达速递 ;11 ;149 ;1259
XDYGYC ;贵阳仓 ;潘小娘 ;19218546304 ;贵州省黔南州龙里县谷脚镇韵达分拨中心 综合楼一楼 食堂隔壁(不要放驿站,送到仓库) ;8 ;116 ;1017
XDYKMC ;昆明仓 ;杨源炜 ;19533700289 ;云南省昆明市宜良县北古城镇红枫路一号韵达分拨(不要放驿站,送到仓库) ;30 ;367 ;3109
XDYCDC ;成都仓 ;谢春虹 ;15828201479 ;四川省资阳市乐至县仙鹤大道桑都街15-19号仓库(不要放驿站,送到仓库) ;26 ;340 ;2898
XDYSSC ;河北仓 ;田女士 ;13382898026 ;河北省衡水市安平县兴安大道灿达创业基地韵达库房A-1 ;10 ;143 ;1180
XDYSZC ;深圳仓 ;峰峰 ;15343351331 ;广东省东莞市东莞市凤岗镇 浸校塘东良巷兔喜生活(云仓);6 ;79 ;732";
static List<TransitWarehouseParam> transitWarehouseList = null;
public static List<TransitWarehouseParam> TransitWarehouseList
{
get
{
if (transitWarehouseList == null)
{
transitWarehouseList = new List<TransitWarehouseParam>();
var strArr = TransitWarehouseDataStr.Split(new string[] { "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries);
foreach (var str in strArr)
{
var arr = str.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
if (arr.Length > 7)
{
TransitWarehouseParam tw = new TransitWarehouseParam()
{
TransId = arr[0].Trim(),
TransName = arr[1].Trim(),
TransUserName = arr[2].Trim(),
TransMobile = arr[3].Trim(),
TransDetailAddress = arr[4].Trim(),
province_id = arr[5].Trim().ParseToInt(),
city_id = arr[6].Trim().ParseToInt(),
district_id = arr[7].Trim().ParseToInt(),
};
transitWarehouseList.Add(tw);
}
}
}
return transitWarehouseList;
}
set
{
}
}
}
}
+27
View File
@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model.Params
{
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>()
{
"赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈", "沈", "杨", "朱", "许", "何", "张",
};
}
}
+31
View File
@@ -0,0 +1,31 @@
using AllBase.Model.MvvmBaseClasses;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
namespace AllBase.Model.Result
{
public class BuyerLoginInfo : PropertyNotifyObject
{
public int id { get; set; }
public string user_name { get; set; }
public string buyer_id { get; set; }
public string buyer_name { get; set; }
public string buyer_nick { get; set; }
public string cookie { get; set; }
public string status
{
get { return this.GetValue(x => x.status); }
set { this.SetValue(x => x.status, value); }
}
public string verify_auth_token { get; set; }
public string notes { get; set; }
public DateTime add_time { get; set; }
public DateTime mdy_time { get; set; }
public CefSharp.Wpf.ChromiumWebBrowser wpf_browser { get; set; }
public CefSharp.WinForms.ChromiumWebBrowser browser { get; set; }
}
}
+90
View File
@@ -0,0 +1,90 @@
using AllBase.Model.MvvmBaseClasses;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model.Result
{
public class ShopLoginInfo : PropertyNotifyObject
{
/// <summary>
/// 是否被选中
/// </summary>
public bool IsSelect
{
get { return this.GetValue(x => x.IsSelect); }
set { this.SetValue(x => x.IsSelect, value); }
}
/// <summary>
/// 是否被过滤掉
/// </summary>
public bool IsFilter
{
get { return this.GetValue(x => x.IsFilter); }
set { this.SetValue(x => x.IsFilter, value); }
}
public string DbId { get; set; }
public string CompanyName { get; set; }
public string LoginName { get; set; }
public string Password { get; set; }
public string ShopId { get; set; }
public string ShopAccount { get; set; }
public string Mobile { get; set; }
public string ErpShopId { get; set; }
public string SubUserName { get; set; }
public string ShopToken { get; set; }
public string Signature { get; set; }
public string TouTiaoId { get; set; }
public string Cookies { get; set; }
public string LoginStatus { get; set; }
public string ApiAuthStatus { get; set; }
/// <summary>
/// 上货账户
/// </summary>
public string UploadAccount { get; set; }
/// <summary>
/// 拍单(采购)用户账户
/// </summary>
public string BuyAccount { get; set; }
public string GroupName { get; set; }
public string Notes { get; set; }
public string LastRefreshDate { get; set; }
public string AccessToken { get; set; }
public string RefreshToken { get; set; }
public string AppKey { get; set; }
public DateTime AddTime { get; set; }
public DateTime ExpiresTime { get; set; }
public DateTime TokenExpiresTime { get; set; }
public bool is_point_shop_expire { get; set; }
public int expire_time { get; set; }
public string openid { get; set; }
}
public class ShopCompany
{
public string UserName { get; set; }
public string LoginName { get; set; }
public string AccountId { get; set; }
public string AccountName { get; set; }
public string LoginStatus { get; set; }
/// <summary>
/// 拼多多校验数据列表
/// </summary>
public string AntiContent { get; set; }
/// <summary>
/// 拼多多店铺信息
/// </summary>
public string MallId { get; set; }
/// <summary>
/// 微信小店开放Id信息
/// </summary>
public string openid { get; set; }
}
}
+31
View File
@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model
{
public class WXBuyMapInfo
{
public long id { get; set; }
public string user_name { get; set; }
public string spu_code { get; set; }
public string sku_code { get; set; }
public string map_url { get; set; }
public string map_goods_name { get; set; }
/// <summary>
/// sku规格名称
/// </summary>
public string map_spec_name { get; set; }
public string map_goods_id { get; set; }
public string map_sku_id { get; set; }
/// <summary>
/// 发货地(省,市)
/// </summary>
public string map_send_address { get; set; }
public string transit_warehouse_id { get; set; }
public DateTime add_time { get; set; }
public DateTime mdy_time { get; set; }
}
}
-14
View File
@@ -1,14 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model
{
public class o_shop_info
{
public bool is_select { get; set; }
public long id { get; set; }
}
}
@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model
{
public class oms_wei_external_procurement_log
{
public long id { get; set; }
public string out_order_no { get; set; }
public string order_no { get; set; }
public string order_sku_id { get; set; }
public string buyer_account { get; set; }
public int? out_amount { get; set; }
public string purchaser_note { get; set; }
}
}
+95 -12
View File
@@ -10,6 +10,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
namespace AllBase.Model
{
@@ -29,16 +30,49 @@ namespace AllBase.Model
public Visibility order_item5_visibility { get { return order_item5 == null ? Visibility.Collapsed : Visibility.Visible; } }
public ObservableCollection<oms_wei_refund_info> refunds { get; set; } = new ObservableCollection<oms_wei_refund_info>();
//public oms_wei_refund_info refund
//{
// get
// {
// if (refunds.FirstOrDefault() != null)
// return refunds.FirstOrDefault();
// return new oms_wei_refund_info();
// }
//}
/// <summary>
/// 待采购
/// </summary>
public bool IsWaitBuy
{
get
{
if (order_items.All(oi => oi.item_transit_order != null)) return false;
if (purchase_status != 0) return false;
if (!out_order_no.IsNullOrEmpty()) return false;
if (status != 20 && status != 21) return false;
return true;
}
set { }
}
/// <summary>
/// 待发货
/// </summary>
public bool IsWaitSend
{
//get { return (purchase_status == 1 || !string.IsNullOrEmpty(out_order_no)) && (status == 20 || status == 21); }
get
{
if (purchase_status != 1 && string.IsNullOrEmpty(out_order_no) && !order_items.All(oi => oi.item_transit_order != null)) return false;
if (status != 20 && status != 21) return false;
return true;
}
set { }
}
/// <summary>
/// 待收货
/// </summary>
public bool IsWaitReceive
{
get { return status == 30 || status == 100; }
set { }
}
public bool IsRefund
{
get { return refunds?.Count > 0; }
set { }
}
public string orderStatusStr
{
@@ -90,7 +124,7 @@ namespace AllBase.Model
/// <summary>
/// 订单延迟发货时间状态文本
/// 订单总状态文本
/// </summary>
public string delivery_deadline_status_str
{
@@ -100,6 +134,8 @@ namespace AllBase.Model
return "退款中";
else if (this.refunds.Any(r => r.statusStr == "退款完成" || r.statusStr == "退货退款完成"))
return "退款完成";
else if (this.refunds.Any(r => !r.statusStr.IsNullOrEmpty()))
return this.refunds.FirstOrDefault(r => !r.statusStr.IsNullOrEmpty()).statusStr;
if (this.status == 20 || this.status == 21)
{
return "剩余";
@@ -108,6 +144,7 @@ namespace AllBase.Model
}
set { /*delivery_deadline_status_str = value;*/ }
}
/// <summary>
/// 延迟发货时间(微信小店:商品发货时效,超时此时间未发货即为发货超时)文本
/// </summary>
@@ -134,6 +171,54 @@ namespace AllBase.Model
set { /*delivery_deadline_str = value;*/ }
}
public SolidColorBrush StatusBoxForeColor
{
get
{
if (delivery_deadline_status_str == "退款中" || delivery_deadline_str == "已超时")
return new SolidColorBrush(Color.FromRgb(250, 71, 51)); // #fa4733
else if (delivery_deadline_status_str == "退款完成" || delivery_deadline_str == "已发货")
return new SolidColorBrush(Color.FromRgb(103, 194, 58)); // #67c23a
else
return new SolidColorBrush(Color.FromRgb(3, 151, 181)); // #0397b5
}
set { }
}
public SolidColorBrush StatusBoxBackColor
{
get
{
if (delivery_deadline_status_str == "退款中" || delivery_deadline_str == "已超时")
return new SolidColorBrush(Color.FromArgb(26, 250, 71, 51)); // #fa4733 0.2
else if (delivery_deadline_status_str == "退款完成" || delivery_deadline_str == "已发货")
return new SolidColorBrush(Color.FromArgb(26, 103, 194, 58)); // #67c23a 0.2
else
return new SolidColorBrush(Color.FromArgb(26, 3, 151, 181)); // #0397b5 0.2
}
set { }
}
public SolidColorBrush StatusBoxBorderColor
{
get
{
//if (delivery_deadline_status_str == "退款中" || delivery_deadline_str == "已超时")
// return new SolidColorBrush(Color.FromRgb(246, 212, 210)); // #f6d4d2
//else if (delivery_deadline_status_str == "退款完成" || delivery_deadline_str == "已发货")
// return new SolidColorBrush(Color.FromRgb(217, 237, 212)); // #d9edd4
//else
// return new SolidColorBrush(Color.FromRgb(232, 251, 249)); // #e8fbf9
if (delivery_deadline_status_str == "退款中" || delivery_deadline_str == "已超时")
return new SolidColorBrush(Color.FromArgb(50, 250, 71, 51)); // #fa4733 0.2
else if (delivery_deadline_status_str == "退款完成" || delivery_deadline_str == "已发货")
return new SolidColorBrush(Color.FromArgb(50, 103, 194, 58)); // #67c23a 0.2
else
return new SolidColorBrush(Color.FromArgb(50, 3, 151, 181)); // #0397b5 0.2
}
set { }
}
public string address_str
{
get { return user_name + " " + tel_number + " " + province_name + " " + city_name + " " + county_name + " " + detail_info; }
@@ -145,8 +230,6 @@ namespace AllBase.Model
///// <summary>
///// 订单中所有商品加起来的总售价文本
///// </summary>
+106 -15
View File
@@ -1,18 +1,20 @@
using NaiBa.Util.Extension;
using AllBase.Model.MvvmBaseClasses;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace AllBase.Model
{
public class oms_wei_order_item_info
public class oms_wei_order_item_info : PropertyNotifyObject
{
public oms_wei_order_info item_order { get; set; }
public oms_wei_refund_info item_refund
{
@@ -26,8 +28,92 @@ namespace AllBase.Model
}
set { }
}
/// <summary>
/// 采购关联
/// </summary>
public WXBuyMapInfo buy_map
{
get { return this.GetValue(x => x.buy_map); }
set { this.SetValue(x => x.buy_map, value); }
}
public string refundResult
public List<oms_wei_external_procurement_log> item_transit_orders { get; set; } = new List<oms_wei_external_procurement_log>();
public oms_wei_external_procurement_log item_transit_order
{
get { return item_transit_orders.FirstOrDefault(); }
set { }
}
public string OrderItemStatusStr
{
get
{
if (item_order?.status == 10)
return "待付款";
if (item_order?.status == 20)
return "待店铺发货";
if (item_order?.status == 21)
return "店铺部分发货";
if (item_order?.status == 30)
return "待买家收货";
if (item_order?.status == 100)
return "订单完成";
if (item_order?.status == 200)
return "售后完成订单取消";
if (item_order?.status == 250)
return "未付款已取消";
return "未知状态";
}
set { }
}
public SolidColorBrush OrderItemStatusStrColor
{
get
{
if ("未知状态,未付款已取消,售后完成订单取消".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(255, 73, 73));
if ("订单完成".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(19, 206, 102));
if ("待买家收货,店铺部分发货,待店铺发货,待付款".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(255, 186, 0));
return new SolidColorBrush(Color.FromRgb(255, 186, 0));
}
set { }
}
public SolidColorBrush OrderItemStatusBorderColor
{
get
{
if ("未知状态,未付款已取消,售后完成订单取消".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(255, 219, 219));
if ("订单完成".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(208, 245, 224));
if ("待买家收货,店铺部分发货,待店铺发货,待付款".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(255, 241, 204));
return new SolidColorBrush(Color.FromRgb(255, 241, 204));
}
set { }
}
public SolidColorBrush OrderItemStatusBackColor
{
get
{
if ("未知状态,未付款已取消,售后完成订单取消".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(255, 237, 237));
if ("订单完成".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(231, 250, 240));
if ("待买家收货,店铺部分发货,待店铺发货,待付款".Contains(OrderItemStatusStr))
return new SolidColorBrush(Color.FromRgb(255, 248, 230));
return new SolidColorBrush(Color.FromRgb(255, 248, 230));
}
set { }
}
/// <summary>
/// 退款状态文本
/// </summary>
public string refundResultStr
{
get
{
@@ -41,15 +127,6 @@ namespace AllBase.Model
set { }
}
///// <summary>
///// 发货信息
///// </summary>
//public string send_delivery_info
//{
// get;
// set;
//}
/// <summary>
/// 订单退款时间
/// </summary>
@@ -70,7 +147,6 @@ namespace AllBase.Model
set { }
}
/// <summary>
/// 订单中所有商品加起来的总售价文本
/// </summary>
@@ -81,6 +157,7 @@ namespace AllBase.Model
get { return "¥" + (real_price * 0.01m).ParseToDecimal().ToString("0.00"); }
set { }
}
/// <summary>
/// 订单内商品维度平台券优惠金额(利润需要计算这个金额在内)文本
/// </summary>
@@ -90,6 +167,7 @@ namespace AllBase.Model
get { return "¥" + (cash_coupon_discounted_price.ParseToInt() * 0.01m).ParseToDecimal().ToString("0.00"); }
set { }
}
/// <summary>
/// 采购价文本
/// </summary>
@@ -99,11 +177,15 @@ namespace AllBase.Model
get { return "¥" + (purchase_price * 0.01m).ParseToDecimal().ToString("0.00"); }
set { }
}
/// <summary>
/// 采购价文本是否可见
/// </summary>
public Visibility purchase_price_visibility
{
get { if (item_order.out_amount > 0) return Visibility.Collapsed; return Visibility.Visible; }
set { }
}
/// <summary>
/// 运费文本
/// </summary>
@@ -113,11 +195,15 @@ namespace AllBase.Model
get { return "¥" + (freight * 0.01m).ParseToDecimal().ToString("0.00"); }
set { }
}
/// <summary>
/// 运费文本是否可见
/// </summary>
public Visibility freight_visibility
{
get { if (item_order.out_amount > 0) return Visibility.Collapsed; return Visibility.Visible; }
set { }
}
/// <summary>
/// 平台服务费
/// </summary>
@@ -127,6 +213,7 @@ namespace AllBase.Model
get { return "¥" + (predict_commission_fee * 0.01m).ParseToDecimal().ToString("0.00"); }
set { }
}
/// <summary>
/// 达人佣金
/// </summary>
@@ -136,6 +223,7 @@ namespace AllBase.Model
get { return "¥" + (commission_amount.ParseToInt() * 0.01m).ParseToDecimal().ToString("0.00"); }
set { }
}
/// <summary>
/// 外采金额文本
/// </summary>
@@ -145,6 +233,7 @@ namespace AllBase.Model
get { return "¥" + (commission_amount.ParseToInt() * 0.01m).ParseToDecimal().ToString("0.00"); }
set { }
}
/// <summary>
/// 利润文本
/// </summary>
@@ -158,7 +247,9 @@ namespace AllBase.Model
set { }
}
/// <summary>
/// sku规格名称文本
/// </summary>
public string sku_attr_str
{
get
+1 -1
View File
@@ -30,7 +30,7 @@ namespace AllBase.Model
if (status == "MERCHANT_FAIL") return "售后关闭";
if (status == "USER_WAIT_CONFIRM_UPDATE") return "待用户处理商家协商";
if (status == "USER_WAIT_HANDLE_MERCHANT_AFTER_SALE") return "待用户处理商家代发起的售后申请";
return "售后状态读取失败";
return "售后状态读取失败";
}
set { }
}