店铺优化数据抓取 拼多多买手刷新订单逻辑优化

This commit is contained in:
wule_5900x committed 2026-04-26 01:30:31 +08:00
1 parent 0e6a927cf2
commit b5d8818485
14 files changed
+2492 -615

No files matched your search

+2
View File
@@ -213,6 +213,7 @@
<Compile Include="Model\Result\PDDResult\ApiPddGoodsCatRuleInfo.cs" />
<Compile Include="Model\Result\PDDResult\PDDActivityResult\ActivityListProdInfo.cs" />
<Compile Include="Model\Result\PDDResult\PDDActivityResult\ActEnrollV3GoodsRuleInfo.cs" />
<Compile Include="Model\Result\PDDResult\PddBuyerAfterSaleInfoLite.cs" />
<Compile Include="Model\Result\PDDResult\PddBuyerOrderInfoLite.cs" />
<Compile Include="Model\Result\PDDResult\PddClientInfo.cs" />
<Compile Include="Model\Result\VDianShopLoginInfo.cs" />
@@ -288,6 +289,7 @@
<Compile Include="Model\Result\WXResult\WxCatInfo.cs" />
<Compile Include="Model\Result\WXResult\WxOptimizeOrderAfterSaleInfo.cs" />
<Compile Include="Model\Result\WXResult\WxOptimizeProductEvaluationInfo.cs" />
<Compile Include="Model\Result\WXResult\WxOptrimizeLinerCgiInfo.cs" />
<Compile Include="Model\Result\WXResult\WxOrderInfoLite.cs" />
<Compile Include="Model\Result\WXResult\WxOptimizeOrderWayBillInfo.cs" />
<Compile Include="Model\Result\WXResult\WXShopTokenInfo.cs" />
+1 -1
View File
@@ -27,7 +27,7 @@ namespace AllBase
/// <summary>
/// 版本ID
/// </summary>
public static int VersionCount = 1009;
public static int VersionCount = 1012;
//public static int VersionCount = 613;
/// <summary>
@@ -0,0 +1,78 @@
using NaiBa.Util.Extension;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model.Result.PDDResult
{
public class PddBuyerAfterSaleInfoLite
{
public string buyerId { get; set; } // 买手Id
public string buyerName { get; set; } // 买手名称
public string sendStatus { get; set; } = "";
public string orderSn
{
get
{
var detailPage = listItemExtraVO.navToDetailPageUrl;
return BaseRegex.GetStringQuery(ref detailPage, "order_sn");
}
}
public int? orderDate { get { return orderSn.Split('-').FirstOrDefault().ParseToInt(); } }
public long? afterSalesId { get; set; } // 20129688312436,
public ListItemExtraVO listItemExtraVO { get; set; }
public ListItemMallVO listItemMallVO { get; set; }
public ListItemStatusVO listItemStatusVO { get; set; }
public ListItemGoodsVO listItemGoodsVO { get; set; }
public ListItemAmountVO listItemAmountVO { get; set; }
}
public class ListItemAmountVO
{
public string orderAmountTitle { get; set; } // "实付:",
public int? orderAmount { get; set; } // 1580,
public object payLaterAmountTitle { get; set; } // null,
public object payLaterAmount { get; set; } // null,
public string refundAmountTitle { get; set; } // "退款金额:",
public int? refundAmount { get; set; } // 1580,
public object refundAmountText { get; set; } // null,
public bool? useCoupon { get; set; } // false
}
public class ListItemGoodsVO
{
public string goodsImage { get; set; } // "https://img.pddpic.com/gaudit-image/2026-01-08/a3f431dd2be815640a2a41ed9a6cae5f.jpeg",
public string goodsName { get; set; } // "假发男士爸爸中老年自然轻手织男士假发道具中年",
public string spec { get; set; } // "",
public int? goodsPrice { get; set; } // 1580,
public int? goodsNumber { get; set; } // 1,
public object richTextList { get; set; } // null
}
public class ListItemStatusVO
{
public string statusText { get; set; } // "退款成功"
}
public class ListItemMallVO
{
public string mallName { get; set; } // "江霞假发",
public string mallLogo { get; set; } // "http://t16img.yangkeduo.com/pdd_ims/img_check/v2/E6EDFF2D6EE40120200112172428556/9824d59f68694de79252d95c62828c61.png",
public string mallTagLink { get; set; } // null,
public string pddRoute { get; set; } // "mall_page.html?mall_id=891600087&msn=tytnfyyplkflxcwnke2jkevprq_axbuy&_sop_rcto=YWKMWyWgOwRhdOxkIstGcbATTuXTx_3fIjo"
}
public class ListItemExtraVO
{
public string navToDetailPageUrl { get; set; } // "/complaints_new_detail.html?after_sales_id=20129688312436&order_sn=260409-566440793722665"
}
}
@@ -8,6 +8,9 @@ namespace AllBase.Model.Result.WXResult
{
public class WxOptimizeOrderWayBillInfo
{
public string shopId { get; set; }
public string shopName { get; set; }
public WayBillOrderInfo orderInfo { get; set; }
public string waybillId { get; set; } // "JT4157662637789",
public string realPickupTime { get; set; } // "1776764623",
@@ -8,6 +8,9 @@ namespace AllBase.Model.Result.WXResult
{
public class WxOptimizeProductEvaluationInfo
{
public string shopId { get; set; }
public string shopName { get; set; }
public string productEvaluationId { get; set; } // "53890834526",
public OptimizeEvaluationInfo evaluationInfo { get; set; }
public EvaluationProductInfo productInfo { get; set; }
@@ -96,10 +99,19 @@ namespace AllBase.Model.Result.WXResult
public List<string> imgUrl { get; set; } // [ "https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SZ/reserved/69b236b3000a233f38faea9a156aeaa0000000a000004f50" ],
public int? autoEvaluation { get; set; } // 0,
public AuditInfo auditInfo { get; set; } // { "status": 1 },
public List<BuyerEvaluationInfoLabel> labelList { get; set; }
public int? contentType { get; set; } // 0,
public string defaultContent { get; set; } // ""
}
public class BuyerEvaluationInfoLabel
{
public string labelId { get; set; } // "3991",
public string labelProperty { get; set; } // "2",
public string labelName { get; set; } // "质量一般"
}
public class AuditInfo
{
public int? status { get; set; } // 1
@@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AllBase.Model.Result.WXResult
{
public class WxOptrimizeLinerCgiInfo
{
public string shopId { get; set; }
public string shopName { get; set; }
public string receipt_province { get; set; } // "福建省",
public string ship_province { get; set; } // "广东省",
public string receipt_time { get; set; } // "1775439386",
public string transport_duration { get; set; } // "120986",
public string delivery_id { get; set; } // "ZTO",
public string is_reach_std { get; set; } // "0",
public string ship_city { get; set; } // "揭阳市",
public string receipt_city { get; set; } // "漳州市",
public string collect_time { get; set; } // "1775305357",
public string transport_std_duration { get; set; } // "86400",
public string order_id { get; set; } // "3735440972198845440",
public string waybill_id { get; set; } // "78592630685546",
public string delivery_name { get; set; } // "中通快递",
public string delivery_head_url { get; set; } // "https://res.wx.qq.com/shop/public/0c3d5722-bfb9-4798-a54c-56b2e10e32b3.png",
public List<WxOptrimizeLinerCgiProductInfo> product_list { get; set; }
public int? order_price { get; set; } // 840
}
public class WxOptrimizeLinerCgiProductInfo
{
public long? product_id { get; set; } // 10000633090440,
public string head_img_url { get; set; } // "https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SH/reserved/69c7811600048a7d0b8c53e63ee96615000000a100004f50",
public string title { get; set; } // "【8.9到手2把装】不锈钢削皮刀双面家用土豆刮皮刀多功能水果蔬菜削皮刨丝加厚",
public long? sku_id { get; set; } // 10537323034,
public int? product_count { get; set; } // 1,
public string spu_code { get; set; } // "EC110000365271004A",
public string sku_code { get; set; } // ""
}
}
+3 -1
View File
@@ -1860,7 +1860,9 @@
<Name>Work</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<ItemGroup>
<Folder Include="WXForms\ShopForms\OptimizeForms\" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.6.2">
<Visible>False</Visible>
+1 -1
View File
@@ -34,7 +34,7 @@ namespace TemuKJD.WXForms.ShopForms
tv.SelectedNode = tv.Nodes[0].Nodes[0];
tv.ExpandGroup(tv.Nodes[0].Name);
List<string> hideName = new List<string>() { "店铺优化", "子账号管理", "高级运费模板", "运费模板", "素材库管理", "订单金额统计", "工作明细统计", "店铺经营统计1" };
List<string> hideName = new List<string>() { "店铺优化1", "子账号管理", "高级运费模板", "运费模板", "素材库管理", "订单金额统计", "工作明细统计", "店铺经营统计1" };
if (BaseClass.GroupId == 3)
{
File diff suppressed because it is too large. Load diff
+526 -19
View File
@@ -45,6 +45,8 @@ namespace TemuKJD.WXForms.ShopForms
ConcurrentList<WxOptimizeOrderAfterSaleInfo> lstWxOptimizeOrderAfterSaleInfo = new ConcurrentList<WxOptimizeOrderAfterSaleInfo>();
ConcurrentList<WxOptimizeProductEvaluationInfo> lstWxOptimizeProductEvaluationInfo = new ConcurrentList<WxOptimizeProductEvaluationInfo>();
ConcurrentList<WxOptimizeOrderWayBillInfo> lstWxOptimizeOrderWayBillInfo = new ConcurrentList<WxOptimizeOrderWayBillInfo>(); // 揽收
ConcurrentList<WxOptrimizeLinerCgiInfo> lstWxOptrimizeLinerCgiInfo = new ConcurrentList<WxOptrimizeLinerCgiInfo>(); // 物流
public WXShopOptimizeForm()
{
@@ -53,6 +55,8 @@ namespace TemuKJD.WXForms.ShopForms
private void UserSelectDbProductForm_Load(object sender, EventArgs e)
{
this.ucTabControl1.TabPages.RemoveAt(4);
dicCheckedShopId = NaiBa.Util.Helper.ConfigHelper.LoadConfig<Dictionary<string, bool>>("wx_checked_shop_dic");
if (dicCheckedShopId == null)
dicCheckedShopId = new Dictionary<string, bool>();
@@ -63,6 +67,12 @@ namespace TemuKJD.WXForms.ShopForms
dgvData1.AddSelectorColumn("colDgv1Check");
dgvData1.AddImgColumn("colDgv1Img", "colDgv1ImgUrl");
dgvData2.AddSelectorColumn("colDgv2Check");
dgvData2.AddImgColumn("colDgv2Img", "colDgv2ImgUrl");
dgvData3.AddSelectorColumn("colCheck");
dgvData3.AddImgColumn("colImg", "colImgUrl");
dgvData4.AddSelectorColumn("colDgv4Check");
dgvData4.AddImgColumn("colDgv4Img", "colDgv4ImgUrl");
IsLoadComplate = true;
}
@@ -277,14 +287,12 @@ namespace TemuKJD.WXForms.ShopForms
}
}
private void dgvSelectProduct_CellContentClick(object sender, DataGridViewCellEventArgs e)
private void dgvData3_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex < 0 || e.RowIndex < 0)
return;
string headerText = dgvData3.Columns[e.ColumnIndex].HeaderText;
var dbId = dgvData3.Rows[e.RowIndex].Cells["colSelectId"].Value.ParseToString();
var shopId = dgvData3.Rows[e.RowIndex].Cells["colSupplierId"].Value.ParseToString();
var draftId = dgvData3.Rows[e.RowIndex].Cells["colDraftId"].Value.ParseToString();
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopId == shopId);
switch (headerText)
@@ -325,12 +333,6 @@ namespace TemuKJD.WXForms.ShopForms
imgFrom.ShowDialog();
break;
}
case "SKU替换图":
{
ShowImgForm imgFrom = new ShowImgForm(dgvData3.Rows[e.RowIndex].Cells["colSkuFakeImgUrl"].Value.ParseToString());
imgFrom.ShowDialog();
break;
}
case "":
dgvData3.Rows[e.RowIndex].Cells["colCheck"].Value = !(bool)dgvData3.Rows[e.RowIndex].Cells["colCheck"].Value;
break;
@@ -473,30 +475,80 @@ namespace TemuKJD.WXForms.ShopForms
}
btnSearch.Enabled = false;
pictureBox1.Visible = true;
cancellationTokenSource = new CancellationTokenSource();
dgvData1.Rows.Clear();
lstWxOptimizeOrderAfterSaleInfo.Clear();
if (ucCheckBox1.Checked)
{
pictureBox1.Visible = true;
dgvData1.Rows.Clear();
lstWxOptimizeOrderAfterSaleInfo.Clear();
}
if (ucCheckBox2.Checked)
{
pictureBox2.Visible = true;
dgvData2.Rows.Clear();
lstWxOptimizeProductEvaluationInfo.Clear();
}
if (ucCheckBox3.Checked)
{
pictureBox3.Visible = true;
dgvData3.Rows.Clear();
lstWxOptimizeOrderWayBillInfo.Clear();
}
if (ucCheckBox4.Checked)
{
pictureBox4.Visible = true;
dgvData4.Rows.Clear();
lstWxOptrimizeLinerCgiInfo.Clear();
}
Task.Run(() =>
{
List<ShopLoginInfo> shopLst = GlobalConfig.ShopLoginList.Where(s => lstShopId.Contains(s.ShopId)).ToList();
foreach (var shop in shopLst)
{
SearchData1(shop);
if (cancellationTokenSource.IsCancellationRequested)
break;
if (ucCheckBox1.Checked)
{
SearchData1(shop);
Thread.Sleep(Randomx.GetId(200, 500));
}
if (ucCheckBox2.Checked)
{
SearchData2(shop);
Thread.Sleep(Randomx.GetId(200, 500));
}
if (ucCheckBox3.Checked)
{
SearchData3WayBill(shop);
Thread.Sleep(Randomx.GetId(200, 500));
}
if (ucCheckBox4.Checked)
{
SearchData4(shop);
Thread.Sleep(Randomx.GetId(200, 500));
}
}
Invoke(new Action(() =>
{
if (cancellationTokenSource.IsCancellationRequested)
{
this.statusBar.lblTaskStatus.Text = "品质退款查询完毕 " + this.statusBar.lblTaskStatus.Text;
BaseMsgForm.ShowInfo("品质退款查询完毕");
//this.statusBar.lblTaskStatus.Text = "品质退款查询完毕 " + this.statusBar.lblTaskStatus.Text;
//BaseMsgForm.ShowInfo("品质退款查询完毕");
this.statusBar.lblTaskStatus.Text = "优化数据查询中断 " + this.statusBar.lblTaskStatus.Text;
BaseMsgForm.ShowInfo("优化数据查询中断");
}
else
{
this.statusBar.lblTaskStatus.Text = "品质退款查询完毕";
BaseMsgForm.ShowInfo("品质退款查询完毕");
//this.statusBar.lblTaskStatus.Text = "品质退款查询完毕";
//BaseMsgForm.ShowInfo("品质退款查询完毕");
this.statusBar.lblTaskStatus.Text = "优化数据查询完毕";
BaseMsgForm.ShowInfo("优化数据查询完毕");
}
pictureBox1.Visible = false;
pictureBox2.Visible = false;
pictureBox3.Visible = false;
pictureBox4.Visible = false;
btnSearch.Enabled = true;
}));
}, cancellationTokenSource.Token).ContinueWith(delegate
@@ -514,7 +566,7 @@ namespace TemuKJD.WXForms.ShopForms
int page = 0;
int totalPage = 1;
int pageSize = 50;
int pageSize = 20;
int startTime = BaseClass.DateTimeToTimestampSeconds(DateTime.Now.Date.AddDays(-30));
int endTime = BaseClass.DateTimeToTimestampSeconds(DateTime.Now.Date) - 1;
while (page < totalPage)
@@ -561,7 +613,7 @@ namespace TemuKJD.WXForms.ShopForms
}
Invoke(new Action(() =>
{
this.pbLoading.Visible = true;
this.pictureBox1.Visible = true;
this.statusBar.lblTaskStatus.Text = "正在查询品质退款,店铺:" + shop.ShopAccount + " " + page + "/" + totalPage;
}));
foreach (JObject refundOrderObj in prodObjs["data"])
@@ -608,10 +660,414 @@ namespace TemuKJD.WXForms.ShopForms
}
}
public void SearchData2(ShopLoginInfo shop)
{
if (shop.LoginStatus != "登录成功")
{
return;
}
int page = 0;
int totalPage = 1;
int pageSize = 50;
int startTime = BaseClass.DateTimeToTimestampSeconds(DateTime.Now.Date.AddDays(-30));
int endTime = BaseClass.DateTimeToTimestampSeconds(DateTime.Now.Date) - 1;
while (page < totalPage)
{
page++;
if (cancellationTokenSource.IsCancellationRequested)
break;
var getData2 = ShopOptimize.GetProductEvaluation(shop, page, startTime, endTime);
Thread.Sleep(Randomx.GetId(300, 600));
if (!getData2.Contains("\"code\":0"))
{
var error = BaseRegex.GetStringJson(ref getData2, "msg");
if (string.IsNullOrEmpty(error))
error = getData2;
WXShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
if (shop.LoginStatus != "登录成功")
{
var shopIdLst = dgvShop.Rows.Cast<DataGridViewRow>().Where(row
=> row.Cells["colSelect"]?.Value.ParseToBool() == true).Select(r => r.Cells["colShopId"]?.Value.ToString()).ToList();
Invoke(new Action(() => { BindShop(shop, shopIdLst, "店铺掉线"); }));
}
else
{
Invoke(new Action(() =>
{
var shopRow = dgvShop.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colShopId"].Value.ParseToString() == shop.ShopId);
if (shopRow != null)
shopRow.Cells["colMessage"].Value = error;
}));
}
break;
}
try
{
var prodObjs = JsonHelper.JObjectParse(getData2);
if (page == 1)
{
var totalNum = prodObjs["totalCnt"].ParseToInt();
totalPage = Math.Ceiling(1m * totalNum / pageSize).ParseToInt();
}
Invoke(new Action(() =>
{
this.pictureBox2.Visible = true;
this.statusBar.lblTaskStatus.Text = "正在查询商品差评,店铺:" + shop.ShopAccount + " " + page + "/" + totalPage;
}));
if (totalPage == 0)
break;
foreach (JObject refundOrderObj in prodObjs["finderProductEvaluationInfoList"])
{
var oStr = JsonHelper.SerializeObject(refundOrderObj);
var prodEvaluationInfo = JsonHelper.DeserializeJsonToObject<WxOptimizeProductEvaluationInfo>(oStr);
if (lstWxOptimizeProductEvaluationInfo.Any(o => o.productEvaluationId == prodEvaluationInfo.productEvaluationId))
continue;
prodEvaluationInfo.shopId = shop.ShopId;
prodEvaluationInfo.shopName = shop.ShopAccount;
lstWxOptimizeProductEvaluationInfo.Add(prodEvaluationInfo);
var lblLst = prodEvaluationInfo.evaluationInfo?.firstEvaluationInfo?.buyerEvaluationInfo?.labelList;
var content = prodEvaluationInfo.evaluationInfo.firstEvaluationInfo.buyerEvaluationInfo.content + " " +
prodEvaluationInfo.evaluationInfo.firstEvaluationInfo.buyerEvaluationInfo.defaultContent;
Invoke(new Action(() =>
{
var rowIndex = this.dgvData2.Rows.Add(
false,
shop.ShopId,
shop.ShopAccount,
"登录",
"进店",
prodEvaluationInfo.productInfo.imgUrl,
DataGridViewExtension.defaultBitmap,
prodEvaluationInfo.productInfo.productId,
prodEvaluationInfo.productInfo.spuName,
prodEvaluationInfo.productInfo.skuName,
"", //spuCode 此处获取不到填空
prodEvaluationInfo.productEvaluationId,
prodEvaluationInfo.evaluationInfo.buyer.identity.nickname,
BaseClass.StampToDateTime(prodEvaluationInfo.evaluationInfo.firstEvaluationInfo.buyerEvaluationInfo.createTime.ParseToInt()).ToString("yyyy-MM-dd HH:mm:ss"),
(content + " " + (lblLst == null ? "" : string.Join(" ", lblLst.Select(e => e.labelName)))).Trim()
);
dgvData2.Rows[rowIndex].Height = 60;
}));
}
}
catch (Exception ex)
{
Invoke(new Action(() =>
{
var shopRow = dgvShop.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colShopId"].Value.ParseToString() == shop.ShopId);
if (shopRow != null)
shopRow.Cells["colMessage"].Value = ex.Message;
}));
}
}
}
public void SearchData3WayBill(ShopLoginInfo shop)
{
if (shop.LoginStatus != "登录成功")
{
return;
}
bool is24 = false;
var is24Rst = ShopOptimize.Get24H48HFlag(shop); // if_24hOr_48hFlag
if (!is24Rst.Contains("\"code\":0") || BaseRegex.GetStringJson(ref is24Rst, "if_24hOr_48hFlag").IsNullOrEmpty())
{
var error = BaseRegex.GetStringJson(ref is24Rst, "msg");
if (string.IsNullOrEmpty(error))
error = is24Rst;
WXShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
if (shop.LoginStatus != "登录成功")
{
var shopIdLst = dgvShop.Rows.Cast<DataGridViewRow>().Where(row
=> row.Cells["colSelect"]?.Value.ParseToBool() == true).Select(r => r.Cells["colShopId"]?.Value.ToString()).ToList();
Invoke(new Action(() => { BindShop(shop, shopIdLst, "店铺掉线"); }));
}
else
{
Invoke(new Action(() =>
{
var shopRow = dgvShop.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colShopId"].Value.ParseToString() == shop.ShopId);
if (shopRow != null)
shopRow.Cells["colMessage"].Value = "获取物流时效失败" + error;
}));
}
return;
}
is24 = BaseRegex.GetStringJson(ref is24Rst, "if_24hOr_48hFlag") == "1";
int page = 0;
int totalPage = 1;
int pageSize = 20;
int startTime = BaseClass.DateTimeToTimestampSeconds(DateTime.Now.Date.AddDays(-30));
int endTime = BaseClass.DateTimeToTimestampSeconds(DateTime.Now.Date) - 1;
while (page < totalPage)
{
page++;
if (cancellationTokenSource.IsCancellationRequested)
break;
var getData3WayBill = ShopOptimize.GetProductOrderWayBill(shop, page, startTime, endTime, is24);
Thread.Sleep(Randomx.GetId(300, 600));
if (!getData3WayBill.Contains("\"code\":0"))
{
var error = BaseRegex.GetStringJson(ref getData3WayBill, "msg");
if (string.IsNullOrEmpty(error))
error = getData3WayBill;
WXShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
if (shop.LoginStatus != "登录成功")
{
var shopIdLst = dgvShop.Rows.Cast<DataGridViewRow>().Where(row
=> row.Cells["colSelect"]?.Value.ParseToBool() == true).Select(r => r.Cells["colShopId"]?.Value.ToString()).ToList();
Invoke(new Action(() => { BindShop(shop, shopIdLst, "店铺掉线"); }));
}
else
{
Invoke(new Action(() =>
{
var shopRow = dgvShop.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colShopId"].Value.ParseToString() == shop.ShopId);
if (shopRow != null)
shopRow.Cells["colMessage"].Value = error;
}));
}
break;
}
try
{
var wayBillObjs = JsonHelper.JObjectParse(getData3WayBill);
if (page == 1)
{
var totalNum = wayBillObjs["total"].ParseToInt();
totalPage = Math.Ceiling(1m * totalNum / pageSize).ParseToInt();
}
Invoke(new Action(() =>
{
this.pictureBox3.Visible = true;
this.statusBar.lblTaskStatus.Text = "正在查询揽收不达标,店铺:" + shop.ShopAccount + " " + page + "/" + totalPage;
}));
foreach (JObject refundOrderObj in wayBillObjs["data"])
{
var oStr = JsonHelper.SerializeObject(refundOrderObj);
var orderWayBill = JsonHelper.DeserializeJsonToObject<WxOptimizeOrderWayBillInfo>(oStr);
if (lstWxOptimizeOrderWayBillInfo.Any(o => o.orderInfo.orderId == orderWayBill.orderInfo.orderId))
continue;
orderWayBill.shopId = shop.ShopId;
orderWayBill.shopName = shop.ShopAccount;
// 24小时揽收率截至第二天
if (is24 && BaseClass.StampToDateTime(orderWayBill.realPickupTime.ParseToInt()).Date <= BaseClass.StampToDateTime(orderWayBill.payTime.ParseToInt()).Date.AddDays(1))
continue;
// 48小时揽收率按48小时算
if (!is24 && BaseClass.StampToDateTime(orderWayBill.realPickupTime.ParseToInt()) <= BaseClass.StampToDateTime(orderWayBill.payTime.ParseToInt()).AddDays(2))
continue;
lstWxOptimizeOrderWayBillInfo.Add(orderWayBill);
Invoke(new Action(() =>
{
var rowIndex = this.dgvData3.Rows.Add(
false,
shop.ShopId,
shop.ShopAccount,
"登录",
"进店",
orderWayBill.orderInfo.imgUrl,
DataGridViewExtension.defaultBitmap,
orderWayBill.orderInfo.spuId,
orderWayBill.orderInfo.name,
orderWayBill.orderInfo.skuName + " x" + orderWayBill.orderInfo.productCnt,
orderWayBill.orderInfo.skuCode,
orderWayBill.orderInfo.orderId + "\r\n" + orderWayBill.waybillId,
orderWayBill.delivery.deliveryName,
BaseClass.StampToDateTime(orderWayBill.payTime.ParseToInt()).ToString("yyyy-MM-dd HH:mm:ss"),
BaseClass.StampToDateTime(orderWayBill.realPickupTime.ParseToInt()).ToString("yyyy-MM-dd HH:mm:ss"),
(BaseClass.StampToDateTime(orderWayBill.realPickupTime.ParseToInt()) -
BaseClass.StampToDateTime(orderWayBill.payTime.ParseToInt())).TotalHours.ToString("f2") + "小时" + "\r\n[" + (is24 ? "次日" : "48小时") + "]"
);
dgvData3.Rows[rowIndex].Height = 60;
}));
}
}
catch (Exception ex)
{
Invoke(new Action(() =>
{
var shopRow = dgvShop.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colShopId"].Value.ParseToString() == shop.ShopId);
if (shopRow != null)
shopRow.Cells["colMessage"].Value = ex.Message;
}));
}
}
}
public void SearchData4(ShopLoginInfo shop)
{
if (shop.LoginStatus != "登录成功")
{
return;
}
bool is24 = false;
var is24Rst = ShopOptimize.Get24H48HFlag(shop); // if_24hOr_48hFlag
if (!is24Rst.Contains("\"code\":0") || BaseRegex.GetStringJson(ref is24Rst, "if_24hOr_48hFlag").IsNullOrEmpty())
{
var error = BaseRegex.GetStringJson(ref is24Rst, "msg");
if (string.IsNullOrEmpty(error))
error = is24Rst;
WXShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
if (shop.LoginStatus != "登录成功")
{
var shopIdLst = dgvShop.Rows.Cast<DataGridViewRow>().Where(row
=> row.Cells["colSelect"]?.Value.ParseToBool() == true).Select(r => r.Cells["colShopId"]?.Value.ToString()).ToList();
Invoke(new Action(() => { BindShop(shop, shopIdLst, "店铺掉线"); }));
}
else
{
Invoke(new Action(() =>
{
var shopRow = dgvShop.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colShopId"].Value.ParseToString() == shop.ShopId);
if (shopRow != null)
shopRow.Cells["colMessage"].Value = "获取物流时效失败" + error;
}));
}
return;
}
is24 = BaseRegex.GetStringJson(ref is24Rst, "if_24hOr_48hFlag") == "1";
int page = 0;
int totalPage = 1;
int pageSize = 20;
long startTime = BaseClass.DateTimeToTimestampMilliseconds(DateTime.Now.Date.AddDays(-30));
long endTime = BaseClass.DateTimeToTimestampMilliseconds(DateTime.Now);
while (page < totalPage)
{
page++;
if (cancellationTokenSource.IsCancellationRequested)
break;
var getData4 = ShopOptimize.GetOrderLinerCgi(shop, page, startTime, endTime, is24);
Thread.Sleep(Randomx.GetId(300, 600));
if (!getData4.Contains("\"code\":0"))
{
var error = BaseRegex.GetStringJson(ref getData4, "msg");
if (string.IsNullOrEmpty(error))
error = getData4;
WXShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
if (shop.LoginStatus != "登录成功")
{
var shopIdLst = dgvShop.Rows.Cast<DataGridViewRow>().Where(row
=> row.Cells["colSelect"]?.Value.ParseToBool() == true).Select(r => r.Cells["colShopId"]?.Value.ToString()).ToList();
Invoke(new Action(() => { BindShop(shop, shopIdLst, "店铺掉线"); }));
}
else
{
Invoke(new Action(() =>
{
var shopRow = dgvShop.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colShopId"].Value.ParseToString() == shop.ShopId);
if (shopRow != null)
shopRow.Cells["colMessage"].Value = error;
}));
}
break;
}
try
{
var wayBillObjs = JsonHelper.JObjectParse(getData4);
if (page == 1)
{
var totalNum = wayBillObjs["total"].ParseToInt();
totalPage = Math.Ceiling(1m * totalNum / pageSize).ParseToInt();
}
Invoke(new Action(() =>
{
this.pictureBox4.Visible = true;
this.statusBar.lblTaskStatus.Text = "正在查询揽收不达标,店铺:" + shop.ShopAccount + " " + page + "/" + totalPage;
}));
foreach (JObject refundOrderObj in wayBillObjs["list"])
{
var oStr = JsonHelper.SerializeObject(refundOrderObj);
var orderLinerCgiInfo = JsonHelper.DeserializeJsonToObject<WxOptrimizeLinerCgiInfo>(oStr);
if (lstWxOptrimizeLinerCgiInfo.Any(o => o.order_id == orderLinerCgiInfo.order_id))
continue;
orderLinerCgiInfo.shopId = shop.ShopId;
orderLinerCgiInfo.shopName = shop.ShopAccount;
//// 24小时揽收率截至第二天
//if (is24 && BaseClass.StampToDateTime(orderLinerCgiInfo.realPickupTime.ParseToInt()).Date <= BaseClass.StampToDateTime(orderLinerCgiInfo.payTime.ParseToInt()).Date.AddDays(1))
// continue;
//// 48小时揽收率按48小时算
//if (!is24 && BaseClass.StampToDateTime(orderLinerCgiInfo.realPickupTime.ParseToInt()) <= BaseClass.StampToDateTime(orderLinerCgiInfo.payTime.ParseToInt()).AddDays(2))
// continue;
lstWxOptrimizeLinerCgiInfo.Add(orderLinerCgiInfo);
Invoke(new Action(() =>
{
var rowIndex = this.dgvData4.Rows.Add(
false,
shop.ShopId,
shop.ShopAccount,
"登录",
"进店",
orderLinerCgiInfo.product_list.FirstOrDefault().head_img_url,
DataGridViewExtension.defaultBitmap,
string.Join("\r\n", orderLinerCgiInfo.product_list.Select(p => p.product_id)),
string.Join("\r\n", orderLinerCgiInfo.product_list.Select(p => p.title)),
string.Join("\r\n", orderLinerCgiInfo.product_list.Select(p => "x" + p.product_count)),
"", //skuCode不展示
orderLinerCgiInfo.order_id + "\r\n" + orderLinerCgiInfo.waybill_id,
orderLinerCgiInfo.delivery_name,
BaseClass.StampToDateTime(orderLinerCgiInfo.collect_time.ParseToInt()).ToString("yyyy-MM-dd HH:mm:ss") + "\r\n" + BaseClass.StampToDateTime(orderLinerCgiInfo.receipt_time.ParseToInt()).ToString("yyyy-MM-dd HH:mm:ss"),
"发货地:" + orderLinerCgiInfo.ship_city + "\r\n" + "收货地:" + orderLinerCgiInfo.ship_province + orderLinerCgiInfo.receipt_city,
(orderLinerCgiInfo.transport_duration.ParseToInt() / 3600) + "小时" + (orderLinerCgiInfo.transport_duration.ParseToInt() % 3600) / 60 + "分" +
"\r\n标准时长" + (orderLinerCgiInfo.transport_std_duration.ParseToInt() / 3600) + "小时" /*+ (orderLinerCgiInfo.transport_std_duration.ParseToInt() % 3600)*/
);
dgvData4.Rows[rowIndex].Height = 60;
}));
}
}
catch (Exception ex)
{
Invoke(new Action(() =>
{
var shopRow = dgvShop.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colShopId"].Value.ParseToString() == shop.ShopId);
if (shopRow != null)
shopRow.Cells["colMessage"].Value = ex.Message;
}));
}
}
}
private void dgvData1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
private void btnCancel_Click(object sender, EventArgs e)
{
if (this.cancellationTokenSource != null)
cancellationTokenSource.Cancel();
}
}
public static class ShopOptimize
@@ -624,5 +1080,56 @@ namespace TemuKJD.WXForms.ShopForms
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
return result;
}
/// <summary>
/// 商品评价
/// </summary>
/// <param name="shop"></param>
/// <param name="pageId"></param>
/// <param name="beginTick"></param>
/// <param name="endTick"></param>
/// <returns></returns>
public static string GetProductEvaluation(ShopLoginInfo shop, int pageId, int beginTick, int endTick)
{
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeevaluation/cgi/search?token=&lang=zh_CN";
string referer = "https://store.weixin.qq.com/shop/evaluate/home";
string body = @"{""orderId"":"""",""productId"":"""",""productEvaluationId"":"""",""buyerEvaluationTimeStart"":" + beginTick + @",""buyerEvaluationTimeEnd"":" + endTick +
@",""status"":2,""page"":" + pageId + @",""visibleType"":0}";
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
return result;
}
public static string Get24H48HFlag(ShopLoginInfo shop)
{
string url = "https://store.weixin.qq.com/shop-faas/statistic/cgi/search?token=&lang=zh_CN";
string referer = "https://store.weixin.qq.com/shop/setting/rate2";
string body = "{\"days\":14,\"scoreTypeList\":[63,1000]}";
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
return result;
}
public static string GetProductOrderWayBill(ShopLoginInfo shop, int pageId, int beginTick, int endTick, bool is24 = false)
{
string url = "https://store.weixin.qq.com/shop-faas/statistic/dsr/logistics/pickup/insale?token=&lang=zh_CN";
string referer = "https://store.weixin.qq.com/shop/setting/ratedetail?type=logistics&key=collectIn_48hOrdRatio_30d&valid=collectIn_48hOrdRatio_30d|waybillArriveOntimeRatio_30d|waybillNegtiveOrdRatio_30d&detail=insale";
if (is24)
referer = "https://store.weixin.qq.com/shop/setting/ratedetail?type=logistics&key=collectIn_24hOrdRatio_30d&valid=collectIn_24hOrdRatio_30d|waybillArriveOntimeRatio_30d|waybillNegtiveOrdRatio_30d&detail=insale";
string body = @"{""page"":" + pageId + @",""pageSize"":20,""beginTs"":" + beginTick + @",""endTs"":" + endTick + @"}";
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
return result;
}
public static string GetOrderLinerCgi(ShopLoginInfo shop, int pageId, long beginTick, long endTick, bool is24 = false)
{
string url = "https://store.weixin.qq.com/shop-faas/mmecnodelinercgi/cgi/liner/query?token=&lang=zh_CN";
string referer = "https://store.weixin.qq.com/shop/setting/ratedetail?type=logistics&key=waybillArriveOntimeRatio_30d&valid=collectIn_48hOrdRatio_30d|waybillArriveOntimeRatio_30d|waybillNegtiveOrdRatio_30d";
if (is24)
referer = "https://store.weixin.qq.com/shop/setting/ratedetail?type=logistics&key=waybillArriveOntimeRatio_30d&valid=collectIn_24hOrdRatio_30d|waybillArriveOntimeRatio_30d|waybillNegtiveOrdRatio_30d";
string body = @"{""time_query"":{""dateFormat"":2,""dateType"":0,""dateRange"":30,""startMs"":" + endTick + @",""endMs"":" + endTick +
@"},""limit"":10,""offset"":" + (Math.Max(0, pageId - 1) * 10) + @",""id"":""ratedetail-wuliu-route-order-table"",""biz"":""store"",""is_std"":""0"",""sort"":[""std_route_rate"",""desc""]}";
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
return result;
}
}
}
+100 -28
View File
@@ -195,6 +195,51 @@
<metadata name="colDgv1AfterSaleReason.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv2Check.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv2ShopId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv2ShopName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv2Login.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv2InShop.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv2ImgUrl.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv2Img.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv2SpuId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv2ProductName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv2Spec.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv2SkuCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv2EvaluationId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv2UserNick.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv2CommentTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv2CommentContent.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colCheck.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
@@ -210,58 +255,85 @@
<metadata name="colInShop.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSpuId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="colImgUrl.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colImg.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDraftId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colImgUrl.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colProductSkcPic.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSkuFakeImgUrl.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSkuFakeImg.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colProductName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colProductCat.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="colSpec.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colExtCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colPrice.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSoldNum.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colMsg.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colNotes.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colUserNotes.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="colDeliveryName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ColDelete.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="colPayTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colAddTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="colTakeTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colCouponNum.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="colDuration.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colOpResult.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="colDgv4Check.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewLinkColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewLinkColumn2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv4ImgUrl.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv4Img.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn6.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn7.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn8.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn9.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn10.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDgv4Address.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn12.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>
+299 -91
View File
@@ -40,6 +40,10 @@ namespace TemuKJD.WXForms.TalkForms
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle13 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle14 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle15 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle16 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BuyerOrderListForm));
@@ -67,12 +71,22 @@ namespace TemuKJD.WXForms.TalkForms
this.col_notes = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colEdit = new System.Windows.Forms.DataGridViewLinkColumn();
this.dgvBuyer = new TemuKJD.UserComponent.DataGridViewEx();
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.colBuyerId = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colBuyerName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colBuyerNick = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colShopNotes = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colVisit = new System.Windows.Forms.DataGridViewLinkColumn();
this.colLoginStatus = new System.Windows.Forms.DataGridViewLinkColumn();
this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.splitContainer3 = new System.Windows.Forms.SplitContainer();
this.panelEx3 = new DevComponents.DotNetBar.PanelEx();
this.panelEx2 = new DevComponents.DotNetBar.PanelEx();
this.panelEx1 = new DevComponents.DotNetBar.PanelEx();
this.panel2 = new System.Windows.Forms.Panel();
this.dgvAfterSale = new TemuKJD.UserComponent.DataGridViewEx();
this.btnExchange = new DevComponents.DotNetBar.PanelEx();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.lblMsg = new System.Windows.Forms.Label();
this.btnRestore = new DevComponents.DotNetBar.PanelEx();
@@ -88,7 +102,7 @@ namespace TemuKJD.WXForms.TalkForms
this.colOImg = new System.Windows.Forms.DataGridViewImageColumn();
this.colOGoodsInfo = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colOOrderAmount = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dgvOStatus = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colOStatus = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colOExpressName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colOExpressId = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colOMsg = new System.Windows.Forms.DataGridViewTextBoxColumn();
@@ -108,14 +122,19 @@ namespace TemuKJD.WXForms.TalkForms
this.chkOnlyShowCurrentShop = new TemuKJD.UserComponent.UcCheckBox(this.components);
this.lblCurrentShop = new System.Windows.Forms.Label();
this.statusBar = new TemuKJD.UserControls.StatusBarUserControl();
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.colBuyerId = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colBuyerName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colBuyerNick = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colShopNotes = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colVisit = new System.Windows.Forms.DataGridViewLinkColumn();
this.colLoginStatus = new System.Windows.Forms.DataGridViewLinkColumn();
this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewCheckBoxColumn2 = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.colRBuyerId = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colRBuyerName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colRPddOrderSn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colROrderDate = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn5 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewImageColumn1 = new System.Windows.Forms.DataGridViewImageColumn();
this.colRGoodsInfo = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colROrderAmount = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colRRefundAmount = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colRStatus = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colRMsg = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewLinkColumn1 = new System.Windows.Forms.DataGridViewLinkColumn();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
@@ -132,6 +151,7 @@ namespace TemuKJD.WXForms.TalkForms
this.splitContainer3.Panel2.SuspendLayout();
this.splitContainer3.SuspendLayout();
this.panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvAfterSale)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dgvPddBuyerOrder)).BeginInit();
this.tableLayoutPanel1.SuspendLayout();
@@ -517,6 +537,70 @@ namespace TemuKJD.WXForms.TalkForms
this.dgvBuyer.TabIndex = 7;
this.dgvBuyer.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvShop_CellContentClick);
//
// colSelect
//
this.colSelect.HeaderText = "全选";
this.colSelect.Name = "colSelect";
this.colSelect.ReadOnly = true;
this.colSelect.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colSelect.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colSelect.Width = 28;
//
// colBuyerId
//
this.colBuyerId.HeaderText = "买手Id";
this.colBuyerId.Name = "colBuyerId";
this.colBuyerId.ReadOnly = true;
this.colBuyerId.Visible = false;
this.colBuyerId.Width = 55;
//
// colBuyerName
//
this.colBuyerName.FillWeight = 150F;
this.colBuyerName.HeaderText = "买手名称";
this.colBuyerName.Name = "colBuyerName";
this.colBuyerName.ReadOnly = true;
this.colBuyerName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colBuyerName.Visible = false;
this.colBuyerName.Width = 80;
//
// colBuyerNick
//
this.colBuyerNick.HeaderText = "买手昵称";
this.colBuyerNick.Name = "colBuyerNick";
this.colBuyerNick.ReadOnly = true;
this.colBuyerNick.Width = 80;
//
// colShopNotes
//
this.colShopNotes.HeaderText = "备注";
this.colShopNotes.Name = "colShopNotes";
this.colShopNotes.ReadOnly = true;
this.colShopNotes.Width = 80;
//
// colVisit
//
this.colVisit.HeaderText = "访问";
this.colVisit.Name = "colVisit";
this.colVisit.ReadOnly = true;
this.colVisit.Visible = false;
this.colVisit.Width = 38;
//
// colLoginStatus
//
this.colLoginStatus.HeaderText = "状态";
this.colLoginStatus.Name = "colLoginStatus";
this.colLoginStatus.ReadOnly = true;
this.colLoginStatus.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colLoginStatus.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colLoginStatus.Width = 38;
//
// colMessage
//
this.colMessage.HeaderText = "消息";
this.colMessage.Name = "colMessage";
this.colMessage.ReadOnly = true;
//
// splitContainer2
//
this.splitContainer2.BackColor = System.Drawing.Color.White;
@@ -641,6 +725,8 @@ namespace TemuKJD.WXForms.TalkForms
//
// panel2
//
this.panel2.Controls.Add(this.dgvAfterSale);
this.panel2.Controls.Add(this.btnExchange);
this.panel2.Controls.Add(this.pictureBox1);
this.panel2.Controls.Add(this.lblMsg);
this.panel2.Controls.Add(this.btnRestore);
@@ -653,6 +739,76 @@ namespace TemuKJD.WXForms.TalkForms
this.panel2.Size = new System.Drawing.Size(1062, 345);
this.panel2.TabIndex = 908;
//
// dgvAfterSale
//
this.dgvAfterSale.AllowUserToAddRows = false;
this.dgvAfterSale.AllowUserToDeleteRows = false;
dataGridViewCellStyle9.BackColor = System.Drawing.Color.WhiteSmoke;
this.dgvAfterSale.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle9;
this.dgvAfterSale.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.dgvAfterSale.AutoRowNumber = true;
this.dgvAfterSale.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.dgvAfterSale.BackgroundColor = System.Drawing.Color.White;
this.dgvAfterSale.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
dataGridViewCellStyle10.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle10.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle10.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle10.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle10.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle10.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle10.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgvAfterSale.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle10;
this.dgvAfterSale.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvAfterSale.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.dataGridViewCheckBoxColumn2,
this.colRBuyerId,
this.colRBuyerName,
this.colRPddOrderSn,
this.colROrderDate,
this.dataGridViewTextBoxColumn5,
this.dataGridViewImageColumn1,
this.colRGoodsInfo,
this.colROrderAmount,
this.colRRefundAmount,
this.colRStatus,
this.colRMsg,
this.dataGridViewLinkColumn1});
this.dgvAfterSale.Location = new System.Drawing.Point(30, 223);
this.dgvAfterSale.MultiSelectCheckBox = true;
this.dgvAfterSale.Name = "dgvAfterSale";
this.dgvAfterSale.ReadOnly = true;
this.dgvAfterSale.RowTemplate.Height = 23;
this.dgvAfterSale.Size = new System.Drawing.Size(1005, 83);
this.dgvAfterSale.TabIndex = 941;
this.dgvAfterSale.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvAfterSale_CellContentClick);
//
// btnExchange
//
this.btnExchange.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnExchange.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnExchange.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnExchange.DisabledBackColor = System.Drawing.Color.Empty;
this.btnExchange.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnExchange.Location = new System.Drawing.Point(989, 12);
this.btnExchange.Name = "btnExchange";
this.btnExchange.Size = new System.Drawing.Size(70, 23);
this.btnExchange.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnExchange.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnExchange.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnExchange.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnExchange.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnExchange.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnExchange.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnExchange.Style.GradientAngle = 90;
this.btnExchange.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnExchange.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnExchange.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnExchange.TabIndex = 931;
this.btnExchange.Text = "切换售后";
this.btnExchange.Click += new System.EventHandler(this.btnExchange_Click);
//
// pictureBox1
//
this.pictureBox1.Anchor = System.Windows.Forms.AnchorStyles.None;
@@ -733,8 +889,8 @@ namespace TemuKJD.WXForms.TalkForms
//
this.dgvPddBuyerOrder.AllowUserToAddRows = false;
this.dgvPddBuyerOrder.AllowUserToDeleteRows = false;
dataGridViewCellStyle9.BackColor = System.Drawing.Color.WhiteSmoke;
this.dgvPddBuyerOrder.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle9;
dataGridViewCellStyle13.BackColor = System.Drawing.Color.WhiteSmoke;
this.dgvPddBuyerOrder.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle13;
this.dgvPddBuyerOrder.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
@@ -742,14 +898,14 @@ namespace TemuKJD.WXForms.TalkForms
this.dgvPddBuyerOrder.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.dgvPddBuyerOrder.BackgroundColor = System.Drawing.Color.White;
this.dgvPddBuyerOrder.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
dataGridViewCellStyle10.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle10.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle10.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle10.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle10.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle10.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle10.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgvPddBuyerOrder.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle10;
dataGridViewCellStyle14.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle14.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle14.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle14.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle14.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle14.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle14.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgvPddBuyerOrder.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle14;
this.dgvPddBuyerOrder.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvPddBuyerOrder.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.dataGridViewCheckBoxColumn1,
@@ -761,7 +917,7 @@ namespace TemuKJD.WXForms.TalkForms
this.colOImg,
this.colOGoodsInfo,
this.colOOrderAmount,
this.dgvOStatus,
this.colOStatus,
this.colOExpressName,
this.colOExpressId,
this.colOMsg,
@@ -807,8 +963,8 @@ namespace TemuKJD.WXForms.TalkForms
//
// colOOrderTime
//
dataGridViewCellStyle11.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colOOrderTime.DefaultCellStyle = dataGridViewCellStyle11;
dataGridViewCellStyle15.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colOOrderTime.DefaultCellStyle = dataGridViewCellStyle15;
this.colOOrderTime.FillWeight = 70F;
this.colOOrderTime.HeaderText = "拍单时间";
this.colOOrderTime.Name = "colOOrderTime";
@@ -834,8 +990,8 @@ namespace TemuKJD.WXForms.TalkForms
//
// colOGoodsInfo
//
dataGridViewCellStyle12.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colOGoodsInfo.DefaultCellStyle = dataGridViewCellStyle12;
dataGridViewCellStyle16.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colOGoodsInfo.DefaultCellStyle = dataGridViewCellStyle16;
this.colOGoodsInfo.FillWeight = 140F;
this.colOGoodsInfo.HeaderText = "商品信息";
this.colOGoodsInfo.Name = "colOGoodsInfo";
@@ -848,11 +1004,11 @@ namespace TemuKJD.WXForms.TalkForms
this.colOOrderAmount.Name = "colOOrderAmount";
this.colOOrderAmount.ReadOnly = true;
//
// dgvOStatus
// colOStatus
//
this.dgvOStatus.HeaderText = "订单状态";
this.dgvOStatus.Name = "dgvOStatus";
this.dgvOStatus.ReadOnly = true;
this.colOStatus.HeaderText = "订单状态";
this.colOStatus.Name = "colOStatus";
this.colOStatus.ReadOnly = true;
//
// colOExpressName
//
@@ -1102,69 +1258,105 @@ namespace TemuKJD.WXForms.TalkForms
this.statusBar.Size = new System.Drawing.Size(1438, 25);
this.statusBar.TabIndex = 5;
//
// colSelect
// dataGridViewCheckBoxColumn2
//
this.colSelect.HeaderText = "全选";
this.colSelect.Name = "colSelect";
this.colSelect.ReadOnly = true;
this.colSelect.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colSelect.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colSelect.Width = 28;
this.dataGridViewCheckBoxColumn2.FillWeight = 26F;
this.dataGridViewCheckBoxColumn2.HeaderText = "选";
this.dataGridViewCheckBoxColumn2.Name = "dataGridViewCheckBoxColumn2";
this.dataGridViewCheckBoxColumn2.ReadOnly = true;
this.dataGridViewCheckBoxColumn2.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridViewCheckBoxColumn2.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// colBuyerId
// colRBuyerId
//
this.colBuyerId.HeaderText = "买手Id";
this.colBuyerId.Name = "colBuyerId";
this.colBuyerId.ReadOnly = true;
this.colBuyerId.Visible = false;
this.colBuyerId.Width = 55;
this.colRBuyerId.HeaderText = "买手编号";
this.colRBuyerId.Name = "colRBuyerId";
this.colRBuyerId.ReadOnly = true;
this.colRBuyerId.Visible = false;
//
// colBuyerName
// colRBuyerName
//
this.colBuyerName.FillWeight = 150F;
this.colBuyerName.HeaderText = "买手名称";
this.colBuyerName.Name = "colBuyerName";
this.colBuyerName.ReadOnly = true;
this.colBuyerName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colBuyerName.Visible = false;
this.colBuyerName.Width = 80;
this.colRBuyerName.FillWeight = 80F;
this.colRBuyerName.HeaderText = "买手名称";
this.colRBuyerName.Name = "colRBuyerName";
this.colRBuyerName.ReadOnly = true;
//
// colBuyerNick
// colRPddOrderSn
//
this.colBuyerNick.HeaderText = "买手昵称";
this.colBuyerNick.Name = "colBuyerNick";
this.colBuyerNick.ReadOnly = true;
this.colBuyerNick.Width = 80;
this.colRPddOrderSn.HeaderText = "拍单订单号";
this.colRPddOrderSn.Name = "colRPddOrderSn";
this.colRPddOrderSn.ReadOnly = true;
//
// colShopNotes
// colROrderDate
//
this.colShopNotes.HeaderText = "备注";
this.colShopNotes.Name = "colShopNotes";
this.colShopNotes.ReadOnly = true;
this.colShopNotes.Width = 80;
dataGridViewCellStyle11.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colROrderDate.DefaultCellStyle = dataGridViewCellStyle11;
this.colROrderDate.FillWeight = 70F;
this.colROrderDate.HeaderText = "拍单日期";
this.colROrderDate.Name = "colROrderDate";
this.colROrderDate.ReadOnly = true;
//
// colVisit
// dataGridViewTextBoxColumn5
//
this.colVisit.HeaderText = "访问";
this.colVisit.Name = "colVisit";
this.colVisit.ReadOnly = true;
this.colVisit.Visible = false;
this.colVisit.Width = 38;
this.dataGridViewTextBoxColumn5.HeaderText = "图片路径";
this.dataGridViewTextBoxColumn5.Name = "dataGridViewTextBoxColumn5";
this.dataGridViewTextBoxColumn5.ReadOnly = true;
this.dataGridViewTextBoxColumn5.Visible = false;
//
// colLoginStatus
// dataGridViewImageColumn1
//
this.colLoginStatus.HeaderText = "状态";
this.colLoginStatus.Name = "colLoginStatus";
this.colLoginStatus.ReadOnly = true;
this.colLoginStatus.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colLoginStatus.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colLoginStatus.Width = 38;
this.dataGridViewImageColumn1.FillWeight = 35F;
this.dataGridViewImageColumn1.HeaderText = "订单图片";
this.dataGridViewImageColumn1.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Zoom;
this.dataGridViewImageColumn1.Name = "dataGridViewImageColumn1";
this.dataGridViewImageColumn1.ReadOnly = true;
this.dataGridViewImageColumn1.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridViewImageColumn1.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.dataGridViewImageColumn1.Visible = false;
//
// colMessage
// colRGoodsInfo
//
this.colMessage.HeaderText = "消息";
this.colMessage.Name = "colMessage";
this.colMessage.ReadOnly = true;
dataGridViewCellStyle12.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colRGoodsInfo.DefaultCellStyle = dataGridViewCellStyle12;
this.colRGoodsInfo.FillWeight = 140F;
this.colRGoodsInfo.HeaderText = "商品信息";
this.colRGoodsInfo.Name = "colRGoodsInfo";
this.colRGoodsInfo.ReadOnly = true;
//
// colROrderAmount
//
this.colROrderAmount.FillWeight = 50F;
this.colROrderAmount.HeaderText = "付款金额";
this.colROrderAmount.Name = "colROrderAmount";
this.colROrderAmount.ReadOnly = true;
//
// colRRefundAmount
//
this.colRRefundAmount.FillWeight = 50F;
this.colRRefundAmount.HeaderText = "退款金额";
this.colRRefundAmount.Name = "colRRefundAmount";
this.colRRefundAmount.ReadOnly = true;
//
// colRStatus
//
this.colRStatus.HeaderText = "售后状态";
this.colRStatus.Name = "colRStatus";
this.colRStatus.ReadOnly = true;
//
// colRMsg
//
this.colRMsg.HeaderText = "发送信息";
this.colRMsg.Name = "colRMsg";
this.colRMsg.ReadOnly = true;
//
// dataGridViewLinkColumn1
//
this.dataGridViewLinkColumn1.FillWeight = 50F;
this.dataGridViewLinkColumn1.HeaderText = "发送";
this.dataGridViewLinkColumn1.Name = "dataGridViewLinkColumn1";
this.dataGridViewLinkColumn1.ReadOnly = true;
this.dataGridViewLinkColumn1.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridViewLinkColumn1.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// BuyerOrderListForm
//
@@ -1202,6 +1394,7 @@ namespace TemuKJD.WXForms.TalkForms
this.splitContainer3.ResumeLayout(false);
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvAfterSale)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dgvPddBuyerOrder)).EndInit();
this.tableLayoutPanel1.ResumeLayout(false);
@@ -1261,21 +1454,6 @@ namespace TemuKJD.WXForms.TalkForms
private DevComponents.DotNetBar.PanelEx btnFilterOrder;
private System.Windows.Forms.Label lblMsg;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.DataGridViewCheckBoxColumn dataGridViewCheckBoxColumn1;
private System.Windows.Forms.DataGridViewTextBoxColumn colOBuyerId;
private System.Windows.Forms.DataGridViewTextBoxColumn colOBuyerName;
private System.Windows.Forms.DataGridViewTextBoxColumn colOPddOrderSn;
private System.Windows.Forms.DataGridViewTextBoxColumn colOOrderTime;
private System.Windows.Forms.DataGridViewTextBoxColumn colOImgUrl;
private System.Windows.Forms.DataGridViewImageColumn colOImg;
private System.Windows.Forms.DataGridViewTextBoxColumn colOGoodsInfo;
private System.Windows.Forms.DataGridViewTextBoxColumn colOOrderAmount;
private System.Windows.Forms.DataGridViewTextBoxColumn dgvOStatus;
private System.Windows.Forms.DataGridViewTextBoxColumn colOExpressName;
private System.Windows.Forms.DataGridViewTextBoxColumn colOExpressId;
private System.Windows.Forms.DataGridViewTextBoxColumn colOMsg;
private System.Windows.Forms.DataGridViewLinkColumn colSend;
private System.Windows.Forms.DataGridViewLinkColumn colAfterSale;
private UserComponent.UcCheckBox chkAutoAfterSale;
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
private System.Windows.Forms.DataGridViewTextBoxColumn colBuyerId;
@@ -1285,5 +1463,35 @@ namespace TemuKJD.WXForms.TalkForms
private System.Windows.Forms.DataGridViewLinkColumn colVisit;
private System.Windows.Forms.DataGridViewLinkColumn colLoginStatus;
private System.Windows.Forms.DataGridViewTextBoxColumn colMessage;
private DevComponents.DotNetBar.PanelEx btnExchange;
private UserComponent.DataGridViewEx dgvAfterSale;
private System.Windows.Forms.DataGridViewCheckBoxColumn dataGridViewCheckBoxColumn1;
private System.Windows.Forms.DataGridViewTextBoxColumn colOBuyerId;
private System.Windows.Forms.DataGridViewTextBoxColumn colOBuyerName;
private System.Windows.Forms.DataGridViewTextBoxColumn colOPddOrderSn;
private System.Windows.Forms.DataGridViewTextBoxColumn colOOrderTime;
private System.Windows.Forms.DataGridViewTextBoxColumn colOImgUrl;
private System.Windows.Forms.DataGridViewImageColumn colOImg;
private System.Windows.Forms.DataGridViewTextBoxColumn colOGoodsInfo;
private System.Windows.Forms.DataGridViewTextBoxColumn colOOrderAmount;
private System.Windows.Forms.DataGridViewTextBoxColumn colOStatus;
private System.Windows.Forms.DataGridViewTextBoxColumn colOExpressName;
private System.Windows.Forms.DataGridViewTextBoxColumn colOExpressId;
private System.Windows.Forms.DataGridViewTextBoxColumn colOMsg;
private System.Windows.Forms.DataGridViewLinkColumn colSend;
private System.Windows.Forms.DataGridViewLinkColumn colAfterSale;
private System.Windows.Forms.DataGridViewCheckBoxColumn dataGridViewCheckBoxColumn2;
private System.Windows.Forms.DataGridViewTextBoxColumn colRBuyerId;
private System.Windows.Forms.DataGridViewTextBoxColumn colRBuyerName;
private System.Windows.Forms.DataGridViewTextBoxColumn colRPddOrderSn;
private System.Windows.Forms.DataGridViewTextBoxColumn colROrderDate;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn5;
private System.Windows.Forms.DataGridViewImageColumn dataGridViewImageColumn1;
private System.Windows.Forms.DataGridViewTextBoxColumn colRGoodsInfo;
private System.Windows.Forms.DataGridViewTextBoxColumn colROrderAmount;
private System.Windows.Forms.DataGridViewTextBoxColumn colRRefundAmount;
private System.Windows.Forms.DataGridViewTextBoxColumn colRStatus;
private System.Windows.Forms.DataGridViewTextBoxColumn colRMsg;
private System.Windows.Forms.DataGridViewLinkColumn dataGridViewLinkColumn1;
}
}
+424 -21
View File
@@ -43,6 +43,7 @@ namespace TemuKJD.WXForms.TalkForms
ShopLoginInfo currentShop { get { return this.lblCurrentShop.Tag as ShopLoginInfo; } }
//ConcurrentList<WxOrderInfoLite> lstWxOrderInfoLite { get; set; } = new ConcurrentList<WxOrderInfoLite>();
ConcurrentList<PddBuyerOrderInfoLite> lstPddBuyerOrderInfoLite { get; set; } = new ConcurrentList<PddBuyerOrderInfoLite>();
ConcurrentList<PddBuyerAfterSaleInfoLite> lstPddBuyerAfterSaleInfoLite { get; set; } = new ConcurrentList<PddBuyerAfterSaleInfoLite>();
public CancellationTokenSource cancellationTokenSource { get; set; } = new CancellationTokenSource();
public ChromiumWebBrowser cefWebBrowser = null;
public BuyerOrderConfig buyerOrderConfig = new BuyerOrderConfig();
@@ -50,6 +51,7 @@ namespace TemuKJD.WXForms.TalkForms
public bool isLoadComplate = false;
public bool firstVisible = false;
bool isInitOrder = false;
bool isInitAfterSale = false;
bool isInitBuyer = false;
bool isReadOrder = false;
@@ -65,6 +67,10 @@ namespace TemuKJD.WXForms.TalkForms
dtpStartTime.Value = DateTime.Now.Date.AddMonths(-1);
dtpEndTime.Value = DateTime.Now.Date.AddDays(1).AddSeconds(-1);
dgvBuyer.AddSelectorColumn("colSelect");
dgvAfterSale.Location = new Point(dgvPddBuyerOrder.Location.X, dgvPddBuyerOrder.Location.Y);
dgvAfterSale.Width = dgvPddBuyerOrder.Width;
dgvAfterSale.Height = dgvPddBuyerOrder.Height;
dgvAfterSale.SendToBack();
InitCef();
@@ -82,6 +88,11 @@ namespace TemuKJD.WXForms.TalkForms
lstPddBuyerOrderInfoLite = new ConcurrentList<PddBuyerOrderInfoLite>();
lstPddBuyerOrderInfoLite.RemoveAll(o => o.order_time < BaseClass.DateTimeToTimestampSeconds(DateTime.Now.AddMonths(-1)));
lstPddBuyerAfterSaleInfoLite = NaiBa.Util.Helper.ConfigHelper.LoadConfig<ConcurrentList<PddBuyerAfterSaleInfoLite>>("pdd_buyer_after_sale_list");
if (lstPddBuyerAfterSaleInfoLite == null)
lstPddBuyerAfterSaleInfoLite = new ConcurrentList<PddBuyerAfterSaleInfoLite>();
lstPddBuyerAfterSaleInfoLite.RemoveAll(o => o.orderDate < DateTime.Now.AddMonths(-1).ToString("yyMMdd").ParseToInt());
GetBuyer();
Task.Run(() =>
@@ -92,7 +103,7 @@ namespace TemuKJD.WXForms.TalkForms
}
ShowExistOrder();
while (isInitOrder)
while (isInitOrder || isInitAfterSale)
{
Thread.Sleep(500);
}
@@ -104,7 +115,7 @@ namespace TemuKJD.WXForms.TalkForms
while(true)
{
Thread.Sleep(500);
if (isReadOrder || isInitBuyer || isInitOrder)
if (isReadOrder || isInitBuyer || isInitOrder || isInitAfterSale)
{
Invoke(new Action(() => { pictureBox1.Visible = true; }));
}
@@ -138,6 +149,21 @@ namespace TemuKJD.WXForms.TalkForms
}
isInitOrder = false;
});
isInitAfterSale = true;
Task.Run(() => {
foreach (var afterSale in lstPddBuyerAfterSaleInfoLite)
{
if (GlobalConfig.BuyerLoginList.Any(b => b.buyer_id == afterSale.buyerId))
{
Invoke(new Action(() =>
{
ShowAfterSale(afterSale);
}));
}
}
isInitAfterSale = false;
});
}
void ShowOrder(PddBuyerOrderInfoLite order)
@@ -180,7 +206,7 @@ namespace TemuKJD.WXForms.TalkForms
// 商品信息
row.Cells["colOGoodsInfo"].Value = order.order_Goods == null ? "" : string.Join("\r\n", order.order_Goods.Select(g => g.goods_name + " x" + g.goods_number));
row.Cells["colOOrderAmount"].Value = order.order_amount * 0.01;
row.Cells["dgvOStatus"].Value = order.order_status_prompt;
row.Cells["colOStatus"].Value = order.order_status_prompt;
row.Cells["colOExpressName"].Value = order.outExpressCompanyName;
row.Cells["colOExpressId"].Value = order.tracking_number;
row.Cells["colOMsg"].Value = order.sendStatus;
@@ -217,6 +243,80 @@ namespace TemuKJD.WXForms.TalkForms
}
}
void ShowAfterSale(PddBuyerAfterSaleInfoLite afterSale)
{
if (afterSale == null)
return;
var row = dgvAfterSale.Rows.Cast<DataGridViewRow>().FirstOrDefault(p => p.Cells.GetCellValueFromColumnName("colRPddOrderSn").ParseToString() == afterSale.orderSn);
if (row == null)
{
var rowIndex = this.dgvAfterSale.Rows.Add(
false,
afterSale.buyerId,
afterSale.buyerName,
afterSale.orderSn,
afterSale.orderDate,
"", // 图片路径,
DataGridViewExtension.defaultBitmap, // 订单图片
afterSale.listItemGoodsVO == null ? "" : afterSale.listItemGoodsVO.goodsName + " " + afterSale.listItemGoodsVO.spec + " x" + afterSale.listItemGoodsVO.goodsNumber, // 商品信息
afterSale.listItemAmountVO.orderAmount * 0.01m,
afterSale.listItemAmountVO.refundAmount * 0.01m,
afterSale.listItemStatusVO.statusText,
afterSale.sendStatus,
"发送",
"退货"
);
row = dgvAfterSale.Rows[rowIndex];
row.Height = 40;
}
else
{
//row.Cells["colOSelect"].Value = selectIds.Contains(buyer.buyer_id);
row.Cells["colRBuyerId"].Value = afterSale.buyerId;
row.Cells["colRBuyerName"].Value = afterSale.buyerName;
row.Cells["colRPddOrderSn"].Value = afterSale.orderSn;
row.Cells["colROrderDate"].Value = afterSale.orderDate;
//row.Cells["colOImgUrl"].Value = "";
// 商品信息
row.Cells["colRGoodsInfo"].Value = afterSale.listItemGoodsVO == null ? "" : afterSale.listItemGoodsVO.goodsName + " " + afterSale.listItemGoodsVO.spec + " x" + afterSale.listItemGoodsVO.goodsNumber; // 商品信息
row.Cells["colROrderAmount"].Value = afterSale.listItemAmountVO.orderAmount * 0.01;
row.Cells["colRRefundAmount"].Value = afterSale.listItemAmountVO.refundAmount * 0.01;
row.Cells["colRStatus"].Value = afterSale.listItemStatusVO.statusText;
row.Cells["colRMsg"].Value = afterSale.sendStatus;
}
//if (afterSale.outExpressCompanyName == "物流名称获取失败")
// row.Cells["colOExpressName"].Style.ForeColor = Color.Orange;
//else
// row.Cells["colOExpressName"].Style.ForeColor = Control.DefaultForeColor;
//if (afterSale.order_status_prompt.Contains("交易成功"))
//{
// row.Cells["colOMsg"].Value = "[完]" + row.Cells["colOMsg"].Value.ParseToString();
// row.Cells["colOMsg"].Style.ForeColor = Color.Green;
//}
//else if (afterSale.order_status_prompt.Contains("退款成功") || afterSale.order_status_prompt.Contains("交易已取消"))
//{
// row.Cells["colOMsg"].Value = "[已退]" + row.Cells["colOMsg"].Value.ParseToString();
// row.Cells["colOMsg"].Style.ForeColor = Color.Gray;
//}
//else if (afterSale.after_sales != null)
//{
// row.Cells["colOMsg"].Value = "[退货中]" + row.Cells["colOMsg"].Value.ParseToString();
// row.Cells["colOMsg"].Style.ForeColor = Color.DeepSkyBlue;
//}
//else if (!string.IsNullOrEmpty(afterSale.wxRefundStatus))
//{
// row.Cells["colOMsg"].Value = "[" + afterSale.wxRefundStatus + "]" + row.Cells["colOMsg"].Value.ParseToString();
// row.Cells["colOMsg"].Style.ForeColor = Color.Red;
//}
//else
//{
// row.Cells["colOMsg"].Style.ForeColor = Control.DefaultForeColor;
//}
}
private void InitCef()
{
cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser("about:blank", false);
@@ -248,6 +348,7 @@ namespace TemuKJD.WXForms.TalkForms
private void RequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData, IRequest request)
{
var cookie1 = request.Headers["Cookie"];
Task.Run(() =>
{
var url1 = url;
@@ -267,6 +368,7 @@ namespace TemuKJD.WXForms.TalkForms
//if (url1.StartsWith("https://mobile.yangkeduo.com/orders.html?type=3&order_index=0"))
//{
//}
// 已发货 第一页
if (url1.StartsWith("https://mobile.yangkeduo.com/orders.html?type=3")) //https://mobile.yangkeduo.com/orders.html?type=3
{
Task.Run(() =>
@@ -291,6 +393,7 @@ namespace TemuKJD.WXForms.TalkForms
}
});
}
// 待发货 第一页
if (url1.StartsWith("https://mobile.yangkeduo.com/orders.html?type=2"))
{
Task.Run(() =>
@@ -323,6 +426,61 @@ namespace TemuKJD.WXForms.TalkForms
});
}
// 读取售后
if (url1.StartsWith("https://mobile.yangkeduo.com/proxy/api/api/blade/after_sales_list"))
{
Task.Run(() =>
{
CefReadBuyerAfterSale(url1, data1);
});
}
// 售后 第一页
if (url1.StartsWith("https://mobile.yangkeduo.com/complaint_list.html"))
{
Task.Run(() =>
{
if (data1.Contains("listItemStatusVo") && data1.Contains("afterSalesId") && data1.Contains("statusText"))
{
var cookie2 = cookie1.Replace(";" , "&").Replace(" ", "");
//var jsonDatas = BaseRegex.GetJsonObjStrJson(ref data1, "pending");
var jsonDatas = BaseRegex.GetJsonObjStrJson(ref data1, "listDataMap");
var jsonData = jsonDatas?.OrderByDescending(x => x.Length).FirstOrDefault();
//var nickName = BaseRegex.GetStringJson(ref data1, "nickName");
//var uid = BaseRegex.GetStringJson(ref data1, "uid");
//var buyerId = GlobalConfig.BuyerLoginList.FirstOrDefault(b => b.buyer_id == uid)?.buyer_id;
//if (buyerId.IsNullOrEmpty())
// buyerId = GlobalConfig.BuyerLoginList.FirstOrDefault(b => b.buyer_nick == nickName)?.buyer_id;
//if (!string.IsNullOrEmpty(jsonData) && !string.IsNullOrEmpty(buyerId))
//{
// var ordersStr = BaseRegex.GetJsonObjStrJson(ref jsonData, "initOdersList")?.FirstOrDefault();
// if (ordersStr != null && ordersStr.StartsWith("{\"2\":"))
// {
// ordersStr = "{\"orders\":" + ordersStr.Substring(5);
// CefReadBuyerOrder(buyerId, ordersStr);
// }
//}
var uid = BaseRegex.GetStringQuery(ref cookie2, "pdd_user_id");
var buyerId = GlobalConfig.BuyerLoginList.FirstOrDefault(b => b.buyer_id == uid)?.buyer_id;
if (!string.IsNullOrEmpty(buyerId) && !string.IsNullOrEmpty(jsonData))
{
try
{
var jObj = JsonHelper.JObjectParse(jsonData);
jObj["result"] = jObj["all"];
jObj["result"]["listItemVOList"] = jObj["result"]["list"];
CefReadBuyerAfterSale(buyerId, JsonHelper.SerializeObject(jObj));
}
catch
{
}
}
}
});
}
});
}
@@ -417,6 +575,83 @@ namespace TemuKJD.WXForms.TalkForms
NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite);
}
void CefReadBuyerAfterSale(string url, string data)
{
var buyer = GlobalConfig.BuyerLoginList.FirstOrDefault(b => url.Contains(b.buyer_id));
if (buyer == null)
return;
if (data.Contains("\"listItemVOList\":[]") || data.Contains("\"hasNextQuery\":false"))
{
Invoke(new Action(() =>
{
lblMsg.Text = buyer.buyer_name + " 获取到空售后列表,退出自动滑动 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}));
currentReadBuyer = "";
return;
}
if (data.Contains("\"error_code\":40001"))
{
currentReadBuyer = "";
CheckBuyerLogin(new List<BuyerLoginInfo> { buyer }, false);
return;
}
Invoke(new Action(() =>
{
lblMsg.Text = buyer.buyer_name + " 正在获取售后列表 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}));
var list = JsonHelper.DeserializeJsonToList<PddBuyerAfterSaleInfoLite>(JsonHelper.JObjectParse(data)["result"]["listItemVOList"].ParseToString());
foreach (var af in list)
{
af.buyerId = buyer.buyer_id;
af.buyerName = buyer.buyer_name;
PddBuyerAfterSaleInfoLite afterSale = null;
if (!this.lstPddBuyerAfterSaleInfoLite.Any(or => or.afterSalesId == af.afterSalesId))
{
afterSale = af;
lstPddBuyerAfterSaleInfoLite.Add(afterSale);
}
else
{
afterSale = this.lstPddBuyerAfterSaleInfoLite.FirstOrDefault(aft => aft.afterSalesId == af.afterSalesId);
if (JsonHelper.SerializeObject(afterSale) != JsonHelper.SerializeObject(af))
{
//order = JsonHelper.DeserializeJsonToObject<PddBuyerOrderInfoLite>(JsonHelper.SerializeObject(o));
afterSale.afterSalesId = af.afterSalesId;
afterSale.listItemAmountVO = JsonHelper.DeserializeJsonToObject<ListItemAmountVO>(JsonHelper.SerializeObject(af.listItemAmountVO));
afterSale.listItemExtraVO = JsonHelper.DeserializeJsonToObject<ListItemExtraVO>(JsonHelper.SerializeObject(af.listItemExtraVO));
afterSale.listItemGoodsVO = JsonHelper.DeserializeJsonToObject<ListItemGoodsVO>(JsonHelper.SerializeObject(af.listItemGoodsVO));
afterSale.listItemMallVO = JsonHelper.DeserializeJsonToObject<ListItemMallVO>(JsonHelper.SerializeObject(af.listItemMallVO));
afterSale.listItemStatusVO = JsonHelper.DeserializeJsonToObject<ListItemStatusVO>(JsonHelper.SerializeObject(af.listItemStatusVO));
}
}
if (afterSale.orderDate < DateTime.Now.AddMonths(-2).ToString("yyMMdd").ParseToInt())
{
Invoke(new Action(() =>
{
lblMsg.Text = buyer.buyer_name + " 近2个月售后列表获取完成,退出自动滑动 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}));
currentReadBuyer = "";
return;
}
Task.Run(() =>
{
SendAfterSaleE57(afterSale);
});
Invoke(new Action(() =>
{
ShowAfterSale(afterSale);
}));
}
NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_after_sale_list", lstPddBuyerAfterSaleInfoLite);
}
private bool RequestHandler_BeforeResourceLoad(object sender, string url, string postData, IRequest request)
{
return false;
@@ -587,7 +822,7 @@ namespace TemuKJD.WXForms.TalkForms
{
nextGetOrderTime = DateTime.Now.AddMinutes(30);
GetPddOrder();
MakeAfterSales();
MakeWxToPddAfterSales();
}
Thread.Sleep(1000);
Invoke(new Action(() =>
@@ -634,9 +869,10 @@ namespace TemuKJD.WXForms.TalkForms
cefWebBrowser.Load("https://mobile.yangkeduo.com/personal.html");
Thread.Sleep(Randomx.GetId(2000, 3000));
// 售后
string readBuyer = buyer.buyer_id;
currentReadBuyer = buyer.buyer_id;
cefWebBrowser.Load("https://mobile.yangkeduo.com/orders.html?type=2");
cefWebBrowser.Load("https://mobile.yangkeduo.com/complaint_list.html?refer_page_name=personal&refer_page_sn=10001&tab=all");
Thread.Sleep(Randomx.GetId(2000, 3000));
int top = 0;
@@ -645,8 +881,8 @@ namespace TemuKJD.WXForms.TalkForms
if (cancellationTokenSource.IsCancellationRequested)
break;
Thread.Sleep(Randomx.GetId(100,300));
top += Randomx.GetId(400, 500);
top += Randomx.GetId(450, 600);
Thread.Sleep(Randomx.GetId(100, 300));
var jsStr = @"window.scroll({
top: document.body.scrollHeight,
@@ -663,6 +899,37 @@ namespace TemuKJD.WXForms.TalkForms
}
Thread.Sleep(Randomx.GetId(2000, 3000));
// 待发货
readBuyer = buyer.buyer_id;
currentReadBuyer = buyer.buyer_id;
cefWebBrowser.Load("https://mobile.yangkeduo.com/orders.html?type=2");
Thread.Sleep(Randomx.GetId(2000, 3000));
top = 0;
while (currentReadBuyer == readBuyer)
{
if (cancellationTokenSource.IsCancellationRequested)
break;
top += Randomx.GetId(450, 600);
Thread.Sleep(Randomx.GetId(100,300));
var jsStr = @"window.scroll({
top: document.body.scrollHeight,
left: 0,
behavior: 'smooth' // 可选,使滚动平滑
});";
jsStr = @"window.scroll({
top: " + top + @",
left: 0,
behavior: 'smooth' // 可选,使滚动平滑
});";
var t1 = cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsStr);
t1.Wait(1000);
}
Thread.Sleep(Randomx.GetId(2000, 3000));
// 已发货
readBuyer = buyer.buyer_id;
currentReadBuyer = buyer.buyer_id;
cefWebBrowser.Load("https://mobile.yangkeduo.com/orders.html?type=3");
@@ -674,7 +941,7 @@ namespace TemuKJD.WXForms.TalkForms
if (cancellationTokenSource.IsCancellationRequested)
break;
top += Randomx.GetId(400, 500);
top += Randomx.GetId(450, 600);
Thread.Sleep(Randomx.GetId(100, 300));
var jsStr = @"window.scroll({
@@ -704,7 +971,7 @@ namespace TemuKJD.WXForms.TalkForms
{
nextGetOrderTime = DateTime.Now.AddMinutes(30);
GetPddOrder();
MakeAfterSales();
MakeWxToPddAfterSales();
}
private void pnlEmpty_Click(object sender, EventArgs e)
@@ -1030,7 +1297,7 @@ namespace TemuKJD.WXForms.TalkForms
pictureBox1.Visible = true;
Task.Run(() =>
{
MakeAfterSale(order);
MakeWxToPddAfterSale(order);
Invoke(new Action(() => { pictureBox1.Visible = false; }));
});
break;
@@ -1041,8 +1308,17 @@ namespace TemuKJD.WXForms.TalkForms
public void SendOrderE57(PddBuyerOrderInfoLite order, bool resetSendStatus = false)
{
if (order == null)
return;
if (resetSendStatus)
order.sendStatus = "";
var row = dgvPddBuyerOrder.Rows.Cast<DataGridViewRow>().FirstOrDefault(p => p.Cells.GetCellValueFromColumnName("colOPddOrderSn").ParseToString() == order.order_sn);
Invoke(new Action(() =>
{
if (row != null)
row.Cells["colOMsg"].Value = "";
}));
Thread.Sleep(100);
// 已发货且没有运单号的属于已退货,不再发送
if (order.order_status_prompt != "拼单成功,待发货" && order.order_status_prompt != "免拼成功,待发货" && (
@@ -1065,6 +1341,10 @@ namespace TemuKJD.WXForms.TalkForms
// return;
if (order.sendStatus.Contains("外采订单已发货"))
{
Invoke(new Action(() =>
{
ShowOrder(order);
}));
return;
}
@@ -1081,21 +1361,26 @@ namespace TemuKJD.WXForms.TalkForms
//失败 已存在
//<ResultVo><code>1505</code><msg>调用微信接口更新物流信息失败: 非法参数, 同运单号拦截 rid: 69d8ab9c-22baa3b1-67de0d95</msg><data/><totalRecords/></ResultVo>
var exportRst = WXHttpResponseBLL.e57PostResponse(url, dataStr, "");
if (exportRst.Contains("发送失败 操作超时"))
for (int i = 0; i < 5 && exportRst.Contains("操作超时"); i++)
{
Thread.Sleep(2000);
WXHttpResponseBLL.e57PostResponse(url, dataStr, "");
if (exportRst.Contains("SUCCESS") /*|| exportRst.Contains("已存在") || exportRst.Contains("同运单号拦截") || exportRst.Contains("订单已绑定外采订单")*/)
{
order.sendStatus = "已发送";
NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite);
}
else if (exportRst != null && exportRst.Contains("<msg>") && exportRst.Contains("</msg>"))
// exportRst.Contains("已存在") || exportRst.Contains("同运单号拦截") || exportRst.Contains("订单已绑定外采订单")
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
xmlDoc.LoadXml(exportRst); //<ResultVo><code>1505</code><msg>不支持的平台类型: WEISHOP</msg><data/><totalRecords/></ResultVo>
string msg = xmlDoc["ResultVo"]["msg"].InnerText;
string data = xmlDoc["ResultVo"]["data"].InnerText;
if (msg == "SUCCESS")
{
order.sendStatus = exportRst.Substring(0, exportRst.IndexOf("</msg>")).Substring(exportRst.IndexOf("<msg>") + 5);
order.sendStatus = string.IsNullOrEmpty(data) ? msg : data;
if (order.sendStatus == "更新微信外采订单状态成功")
order.sendStatus = "已发送";
NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite);
}
else
{
order.sendStatus = "发送失败 " + exportRst;
order.sendStatus = "发送失败 " + (string.IsNullOrEmpty(msg) ? data : msg);
NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_list", lstPddBuyerOrderInfoLite);
}
Invoke(new Action(() =>
@@ -1105,7 +1390,7 @@ namespace TemuKJD.WXForms.TalkForms
//Thread.Sleep(500);
}
public void MakeAfterSales()
public void MakeWxToPddAfterSales()
{
Task.Run(() =>
{
@@ -1154,7 +1439,7 @@ namespace TemuKJD.WXForms.TalkForms
}));
if (chkAutoAfterSale.Checked)
{
MakeAfterSale(order);
MakeWxToPddAfterSale(order);
}
}
}
@@ -1166,7 +1451,8 @@ namespace TemuKJD.WXForms.TalkForms
});
}
public string MakeAfterSale(PddBuyerOrderInfoLite order)
// 通过服务端读取微信售后并触发拼多多售后或显示提示供买手手动退货
public string MakeWxToPddAfterSale(PddBuyerOrderInfoLite order)
{
//if (isReadOrder)
//{
@@ -1225,6 +1511,67 @@ namespace TemuKJD.WXForms.TalkForms
}
}
// 向服务端更新售后退货信息更新状态
public void SendAfterSaleE57(PddBuyerAfterSaleInfoLite afterSale, bool resetSendStatus = false)
{
if (resetSendStatus)
afterSale.sendStatus = "";
var row = dgvAfterSale.Rows.Cast<DataGridViewRow>().FirstOrDefault(p => p.Cells.GetCellValueFromColumnName("colRPddOrderSn").ParseToString() == afterSale.orderSn);
Invoke(new Action(() =>
{
if (row != null)
row.Cells["colRMsg"].Value = "";
}));
Thread.Sleep(100);
// 已退款成功且发送过的,不再发送
if (afterSale.listItemStatusVO.statusText.Contains("退款成功") && afterSale.sendStatus == "发送成功")
{
Invoke(new Action(() =>
{
ShowAfterSale(afterSale);
}));
return;
}
JObject obj = new JObject();
obj["platform"] = "WEISHOP";
obj["outOrderNo"] = afterSale.orderSn;
obj["afterSaleStatus"] = afterSale.listItemStatusVO.statusText;
var dataStr = JsonHelper.SerializeObject(obj);
string url = "https://po.e57.cn/prod-api/api/oms-api/external_procurement/updateAfterSaleStatus";
//成功 "<ResultVo><code>0</code><msg>SUCCESS</msg><data/><totalRecords/></ResultVo>"
//失败 已存在
//<ResultVo><code>1505</code><msg>调用微信接口更新物流信息失败: 非法参数, 同运单号拦截 rid: 69d8ab9c-22baa3b1-67de0d95</msg><data/><totalRecords/></ResultVo>
var exportRst = WXHttpResponseBLL.e57PostResponse(url, dataStr, "");
for (int i = 0; i < 5 && exportRst.Contains("操作超时"); i++)
{
Thread.Sleep(2000);
WXHttpResponseBLL.e57PostResponse(url, dataStr, "");
}
if (exportRst.Contains("SUCCESS") || exportRst.Contains("更新外采订单的售后成功") /*|| exportRst.Contains("已存在") || exportRst.Contains("同运单号拦截") || exportRst.Contains("订单已绑定外采订单")*/)
{
afterSale.sendStatus = "发送成功";
NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_after_sale_list", lstPddBuyerAfterSaleInfoLite);
}
else if (exportRst != null && exportRst.Contains("<msg>") && exportRst.Contains("</msg>"))
{
afterSale.sendStatus = exportRst.Substring(0, exportRst.IndexOf("</msg>")).Substring(exportRst.IndexOf("<msg>") + 5);
NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_after_sale_list", lstPddBuyerAfterSaleInfoLite);
}
else
{
afterSale.sendStatus = "发送失败 " + exportRst;
NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_after_sale_list", lstPddBuyerAfterSaleInfoLite);
}
Invoke(new Action(() =>
{
ShowAfterSale(afterSale);
}));
//Thread.Sleep(500);
}
private void btnClose_Click(object sender, EventArgs e)
{
panel2.Visible = !panel2.Visible;
@@ -1273,6 +1620,15 @@ namespace TemuKJD.WXForms.TalkForms
else
row.Visible = false;
}
foreach (DataGridViewRow row in dgvAfterSale.Rows)
{
if (row.Cells["colRPddOrderSn"].Value.ParseToString().Contains(txtOrderSnFilter.Text.Trim()))
row.Visible = true;
//else if (row.Cells["colOBuyerName"].Value.ParseToString().Contains(txtOrderSnFilter.Text.Trim()))
// row.Visible = true;
else
row.Visible = false;
}
}
private void btnRestore_Click(object sender, EventArgs e)
@@ -1291,6 +1647,53 @@ namespace TemuKJD.WXForms.TalkForms
buyerOrderConfig.IsAutoAfterSale = chkAutoAfterSale.Checked;
NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_buyer_order_config", buyerOrderConfig);
}
private void btnExchange_Click(object sender, EventArgs e)
{
if (btnExchange.Text == "切换售后")
{
this.dgvPddBuyerOrder.SendToBack();
btnExchange.Text = "切换订单";
}
else
{
this.dgvAfterSale.SendToBack();
btnExchange.Text = "切换售后";
}
}
private void dgvAfterSale_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex < 0 || e.RowIndex < 0)
return;
string headerText = dgvAfterSale.Columns[e.ColumnIndex].HeaderText;
var orderSn = dgvAfterSale.Rows[e.RowIndex].Cells["colRPddOrderSn"].Value.ParseToString();
var order = lstPddBuyerAfterSaleInfoLite.FirstOrDefault(p => p.orderSn == orderSn);
switch (headerText)
{
case "详情":
case "编辑/详情":
break;
case "图片":
ShowImgForm imgFrom = new ShowImgForm(dgvPddBuyerOrder.Rows[e.RowIndex].Cells["colImgUrl"].Value.ParseToString().Replace("?imageView2/2/w/90/h/90", ""));
imgFrom.ShowDialog();
break;
case "":
case "全选":
dgvPddBuyerOrder.Rows[e.RowIndex].Cells["colCheck"].Value = !(bool)dgvPddBuyerOrder.Rows[e.RowIndex].Cells["colCheck"].Value;
break;
case "发送":
Task.Run(() =>
{
SendAfterSaleE57(order, true);
});
break;
default:
break;
}
}
}
public class YkdBuyerOrder
@@ -174,6 +174,45 @@
<metadata name="colMessage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewCheckBoxColumn2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colRBuyerId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colRBuyerName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colRPddOrderSn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colROrderDate.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewImageColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colRGoodsInfo.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colROrderAmount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colRRefundAmount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colRStatus.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colRMsg.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewLinkColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewCheckBoxColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
@@ -201,7 +240,7 @@
<metadata name="colOOrderAmount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dgvOStatus.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="colOStatus.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colOExpressName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">