using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using AllBase; namespace Work { public class UpShopIdFromServer { /// /// 上家id队列:id , site_id +'000' + productid /// public static Dictionary UpIds = new Dictionary(); public static void Get(string shopId, string shopName) { string url = BaseClass.LoginApiUrl + "index.php?obj=upshopid/get&act=get_shop"; StringBuilder sb = new StringBuilder(); sb.Append(UserLogin.GetSignaturex(shopId, shopName)); //sb.Append("&act=get_shop"); sb.Append("&shop_id=" + shopId); string html = GetHtml.PostUtf8(url, sb); if (string.IsNullOrEmpty(html) ) return; var m = BaseRegex.GetMatchRegex(ref html, "]+?)>"); for (int i = 0; m!=null && i < m.Count; i++) { string list = m[i].Groups[0].Value; string sid_pid = BaseRegex.GetStringJson(ref list, "sid_pid"); if(!sid_pid.Contains("000")) continue; UpShopIdBase us = new UpShopIdBase(); us.SiteId = int.Parse(sid_pid.Substring(0, sid_pid.IndexOf("000"))); us.ProductId = long.Parse(sid_pid.Substring(sid_pid.IndexOf("000") + 3)); us.SiteIdFrom = BaseRegex.GetIntJson(ref list, "site_id_from"); us.ProductIdFrom = BaseRegex.GetLongJson(ref list, "product_id_from"); AddTemp(us); } } public static void AddTemp(UpShopIdBase us) { if (UpIds.ContainsKey(us.ProductId)) return; try { UpIds.Add(us.ProductId, us); } catch { } } public static void AddToServer(UpShopIdBase us, string shopId, string shopName) { string url = BaseClass.LoginApiUrl+ "index.php?obj=upshopid/add&act=add"; StringBuilder sb = new StringBuilder(); sb.Append(UserLogin.GetSignaturex(shopId, shopName)); //sb.Append("&act=add"); sb.Append("&site_id=" + us.SiteId); sb.Append("&product_id=" + us.ProductId); sb.Append("&site_id_from=" + us.SiteIdFrom); sb.Append("&product_id_from=" + us.ProductIdFrom); string html = GetHtml.PostUtf8(url, sb); } public static UpShopIdBase Get(long productId, string shopId, string shopName) { string url = BaseClass.LoginApiUrl + "index.php?obj=upshopid/get&act=get_id"; StringBuilder sb = new StringBuilder(); sb.Append(UserLogin.GetSignaturex(shopId, shopName)); //sb.Append("&act=get_id"); sb.Append("&site_id=2"); sb.Append("&product_id=" + productId); string html = GetHtml.PostUtf8(url, sb); if (string.IsNullOrEmpty(html) || html == "none") return null; UpShopIdBase us = new UpShopIdBase(); us.ProductId = productId; us.SiteId = 2; us.ProductIdFrom = BaseRegex.GetLongJson(ref html, "product_id_from"); us.SiteIdFrom = BaseRegex.GetIntJson(ref html, "site_id_from"); AddTemp(us); return us; } } public class UpShopIdBase { public int SiteId = 0; public long ProductId = 0; public int SiteIdFrom = 0; public long ProductIdFrom = 0; public string Url { get { switch (SiteIdFrom) { case 1: return "https://item.taobao.com/item.htm?id=" + ProductIdFrom; case 2: return BaseClass.NewUrl+"/goods.html?goods_id=" + ProductIdFrom; case 3: return "https://detail.1688.com/offer/" + ProductIdFrom + ".html"; case 4: return "https://item.m.jd.com/product/" + ProductIdFrom + ".html"; case 6: return "https://weidian.com/item.html?itemID=" + ProductIdFrom + ".html"; } return ""; } set { } } /// /// 上家编码带 tb / pd /// public string UpCode { get { switch (SiteIdFrom) { case 1: return "tb-" + ProductIdFrom; case 2: return "pd-" + ProductIdFrom; case 3: return "al-" + ProductIdFrom; } return ""; } } public bool GetOk = false; public string Message = ""; } }