Files
KJD/Work/Api/GetVisitProduct.cs
T
2025-06-29 19:38:31 +08:00

120 lines
4.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using AllBase;
namespace Work.Api
{
public class GetVisitProduct
{
public Dictionary<long, int> ProductVisit = new Dictionary<long, int>();
public GetVisitProduct(string name)
{
Name = name;
}
public ShopChatBase Shop = null;
public static List<ProductVisitBase> Product = new List<ProductVisitBase>();
public static List<ProductVisitBase> ProductTemp = new List<ProductVisitBase>();
public static int MaxCount = 0, ThisCount = 0, MinVisitCount = 0, MinSoldCount = 0, Days = 0, MinPrice = 0;
public static bool Running = false;
public string Name;
public void Get()
{
Running = true;
string cookies = "";
if (Shop != null)
cookies = Shop.Cookies;
string url = "https://mms.pinduoduo.com/earth/api/goodsDataShow/detailList";
string refere = "https://mms.pinduoduo.com/Pdd.html";
string data = "{\"orderBy\":\"pay_ord_cnt\",\"orderStrategy\":\"DESC\",\"pageNumber\":1,\"pageSize\":10,\"spanDays\":" + Days + ",\"readyDate\":\"" + BaseClass.GetServerTimeString().ToString("yyyy-MM-DD") + "\"}";
string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies);
int allCount = BaseRegex.GetIntJson(ref html, "total");
int page = allCount / 10 + (allCount % 10 > 0 ? 1 : 0);
MaxCount = page;
for (int i = 1; i <= page; i++)
{
if (Shop == null && !Running)
break;
ThisCount = i;
if (i != 1)
{
data = "{\"orderBy\":\"pay_ord_cnt\",\"orderStrategy\":\"DESC\",\"pageNumber\":" + i + ",\"pageSize\":10,\"spanDays\":" + Days + ",\"readyDate\":\"" + BaseClass.GetServerTimeString().ToString("yyyy-MM-DD") + "\"}";
html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies);
}
var m = BaseRegex.GetMatchRegex(ref html, @"\{([^\}]+?)\}");
for (int j = 0; m != null && j < m.Count; j++)
{
string list = m[j].Groups[0].Value;
ProductVisitBase p = new ProductVisitBase();
p.Id = BaseRegex.GetLongJson(ref list, "goodsId");
p.GoodsSn = BaseRegex.GetLongJson(ref list, "goodsSn");
p.OrderCount = BaseRegex.GetIntJson(ref list, "payOrderCount");
p.Title = BaseRegex.GetStringJson(ref list, "goodsName");
p.Uv = BaseRegex.GetIntJson(ref list, "goodsUv");
p.Pv = BaseRegex.GetIntJson(ref list, "goodsPv");
p.UvAvgPay = BaseRegex.GetDecimalJson(ref list, "avgGoodsVcr");
p.SoldCount = BaseRegex.GetIntJson(ref list, "payOrderCount");
if (Shop == null)
ProductTemp.Add(p);
else
{
if (!ProductVisit.ContainsKey(p.Id))
ProductVisit.Add(p.Id, p.Pv);
else
ProductVisit[p.Id] = p.Pv;
}
if (!Product.Exists(pr => pr.Id == p.Id))
Product.Add(p);
}
LogSave.Add(Name, "获取 " + (Shop == null ? "" : Shop.ShopName) + " 流量:" + i);
Thread.Sleep(100);
}
ThisCount = MaxCount;
Running = false;
}
public DataGridView dataGridViewX5;
}
public class ProductVisitBase
{
public string Message = "";
public string Title = "";
public long Id;
public long GoodsSn;
public int OrderCount = 0;
public bool Checked = false;
/// <summary>
/// 支付金额
/// </summary>
public decimal PayMoney = 0;
public int Uv = 0;
public decimal Price = 0;
/// <summary>
/// 购物车
/// </summary>
public int CartCount = 0;
/// <summary>
/// 收藏
/// </summary>
public int FavCount = 0;
/// <summary>
/// 销量
/// </summary>
public int SoldCount = 0;
public DateTime UpdateTime = DateTime.Now.AddDays(-365);
public int Pv = 0;
/// <summary>
/// 平均用户付款数
/// </summary>
public decimal UvAvgPay = 0;
}
}