From 07b912e9ebab8e9362dd3eea118d8a047873cf51 Mon Sep 17 00:00:00 2001 From: wule Date: Tue, 31 Mar 2026 18:14:55 +0800 Subject: [PATCH] =?UTF-8?q?1=E6=8B=BC=E5=A4=9A=E5=A4=9A=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=8F=8A=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=88=E4=B8=8D=E5=90=AB=E9=83=A8=E5=88=86=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=89=20=202=E6=8B=BC=E5=A4=9A=E5=A4=9A=E9=80=89=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AllBase/AllBase.csproj | 7 + AllBase/AllBase.csproj.user | 2 +- AllBase/BaseClass.cs | 55 + AllBase/Helper/GlobalConfig.cs | 4 + AllBase/HelperXiaoNaimao/DebugHelper.cs | 21 + AllBase/HelperXiaoNaimao/FileHelper.cs | 283 + AllBase/HelperXiaoNaimao/HtmlHelper.cs | 214 + AllBase/HelperXiaoNaimao/HttpHelper.cs | 1108 ++ AllBase/HelperXiaoNaimao/LogHelper.cs | 145 + AllBase/HelperXiaoNaimao/NaiBaGlobalConfig.cs | 89 + .../Param/ToolsManage/ADSLAccountParam.cs | 15 + .../ToolsManage/ProductMappingExportInfo.cs | 47 + .../ToolsManage/ProductMappingImportParam.cs | 92 + .../PDDResult/ApiPddGoodsCatRuleInfo.cs | 44 + AllBase/Model/Result/ShopLoginInfo.cs | 8 +- .../BLL/BXX/BXXProductManage.cs | 6 +- TEMUKJD/BLL/Pdd/PddApi.cs | 5 + TEMUKJD/BLL/Pdd/PddApiHelper.cs | 42 +- TEMUKJD/KJDForms/ShopForms/ShopListForm.cs | 4 +- .../PDDDBProdUserSelectForm.Designer.cs | 316 +- .../PDDDBProdUserSelectForm.cs | 430 +- .../PDDDBProdUserSelectForm.resx | 3 + TEMUKJD/StartUp.cs | 5 +- .../WXUserProdListForm.Designer.cs | 12 +- Work/Api/AlibabaProductGet.cs | 1 + Work/Api/UploadPinduoduoMain.cs | 5 + Work/Business/CatBLL.cs | 129 + Work/Business/CpsApiBLL.cs | 47 + .../ProductMappingBLL/MappingTaoBaoBLL.cs | 38 + .../ProductMappingBLL/MappingVDianApiBLL.cs | 26 + .../ProductMappingBLL/MappingVDianCacheBLL.cs | 317 + .../MappingVDianTitleSearchBLL.cs | 277 + .../ProductMappingBLL/PinDuoDuoCidName.cs | 13082 ++++++++++++++++ .../ProductMappingBLL/ProductMapping.cs | 3637 +++++ .../ProductMappingBLL/WeiDianCollectBLL.cs | 782 + Work/CollectClass/JingXiCollect.cs | 2 +- Work/CollectClass/PinduoduoProductCollect.cs | 23 + 37 files changed, 21117 insertions(+), 206 deletions(-) create mode 100644 AllBase/HelperXiaoNaimao/DebugHelper.cs create mode 100644 AllBase/HelperXiaoNaimao/FileHelper.cs create mode 100644 AllBase/HelperXiaoNaimao/HtmlHelper.cs create mode 100644 AllBase/HelperXiaoNaimao/HttpHelper.cs create mode 100644 AllBase/HelperXiaoNaimao/LogHelper.cs create mode 100644 AllBase/HelperXiaoNaimao/NaiBaGlobalConfig.cs create mode 100644 AllBase/Model/Param/ToolsManage/ADSLAccountParam.cs create mode 100644 AllBase/Model/Param/ToolsManage/ProductMappingExportInfo.cs create mode 100644 AllBase/Model/Param/ToolsManage/ProductMappingImportParam.cs create mode 100644 AllBase/Model/Result/PDDResult/ApiPddGoodsCatRuleInfo.cs create mode 100644 Work/Business/CatBLL.cs create mode 100644 Work/Business/CpsApiBLL.cs create mode 100644 Work/Business/ProductMappingBLL/MappingTaoBaoBLL.cs create mode 100644 Work/Business/ProductMappingBLL/MappingVDianApiBLL.cs create mode 100644 Work/Business/ProductMappingBLL/MappingVDianCacheBLL.cs create mode 100644 Work/Business/ProductMappingBLL/MappingVDianTitleSearchBLL.cs create mode 100644 Work/Business/ProductMappingBLL/PinDuoDuoCidName.cs create mode 100644 Work/Business/ProductMappingBLL/ProductMapping.cs create mode 100644 Work/Business/ProductMappingBLL/WeiDianCollectBLL.cs diff --git a/AllBase/AllBase.csproj b/AllBase/AllBase.csproj index 6d0c79d..ec7b2e3 100644 --- a/AllBase/AllBase.csproj +++ b/AllBase/AllBase.csproj @@ -165,6 +165,12 @@ + + + + + + @@ -204,6 +210,7 @@ + diff --git a/AllBase/AllBase.csproj.user b/AllBase/AllBase.csproj.user index 301324e..1777006 100644 --- a/AllBase/AllBase.csproj.user +++ b/AllBase/AllBase.csproj.user @@ -4,6 +4,6 @@ false - ProjectFiles + ShowAllFiles \ No newline at end of file diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs index e587e21..055c27a 100644 --- a/AllBase/BaseClass.cs +++ b/AllBase/BaseClass.cs @@ -750,6 +750,61 @@ namespace AllBase { return LoginApiUrl + "/wxxd_" + file + "?obj=" + BaseClass.MainPath + "/wxxd_" + file; } + + private static char[] constant = + { + '0','1','2','3','4','5','6','7','8','9', + 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z', + 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' + }; + + /// + /// 随机返回指定位数的字母数字组合 + /// + /// + /// + public static string GetRandomAlphanumeric(int iLength) + { + System.Text.StringBuilder newRandom = new System.Text.StringBuilder(62); + for (int i = 0; i < iLength; i++) + { + newRandom.Append(constant[Randomx.GetId(62)]); + } + return newRandom.ToString(); + } + + public static long ConvertDateTimeLong(DateTime time) + { + System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); + return (long)(time - startTime).TotalMilliseconds; + } + /// + /// 获取Unix毫秒级时间戳 + /// + /// 当前时间戳 + public static long ConvertDateTimeLong() + { + return (GetServerTimeString().ToUniversalTime().Ticks - 621355968000000000) / 10000; + } + + /// + /// 获取两个标题相似度 + /// + /// 参照标题 + /// 检测标题 + /// 相似度 + public static double GetSimularityBetween2Text(string refererTitle, string checkTitle) + { + double sameCnt = 0; + for (int i = 0; i < refererTitle.Length; i++) + { + if (checkTitle.IndexOf(refererTitle.Substring(i, 1)) != -1) + { + sameCnt += 1; + } + } + return Math.Round(sameCnt / Convert.ToDouble(refererTitle.Length), 2); + } } public class KeyValueBase diff --git a/AllBase/Helper/GlobalConfig.cs b/AllBase/Helper/GlobalConfig.cs index be6e543..a67c3ba 100644 --- a/AllBase/Helper/GlobalConfig.cs +++ b/AllBase/Helper/GlobalConfig.cs @@ -33,5 +33,9 @@ namespace AllBase.Helper public static string cAgentIpCode { get; } = "AFZ94w3a"; public static List SameProductCheckParamList { get; set; } + + + //public static string UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"; + public static string UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36"; } } diff --git a/AllBase/HelperXiaoNaimao/DebugHelper.cs b/AllBase/HelperXiaoNaimao/DebugHelper.cs new file mode 100644 index 0000000..3249a33 --- /dev/null +++ b/AllBase/HelperXiaoNaimao/DebugHelper.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AllBase.Helper +{ + public class DebugHelper + { + public static void WriteLine(string message, bool all = false) + { + Debug.WriteLine(message); + if (all) + { + Console.WriteLine(message); + } + } + } +} diff --git a/AllBase/HelperXiaoNaimao/FileHelper.cs b/AllBase/HelperXiaoNaimao/FileHelper.cs new file mode 100644 index 0000000..d7f1362 --- /dev/null +++ b/AllBase/HelperXiaoNaimao/FileHelper.cs @@ -0,0 +1,283 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; + +namespace AllBase.Helper +{ + public class FileHelper + { + /// + /// 删除文件夹及子文件内文件 + /// + /// + public static void DeleteFolder(string path) + { + try + { + if (Directory.Exists(path)) //如果存在这个文件夹删除之 + { + foreach (string d in Directory.GetFileSystemEntries(path)) + { + if (File.Exists(d)) + File.Delete(d); //直接删除其中的文件 + else + DeleteFolder(d); //递归删除子文件夹 + } + Directory.Delete(path, true); //删除已空文件夹 + } + } + catch (Exception ex) + { + LogHelper.WriteWithTime(ex); + } + } + + public static void DeleteFile(string filePath) + { + try + { + if (File.Exists(filePath)) + { + File.Delete(filePath); + } + } + catch (Exception ex) + { + LogHelper.WriteWithTime(ex); + } + } + + public static void CopyFolder(string sourceFolder, string destFolder) + { + CreateDirectory(destFolder); + string[] files = Directory.GetFiles(sourceFolder); + foreach (string file in files) + { + string name = Path.GetFileName(file); + string dest = Path.Combine(destFolder, name); + File.Copy(file, dest); + } + string[] folders = Directory.GetDirectories(sourceFolder); + foreach (string folder in folders) + { + string name = Path.GetFileName(folder); + string dest = Path.Combine(destFolder, name); + CopyFolder(folder, dest); + } + } + + public static void MoveFolder(string sourceFolder, string destFolder) + { + CreateDirectory(destFolder); + string[] files = Directory.GetFiles(sourceFolder); + foreach (string file in files) + { + string name = Path.GetFileName(file); + string dest = Path.Combine(destFolder, name); + if (File.Exists(dest)) + { + File.Delete(dest); + } + File.Move(file, dest); + } + string[] folders = Directory.GetDirectories(sourceFolder); + foreach (string folder in folders) + { + string name = Path.GetFileName(folder); + string dest = Path.Combine(destFolder, name); + if (File.Exists(dest)) + { + File.Delete(dest); + } + MoveFolder(folder, dest); + } + } + + public static string Execute(string command, int seconds) + { + string output = string.Empty; //输出字符串 + if (command != null && !command.Equals(string.Empty)) + { + Process process = new Process();//创建进程对象 + ProcessStartInfo startInfo = new ProcessStartInfo(); + startInfo.FileName = "cmd.exe";//设定需要执行的命令 + startInfo.Arguments = "/C " + command;//“/C”表示执行完命令后马上退出 + startInfo.UseShellExecute = false;//不使用系统外壳程序启动 + startInfo.RedirectStandardInput = false;//不重定向输入 + startInfo.RedirectStandardOutput = true; //重定向输出 + startInfo.CreateNoWindow = true;//不创建窗口 + process.StartInfo = startInfo; + try + { + if (process.Start())//开始进程 + { + if (seconds == 0) + { + process.WaitForExit();//这里无限等待进程结束 + } + else + { + process.WaitForExit(seconds); //等待进程结束,等待时间为指定的毫秒 + } + output = process.StandardOutput.ReadToEnd();//读取进程的输出 + } + } + catch (Exception ex) + { + Console.WriteLine(ex.Message);//捕获异常,输出异常信息 + } + finally + { + if (process != null) + { + process.Close(); + } + } + } + return output; + } + + public static void CreateDirectory(string dir) + { + if (Path.HasExtension(dir)) + { + dir = Path.GetDirectoryName(dir); + } + if (!Directory.Exists(dir)) + { + Directory.CreateDirectory(dir); + } + } + + public static string ReadAllText(string filePath, Encoding encoding = null) + { + if (encoding == null) + { + return File.ReadAllText(filePath, Encoding.UTF8); + } + else + { + return File.ReadAllText(filePath, encoding); + } + } + + public static void WriteAllText(string filePathOrName, string content, Encoding encoding = null) + { + string path = Path.Combine(GetApplicationDir(), filePathOrName); + CreateDirectory(path); + if (encoding == null) + { + File.WriteAllText(path, content, Encoding.UTF8); + } + else + { + File.WriteAllText(path, content, encoding); + } + } + + public static void AppendAllText(string filePathOrName, string content, Encoding encoding = null) + { + string path = Path.Combine(GetApplicationDir(), filePathOrName); + CreateDirectory(path); + List contentList = new List { content }; + if (encoding == null) + { + File.AppendAllLines(path, contentList, Encoding.UTF8); + } + else + { + File.AppendAllLines(path, contentList, encoding); + } + } + + #region 获取软件所在目录 + public static string GetApplicationDir() + { + return AppDomain.CurrentDomain.BaseDirectory; + } + #endregion + + public static string GetParentDir(string dir) + { + dir = dir.Trim(Path.DirectorySeparatorChar); + int last = dir.LastIndexOf(Path.DirectorySeparatorChar); + if (last > 0) + { + return dir.Substring(0, last); + } + return dir; + } + + public static string GetResourceFileContent(Assembly assembly, string resourceName) + { + using (Stream stream = assembly.GetManifestResourceStream(resourceName)) + { + using (StreamReader reader = new StreamReader(stream)) + { + string result = reader.ReadToEnd(); + return result; + } + } + } + + public static Stream GetResourceFileStream(Assembly assembly, string resourceName) + { + // 调用之后要释放 stream + Stream stream = assembly.GetManifestResourceStream(assembly.GetCustomAttribute().Title + "." + resourceName); + return stream; + } + + public static void SaveStream(Stream stream, string destPath) + { + CreateDirectory(destPath); + using (var fileStream = new FileStream(destPath, FileMode.Create, FileAccess.Write)) + { + stream.CopyTo(fileStream); + } + } + + public static long GetDirectorySize(string folderPath) + { + DirectoryInfo di = new DirectoryInfo(folderPath); + if (!di.Exists) + { + return 0; + } + return di.EnumerateFiles("*", SearchOption.AllDirectories).Sum(fi => fi.Length); + } + + public static void OpenUrl(string url) + { + try + { + Process.Start(url); + } + catch (Exception ex) + { + LogHelper.WriteWithTime(ex); + } + } + + public static void OpenDirectory(string dir) + { + Process.Start("explorer.exe", dir); + } + + public static string GetFileName(string dir) + { + string fileName = Path.GetFileName(dir); + int questionMark = fileName.IndexOf("?"); + if (questionMark > 0) + { + fileName = fileName.Substring(0, questionMark); + } + return fileName; + } + } +} diff --git a/AllBase/HelperXiaoNaimao/HtmlHelper.cs b/AllBase/HelperXiaoNaimao/HtmlHelper.cs new file mode 100644 index 0000000..47ba4e1 --- /dev/null +++ b/AllBase/HelperXiaoNaimao/HtmlHelper.cs @@ -0,0 +1,214 @@ +using NaiBa.Util.Extension; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Net; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace AllBase.Helper +{ + public class HtmlHelper + { + public static string HtmlEncode(string html) + { + if (string.IsNullOrEmpty(html)) + { + return string.Empty; + } + else + { + return HttpUtility.HtmlEncode(html); + } + } + + public static string HtmlDecode(string url) + { + if (string.IsNullOrEmpty(url)) + { + return string.Empty; + } + else + { + return HttpUtility.HtmlDecode(url); + } + } + + /// + /// Unicode解码 + /// + /// + /// + public static string UnicodeDecode(string html) + { + html = WebUtility.HtmlDecode(html); + + Regex reUnicode = new Regex(@"\\u([0-9a-fA-F]{4})", RegexOptions.Compiled); + return reUnicode.Replace(html, m => + { + short c; + if (short.TryParse(m.Groups[1].Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out c)) + { + return "" + (char)c; + } + return m.Value; + }); + } + + #region Resove + public static string Resove(string html, string prefix, string subfix) + { + int inl = html.IndexOf(prefix); + if (inl == -1) + { + prefix = prefix.Replace("\"", "'"); + subfix = subfix.Replace("\"", "'"); + inl = html.IndexOf(prefix); + } + if (inl == -1) + { + return null; + } + inl += prefix.Length; + if (!string.IsNullOrEmpty(subfix)) + { + int inl2 = html.IndexOf(subfix, inl); + if (inl2 == -1) + { + return null; + } + string result = html.Substring(inl, inl2 - inl); + return result; + } + else + { + string result = html.Substring(inl); + return result; + } + } + #endregion + + #region ResoveReverse + public static string ResoveReverse(string html, string subfix, string prefix) + { + int inl = html.IndexOf(subfix); + if (inl == -1) + { + return null; + } + string subString = html.Substring(0, inl); + int inl2 = subString.LastIndexOf(prefix); + if (inl2 == -1) + { + return null; + } + string s = subString.Substring(inl2 + prefix.Length, subString.Length - inl2 - prefix.Length); + return s; + } + #endregion + + #region ResoveList + public static List ResoveList(string html, string prefix, string subfix) + { + List list = new List(); + int index = 0; + do + { + index = html.IndexOf(prefix, index); + if (index == -1) + { + break; + } + index += prefix.Length; + int indexEnd = html.IndexOf(subfix, index); + if (indexEnd > 0) + { + string content = html.Substring(index, indexEnd - index); + list.Add(content); + } + index = indexEnd; + } + while (index > -1); + return list; + } + #endregion + + #region ResoveListByAT + public static List ResoveListByAT(string html) + { + List list = new List(); + + int index = html.IndexOf('@'); + while (index > 0) + { + int indexx = html.LastIndexOf("'", index); //向前一个单引号 + int indexy = html.IndexOf("'", index + 1); //向后一个单引号 + string s78 = html.Substring(indexx, indexy - indexx); + s78 = s78.Replace("'", ""); + list.Add(s78); + index = html.IndexOf('@', indexy); + } + return list; + } + #endregion + + /// + /// 清除HTML代码 + /// + /// + public static string ClearHtml(string html) + { + html = html.ParseToString(); + html = Regex.Replace(html, @"(|||)", string.Empty); + html = Regex.Replace(html, @"()", string.Empty); + html = Regex.Replace(html, "(<[^>]*?>)", string.Empty); + return html; + } + + public static string GetHtmlText(string html) + { + html = html.ParseToString(); + html = Regex.Replace(html, "<.*?>", string.Empty); + return html; + } + + /// + /// 清除HTML代码A标签 + /// + /// + /// + public static string ClearHtmlA(string html) + { + html = html.ParseToString(); + html = Regex.Replace(html, "(]*>)", "", RegexOptions.IgnoreCase); + return html.Trim(); + } + + public static string AddEscapeCharacter(string html) + { + html = html.ParseToString(); + html = html.Replace("\"", "\\\""); + html = html.Replace("'", "\\'"); + return html; + } + + public static string TrimBOM(string html) + { + html = html.Trim(new char[] { '\uFEFF' }); + return html; + } + + public static string TrimJsonp(string json) + { + int start = json.IndexOf("{"); + int end = json.LastIndexOf("}"); + if (start > 0 && end > 0) + { + return json.Substring(start, end - start + 1); + } + return json; + } + } +} diff --git a/AllBase/HelperXiaoNaimao/HttpHelper.cs b/AllBase/HelperXiaoNaimao/HttpHelper.cs new file mode 100644 index 0000000..fcb12d3 --- /dev/null +++ b/AllBase/HelperXiaoNaimao/HttpHelper.cs @@ -0,0 +1,1108 @@ +using AllBase.Extension; +using NaiBa.Util.Extension; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.IO.Compression; +using System.Linq; +using System.Net; +using System.Net.Security; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; + +namespace AllBase.Helper +{ + public class HttpHelper + { + private const int RequestTimeout = 60 * 1000; + private const int DownloadTimeout = 300 * 1000; + + static HttpHelper() + { + InitHttpsCertificate(); + } + + public static string UrlDecode(string url) + { + if (string.IsNullOrEmpty(url)) + { + return string.Empty; + } + else + { + return HttpUtility.UrlDecode(url); + } + } + + public static string UrlDecode(string url, Encoding encoding) + { + if (string.IsNullOrEmpty(url)) + { + return string.Empty; + } + else + { + return System.Web.HttpUtility.UrlDecode(url, encoding); + } + } + + public static string UrlEncode(string url, bool isUppercase = false) + { + if (string.IsNullOrEmpty(url)) + { + return string.Empty; + } + else + { + string encodeUrl = HttpUtility.UrlEncode(url, Encoding.UTF8); + if (isUppercase) + { + Regex reg = new Regex(@"%[a-f0-9]{2}"); + encodeUrl = reg.Replace(encodeUrl, m => m.Value.ToUpperInvariant()); + } + return encodeUrl; + } + } + + public static string UrlEncode(string url, Encoding encoding) + { + if (string.IsNullOrEmpty(url)) + { + return string.Empty; + } + else + { + string encodeUrl = HttpUtility.UrlEncode(url, encoding); + return encodeUrl; + } + } + + public static string UnicodeToASCII(string unicode) + { + string result = string.Empty; + if (!string.IsNullOrEmpty(unicode)) + { + Encoding utf8 = Encoding.UTF8; + Encoding ascii = Encoding.ASCII; + + string input = unicode; + result = ascii.GetString(Encoding.Convert(utf8, ascii, utf8.GetBytes(input))); + result = result.Trim('?'); + } + return result; + } + + public static string UnicodeToString(string html) + { + return new Regex(@"\\u([0-9A-F]{4})", RegexOptions.IgnoreCase | RegexOptions.Compiled).Replace(html, x => string.Empty + Convert.ToChar(Convert.ToUInt16(x.Result("$1"), 16))); + } + + public static string StringToUnicode(string html) + { + byte[] bytes = Encoding.Unicode.GetBytes(html); + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < bytes.Length; i += 2) + { + builder.AppendFormat("\\u{0}{1}", bytes[i + 1].ToString("x").PadLeft(2, '0'), bytes[i].ToString("x").PadLeft(2, '0')); + } + return builder.ToString(); + } + + public static string FilterCookie(string url, string cookieListJson) + { + var uri = new Uri(url); + var domainList = new List(); + string domain = uri.Host; + int index = 0; + while (true) + { + domainList.Add(domain); + index = domain.IndexOf('.', 0); + if (index > 0) + { + domain = domain.Substring(index + 1); + } + else + { + break; + } + if (domain == "com" || domain == "cn" || domain == "com.cn") + { + break; + } + } + string cookie = string.Empty; + JArray jArr = JArray.Parse(cookieListJson); + foreach (var item in jArr) + { + string name = item["Name"].ParseToString(); + string value = item["Value"].ParseToString(); + domain = item["Domain"].ParseToString(); + if (!domainList.Contains(domain.Trim('.'))) + { + continue; + } + cookie += $"{name}={value};"; + } + return cookie; + } + + public static string ParseCookieJsonToString(string cookieListJson) + { + string cookie = string.Empty; + JArray jArr = JArray.Parse(cookieListJson); + foreach (var item in jArr) + { + string name = item["Name"].ParseToString(); + string value = item["Value"].ParseToString(); + cookie += $"{name}={value};"; + } + return cookie; + } + + public static Dictionary ParseCookieJsonToDictionary(string cookieListJson) + { + Dictionary dict = new Dictionary(); + JArray jArr = JArray.Parse(cookieListJson); + foreach (var item in jArr) + { + string name = item["Name"].ParseToString(); + string value = item["Value"].ParseToString(); + if (!dict.ContainsKey(name)) + { + dict.Add(name, value); + } + } + return dict; + } + + public static Dictionary ParseCookieStringToDictionary(string cookie) + { + Dictionary dict = new Dictionary(); + var cookieArr = cookie.SplitToArray(";"); + foreach (string line in cookieArr) + { + int index = line.IndexOf('='); + if (index > 0) + { + string key = line.Substring(0, index).Trim(); + string value = line.Substring(index + 1); + if (!dict.ContainsKey(key)) + { + dict.Add(key, value); + } + } + } + return dict; + } + + public static void AddHeader(HttpParam httpParam, string key, string value) + { + if (httpParam.Header == null) + { + httpParam.Header = new Dictionary(); + } + httpParam.Header.Remove(key); + httpParam.Header.Add(key, value); + } + + public static string AddHttps(string url) + { + if (url.StartsWith("//")) + { + url = "https:" + url; + } + return url; + } + + #region 是否是网址 + public static bool IsUrl(string url) + { + url = url.ParseToString().ToLower(); + if (url.StartsWith("http://") || url.StartsWith("https://")) + { + return true; + } + else + { + return false; + } + } + #endregion + + /// + /// 支持解析的url + /// https://shopee.co.th/--i.141607853.2809189585 or a=1&b=2 + /// + /// + /// + public static Dictionary ResolveUrlParamToDictionary(string url) + { + if (string.IsNullOrEmpty(url)) + { + return new Dictionary(); + } + Dictionary dict = new Dictionary(); + string partOne = string.Empty; + string partTwo = string.Empty; + + int questionMark = url.IndexOf('?'); + if (questionMark > 0) + { + partOne = url.Substring(0, questionMark); + partTwo = url.Substring(questionMark + 1); + } + else + { + int slashMark = url.IndexOf('/'); + int firstEqualSign = url.IndexOf('='); + if (firstEqualSign == -1) + { + partOne = url; + } + else + { + if (firstEqualSign > slashMark) + { + partTwo = url; + } + else + { + if (slashMark > 0) + { + partOne = url.Substring(0, slashMark); + partTwo = url.Substring(slashMark + 1); + } + else + { + partOne = url; + } + } + } + } + dict.Add("[url]", partOne); + if (!string.IsNullOrEmpty(partTwo)) + { + string[] queryParams = partTwo.Split('&').OrderBy(p => p).ToArray(); + foreach (string query in queryParams) + { + if (query.Contains("=")) + { + string[] single = query.Split('='); + if (!dict.Keys.Contains(single[0])) + { + dict.Add(single[0], HttpHelper.UrlDecode(single[1])); + } + } + else + { + dict.Add(query, string.Empty); + } + } + } + return dict; + } + + public static bool CheckNetworkAvailable() + { + return System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable(); + } + + #region Get请求 + public static string Get(HttpParam httpParam, bool throwException = false) + { + try + { + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(httpParam.Url); + request.Method = "GET"; + SetHttpWebRequest(request, httpParam); + return ReadResponse(httpParam, (HttpWebResponse)request.GetResponse()); + } + catch (Exception ex) + { + return GetHttpContentWhenException(httpParam, ex, throwException); + } + } + + public static async Task GetAsync(HttpParam httpParam, bool throwException = false) + { + try + { + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(httpParam.Url); + request.Method = "GET"; + SetHttpWebRequest(request, httpParam); + return await ReadResponseAsync(httpParam, (HttpWebResponse)request.GetResponse()); + } + catch (Exception ex) + { + return GetHttpContentWhenException(httpParam, ex, throwException); + } + } + + public static byte[] GetByte(HttpParam httpParam, bool throwException = false) + { + if (string.IsNullOrEmpty(httpParam.Url)) + { + return default(byte[]); + } + try + { + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(httpParam.Url); + request.Method = "GET"; + SetHttpWebRequest(request, httpParam); + return ReadResponseByte(request); + } + catch (Exception ex) + { + GetHttpContentWhenException(httpParam, ex, throwException); + } + return default(byte[]); + } + + public static async Task GetByteAsync(HttpParam httpParam, bool throwException = false) + { + if (string.IsNullOrEmpty(httpParam.Url)) + { + return default(byte[]); + } + try + { + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(httpParam.Url); + request.Method = "GET"; + SetHttpWebRequest(request, httpParam); + return await ReadResponseByteAsync(request); + } + catch (Exception ex) + { + GetHttpContentWhenException(httpParam, ex, throwException); + } + return default(byte[]); + } + + public static HttpResult GetHttpResult(HttpParam httpParam, bool throwException = false) + { + HttpResult httpResult = new HttpResult(); + try + { + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(httpParam.Url); + request.Method = "GET"; + SetHttpWebRequest(request, httpParam); + ReadResponse(httpParam, httpResult, (HttpWebResponse)request.GetResponse()); + UpdateCookie(httpParam, httpResult); + } + catch (Exception ex) + { + GetHttpContentWhenException(httpParam, ex, throwException); + } + return httpResult; + } + + public static async Task GetHttpResultAsync(HttpParam httpParam, bool throwException = false) + { + HttpResult httpResult = new HttpResult(); + try + { + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(httpParam.Url); + request.Method = "GET"; + SetHttpWebRequest(request, httpParam); + await ReadResponseAsync(httpParam, httpResult, (HttpWebResponse)request.GetResponse()); + } + catch (Exception ex) + { + GetHttpContentWhenException(httpParam, ex, throwException); + } + return httpResult; + } + #endregion + + #region Post请求 + public static string Post(HttpParam httpParam, bool throwException = false) + { + try + { + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(httpParam.Url); + if (string.IsNullOrEmpty(httpParam.Method)) + { + request.Method = "POST"; + } + else + { + request.Method = httpParam.Method; + } + SetHttpWebRequest(request, httpParam); + SetPostData(request, httpParam.PostData); + return ReadResponse(httpParam, (HttpWebResponse)request.GetResponse()); + } + catch (Exception ex) + { + return GetHttpContentWhenException(httpParam, ex, throwException); + } + } + + public static async Task PostAsync(HttpParam httpParam, bool throwException = false) + { + try + { + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(httpParam.Url); + request.Method = "POST"; + SetHttpWebRequest(request, httpParam); + SetPostData(request, httpParam.PostData); + return await ReadResponseAsync(httpParam, (HttpWebResponse)request.GetResponse()); + } + catch (Exception ex) + { + return GetHttpContentWhenException(httpParam, ex, throwException); + } + } + + public static byte[] PostByte(HttpParam httpParam, bool throwException = false) + { + if (string.IsNullOrEmpty(httpParam.Url)) + { + return default(byte[]); + } + try + { + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(httpParam.Url); + request.Method = "POST"; + SetHttpWebRequest(request, httpParam); + SetPostData(request, httpParam.PostData); + return ReadResponseByte(request); + } + catch (Exception ex) + { + GetHttpContentWhenException(httpParam, ex, throwException); + } + return default(byte[]); + } + + /// + /// Post表单、文件或者二者都有 + /// + /// + /// + /// + public static string PostForm(HttpParam httpParam, List postDataList, bool throwException = false) + { + try + { + string html = string.Empty; + using (MemoryStream memoryStream = new MemoryStream()) + { + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(httpParam.Url); + request.Method = "POST"; + request.Headers.Remove("Cookie"); + if (!string.IsNullOrEmpty(httpParam.Cookie)) + { + request.Headers.Add("Cookie", httpParam.Cookie); + } + // 边界符 + var boundary = "----WebKitFormBoundary" + DateTime.Now.Ticks.ToString("x"); + // 边界符 + var beginBoundary = Encoding.ASCII.GetBytes("--" + boundary + "\r\n"); + // 最后的结束符 + var endBoundary = Encoding.ASCII.GetBytes("--" + boundary + "--\r\n"); + memoryStream.Write(beginBoundary, 0, beginBoundary.Length); + // 设置属性 + request.ContentType = "multipart/form-data; boundary=" + boundary; + for (int i = 0; i < postDataList.Count; i++) + { + PostDataParam postData = postDataList[i]; + string header = string.Empty; + byte[] headerBytes = null; + string contentType = "application/octet-stream"; + string fileName = "blob"; + if (!string.IsNullOrEmpty(postData.ContentType)) + { + contentType = postData.ContentType; + } + if (!string.IsNullOrEmpty(postData.FileName)) + { + fileName = postData.FileName; + } + switch (postData.Type) + { + case PostDataTypeEnum.String: + // 写入字符串的Key + var stringKeyHeader = "Content-Disposition: form-data; name=\"{0}\"" + "\r\n\r\n{1}\r\n"; + header = string.Format(stringKeyHeader, postData.FieldName, postData.Value); + headerBytes = Encoding.UTF8.GetBytes(header); + memoryStream.Write(headerBytes, 0, headerBytes.Length); + break; + + case PostDataTypeEnum.FileByteOrFilePath: + // 写入文件 + string filePartHeader = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n" + "Content-Type: " + contentType + "\r\n\r\n"; + header = string.Format(filePartHeader, postData.FieldName, fileName); + headerBytes = Encoding.UTF8.GetBytes(header); + memoryStream.Write(headerBytes, 0, headerBytes.Length); + if (postData.Value.GetType().IsArray) + { + headerBytes = postData.Value as byte[]; + memoryStream.Write(headerBytes, 0, headerBytes.Length); + } + else + { + byte[] buffer = File.ReadAllBytes(postData.Value.ParseToString()); + memoryStream.Write(buffer, 0, buffer.Length); + } + string end = "\r\n"; + headerBytes = Encoding.UTF8.GetBytes(end); + memoryStream.Write(headerBytes, 0, headerBytes.Length); + break; + } + if (i != postDataList.Count - 1) + { + memoryStream.Write(beginBoundary, 0, beginBoundary.Length); + } + else + { + // 写入最后的结束边界符 + memoryStream.Write(endBoundary, 0, endBoundary.Length); + } + } + request.ContentLength = memoryStream.Length; + using (Stream requestStream = request.GetRequestStream()) + { + memoryStream.Position = 0; + byte[] tempBuffer = new byte[memoryStream.Length]; + memoryStream.Read(tempBuffer, 0, tempBuffer.Length); + requestStream.Write(tempBuffer, 0, tempBuffer.Length); + + using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) + { + using (Stream responseStream = response.GetResponseStream()) + { + byte[] buffer = new byte[1024]; + int read; + while ((read = responseStream.Read(buffer, 0, buffer.Length)) > 0) + { + html += Encoding.UTF8.GetString(buffer, 0, read); + } + } + response.Close(); + } + } + } + return html; + } + catch (Exception ex) + { + return GetHttpContentWhenException(httpParam, ex, throwException); + } + } + #endregion + + #region 下载文件 + + #endregion + + public static void SetHttpWebRequest(HttpWebRequest request, HttpParam param) + { + if (param.Proxy != null) + { + request.Proxy = param.Proxy; + } + else + { + //request.Proxy = NaiBaGlobalConfig.GetDevelopProxy(param.Url); + } + if (!string.IsNullOrEmpty(param.UserAgent)) + { + request.UserAgent = param.UserAgent; + } + else + { + request.UserAgent = GlobalConfig.UserAgent; + } + if (!string.IsNullOrEmpty(param.Accept)) + { + request.Accept = param.Accept; + } + else + { + request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; + } + if (string.IsNullOrEmpty(param.AcceptLanguage)) + { + request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8"); + } + else + { + request.Headers.Add("Accept-Language", param.AcceptLanguage); + } + if (request.Method.ToUpper() != "GET") + { + if (!string.IsNullOrEmpty(param.ContentType)) + { + request.ContentType = param.ContentType; + } + else + { + request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8"; + } + } + if (!string.IsNullOrEmpty(param.Referer)) + { + request.Referer = param.Referer; + } + request.Headers.Remove("Cookie"); + if (!string.IsNullOrEmpty(param.Cookie)) + { + request.Headers.Add("Cookie", param.Cookie); + } + if (param.Header == null) + { + param.Header = new Dictionary(); + } + if (!param.Header.Where(p => p.Key.ToLower() == "Accept-Encoding".ToLower()).Any()) + { + param.Header.Add("Accept-Encoding", "gzip, deflate"); + } + if (param.Header != null) + { + foreach (KeyValuePair header in param.Header) + { + request.Headers.Add(header.Key, header.Value); + } + } + if (param.Timeout > 0) + { + request.Timeout = param.Timeout * 1000; + } + else + { + request.Timeout = RequestTimeout; + } + } + + public static void SetPostData(HttpWebRequest request, string postData) + { + request.ServicePoint.Expect100Continue = false; + byte[] postDataByte = Encoding.UTF8.GetBytes(postData ?? string.Empty); + request.ContentLength = postDataByte.Length; + request.AllowAutoRedirect = false; + using (Stream requestStream = request.GetRequestStream()) + { + requestStream.Write(postDataByte, 0, postDataByte.Length); + } + } + + private static Encoding GetResponseEncoding(HttpParam httpParam, HttpWebResponse response) + { + if (!string.IsNullOrEmpty(response.CharacterSet)) + { + Encoding encoding = Encoding.GetEncoding(response.CharacterSet); + return encoding; + } + else + { + return httpParam.ResponseEncoding; + } + } + + public static string ReadResponse(HttpParam httpParam, HttpWebResponse response) + { + using (Stream stream = DecompressStream(response)) + { + using (StreamReader streamReader = new StreamReader(stream, GetResponseEncoding(httpParam, response))) + { + return streamReader.ReadToEnd(); + } + } + } + + public static void ReadResponse(HttpParam httpParam, HttpResult httpResult, HttpWebResponse response) + { + httpResult.CookieCollection = GetCookieFromResponse(string.Empty, response); + using (Stream stream = DecompressStream(response)) + { + using (StreamReader streamReader = new StreamReader(stream, GetResponseEncoding(httpParam, response))) + { + httpResult.Html = streamReader.ReadToEnd(); + } + } + } + + public static async Task ReadResponseAsync(HttpParam httpParam, HttpWebResponse response) + { + using (Stream stream = DecompressStream(response)) + { + using (StreamReader streamReader = new StreamReader(stream, GetResponseEncoding(httpParam, response))) + { + return await streamReader.ReadToEndAsync(); + } + } + } + + public static async Task ReadResponseAsync(HttpParam httpParam, HttpResult httpResult, HttpWebResponse response) + { + httpResult.CookieCollection = GetCookieFromResponse(string.Empty, response); + using (Stream stream = DecompressStream(response)) + { + using (StreamReader streamReader = new StreamReader(stream, GetResponseEncoding(httpParam, response))) + { + httpResult.Html = await streamReader.ReadToEndAsync(); + } + } + } + + public static Stream DecompressStream(HttpWebResponse response) + { + Stream responseStream = response.GetResponseStream(); + Stream stream = null; + if (response.ContentEncoding.ToLower().Contains("gzip")) + { + stream = new GZipStream(responseStream, CompressionMode.Decompress); + } + else if (response.ContentEncoding.ToLower().Contains("deflate")) + { + stream = new DeflateStream(responseStream, CompressionMode.Decompress); + } + if (stream == null) + { + return responseStream; + } + else + { + return stream; + } + } + + public static byte[] ReadResponseByte(HttpWebRequest request) + { + using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) + { + using (BinaryReader binaryReader = new BinaryReader(response.GetResponseStream())) + { + using (MemoryStream ms = new MemoryStream()) + { + byte[] buffer = binaryReader.ReadBytes(1024); + while (buffer.Length > 0) + { + ms.Write(buffer, 0, buffer.Length); + buffer = binaryReader.ReadBytes(1024); + } + byte[] fileByte = new byte[ms.Length]; + ms.Position = 0; + ms.Read(fileByte, 0, fileByte.Length); + return fileByte; + } + } + } + } + + public static async Task ReadResponseByteAsync(HttpWebRequest request) + { + using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync()) + { + using (BinaryReader binaryReader = new BinaryReader(response.GetResponseStream())) + { + using (MemoryStream ms = new MemoryStream()) + { + byte[] buffer = binaryReader.ReadBytes(1024); + while (buffer.Length > 0) + { + ms.Write(buffer, 0, buffer.Length); + buffer = binaryReader.ReadBytes(1024); + } + byte[] fileByte = new byte[ms.Length]; + ms.Position = 0; + ms.Read(fileByte, 0, fileByte.Length); + return fileByte; + } + } + } + } + + #region 请求异常处理 + private static string GetHttpContentWhenException(HttpParam httpParam, Exception ex, bool throwException = false) + { + TestProxyLog(httpParam, ex); + LogHelper.WriteWithTime(ex); + if (throwException) + { + throw ex; + } + else + { + WebException webException = ex as WebException; + if (webException != null && webException.Response != null) + { + return ReadResponse(httpParam, (HttpWebResponse)webException.Response); + } + } + return string.Empty; + } + + private static void TestProxyLog(HttpParam httpParam, Exception ex) + { + if (httpParam.Proxy != null) + { + Debug.WriteLine("代理ip:" + httpParam.Proxy?.Address.ParseToString() + " 请求Url:" + httpParam.Url + " 错误信息:" + ex.GetOriginalException().Message); + } + else + { + DebugHelper.WriteLine("请求Url:" + httpParam.Url + " 错误信息:" + ex.GetOriginalException().Message); + } + } + #endregion + + #region 解析Response Cookie + private static CookieCollection GetCookieFromResponse(string host, HttpWebResponse response) + { + string setCookie = string.Empty; + if (response.Headers.AllKeys.Contains("Set-Cookie")) + { + setCookie = response.Headers["Set-Cookie"]; + } + if (response.Headers.AllKeys.Contains("set-cookie")) + { + setCookie = response.Headers["set-cookie"]; + } + ArrayList al = new ArrayList(); + CookieCollection cc = new CookieCollection(); + if (!string.IsNullOrEmpty(setCookie)) + { + al = ConvertCookieToArrayList(setCookie); + cc = ConvertCookieArraysToCookieCollection(al, host); + } + return cc; + } + private static ArrayList ConvertCookieToArrayList(string setCookie) + { + setCookie = setCookie.Replace("\r", ""); + setCookie = setCookie.Replace("\n", ""); + string[] strCookTemp = setCookie.Split(','); + ArrayList al = new ArrayList(); + int i = 0; + int n = strCookTemp.Length; + while (i < n) + { + if (strCookTemp[i].IndexOf("expires=", StringComparison.OrdinalIgnoreCase) > 0) + { + al.Add(strCookTemp[i] + "," + strCookTemp[i + 1]); + i = i + 1; + } + else + { + al.Add(strCookTemp[i]); + } + i = i + 1; + } + return al; + } + private static CookieCollection ConvertCookieArraysToCookieCollection(ArrayList al, string host) + { + CookieCollection cc = new CookieCollection(); + + int alcount = al.Count; + string strEachCook; + string[] strEachCookParts; + for (int i = 0; i < alcount; i++) + { + strEachCook = al[i].ToString(); + strEachCookParts = strEachCook.Split(';'); + int intEachCookPartsCount = strEachCookParts.Length; + string strCNameAndCValue = string.Empty; + string strPNameAndPValue = string.Empty; + string strDNameAndDValue = string.Empty; + string[] NameValuePairTemp; + Cookie cookTemp = new Cookie(); + + for (int j = 0; j < intEachCookPartsCount; j++) + { + if (j == 0) + { + strCNameAndCValue = strEachCookParts[j]; + if (strCNameAndCValue != string.Empty) + { + int firstEqual = strCNameAndCValue.IndexOf("="); + string firstName = strCNameAndCValue.Substring(0, firstEqual); + string allValue = strCNameAndCValue.Substring(firstEqual + 1, strCNameAndCValue.Length - (firstEqual + 1)); + cookTemp.Name = firstName; + cookTemp.Value = allValue; + } + continue; + } + if (strEachCookParts[j].IndexOf("path", StringComparison.OrdinalIgnoreCase) >= 0) + { + strPNameAndPValue = strEachCookParts[j]; + if (strPNameAndPValue != string.Empty) + { + NameValuePairTemp = strPNameAndPValue.Split('='); + if (NameValuePairTemp[1] != string.Empty) + { + cookTemp.Path = NameValuePairTemp[1]; + } + else + { + cookTemp.Path = "/"; + } + } + continue; + } + + if (strEachCookParts[j].IndexOf("domain", StringComparison.OrdinalIgnoreCase) >= 0) + { + strPNameAndPValue = strEachCookParts[j]; + if (strPNameAndPValue != string.Empty) + { + NameValuePairTemp = strPNameAndPValue.Split('='); + + if (NameValuePairTemp[1] != string.Empty) + { + cookTemp.Domain = NameValuePairTemp[1]; + } + else + { + cookTemp.Domain = host; + } + } + continue; + } + } + + if (cookTemp.Path == string.Empty) + { + cookTemp.Path = "/"; + } + if (cookTemp.Domain == string.Empty) + { + cookTemp.Domain = host; + } + cc.Add(cookTemp); + } + return cc; + } + private static void UpdateCookie(HttpParam httpParam, HttpResult httpResult) + { + List rawCookieList = new List(); + if (!string.IsNullOrEmpty(httpParam.Cookie)) + { + rawCookieList = httpParam.Cookie.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries).Select(p => p.Trim()).ToList(); + } + foreach (Cookie cookie in httpResult.CookieCollection) + { + string newCookie = cookie.Name + "=" + cookie.Value; + if (rawCookieList.Where(p => p.StartsWith(cookie.Name + "=")).Any()) + { + rawCookieList.RemoveAll(p => p.StartsWith(cookie.Name + "=")); + rawCookieList.Add(newCookie); + } + else + { + rawCookieList.Add(newCookie); + } + } + if (rawCookieList.Any()) + { + httpParam.Cookie = string.Join(";", rawCookieList); + } + } + #endregion + + #region 设置Https + public static void InitHttpsCertificate() + { + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; + ServicePointManager.ServerCertificateValidationCallback += ValidateRemoteCertificate; + } + + /// + /// Certificate validation callback. + /// + private static bool ValidateRemoteCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error) + { + // If the certificate is a valid, signed certificate, return true. + if (error == SslPolicyErrors.None) + { + return true; + } + Console.WriteLine("X509Certificate [{0}] Policy Error: '{1}'", cert.Subject, error.ToString()); + return false; + } + #endregion + } + + public class HttpParam + { + public HttpParam() + { + ResponseEncoding = Encoding.UTF8; + } + public string Url { get; set; } + public string Method { get; set; } + public string PostData { get; set; } + public string ContentType { get; set; } + public string Cookie { get; set; } + public string Referer { get; set; } + public string UserAgent { get; set; } + public UserAgentTypeEnum UserAgentType { get; set; } + public string AcceptLanguage { get; set; } + public string Accept { get; set; } + [JsonIgnore] + public WebProxy Proxy { get; set; } + /// + /// 秒 + /// + public int Timeout { get; set; } + public Dictionary Header { get; set; } + public int ProxySleep { get; set; } + public int TryTimes { get; set; } + public int ActualTryTimes { get; set; } + [JsonIgnore] + public CancellationTokenSource CancellationTokenSource { get; set; } + [JsonIgnore] + public Encoding ResponseEncoding { get; set; } + public HttpResultTypeEnum ResultType { get; set; } + } + + public class PostDataParam + { + public PostDataTypeEnum Type { get; set; } + /// + /// 字段名 + /// + public string FieldName { get; set; } + /// + /// 文件名 + /// + public string FileName { get; set; } + /// + /// 可以是 string 或者 byte[] + /// + public object Value { get; set; } + public string ContentType { get; set; } + } + + public class HttpResult + { + public CookieCollection CookieCollection { get; set; } + public string Html { get; set; } + public byte[] Byte { get; set; } + } + + public enum PostDataTypeEnum + { + [Description("字符串")] + String, + + [Description("文件流或者文件路径")] + FileByteOrFilePath + } + + public enum HttpResultTypeEnum + { + String, //表示只返回字符串 + Byte //表示返回字符串和字节流 + } +} diff --git a/AllBase/HelperXiaoNaimao/LogHelper.cs b/AllBase/HelperXiaoNaimao/LogHelper.cs new file mode 100644 index 0000000..fdfbb79 --- /dev/null +++ b/AllBase/HelperXiaoNaimao/LogHelper.cs @@ -0,0 +1,145 @@ +using AllBase.Extension; +using NaiBa.Util.Extension; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AllBase.Helper +{ + public class LogHelper + { + private static object lockHelper = new object(); + + #region 写文本日志 + /// + /// 写日志 异步 + /// 默认路径:根目录/Log/yyyy-MM/ + /// 默认文件:yyyy-MM-dd.log + /// + /// 日志内容 自动附加时间 + public static void Write(string logContent) + { + string logPath = DateTime.Now.ToString("yyyy-MM"); + Write(logPath, logContent); + } + + public static void WriteWithTime(string logContent) + { + string logPath = DateTime.Now.ToString("yyyy-MM"); + logContent = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + Environment.NewLine + logContent; + Write(logPath, logContent); + } + #endregion + + #region 写异常日志 + /// + /// 写异常日志 + /// + /// + public static void Write(Exception ex) + { + string logContent = string.Empty; + string logPath = DateTime.Now.ToString("yyyy-MM"); + logContent += GetExceptionMessage(ex); + Write(logPath, logContent); + } + + public static void WriteWithTime(Exception ex, string messageExtend = "") + { + string logContent = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + Environment.NewLine; + string logPath = DateTime.Now.ToString("yyyy-MM"); + logContent += GetExceptionMessage(ex, messageExtend); + Write(logPath, logContent); + } + + private static string GetExceptionMessage(Exception ex, string messageExtend = "") + { + string message = string.Empty; + if (ex != null) + { + message += ex.Message; + message += Environment.NewLine; + if (!string.IsNullOrEmpty(messageExtend)) + { + message += messageExtend; + message += Environment.NewLine; + } + Exception originalException = ex.GetOriginalException(); + if (originalException != null) + { + if (originalException.Message != ex.Message) + { + message += originalException.Message; + message += Environment.NewLine; + } + } + message += ex.StackTrace; + message += Environment.NewLine; + } + return message; + } + #endregion + + #region 写日志到指定路径 + /// + /// 写日志 异步 + /// 默认文件:yyyy-MM-dd.log + /// + /// 日志目录[默认程序根目录\Log\下添加,故使用相对路径,如:营销任务] + /// 日志内容 自动附加时间 + public static void Write(string logPath, string logContent) + { + string logFileName = DateTime.Now.ToString("yyyy-MM-dd") + ".log"; + Write(logPath, logFileName, logContent); + } + + /// + /// 写日志 异步 + /// + /// 日志目录 + /// 日志文件名 + /// 日志内容 自动附加时间 + public static void Write(string logPath, string logFileName, string logContent) + { + if (string.IsNullOrWhiteSpace(logContent)) + { + return; + } + if (string.IsNullOrWhiteSpace(logPath)) + { + logPath = Path.Combine(FileHelper.GetApplicationDir(), NaiBaGlobalConfig.Log, DateTime.Now.ToString("yyyy-MM")); + } + else + { + logPath = Path.Combine(FileHelper.GetApplicationDir(), NaiBaGlobalConfig.Log, logPath.Trim('\\')); + } + if (string.IsNullOrWhiteSpace(logFileName)) + { + logFileName = DateTime.Now.ToString("yyyy-MM-dd") + ".log"; + } + if (!Directory.Exists(logPath)) + { + Directory.CreateDirectory(logPath); + } + string fileName = Path.Combine(logPath, logFileName); + Action taskAction = () => + { + lock (lockHelper) + { + using (StreamWriter sw = File.AppendText(fileName)) + { + sw.WriteLine(logContent + Environment.NewLine); + sw.Flush(); + sw.Close(); + } + } + }; + Task task = new Task(taskAction); + task.Start(); + } + #endregion + } +} diff --git a/AllBase/HelperXiaoNaimao/NaiBaGlobalConfig.cs b/AllBase/HelperXiaoNaimao/NaiBaGlobalConfig.cs new file mode 100644 index 0000000..84545b5 --- /dev/null +++ b/AllBase/HelperXiaoNaimao/NaiBaGlobalConfig.cs @@ -0,0 +1,89 @@ +using NaiBa.Util.Extension; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading.Tasks; + +namespace AllBase.Helper +{ + public class NaiBaGlobalConfig + { + public static bool IsDevelopment { get; set; } // 判断是否是开发环境 + public static bool IsNewFeature { get; set; } + public static bool IsNotNeedLogin = false; + public static DateTime DefaultDateTime = "2000-01-01 00:00:00".ParseToDateTime(); + public static string Proxy = "127.0.0.1:8888"; // 请求Fiddler代理,仅做开发测试使用 + public static string VersionUrl = "https://update.qixiaoke.com/updatex/kingdragorse.php"; + public static string UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"; + public static List NoProxyDomainList = new List(); // 不走系统代理的域名 + public static string ResourcesFileRelativeDir = @"Resources\file\"; + public static string ResourcesFileAbsolutePath = Path.Combine(FileHelper.GetApplicationDir(), ResourcesFileRelativeDir); + + public const string Data = "data"; // data 文件目录 + public const string Config = "config"; // config 文件目录 + public const string Image = "image"; // image 文件目录 + public const string Log = "log"; + public const string Cache = "cache"; // cache 文件目录 + public const int MillisecondsClose = 3000; // 默认3秒钟自动关闭信息弹出框 + public const string DefaultDateFormat = "yyyy-MM-dd"; + public const string DefaultTimeFormat = "HH:mm:ss"; + public const string DefaultDateTimeFormat = "yyyy-MM-dd HH:mm:ss"; + public const string NoYearDateTimeFormat = "MM-dd HH:mm:ss"; + public const string HtmlBR = "
"; + + public const string ConfirmDeleteText = "确认删除[{0}]条数据吗?"; + public const string ConfirmClearText = "确认清空吗?"; + public const string NoSelectDataText = "您还未选择任何数据"; + public const string NoDataText = "没有需要处理的数据"; + public const string ProcessingText = "正在{0}..."; + + public const string ChinaCountryCode = "cn"; + + public const char NumberSignSplitChar = '#'; + public const char SplitChar = '♯'; + public const char Tab = '\t'; + + public static List UserAgentList { get; set; } // https://developers.whatismybrowser.com/useragents/explore/software_name/chrome/ $(".useragent").each(function(){console.log($(this).text()+'\r\n')}); + + #region 全局委托 + public static Func EvaluateScript; // 执行 JavaScript + #endregion + + + #region 开发代理 + public static IWebProxy GetDevelopProxy(string url = "") + { + // 请求Fiddler代理,仅做开发测试使用 + if (IsDevelopment && !string.IsNullOrEmpty(Proxy) && Process.GetProcessesByName("FF").Length > 0) + { + var proxyArr = Proxy.Split(':'); + return new WebProxy(proxyArr[0], proxyArr[1].ParseToInt()); + } + else + { + if (!string.IsNullOrEmpty(url)) + { + string host = new Uri(url).Host; + if (NoProxyDomainList.Contains(host)) + { + return null; + } + } + return WebRequest.DefaultWebProxy; + } + } + #endregion + + #region 计算软件版本 + public static string GetVersionString(int major, int minor) + { + string versionNo = major + "." + minor.ToString().PadLeft(2, '0'); + return versionNo; + } + #endregion + } +} diff --git a/AllBase/Model/Param/ToolsManage/ADSLAccountParam.cs b/AllBase/Model/Param/ToolsManage/ADSLAccountParam.cs new file mode 100644 index 0000000..f89780f --- /dev/null +++ b/AllBase/Model/Param/ToolsManage/ADSLAccountParam.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AllBase.Model.Param.ToolsManage +{ + public class ADSLAccountParam + { + public bool IsUseAdsl { get; set; } + public string Account { get; set; } + public string Password { get; set; } + } +} diff --git a/AllBase/Model/Param/ToolsManage/ProductMappingExportInfo.cs b/AllBase/Model/Param/ToolsManage/ProductMappingExportInfo.cs new file mode 100644 index 0000000..b14c14a --- /dev/null +++ b/AllBase/Model/Param/ToolsManage/ProductMappingExportInfo.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AllBase.Model.Param.ToolsManage +{ + public class ProductMappingExportInfo : ProductMappingImportParam + { + /// + /// 虚拟上家来源,淘宝,京东,苏宁 + /// + public string FakeMappingFrom { get; set; } + + /// + /// 找到的真实的虚假上家商品ID + /// + public string FakeMappingProductId { get; set; } + + /// + /// 商品真实上家数据Json + /// + public string ProductDataJson { get; set; } + + /// + /// 虚拟上家产品价格 + /// + public int FakeMappingProductPrice { get; set; } + + public string FakeMappingProductMaxPrice { get; set; } + + public string FakeMappingProductMinPrice { get; set; } + + /// + /// 苏宁上家时的商家ID(搜索价格用) + /// + public string FakeMappingVendorId { get; set; } + + /// + /// 运费 + /// + public string PostFee { get; set; } + + public string MappingQuery {get;set;} + } +} diff --git a/AllBase/Model/Param/ToolsManage/ProductMappingImportParam.cs b/AllBase/Model/Param/ToolsManage/ProductMappingImportParam.cs new file mode 100644 index 0000000..da5bc6b --- /dev/null +++ b/AllBase/Model/Param/ToolsManage/ProductMappingImportParam.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AllBase.Model.Param.ToolsManage +{ + public class ProductMappingImportParam + { + /// + /// 商品来源,目前支持淘宝,拼多多(搜款网),阿里巴巴 + /// + public string From { get; set; } + + /// + /// 商品ID + /// + public string ProductId { get; set; } + + /// + /// 记录当商品来源为搜款网(实际为拼多多)时对应的真实Id + /// + public string RealProductId { get; set; } + + /// + /// 商品标题 + /// + public string ProductTitle { get; set; } + + /// + /// 上家类目 + /// + public string CatId { get; set; } + + /// + /// 类目4 + /// + public string CatId4 { get; set; } + /// + /// 类目3 + /// + public string CatId3 { get; set; } + /// + /// 类目2 + /// + public string CatId2 { get; set; } + /// + /// 类目1 + /// + public string CatId1 { get; set; } + + /// + /// 商品主类目 + /// + public string MainCid { get; set; } + + /// + /// 用来搜索同款的图片网址 + /// + public string Image { get; set; } + + /// + /// 映射关系建立的结果 + /// + public string MappingResult { get; set; } + + /// + /// 微店分成推广金设置结果 + /// + public string CPSResult { get; set; } + + /// + /// 最低价格 + /// + public int MinPrice { get; set; } + + /// + /// 最高价格 + /// + public int MaxPrice { get; set; } + /// + /// 数据来源0 是其他 1是净化数据 + /// + public int dataSoure { get; set; } + + /// + /// 转换成功来源 未知,Api,模拟,缓存等 统计用 + /// + public string MappingResourceType { get; set; } + } +} diff --git a/AllBase/Model/Result/PDDResult/ApiPddGoodsCatRuleInfo.cs b/AllBase/Model/Result/PDDResult/ApiPddGoodsCatRuleInfo.cs new file mode 100644 index 0000000..cbd29bf --- /dev/null +++ b/AllBase/Model/Result/PDDResult/ApiPddGoodsCatRuleInfo.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AllBase.Model.Result.PDDResult +{ + public class ApiPddGoodsCatRuleInfo + { + public int? input_max_spec_num { get; set; } // 0, + public List properties { get; set; } + public bool? choose_all_qualify_spec { get; set; } // false + } + + public class ApiPddProperty + { + public bool? is_sale { get; set; } // false, + public bool? is_important { get; set; } // true, + public bool? is_sku { get; set; } // false, + public List values { get; set; } // Array[11], + public int? value_precision { get; set; } // 0, + public int? input_max_num { get; set; } // 0, + public bool? required { get; set; } // false, + public object required_rule { get; set; } + public int? required_rule_type { get; set; } // 0, + public int? choose_max_num { get; set; } // 1, + public string min_value { get; set; } // "", + public bool? can_note { get; set; } // false, + public long? ref_pid { get; set; } // 1366, + public string name { get; set; } // "穿耳材质", + public List value_unit { get; set; } // [ "" ], + public string max_value { get; set; } // "", + public int? property_value_type { get; set; } // 0 + + } + + public class ApiPddPropertyValue + { + public long? vid { get; set; } // 10629, // 12854, + public string value { get; set; } // "其它", // "塑料", + + } +} diff --git a/AllBase/Model/Result/ShopLoginInfo.cs b/AllBase/Model/Result/ShopLoginInfo.cs index 6f7946b..9b0bf5b 100644 --- a/AllBase/Model/Result/ShopLoginInfo.cs +++ b/AllBase/Model/Result/ShopLoginInfo.cs @@ -99,9 +99,10 @@ namespace AllBase.Model.Result public string GroupName { get; set; } public DateTime AddTime { get; set; } public string LastRefreshDate { get; set; } - public string AccessToken { get { return CurrentAuthInfo?.AccessToken; } } - public string RefreshToken { get { return CurrentAuthInfo?.RefreshToken; } } - public string AppKey { get { return CurrentAuthInfo?.AppKey; } } + public string AccessToken { get { return (CurrentAuthInfo?.AccessToken).ParseToString(); } } + public string RefreshToken { get { return (CurrentAuthInfo?.RefreshToken).ParseToString(); } } + public string AppKey { get { return (CurrentAuthInfo?.AppKey).ParseToString(); } } + public string AppSecret { get { return (CurrentAuthInfo?.AppSecret).ParseToString(); } } public DateTime AuthAddTime { get { return CurrentAuthInfo?.AddTime == null ? new DateTime() : CurrentAuthInfo.AddTime; } } public DateTime AuthExpiresTime { get { return CurrentAuthInfo?.ExpiresTime == null ? new DateTime() : CurrentAuthInfo.ExpiresTime; } } /// @@ -206,6 +207,7 @@ namespace AllBase.Model.Result public string AccessToken { get; set; } = ""; public string RefreshToken { get; set; } = ""; public string AppKey { get; set; } = ""; + public string AppSecret { get; set; } = ""; public DateTime ExpiresTime { get; set; } public DateTime AddTime { get; set; } = DateTime.MinValue; public string ApiAuthStatus { get; set; } = "未授权"; diff --git a/KJDService/KJD_WebService/BLL/BXX/BXXProductManage.cs b/KJDService/KJD_WebService/BLL/BXX/BXXProductManage.cs index 4f084a8..1e316a8 100644 --- a/KJDService/KJD_WebService/BLL/BXX/BXXProductManage.cs +++ b/KJDService/KJD_WebService/BLL/BXX/BXXProductManage.cs @@ -1323,8 +1323,8 @@ namespace KJD_Web.BLL.BXX sql += where; int count = prod_count; - if (product_get_type == "厂商直采" && count > 1500) - count /= 3; + if (product_get_type == "厂商直采" && count > 1250) + count = (count / 2.5).ParseToInt(); if (!is_not_count) { count = mySql.ExecuteRowCount(sql); @@ -1416,7 +1416,7 @@ namespace KJD_Web.BLL.BXX var data = JsonUtils.SerializeObjectToString(productLst, jsonSetting); var seconds = (DateTime.Now - timeCalc).TotalSeconds.ToString("0.000"); if (product_get_type == "厂商直采" && count > 500) - count *= 3; + count = (count * 2.5).ParseToInt(); return "{\"code\":200,\"msg\":\"success\",\"data\":" + data + ",\"count\":" + count + ",\"seconds\":" + seconds + "}"; } catch (Exception ex) diff --git a/TEMUKJD/BLL/Pdd/PddApi.cs b/TEMUKJD/BLL/Pdd/PddApi.cs index 6c07cfb..2be9b01 100644 --- a/TEMUKJD/BLL/Pdd/PddApi.cs +++ b/TEMUKJD/BLL/Pdd/PddApi.cs @@ -19,6 +19,11 @@ namespace TemuKJD.BLL.PddApi public PddApi(ShopLoginInfo shop) { + if (shop.CurrentAuthInfo == null) + { + PddApiHelper.RefreshApi(shop); + } + Data["access_token"] = shop.AccessToken; } diff --git a/TEMUKJD/BLL/Pdd/PddApiHelper.cs b/TEMUKJD/BLL/Pdd/PddApiHelper.cs index 11f0159..c99067b 100644 --- a/TEMUKJD/BLL/Pdd/PddApiHelper.cs +++ b/TEMUKJD/BLL/Pdd/PddApiHelper.cs @@ -1,4 +1,5 @@ using AllBase; +using AllBase.Helper; using AllBase.Model.Result; using NaiBa.Util.Extension; using System; @@ -12,6 +13,25 @@ namespace TemuKJD.BLL.PddApi { public class PddApiHelper { + public static void RefreshApi(ShopLoginInfo shop, bool isForceRefresh = false) + { + if (isForceRefresh || shop.AuthAddTime <= DateTime.Now.AddDays(-1)) + { + shop.ApiAuthInfoList.Clear(); + + var authInfo = PddApiHelper.GetShopPddToken(shop); + shop.ApiAuthInfoList.Add(authInfo); + } + } + + public static void RefreshApi(List shops, bool isForceRefresh = false) + { + foreach (var shop in shops) + { + RefreshApi(shop, isForceRefresh); + } + } + public static AuthInfo GetShopPddToken(ShopLoginInfo shop) { var url = BaseClass.BuildObjString("shop/e57_get_pdd_shop_token"); @@ -26,13 +46,31 @@ namespace TemuKJD.BLL.PddApi var token = new AuthInfo() { ShopId = shop.ShopId, - AppKey = BaseClass.GetFileMd5(BaseRegex.GetStringJson(ref html, "appKey").ParseToString()), + AddTime = DateTime.Now, + AppKey = BaseRegex.GetStringJson(ref html, "appKey").ParseToString(), AccessToken = BaseRegex.GetStringJson(ref html, "accessToken"), ExpiresTime = BaseClass.StampToDateTime(BaseRegex.GetIntJson(ref html, "tokenExpiresTime")), + ApiAuthStatus = "授权成功", }; return token; } - return new AuthInfo() { ShopId = shop.ShopId, AccessToken = "", ExpiresTime = DateTime.Now }; + return new AuthInfo() { ShopId = shop.ShopId, AddTime = DateTime.Now, ExpiresTime = DateTime.Now }; + } + + public static void PddGetLocalTokens() + { + if (BaseClass.MainPath == "binxixi") + { + List> lsts = NaiBa.Util.Helper.ConfigHelper.LoadConfig>>("pdd_shop_api_auth_info_lists"); + if (lsts == null) + lsts = new List>(); + foreach (var shop in GlobalConfig.ShopLoginList) + { + shop.ApiAuthInfoList = lsts.FirstOrDefault(l => l.FirstOrDefault()?.ShopId == shop.ShopId); + if (shop.ApiAuthInfoList == null) + shop.ApiAuthInfoList = new List(); + } + } } } } diff --git a/TEMUKJD/KJDForms/ShopForms/ShopListForm.cs b/TEMUKJD/KJDForms/ShopForms/ShopListForm.cs index a3c8569..04f40c7 100644 --- a/TEMUKJD/KJDForms/ShopForms/ShopListForm.cs +++ b/TEMUKJD/KJDForms/ShopForms/ShopListForm.cs @@ -125,7 +125,7 @@ namespace TemuKJD.KJDForms.ShopForms return list; } - public static void UpdateShopTokens(List shops) + public static void UpdateDyShopTokens(List shops) { string shopIds = ""; foreach (var shop in shops) @@ -1233,7 +1233,7 @@ namespace TemuKJD.KJDForms.ShopForms return; } - UpdateShopTokens(GlobalConfig.ShopLoginList.Where(s => shopNameList.Contains(s.ShopAccount)).ToList()); + UpdateDyShopTokens(GlobalConfig.ShopLoginList.Where(s => shopNameList.Contains(s.ShopAccount)).ToList()); Task.Run(() => { CheckShopListLogin(shopNameList.ToArray()); diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.Designer.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.Designer.cs index 3151fe9..e3534f3 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.Designer.cs +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.Designer.cs @@ -30,14 +30,17 @@ namespace TemuKJD.PDDForms.ProductSelectForms private void InitializeComponent() { this.components = new System.ComponentModel.Container(); - 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 dataGridViewCellStyle17 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle18 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle22 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle23 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle24 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle25 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle26 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle27 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle28 = new System.Windows.Forms.DataGridViewCellStyle(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.ucGroupBoxEx2 = new TemuKJD.UserComponent.UcGroupBoxEx(this.components); + this.txtAddShippingFeeTimes = new System.Windows.Forms.TextBox(); + this.label12 = new System.Windows.Forms.Label(); this.btnApiUpload = new DevComponents.DotNetBar.PanelEx(); this.btnUpload = new DevComponents.DotNetBar.PanelEx(); this.label7 = new System.Windows.Forms.Label(); @@ -69,14 +72,12 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.chkAddMorePriceFirst = new TemuKJD.UserComponent.UcCheckBox(this.components); this.btnClearDgv = new DevComponents.DotNetBar.PanelEx(); this.label14 = new System.Windows.Forms.Label(); - this.label15 = new System.Windows.Forms.Label(); this.txtSinglePriceAdd = new System.Windows.Forms.TextBox(); this.panel4 = new System.Windows.Forms.Panel(); this.panel3 = new System.Windows.Forms.Panel(); this.fPnlPriceRule = new System.Windows.Forms.FlowLayoutPanel(); this.ucAddPrice1 = new TemuKJD.PDDForms.ProductSelectForms.UcAddPrice(); this.ucAddPrice3 = new TemuKJD.PDDForms.ProductSelectForms.UcAddPrice(); - this.label11 = new System.Windows.Forms.Label(); this.lblNewAddPrice = new System.Windows.Forms.Label(); this.txtAddMorePrice = new System.Windows.Forms.TextBox(); this.txtAddTimes = new System.Windows.Forms.TextBox(); @@ -88,7 +89,10 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.chkChance = new TemuKJD.UserComponent.UcCheckBox(this.components); this.chkLowPriceSku = new TemuKJD.UserComponent.UcCheckBox(this.components); this.lblLowPriceSkuImg = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); this.ucGroupBoxEx4 = new TemuKJD.UserComponent.UcGroupBoxEx(this.components); + this.btnProdDb = new DevComponents.DotNetBar.PanelEx(); this.chkSkipQualification = new TemuKJD.UserComponent.UcCheckBox(this.components); this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.cmbSourceType = new System.Windows.Forms.ComboBox(); @@ -108,9 +112,11 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.lblGoodsCount = new System.Windows.Forms.Label(); this.label16 = new System.Windows.Forms.Label(); this.ucGroupBoxEx1 = new TemuKJD.UserComponent.UcGroupBoxEx(this.components); + this.btnRefreshApi = new DevComponents.DotNetBar.PanelEx(); this.btnRefreshShop = new DevComponents.DotNetBar.PanelEx(); this.splitContainer3 = new System.Windows.Forms.SplitContainer(); this.splitContainer2 = new System.Windows.Forms.SplitContainer(); + this.pbShopLoading = new System.Windows.Forms.PictureBox(); this.dgvShop = new TemuKJD.UserComponent.DataGridViewEx(); this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn(); this.colShopLoginName = new System.Windows.Forms.DataGridViewTextBoxColumn(); @@ -119,6 +125,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.colShopNotes = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.colSelectProduct = new System.Windows.Forms.DataGridViewLinkColumn(); this.colLoginStatus = new System.Windows.Forms.DataGridViewLinkColumn(); + this.colApiStatus = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.colCanUse = new System.Windows.Forms.DataGridViewCheckBoxColumn(); this.colRemaining = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn(); @@ -174,6 +181,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.splitContainer2.Panel1.SuspendLayout(); this.splitContainer2.Panel2.SuspendLayout(); this.splitContainer2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pbShopLoading)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dgvShop)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pbLoading)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dgvSelectProduct)).BeginInit(); @@ -210,6 +218,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms | System.Windows.Forms.AnchorStyles.Right))); this.ucGroupBoxEx2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); this.ucGroupBoxEx2.BorderStyle = TemuKJD.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND; + this.ucGroupBoxEx2.Controls.Add(this.txtAddShippingFeeTimes); + this.ucGroupBoxEx2.Controls.Add(this.label12); this.ucGroupBoxEx2.Controls.Add(this.btnApiUpload); this.ucGroupBoxEx2.Controls.Add(this.btnUpload); this.ucGroupBoxEx2.Controls.Add(this.label7); @@ -241,10 +251,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.ucGroupBoxEx2.Controls.Add(this.chkAddMorePriceFirst); this.ucGroupBoxEx2.Controls.Add(this.btnClearDgv); this.ucGroupBoxEx2.Controls.Add(this.label14); - this.ucGroupBoxEx2.Controls.Add(this.label15); this.ucGroupBoxEx2.Controls.Add(this.txtSinglePriceAdd); this.ucGroupBoxEx2.Controls.Add(this.panel4); - this.ucGroupBoxEx2.Controls.Add(this.label11); this.ucGroupBoxEx2.Controls.Add(this.lblNewAddPrice); this.ucGroupBoxEx2.Controls.Add(this.txtAddMorePrice); this.ucGroupBoxEx2.Controls.Add(this.txtAddTimes); @@ -256,6 +264,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.ucGroupBoxEx2.Controls.Add(this.chkChance); this.ucGroupBoxEx2.Controls.Add(this.chkLowPriceSku); this.ucGroupBoxEx2.Controls.Add(this.lblLowPriceSkuImg); + this.ucGroupBoxEx2.Controls.Add(this.label15); + this.ucGroupBoxEx2.Controls.Add(this.label11); this.ucGroupBoxEx2.Location = new System.Drawing.Point(459, 2); this.ucGroupBoxEx2.Name = "ucGroupBoxEx2"; this.ucGroupBoxEx2.Size = new System.Drawing.Size(1062, 140); @@ -263,6 +273,28 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.ucGroupBoxEx2.TabStop = false; this.ucGroupBoxEx2.Text = "商品上传"; // + // txtAddShippingFeeTimes + // + this.txtAddShippingFeeTimes.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.txtAddShippingFeeTimes.Location = new System.Drawing.Point(421, 110); + this.txtAddShippingFeeTimes.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); + this.txtAddShippingFeeTimes.Name = "txtAddShippingFeeTimes"; + this.txtAddShippingFeeTimes.Size = new System.Drawing.Size(31, 23); + this.txtAddShippingFeeTimes.TabIndex = 756; + this.txtAddShippingFeeTimes.Text = "1.0"; + this.txtAddShippingFeeTimes.TextChanged += new System.EventHandler(this.txtAddPrice_TextChanged); + // + // label12 + // + this.label12.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(384, 113); + this.label12.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(41, 17); + this.label12.TabIndex = 755; + this.label12.Text = "运费×"; + // // btnApiUpload // this.btnApiUpload.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); @@ -286,7 +318,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.btnApiUpload.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); this.btnApiUpload.TabIndex = 742; this.btnApiUpload.Text = "批量上传"; - this.btnApiUpload.Visible = false; this.btnApiUpload.Click += new System.EventHandler(this.btnApiUpload_Click); // // btnUpload @@ -626,11 +657,11 @@ namespace TemuKJD.PDDForms.ProductSelectForms // chkAddMorePriceFirst // this.chkAddMorePriceFirst.AutoSize = true; - this.chkAddMorePriceFirst.Location = new System.Drawing.Point(306, 111); + this.chkAddMorePriceFirst.Location = new System.Drawing.Point(291, 111); this.chkAddMorePriceFirst.Name = "chkAddMorePriceFirst"; - this.chkAddMorePriceFirst.Size = new System.Drawing.Size(111, 21); + this.chkAddMorePriceFirst.Size = new System.Drawing.Size(99, 21); this.chkAddMorePriceFirst.TabIndex = 625; - this.chkAddMorePriceFirst.Text = "加价时先加再乘"; + this.chkAddMorePriceFirst.Text = "加价先加再乘"; this.chkAddMorePriceFirst.UseVisualStyleBackColor = true; this.chkAddMorePriceFirst.CheckedChanged += new System.EventHandler(this.chkAddMorePriceFirst_CheckedChanged); // @@ -672,21 +703,10 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.label14.TabIndex = 599; this.label14.Text = "阶梯加价未\r\n勾选或条件\r\n不满足,按"; // - // label15 - // - this.label15.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.label15.AutoSize = true; - this.label15.Location = new System.Drawing.Point(283, 113); - this.label15.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); - this.label15.Name = "label15"; - this.label15.Size = new System.Drawing.Size(20, 17); - this.label15.TabIndex = 588; - this.label15.Text = "元"; - // // txtSinglePriceAdd // this.txtSinglePriceAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.txtSinglePriceAdd.Location = new System.Drawing.Point(252, 110); + this.txtSinglePriceAdd.Location = new System.Drawing.Point(241, 110); this.txtSinglePriceAdd.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); this.txtSinglePriceAdd.Name = "txtSinglePriceAdd"; this.txtSinglePriceAdd.Size = new System.Drawing.Size(31, 23); @@ -804,17 +824,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.ucAddPrice3.Size = new System.Drawing.Size(420, 23); this.ucAddPrice3.TabIndex = 13; // - // label11 - // - this.label11.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.label11.AutoSize = true; - this.label11.Location = new System.Drawing.Point(184, 113); - this.label11.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); - this.label11.Name = "label11"; - this.label11.Size = new System.Drawing.Size(68, 17); - this.label11.TabIndex = 536; - this.label11.Text = "元,单买加"; - // // lblNewAddPrice // this.lblNewAddPrice.AutoSize = true; @@ -831,7 +840,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // txtAddMorePrice // this.txtAddMorePrice.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.txtAddMorePrice.Location = new System.Drawing.Point(153, 110); + this.txtAddMorePrice.Location = new System.Drawing.Point(145, 110); this.txtAddMorePrice.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); this.txtAddMorePrice.Name = "txtAddMorePrice"; this.txtAddMorePrice.Size = new System.Drawing.Size(31, 23); @@ -842,7 +851,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // txtAddTimes // this.txtAddTimes.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.txtAddTimes.Location = new System.Drawing.Point(78, 110); + this.txtAddTimes.Location = new System.Drawing.Point(73, 110); this.txtAddTimes.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); this.txtAddTimes.Name = "txtAddTimes"; this.txtAddTimes.Size = new System.Drawing.Size(31, 23); @@ -854,7 +863,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // this.label10.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.label10.AutoSize = true; - this.label10.Location = new System.Drawing.Point(109, 113); + this.label10.Location = new System.Drawing.Point(103, 113); this.label10.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.label10.Name = "label10"; this.label10.Size = new System.Drawing.Size(44, 17); @@ -863,10 +872,10 @@ namespace TemuKJD.PDDForms.ProductSelectForms // // txtStockNum // - this.txtStockNum.Location = new System.Drawing.Point(486, 110); + this.txtStockNum.Location = new System.Drawing.Point(496, 110); this.txtStockNum.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); this.txtStockNum.Name = "txtStockNum"; - this.txtStockNum.Size = new System.Drawing.Size(32, 23); + this.txtStockNum.Size = new System.Drawing.Size(30, 23); this.txtStockNum.TabIndex = 530; this.txtStockNum.Text = "99"; this.txtStockNum.TextChanged += new System.EventHandler(this.txtAddPrice_TextChanged); @@ -874,12 +883,12 @@ namespace TemuKJD.PDDForms.ProductSelectForms // label4 // this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(430, 113); + this.label4.Location = new System.Drawing.Point(455, 113); this.label4.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(56, 17); + this.label4.Size = new System.Drawing.Size(44, 17); this.label4.TabIndex = 531; - this.label4.Text = "库存数量"; + this.label4.Text = "库存数"; // // label9 // @@ -941,12 +950,35 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.lblLowPriceSkuImg.Text = "传sku图"; this.lblLowPriceSkuImg.Click += new System.EventHandler(this.lblLowPriceSkuImg_Click); // + // label15 + // + this.label15.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label15.AutoSize = true; + this.label15.Location = new System.Drawing.Point(271, 113); + this.label15.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(20, 17); + this.label15.TabIndex = 588; + this.label15.Text = "元"; + // + // label11 + // + this.label11.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(175, 113); + this.label11.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(68, 17); + this.label11.TabIndex = 536; + this.label11.Text = "元,单买加"; + // // ucGroupBoxEx4 // this.ucGroupBoxEx4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); this.ucGroupBoxEx4.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); this.ucGroupBoxEx4.BorderStyle = TemuKJD.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND; + this.ucGroupBoxEx4.Controls.Add(this.btnProdDb); this.ucGroupBoxEx4.Controls.Add(this.chkSkipQualification); this.ucGroupBoxEx4.Controls.Add(this.pictureBox1); this.ucGroupBoxEx4.Controls.Add(this.cmbSourceType); @@ -972,6 +1004,30 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.ucGroupBoxEx4.TabStop = false; this.ucGroupBoxEx4.Text = "待传商品"; // + // btnProdDb + // + this.btnProdDb.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.btnProdDb.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnProdDb.DisabledBackColor = System.Drawing.Color.Empty; + this.btnProdDb.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnProdDb.Location = new System.Drawing.Point(264, 105); + this.btnProdDb.Name = "btnProdDb"; + this.btnProdDb.Size = new System.Drawing.Size(38, 23); + this.btnProdDb.Style.Alignment = System.Drawing.StringAlignment.Center; + this.btnProdDb.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnProdDb.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnProdDb.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.btnProdDb.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash; + this.btnProdDb.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None; + this.btnProdDb.Style.ForeColor.Color = System.Drawing.Color.White; + this.btnProdDb.Style.GradientAngle = 90; + this.btnProdDb.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center; + this.btnProdDb.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.btnProdDb.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.btnProdDb.TabIndex = 824; + this.btnProdDb.Text = "选品"; + this.btnProdDb.Click += new System.EventHandler(this.btnProdDb_Click); + // // chkSkipQualification // this.chkSkipQualification.Checked = true; @@ -1049,7 +1105,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // // txtAddCount // - this.txtAddCount.Location = new System.Drawing.Point(172, 105); + this.txtAddCount.Location = new System.Drawing.Point(158, 105); this.txtAddCount.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); this.txtAddCount.Name = "txtAddCount"; this.txtAddCount.Size = new System.Drawing.Size(35, 23); @@ -1088,9 +1144,9 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.panelEx2.Cursor = System.Windows.Forms.Cursors.Hand; this.panelEx2.DisabledBackColor = System.Drawing.Color.Empty; this.panelEx2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.panelEx2.Location = new System.Drawing.Point(209, 105); + this.panelEx2.Location = new System.Drawing.Point(196, 105); this.panelEx2.Name = "panelEx2"; - this.panelEx2.Size = new System.Drawing.Size(93, 23); + this.panelEx2.Size = new System.Drawing.Size(65, 23); this.panelEx2.Style.Alignment = System.Drawing.StringAlignment.Center; this.panelEx2.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); this.panelEx2.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); @@ -1103,7 +1159,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.panelEx2.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); this.panelEx2.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); this.panelEx2.TabIndex = 431; - this.panelEx2.Text = "随机添加商品"; + this.panelEx2.Text = "随机添加"; this.panelEx2.Click += new System.EventHandler(this.btnRandomAdd_Click); // // label2 @@ -1209,6 +1265,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms | System.Windows.Forms.AnchorStyles.Left))); this.ucGroupBoxEx1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); this.ucGroupBoxEx1.BorderStyle = TemuKJD.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND; + this.ucGroupBoxEx1.Controls.Add(this.btnRefreshApi); this.ucGroupBoxEx1.Controls.Add(this.btnRefreshShop); this.ucGroupBoxEx1.Location = new System.Drawing.Point(3, 2); this.ucGroupBoxEx1.Name = "ucGroupBoxEx1"; @@ -1217,6 +1274,31 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.ucGroupBoxEx1.TabStop = false; this.ucGroupBoxEx1.Text = "基础"; // + // btnRefreshApi + // + this.btnRefreshApi.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnRefreshApi.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.btnRefreshApi.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnRefreshApi.DisabledBackColor = System.Drawing.Color.Empty; + this.btnRefreshApi.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnRefreshApi.Location = new System.Drawing.Point(74, 21); + this.btnRefreshApi.Name = "btnRefreshApi"; + this.btnRefreshApi.Size = new System.Drawing.Size(64, 24); + this.btnRefreshApi.Style.Alignment = System.Drawing.StringAlignment.Center; + this.btnRefreshApi.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnRefreshApi.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnRefreshApi.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.btnRefreshApi.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash; + this.btnRefreshApi.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None; + this.btnRefreshApi.Style.ForeColor.Color = System.Drawing.Color.White; + this.btnRefreshApi.Style.GradientAngle = 90; + this.btnRefreshApi.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center; + this.btnRefreshApi.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.btnRefreshApi.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.btnRefreshApi.TabIndex = 438; + this.btnRefreshApi.Text = "刷新授权"; + this.btnRefreshApi.Click += new System.EventHandler(this.btnRefreshApi_Click); + // // btnRefreshShop // this.btnRefreshShop.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); @@ -1224,9 +1306,9 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.btnRefreshShop.Cursor = System.Windows.Forms.Cursors.Hand; this.btnRefreshShop.DisabledBackColor = System.Drawing.Color.Empty; this.btnRefreshShop.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.btnRefreshShop.Location = new System.Drawing.Point(17, 31); + this.btnRefreshShop.Location = new System.Drawing.Point(8, 21); this.btnRefreshShop.Name = "btnRefreshShop"; - this.btnRefreshShop.Size = new System.Drawing.Size(110, 24); + this.btnRefreshShop.Size = new System.Drawing.Size(64, 24); this.btnRefreshShop.Style.Alignment = System.Drawing.StringAlignment.Center; this.btnRefreshShop.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); this.btnRefreshShop.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); @@ -1270,6 +1352,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // // splitContainer2.Panel1 // + this.splitContainer2.Panel1.Controls.Add(this.pbShopLoading); this.splitContainer2.Panel1.Controls.Add(this.dgvShop); this.splitContainer2.Panel1.Padding = new System.Windows.Forms.Padding(4, 0, 0, 0); // @@ -1281,26 +1364,38 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.splitContainer2.Panel2.Controls.Add(this.dgvSelectProduct); this.splitContainer2.Panel2.Padding = new System.Windows.Forms.Padding(0, 0, 4, 0); this.splitContainer2.Size = new System.Drawing.Size(1523, 372); - this.splitContainer2.SplitterDistance = 300; + this.splitContainer2.SplitterDistance = 326; this.splitContainer2.TabIndex = 0; // + // pbShopLoading + // + this.pbShopLoading.Anchor = System.Windows.Forms.AnchorStyles.None; + this.pbShopLoading.Image = global::TemuKJD.Properties.Resources.loading_blue; + this.pbShopLoading.Location = new System.Drawing.Point(138, 161); + this.pbShopLoading.Name = "pbShopLoading"; + this.pbShopLoading.Size = new System.Drawing.Size(50, 50); + this.pbShopLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pbShopLoading.TabIndex = 189; + this.pbShopLoading.TabStop = false; + this.pbShopLoading.Visible = false; + // // dgvShop // this.dgvShop.AllowUserToAddRows = false; this.dgvShop.AllowUserToDeleteRows = false; - dataGridViewCellStyle13.BackColor = System.Drawing.Color.WhiteSmoke; - this.dgvShop.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle13; + dataGridViewCellStyle22.BackColor = System.Drawing.Color.WhiteSmoke; + this.dgvShop.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle22; this.dgvShop.AutoRowNumber = true; this.dgvShop.BackgroundColor = System.Drawing.Color.White; this.dgvShop.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); - 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.dgvShop.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle14; + dataGridViewCellStyle23.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle23.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle23.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle23.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle23.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle23.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle23.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dgvShop.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle23; this.dgvShop.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dgvShop.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.colSelect, @@ -1310,6 +1405,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.colShopNotes, this.colSelectProduct, this.colLoginStatus, + this.colApiStatus, this.colCanUse, this.colRemaining, this.colMessage}); @@ -1320,7 +1416,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.dgvShop.ReadOnly = true; this.dgvShop.RowHeadersWidth = 25; this.dgvShop.RowTemplate.Height = 23; - this.dgvShop.Size = new System.Drawing.Size(296, 372); + this.dgvShop.Size = new System.Drawing.Size(322, 372); this.dgvShop.TabIndex = 6; this.dgvShop.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvShop_CellContentClick); // @@ -1381,7 +1477,14 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.colLoginStatus.ReadOnly = true; this.colLoginStatus.Resizable = System.Windows.Forms.DataGridViewTriState.True; this.colLoginStatus.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; - this.colLoginStatus.Width = 40; + this.colLoginStatus.Width = 38; + // + // colApiStatus + // + this.colApiStatus.HeaderText = "授权"; + this.colApiStatus.Name = "colApiStatus"; + this.colApiStatus.ReadOnly = true; + this.colApiStatus.Width = 38; // // colCanUse // @@ -1409,7 +1512,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // txtTest20981 // this.txtTest20981.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.txtTest20981.Location = new System.Drawing.Point(996, 30); + this.txtTest20981.Location = new System.Drawing.Point(970, 30); this.txtTest20981.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); this.txtTest20981.Name = "txtTest20981"; this.txtTest20981.Size = new System.Drawing.Size(127, 23); @@ -1422,7 +1525,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.btnTest20981.CanvasColor = System.Drawing.SystemColors.Control; this.btnTest20981.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.btnTest20981.DisabledBackColor = System.Drawing.Color.Empty; - this.btnTest20981.Location = new System.Drawing.Point(1127, 30); + this.btnTest20981.Location = new System.Drawing.Point(1101, 30); this.btnTest20981.Margin = new System.Windows.Forms.Padding(4, 2, 2, 2); this.btnTest20981.Name = "btnTest20981"; this.btnTest20981.Size = new System.Drawing.Size(84, 23); @@ -1447,7 +1550,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // this.pbLoading.Anchor = System.Windows.Forms.AnchorStyles.None; this.pbLoading.Image = global::TemuKJD.Properties.Resources.loading_blue; - this.pbLoading.Location = new System.Drawing.Point(584, 161); + this.pbLoading.Location = new System.Drawing.Point(571, 161); this.pbLoading.Name = "pbLoading"; this.pbLoading.Size = new System.Drawing.Size(50, 50); this.pbLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; @@ -1459,19 +1562,19 @@ namespace TemuKJD.PDDForms.ProductSelectForms // this.dgvSelectProduct.AllowUserToAddRows = false; this.dgvSelectProduct.AllowUserToDeleteRows = false; - dataGridViewCellStyle15.BackColor = System.Drawing.Color.WhiteSmoke; - this.dgvSelectProduct.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle15; + dataGridViewCellStyle24.BackColor = System.Drawing.Color.WhiteSmoke; + this.dgvSelectProduct.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle24; this.dgvSelectProduct.AutoRowNumber = true; this.dgvSelectProduct.BackgroundColor = System.Drawing.Color.White; this.dgvSelectProduct.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); - dataGridViewCellStyle16.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle16.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle16.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle16.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle16.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle16.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle16.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.dgvSelectProduct.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle16; + dataGridViewCellStyle25.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle25.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle25.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle25.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle25.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle25.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle25.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dgvSelectProduct.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle25; this.dgvSelectProduct.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dgvSelectProduct.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.colCheck, @@ -1502,7 +1605,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.dgvSelectProduct.Name = "dgvSelectProduct"; this.dgvSelectProduct.ReadOnly = true; this.dgvSelectProduct.RowTemplate.Height = 23; - this.dgvSelectProduct.Size = new System.Drawing.Size(1215, 372); + this.dgvSelectProduct.Size = new System.Drawing.Size(1189, 372); this.dgvSelectProduct.TabIndex = 187; this.dgvSelectProduct.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvSelectProduct_CellContentClick); this.dgvSelectProduct.Scroll += new System.Windows.Forms.ScrollEventHandler(this.dgvSelectProduct_Scroll); @@ -1533,8 +1636,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms // // colSupplierName // - dataGridViewCellStyle17.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.colSupplierName.DefaultCellStyle = dataGridViewCellStyle17; + dataGridViewCellStyle26.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.colSupplierName.DefaultCellStyle = dataGridViewCellStyle26; this.colSupplierName.Frozen = true; this.colSupplierName.HeaderText = "店铺名称"; this.colSupplierName.Name = "colSupplierName"; @@ -1612,12 +1715,12 @@ namespace TemuKJD.PDDForms.ProductSelectForms // // colProductName // - dataGridViewCellStyle18.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.colProductName.DefaultCellStyle = dataGridViewCellStyle18; + dataGridViewCellStyle27.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.colProductName.DefaultCellStyle = dataGridViewCellStyle27; this.colProductName.HeaderText = "商品标题"; this.colProductName.Name = "colProductName"; this.colProductName.ReadOnly = true; - this.colProductName.Width = 150; + this.colProductName.Width = 140; // // colProductCat // @@ -1673,7 +1776,9 @@ namespace TemuKJD.PDDForms.ProductSelectForms // // colAddTime // - this.colAddTime.FillWeight = 110F; + dataGridViewCellStyle28.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.colAddTime.DefaultCellStyle = dataGridViewCellStyle28; + this.colAddTime.FillWeight = 80F; this.colAddTime.HeaderText = "上传时间"; this.colAddTime.Name = "colAddTime"; this.colAddTime.ReadOnly = true; @@ -1815,6 +1920,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.splitContainer2.Panel2.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit(); this.splitContainer2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pbShopLoading)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.dgvShop)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pbLoading)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.dgvSelectProduct)).EndInit(); @@ -1862,16 +1968,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms private UserComponent.UcCheckBox chkStepAddPrice; private DevComponents.DotNetBar.PanelEx btnClearDgv; private UserComponent.UcCheckBox chkAddMorePriceFirst; - private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect; - private System.Windows.Forms.DataGridViewTextBoxColumn colShopLoginName; - private System.Windows.Forms.DataGridViewTextBoxColumn colShopId; - private System.Windows.Forms.DataGridViewTextBoxColumn colShopName; - private System.Windows.Forms.DataGridViewTextBoxColumn colShopNotes; - private System.Windows.Forms.DataGridViewLinkColumn colSelectProduct; - private System.Windows.Forms.DataGridViewLinkColumn colLoginStatus; - private System.Windows.Forms.DataGridViewCheckBoxColumn colCanUse; - private System.Windows.Forms.DataGridViewTextBoxColumn colRemaining; - private System.Windows.Forms.DataGridViewTextBoxColumn colMessage; private System.Windows.Forms.FlowLayoutPanel fPnlPriceRule; private UcAddPrice ucAddPrice1; private UcAddPrice ucAddPrice3; @@ -1915,6 +2011,26 @@ namespace TemuKJD.PDDForms.ProductSelectForms private System.Windows.Forms.PictureBox pbUpgradeVersion; private System.Windows.Forms.Label lblUpgradeVersion; private UserComponent.UcCheckBox chkUseExtCodePrice; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox txtWaitSeconds; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.ComboBox cmbSourceType; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.PictureBox pictureBox1; + private UserComponent.UcCheckBox chkSkipQualification; + private DevComponents.DotNetBar.PanelEx btnApiUpload; + private DevComponents.DotNetBar.PanelEx btnRefreshApi; + private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect; + private System.Windows.Forms.DataGridViewTextBoxColumn colShopLoginName; + private System.Windows.Forms.DataGridViewTextBoxColumn colShopId; + private System.Windows.Forms.DataGridViewTextBoxColumn colShopName; + private System.Windows.Forms.DataGridViewTextBoxColumn colShopNotes; + private System.Windows.Forms.DataGridViewLinkColumn colSelectProduct; + private System.Windows.Forms.DataGridViewLinkColumn colLoginStatus; + private System.Windows.Forms.DataGridViewTextBoxColumn colApiStatus; + private System.Windows.Forms.DataGridViewCheckBoxColumn colCanUse; + private System.Windows.Forms.DataGridViewTextBoxColumn colRemaining; + private System.Windows.Forms.DataGridViewTextBoxColumn colMessage; private System.Windows.Forms.DataGridViewCheckBoxColumn colCheck; private System.Windows.Forms.DataGridViewTextBoxColumn colSelectId; private System.Windows.Forms.DataGridViewTextBoxColumn colSupplierId; @@ -1937,13 +2053,9 @@ namespace TemuKJD.PDDForms.ProductSelectForms private System.Windows.Forms.DataGridViewLinkColumn ColDelete; private System.Windows.Forms.DataGridViewTextBoxColumn colAddTime; private System.Windows.Forms.DataGridViewTextBoxColumn colOpResult; - private System.Windows.Forms.Label label7; - private System.Windows.Forms.TextBox txtWaitSeconds; - private System.Windows.Forms.Label label6; - private System.Windows.Forms.ComboBox cmbSourceType; - private System.Windows.Forms.Label label8; - private System.Windows.Forms.PictureBox pictureBox1; - private UserComponent.UcCheckBox chkSkipQualification; - private DevComponents.DotNetBar.PanelEx btnApiUpload; + private System.Windows.Forms.TextBox txtAddShippingFeeTimes; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.PictureBox pbShopLoading; + private DevComponents.DotNetBar.PanelEx btnProdDb; } } \ No newline at end of file diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs index 5935232..bd47593 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs @@ -27,6 +27,7 @@ using AllBase.Model.Result.PDDResult; using AllBase.Model.Param.PDDProdParam; using CefSharp; using TemuKJD.BLL.PddApi; +using TemuKJD.WXForms.ProductForms; namespace TemuKJD.PDDForms.ProductSelectForms { @@ -68,7 +69,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms private void UserSelectDbProductForm_Load(object sender, EventArgs e) { - Task.Run(() => { InitPddToken(); }); + //Task.Run(() => { InitPddToken(); }); + RefreshApi(); this.splitContainer1.Dock = DockStyle.Fill; this.panel1.Location = new Point(40, 30); @@ -119,6 +121,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.txtAddMorePrice.Text = defaultAddPriceRule.AddMorePrice.ToString(); this.txtSinglePriceAdd.Text = defaultAddPriceRule.SinglePriceAdd.ToString(); this.txtStockNum.Text = defaultAddPriceRule.StockNum.ToString(); + this.txtAddShippingFeeTimes.Text = defaultAddPriceRule.AddShippingFeeTimes.ToString(); this.chkAddMorePriceFirst.Checked = defaultAddPriceRule.AddMorePriceFirst; pddUploadRule = NaiBa.Util.Helper.ConfigHelper.LoadConfig("pdd_upload_rule"); @@ -143,9 +146,17 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.lblWaitToUp.Text = "待上传 " + lstTemuDBProductSelect.Count + " 件"; - int prodCount = 0; - var list = GetRandomProductList(out prodCount, 1, 1); - lblGoodsCount.Text = "产品库 " + prodCount + " 件"; + pictureBox1.Visible = true; + Task.Run(() => + { + int prodCount = 0; + var list = GetRandomProductList(out prodCount, 1, 1); + Invoke(new Action(() => + { + lblGoodsCount.Text = "产品库 " + prodCount + " 件"; + pictureBox1.Visible = false; + })); + }); this.panel1.SendToBack(); chkSelectAll = dgvShop.Columns["colSelect"].AddHeaderCheckBox(HorizontalAlignment.Center, 0, 0, null, null, false); @@ -176,8 +187,11 @@ namespace TemuKJD.PDDForms.ProductSelectForms IsLoadComplate = true; } + // 测试全局access_token void InitPddToken() { + return; + var url = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/shop/list?userName=pdd用户"; //var rst = WXHttpResponseBLL.e57PostResponse(url, "&warehouseNum=123456&shopId=46568955", ""); var rst = WXHttpResponseBLL.e57GetResponse(url, ""); @@ -199,9 +213,12 @@ namespace TemuKJD.PDDForms.ProductSelectForms } // 测试写死 - var shop1 = GlobalConfig.ShopLoginList.First(s => s.ShopAccount == "阿杰小铺浦哈哈"); - shop1.ApiAuthInfoList = new List(); - shop1.ApiAuthInfoList.Add(new AuthInfo { AccessToken = "269a0baaca9b42abb443756fac90f88b0836f610" }); + //var shop1 = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopAccount == "阿杰小铺浦哈哈"); + //shop1.ApiAuthInfoList = new List(); + //shop1.ApiAuthInfoList.Add(new AuthInfo { AccessToken = "269a0baaca9b42abb443756fac90f88b0836f610" }); + + // 临时刷新token + //var rst1 = pddApi.PddPopAuthTokenCreate(); } private void chkSelectAll_CheckedChanged(object sender, EventArgs e) @@ -235,7 +252,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms if (Visible == true) { RefreshShop(); - RefreshDbProd(); + if (!isInit) + RefreshDbProd(); isInit = true; } @@ -315,18 +333,20 @@ namespace TemuKJD.PDDForms.ProductSelectForms var row = dgvShop.Rows.Cast().FirstOrDefault(p => p.Cells.GetCellValueFromColumnName("colShopId").ParseToString() == shopEntity.ShopId); if (row == null) { - this.dgvShop.Rows.Add( - !isInit || (selectShopId.Contains(shopEntity.ShopId) && canUse), + var index = this.dgvShop.Rows.Add( + false, //!isInit || (selectShopId.Contains(shopEntity.ShopId) && canUse), shopEntity.LoginName, shopEntity.ShopId, shopEntity.ShopAccount, shopEntity.Notes, "选择商品", canUse ? "在线" : "掉线", + shopEntity.AuthExpiresTime > DateTime.Now ? "有效" : "过期", canUse, shopEntity.AddProductRemaining, - string.Empty + shopEntity.Message ); + row = dgvShop.Rows[index]; } else { @@ -335,9 +355,29 @@ namespace TemuKJD.PDDForms.ProductSelectForms row.Cells["colShopName"].Value = shopEntity.ShopAccount; row.Cells["colShopNotes"].Value = shopEntity.Notes; row.Cells["colLoginStatus"].Value = canUse ? "在线" : "掉线"; + row.Cells["colApiStatus"].Value = shopEntity.AuthExpiresTime > DateTime.Now ? "有效" : "过期"; row.Cells["colLoginStatus"].Style.ForeColor = canUse ? Color.Green : Color.Red; row.Cells["colCanUse"].Value = canUse; row.Cells["colRemaining"].Value = shopEntity.AddProductRemaining; + row.Cells["colMessage"].Value = shopEntity.Message; + } + displayShopStatus(shopEntity); + } + + void displayShopStatus(ShopLoginInfo shop) + { + bool canUse = shop.LoginStatus == "登录成功"; + bool apiAuth = shop.AuthExpiresTime > DateTime.Now; + var rows = this.dgvShop.Rows.Cast().Where(r => r.Cells["colShopId"].Value.ParseToString() == shop?.ShopId); + foreach (var row in rows) + { + row.Cells["colCanUse"].Value = canUse; + row.Cells["colLoginStatus"].Value = canUse ? "在线" : "掉线"; + (row.Cells["colLoginStatus"] as DataGridViewLinkCell).Style.ForeColor = canUse ? Color.Blue : Color.Red; + (row.Cells["colLoginStatus"] as DataGridViewLinkCell).LinkColor = canUse ? Color.Blue : Color.Red; + (row.Cells["colLoginStatus"] as DataGridViewLinkCell).ActiveLinkColor = canUse ? Color.LightBlue : Color.OrangeRed; + (row.Cells["colLoginStatus"] as DataGridViewLinkCell).VisitedLinkColor = canUse ? Color.DarkBlue : Color.DarkRed; + row.Cells["colApiStatus"].Style.ForeColor = apiAuth ? Color.Green : Color.OrangeRed; } } @@ -2091,34 +2131,38 @@ namespace TemuKJD.PDDForms.ProductSelectForms foreach (var skuParamInfo in baseSkuParamLst) { var skuParam = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(skuParamInfo)); - skuParam.multi_price = (skuParamInfo.multi_price * this.txtAddTimes.Text.Trim().ParseToDecimal() + this.txtAddMorePrice.Text.Trim().ParseToDecimal() * 100).ParseToInt(); - skuParam.price = (skuParamInfo.price * this.txtAddTimes.Text.Trim().ParseToDecimal() + this.txtAddMorePrice.Text.Trim().ParseToDecimal() * 100).ParseToInt(); - //上面已经给过值了,且厂商直采的上家缺货则保持缺货。 + // 库存上面已经给过值了,且厂商直采的上家缺货则保持缺货。 //skuParam.quantity_delta = txtStockNum.Text.Trim().ParseToInt(); - skuParam.multi_price += shipPrice; - skuParam.price += shipPrice; + var new_multi_price = skuParamInfo.multi_price + (shipPrice * defaultAddPriceRule.AddShippingFeeTimes).ParseToInt(); + // 普通加价 + skuParam.multi_price = (new_multi_price * this.txtAddTimes.Text.Trim().ParseToDecimal() + this.txtAddMorePrice.Text.Trim().ParseToDecimal() * 100).ParseToInt(); if (isAddMorePriceFirst) // 先加后乘 - skuParam.multi_price = ((skuParamInfo.multi_price + this.txtAddMorePrice.Text.Trim().ParseToDecimal() * 100) * this.txtAddTimes.Text.Trim().ParseToDecimal()).ParseToInt(); + skuParam.multi_price = ((new_multi_price + this.txtAddMorePrice.Text.Trim().ParseToDecimal() * 100) * this.txtAddTimes.Text.Trim().ParseToDecimal()).ParseToInt(); skuParam.price = skuParam.multi_price + Math.Max(100, this.txtSinglePriceAdd.Text.Trim().ParseToDecimal() * 100).ParseToInt(); + //阶梯式加价,如果命中则按阶梯式加价进行 if (isStepAddPrice) { foreach (var addPrice in lstAddPriceRule) { - if (skuParamInfo.multi_price > addPrice.MoreThanPrice * 100 && skuParamInfo.multi_price <= addPrice.LessThanPrice * 100) + if (new_multi_price > addPrice.MoreThanPrice * 100 && new_multi_price <= addPrice.LessThanPrice * 100) { if (isAddMorePriceFirst) // 先加后乘 - skuParam.multi_price = ((skuParamInfo.multi_price + addPrice.AddMorePrice * 100) * addPrice.AddPriceTimes).ParseToInt(); + skuParam.multi_price = ((new_multi_price + addPrice.AddMorePrice * 100) * addPrice.AddPriceTimes).ParseToInt(); else - skuParam.multi_price = (skuParamInfo.multi_price * addPrice.AddPriceTimes + addPrice.AddMorePrice * 100).ParseToInt(); - skuParam.price = skuParam.multi_price + Math.Max(100, addPrice.SinglePriceAdd * 100).ParseToInt(); ; + skuParam.multi_price = (new_multi_price * addPrice.AddPriceTimes + addPrice.AddMorePrice * 100).ParseToInt(); + skuParam.price = skuParam.multi_price + Math.Max(100, addPrice.SinglePriceAdd * 100).ParseToInt(); break; } } } + // 加邮费×倍率 放前面加 + //skuParam.multi_price += (shipPrice * defaultAddPriceRule.AddShippingFeeTimes).ParseToInt(); + //skuParam.price += (shipPrice * defaultAddPriceRule.AddShippingFeeTimes).ParseToInt(); + if (prodParam.market_price < skuParam.price + 1000) { prodParam.market_price = skuParam.price + 1000; @@ -2674,19 +2718,21 @@ namespace TemuKJD.PDDForms.ProductSelectForms foreach (var skuParamInfo in baseSkuParamLst) { var skuParam = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(skuParamInfo)); - - skuParam.multi_price += shipPrice; - skuParam.price += shipPrice; - - skuParam.multi_price = (skuParamInfo.multi_price * this.txtAddTimesFake.Text.Trim().ParseToDecimal()).ParseToInt(); - skuParam.price = (skuParamInfo.price * this.txtAddTimesFake.Text.Trim().ParseToDecimal()).ParseToInt(); - //上面已经给过值了,且厂商直采的上家缺货则保持缺货。 + // 库存上面已经给过值了,且厂商直采的上家缺货则保持缺货。 //skuParam.quantity_delta = txtStockNum.Text.Trim().ParseToInt(); // 库存 + var new_multi_price = skuParamInfo.multi_price + (shipPrice * defaultAddPriceRule.AddShippingFeeTimes).ParseToInt(); + + // 虚拟加价3倍 + skuParam.multi_price = (new_multi_price * this.txtAddTimesFake.Text.Trim().ParseToDecimal()).ParseToInt(); if (isAddMorePriceFirst) // 先加后乘 - skuParam.multi_price = ((skuParamInfo.multi_price) * this.txtAddTimesFake.Text.Trim().ParseToDecimal()).ParseToInt(); + skuParam.multi_price = (new_multi_price * this.txtAddTimesFake.Text.Trim().ParseToDecimal()).ParseToInt(); skuParam.price = skuParam.multi_price + Math.Max(100, this.txtSinglePriceAdd.Text.Trim().ParseToDecimal() * 100).ParseToInt(); + //// 加邮费×倍率 放前面 + //skuParam.multi_price += (shipPrice * defaultAddPriceRule.AddShippingFeeTimes).ParseToInt(); + //skuParam.price += (shipPrice * defaultAddPriceRule.AddShippingFeeTimes).ParseToInt(); + if (prodParamHighPrice.market_price < skuParam.price + 1000) { prodParamHighPrice.market_price = skuParam.price + 1000; @@ -6085,6 +6131,7 @@ Content-Type: image/jpeg defaultAddPriceRule.AddMorePrice = txtAddMorePrice.Text.Trim().ParseToDecimal(); defaultAddPriceRule.SinglePriceAdd = txtSinglePriceAdd.Text.Trim().ParseToDecimal(); defaultAddPriceRule.StockNum = txtStockNum.Text.Trim().ParseToInt(); + defaultAddPriceRule.AddShippingFeeTimes = txtAddShippingFeeTimes.Text.Trim().ParseToDecimal(); NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_default_add_price_rule", defaultAddPriceRule); } } @@ -6663,7 +6710,7 @@ Content-Type: image/jpeg Invoke(new Action(() => { statusBar.lblTaskStatus.Text = "正在上传!"; })); // 指定店铺数量同时上货 - if(currentUpShopLst.Count >= 10) + if (currentUpShopLst.Count >= 10) { Thread.Sleep(500); continue; @@ -6746,6 +6793,8 @@ Content-Type: image/jpeg { result = "{\"success\":false,\"status\":\"未上传\",\"errMsg\":\"" + ex.Message + "\"}"; } + var timeSpan = DateTime.Now - startTime; + duration = timeSpan.TotalSeconds; var error = ""; // 上传失败 @@ -6758,9 +6807,6 @@ Content-Type: image/jpeg { if (row.Index >= 0) { - var endTime = DateTime.Now; - var timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; row.Cells["colOpResult"].Value = error + " " + duration.ParseToInt() + "秒"; } })); @@ -6801,6 +6847,14 @@ Content-Type: image/jpeg string ApiUploadProduct(ShopLoginInfo shop, TemuDBProductSelect selectProd, DataGridViewRow row) { DataGridViewCell cell = row.Cells["colOpResult"]; + Invoke(new Action(() => + { + cell.Value = "正在初始化商品"; + })); + + // 模拟多线程一起上货 + //Thread.Sleep(Randomx.GetId(500, 5000)); + //return "{\"success\":true,\"goods_id\":" + 1000000 + ",\"status\":\"已上传\",\"msg\":\"上传成功\"}"; KJDDBProduct dbProd = selectProd.kjdDbProduct; if (dbProd == null) @@ -6833,24 +6887,23 @@ Content-Type: image/jpeg prodInfo = JsonHelper.DeserializeJsonToObject(dbProd.product_json); var pddApi = new PddApi(shop); - pddApi.Data["cat_id"] = prodInfo.detail.cat_id; - var carRuleGetRst = pddApi.PddGoodsCatRuleGet(); - - // 临时刷新token - //var rst1 = pddApi.PddPopAuthTokenCreate(); - - //满两件折扣,todo通过pdd.goods.cat.rule.get查询具体规则 - //{"cat_rule_get_response":{"goods_properties_rule":{"input_max_spec_num":0,"properties":[{"is_sale":false,"is_important":false,"is_sku":false,"values":[{"vid":4643510,"value":"无品牌/无注册商标"},{"vid":1280848,"value":"画南头"},{"vid":30601,"value":"固竹匠"},{"vid":220778,"value":"浪漫喜事"},{"vid":334660,"value":"梦瑾"},{"vid":130470,"value":"朋意"},{"vid":12034,"value":"THEBEAST/野兽派"},{"vid":1942,"value":"Uchino/内野"},{"vid":34231,"value":"NITORI/宜得利家居"},{"vid":6439,"value":"Brother/兄弟"},{"vid":8553,"value":"Zara Home"},{"vid":8554,"value":"MUJI/无印良品"},{"vid":14223,"value":"VERSACE/范思哲"},{"vid":18534,"value":"Mtg"},{"vid":19991,"value":"SINGER/胜家"},{"vid":196848,"value":"Hoyo"},{"vid":224544,"value":"亚朵星球"},{"vid":280,"value":"KING SHORE/金号"},{"vid":327,"value":"SEMIR/森马"},{"vid":68,"value":"MERCURY/水星家纺"},{"vid":44617,"value":"LUOLAI/罗莱"},{"vid":386,"value":"Xiaomi/小米"},{"vid":394,"value":"Lock&Lock/乐扣乐扣"},{"vid":53109,"value":"CHRISTY"},{"vid":5702,"value":"东升"},{"vid":5727,"value":"DOHIA/多喜爱"},{"vid":561,"value":"Purcotton/全棉时代"},{"vid":6159,"value":"金蝉"},{"vid":6770,"value":"MENDALE/梦洁"},{"vid":8882,"value":"HLA/海澜之家"},{"vid":9570,"value":"MINISO/名创优品"},{"vid":119495,"value":"AUSTTBABY"},{"vid":119914,"value":"棉森"},{"vid":12031,"value":"大朴"},{"vid":128592,"value":"亿恩忆"},{"vid":12598,"value":"怡沁园"},{"vid":134564,"value":"茱莉亚"},{"vid":14220,"value":"JEANSWEST/真维斯"},{"vid":16898,"value":"奥帝罗"},{"vid":16900,"value":"德奇力"},{"vid":17523,"value":"Bravo/馨而乐"},{"vid":17529,"value":"Grace·orchid/洁丽雅·兰"},{"vid":165321,"value":"孩子王"},{"vid":17819,"value":"EverShine/永亮"},{"vid":172186,"value":"BULULOM/布鲁罗曼"},{"vid":173,"value":"南极人"},{"vid":192015,"value":"Mionsoo/棉上"},{"vid":192617,"value":"Lovhome/乐巢家居"},{"vid":193562,"value":"Tumei Home Collection/图美寝饰"},{"vid":195662,"value":"Jrb/嘉瑞宝"},{"vid":197759,"value":"Gafuhome"},{"vid":202708,"value":"LATEX SYSTEMS CO.,LTD."},{"vid":1746,"value":"梦雅莉"},{"vid":1747,"value":"虹原风尚"},{"vid":1748,"value":"LUOLANNI/罗兰妮"},{"vid":1749,"value":"梓晨"},{"vid":1752,"value":"LORiCA/骆易家"},{"vid":1769,"value":"BLISS/百丽丝"},{"vid":215899,"value":"竹月阁"},{"vid":216546,"value":"荣邦"},{"vid":200,"value":"GRACE/洁丽雅"},{"vid":1957,"value":"黄古林"},{"vid":245780,"value":"yesland雅熙莱帝"},{"vid":2105,"value":"SANLI/三利"},{"vid":2106,"value":"CARESEEN/康尔馨"},{"vid":262384,"value":"爱络"},{"vid":27838,"value":"ABS/爱彼此"},{"vid":275849,"value":"伊丝绮"},{"vid":280996,"value":"Qisilove/前世有约"},{"vid":281160,"value":"Ppw"},{"vid":252,"value":"BEJIROG/北极绒"},{"vid":283511,"value":"梦蝶莎"},{"vid":2675,"value":"芳华"},{"vid":32611,"value":"TY LIVE/田园生活"},{"vid":302922,"value":"一米"},{"vid":32853,"value":"温恋"},{"vid":32879,"value":"WS/伟殳家居"},{"vid":32881,"value":"港龙"},{"vid":32882,"value":"亚亨"},{"vid":273,"value":"Disney/迪士尼"},{"vid":33880,"value":"Aqara"},{"vid":294,"value":"洁玉"},{"vid":303,"value":"网易严选"},{"vid":3274,"value":"A-LIFE/最生活"},{"vid":369086,"value":"山花"},{"vid":373614,"value":"五洲"},{"vid":329,"value":"BOBDOG/巴布豆"},{"vid":382380,"value":"SouthLife/南方生活"},{"vid":330,"value":"Montagut/梦特娇"},{"vid":69,"value":"LOVO/乐蜗"},{"vid":3602,"value":"Curbblan/卡伴"},{"vid":3897,"value":"知梦人"},{"vid":45598,"value":"SAINTMARC/尚玛可"},{"vid":45746,"value":"SINOMAX/赛诺"},{"vid":45808,"value":"SOMERELLE/安睡宝"},{"vid":45938,"value":"SUNVIM/孚日"},{"vid":397,"value":"童泰"},{"vid":464223,"value":"Yuniku/优尼可"},{"vid":4602,"value":"Jago/佳奥"},{"vid":4657,"value":"四季帘华"},{"vid":517644,"value":"家顿"},{"vid":519506,"value":"MENBORY/梦宝莉"},{"vid":532306,"value":"MENDALE HOME"},{"vid":781538,"value":"4monster"},{"vid":5240,"value":"春天十字绣"},{"vid":5247,"value":"HD/惠多"},{"vid":65402,"value":"梦雯"},{"vid":842952,"value":"赛勒"},{"vid":846015,"value":"墨斗鱼"},{"vid":5832,"value":"8H"},{"vid":923181,"value":"大江(地垫)"},{"vid":950059,"value":"甄简良品"},{"vid":79195,"value":"伊佳仁"},{"vid":79198,"value":"雅熙莱帝"},{"vid":6958,"value":"轻生活"},{"vid":7347,"value":"TANGY/天意"},{"vid":7351,"value":"FREETEX"},{"vid":94190,"value":"冬阳"},{"vid":96868,"value":"硕木"},{"vid":97393,"value":"LOFTEX/亚光"},{"vid":97771,"value":"彩朵朵"},{"vid":9254,"value":"AiSleep/睡眠博士"},{"vid":9709,"value":"HD/华德"},{"vid":9780,"value":"欧意"},{"vid":9942,"value":"百思寒"},{"vid":107350,"value":"布蝶轩"},{"vid":108166,"value":"夕姿"},{"vid":12165,"value":"一朵"},{"vid":12549,"value":"金柒"},{"vid":1286,"value":"BONAS/宝娜斯"},{"vid":17569,"value":"恩兴"},{"vid":18231,"value":"多沃"},{"vid":171,"value":"La Chapelle/拉夏贝尔"},{"vid":1740,"value":"简柔"},{"vid":1745,"value":"毛毛雨"},{"vid":216088,"value":"后构想"},{"vid":22820,"value":"艾贝德"},{"vid":216566,"value":"赛丽尔"},{"vid":247368,"value":"巾格格"},{"vid":248823,"value":"泰普诺"},{"vid":262360,"value":"赛维丝"},{"vid":32852,"value":"唯品七彩虹"},{"vid":32854,"value":"铭悦"},{"vid":32880,"value":"已庚"},{"vid":32885,"value":"美岸"},{"vid":32886,"value":"满天礼"},{"vid":32888,"value":"财领万家"},{"vid":358525,"value":"N&L"},{"vid":344,"value":"Deli/得力"},{"vid":39,"value":"恒源祥"},{"vid":425929,"value":"PATEX(泰国)"},{"vid":378,"value":"张小泉"},{"vid":51398,"value":"Mustela/妙思乐"},{"vid":4847,"value":"正帆"},{"vid":754015,"value":"SPUER/斯普尔"},{"vid":5225,"value":"朗格"},{"vid":5227,"value":"伊梦兮雨"},{"vid":66780,"value":"恒亚斯地毯"},{"vid":5963,"value":"黛安妲"},{"vid":74350,"value":"布花朵朵"},{"vid":6768,"value":"MONALISA/蒙娜丽莎"},{"vid":82037,"value":"谷今"},{"vid":8997,"value":"CRYSTAL SHINE RED/晶照红"},{"vid":9132,"value":"靠艺"},{"vid":97394,"value":"MHALE/平实美学"},{"vid":114,"value":"NICED/奈士迪"},{"vid":1042,"value":"恒澍"},{"vid":36,"value":"Pelliot/伯希和"},{"vid":45,"value":"Bosideng/波司登"},{"vid":119,"value":"五粮液"},{"vid":905,"value":"CAUDALIE/欧缇丽"},{"vid":906,"value":"Cetaphil/丝塔芙"},{"vid":907,"value":"CHANEL/香奈儿"},{"vid":908,"value":"Clarins/娇韵诗"},{"vid":120,"value":"Casio/卡西欧"},{"vid":911,"value":"Clinique/倩碧"},{"vid":912,"value":"COGI/高姿"},{"vid":913,"value":"Coreana/高丽雅娜"},{"vid":915,"value":"DAISO/大创"},{"vid":916,"value":"DHC/蝶翠诗"},{"vid":917,"value":"DOCTOR LI/李医生"},{"vid":919,"value":"Dove/多芬"},{"vid":920,"value":"Dr.Ci:Labo/城野医生"},{"vid":121,"value":"南孚"},{"vid":921,"value":"Dr.Jart+/蒂佳婷"},{"vid":922,"value":"Elixir/怡丽丝尔"},{"vid":926,"value":"Freeplus/芙丽芳丝"},{"vid":927,"value":"GIORGIO ARMANI/阿玛尼"},{"vid":928,"value":"GN Pearl/京润珍珠"},{"vid":122,"value":"Cobbe/卡贝"},{"vid":930,"value":"Guerlain/娇兰"},{"vid":935,"value":"Hera/赫妍"},{"vid":937,"value":"Holika Holika/惑丽客 惑丽客"},{"vid":938,"value":"IOPE/艾诺碧"},{"vid":942,"value":"Kanebo/嘉娜宝"},{"vid":943,"value":"KAO/花王"},{"vid":944,"value":"Kose/高丝"},{"vid":946,"value":"Kustie/蔻斯汀"},{"vid":948,"value":"LAHAR POWER/原泥动力"},{"vid":949,"value":"Laneige/兰芝"},{"vid":950,"value":"Laroche Posay/理肤泉"},{"vid":951,"value":"LION/狮王"},{"vid":952,"value":"L'occitane/欧舒丹"},{"vid":953,"value":"Mamonde/梦妆"},{"vid":954,"value":"Marubi/丸美"},{"vid":955,"value":"Marykay/玫琳凯"},{"vid":956,"value":"MAYSU/美素"},{"vid":959,"value":"ORIGINS/悦木之源"},{"vid":125,"value":"Hush Puppies/暇步士"},{"vid":966,"value":"Sephora/丝芙兰"},{"vid":969,"value":"SNP/爱神菲"},{"vid":126,"value":"Goodbaby/好孩子"},{"vid":972,"value":"SULWHASOO/雪花秀"},{"vid":974,"value":"TJOY/丁家宜"},{"vid":975,"value":"TOMATO PIE/番茄派"},{"vid":977,"value":"Vichy/薇姿"},{"vid":978,"value":"Watsons/屈臣氏"},{"vid":982,"value":"Yves Rocher/伊夫黎雪"},{"vid":983,"value":"Za/姬芮"},{"vid":985,"value":"大宝"},{"vid":986,"value":"花瑶花"},{"vid":987,"value":"满婷"},{"vid":988,"value":"美康粉黛"},{"vid":46,"value":"Royal Rose"},{"vid":989,"value":"BEAUTYFUN/美丽加芬"},{"vid":990,"value":"膜法世家"},{"vid":993,"value":"师夷家"},{"vid":994,"value":"他能量"},{"vid":995,"value":"土家硒泥坊"},{"vid":998,"value":"WZUN/吾尊"},{"vid":1000,"value":"小迷糊"},{"vid":1001,"value":"URTEKRAM/亚缇克兰"},{"vid":1002,"value":"自然之名"},{"vid":1003,"value":"YSL/圣罗兰"},{"vid":1007,"value":"Lush/岚舒"},{"vid":1008,"value":"Banila CO/芭妮兰"},{"vid":1010,"value":"Safeguard/舒肤佳"},{"vid":1011,"value":"LUX/力士"},{"vid":128,"value":"Miffy/米菲"},{"vid":1014,"value":"强生美肌"},{"vid":1017,"value":"LYNX/凌仕"},{"vid":1018,"value":"SLEK/舒蕾"},{"vid":1019,"value":"BEE&FLOWER/蜂花"},{"vid":1020,"value":"LG"},{"vid":1021,"value":"Bawang/霸王"},{"vid":1022,"value":"DIFASO/蒂花之秀"},{"vid":1023,"value":"Hazeline/夏士莲"},{"vid":1026,"value":"Mchoix/魔香"},{"vid":1028,"value":"TSUBAKI/丝蓓绮"},{"vid":1031,"value":"PANTENE/潘婷"},{"vid":1032,"value":"Head&Shoulders/海飞丝"},{"vid":1034,"value":"琴叶"},{"vid":1037,"value":"Mese/美多丝"},{"vid":130,"value":"Belle/百丽"},{"vid":1043,"value":"JM"},{"vid":1045,"value":"Yole/有乐"},{"vid":1047,"value":"云南白药"},{"vid":1048,"value":"Crest/佳洁士"},{"vid":1049,"value":"DARLIE/好来"},{"vid":131,"value":"BIG WASP/大黄蜂"},{"vid":1053,"value":"冷酸灵"},{"vid":1054,"value":"黑妹"},{"vid":1057,"value":"两面针"},{"vid":1058,"value":"Healso/华素愈创"},{"vid":1060,"value":"CNICE/纳爱斯"},{"vid":1061,"value":"草珊瑚"},{"vid":1067,"value":"KOBAYASHI/小林制药"},{"vid":1068,"value":"Sayclo/时克"},{"vid":132,"value":"DJI/大疆"},{"vid":1071,"value":"三笑"},{"vid":1072,"value":"YMER/伊米尔"},{"vid":1073,"value":"珂宜"},{"vid":1075,"value":"壹墨"},{"vid":1076,"value":"奕辰"},{"vid":47,"value":"One Leaf/一叶子"},{"vid":1078,"value":"Vatti/华帝"},{"vid":1079,"value":"喜得"},{"vid":1081,"value":"新宠之康"},{"vid":1082,"value":"澳宝"},{"vid":1083,"value":"雪貂留香"},{"vid":1084,"value":"BIOAOUA/泊泉雅"},{"vid":133,"value":"ECOVACS/科沃斯"},{"vid":1088,"value":"DORAEMON/哆啦A梦"},{"vid":1089,"value":"Keon/奇强"},{"vid":1091,"value":"Lining/李宁"},{"vid":1092,"value":"ERKE/鸿星尔克"},{"vid":1093,"value":"THREE SEVEN 777"},{"vid":1095,"value":"KAMI/开米"},{"vid":1096,"value":"妈妈壹选"},{"vid":1097,"value":"老管家"},{"vid":1098,"value":"Whisper/护舒宝"},{"vid":1099,"value":"Kotex/高洁丝"},{"vid":1100,"value":"FREEMORE/自由点"},{"vid":1101,"value":"妇炎洁"},{"vid":1102,"value":"Smilfree/笑爽"},{"vid":135,"value":"好想你"},{"vid":1103,"value":"Pinse/品萱"},{"vid":1104,"value":"BABO/斑布"},{"vid":1105,"value":"仁和"},{"vid":1106,"value":"JOLLY/娇妍"},{"vid":1111,"value":"Rexona/舒耐"},{"vid":136,"value":"Vinda/维达"},{"vid":1116,"value":"COMFORT/金纺"},{"vid":1117,"value":"白猫"},{"vid":1118,"value":"Ecover/欧维洁"},{"vid":1120,"value":"心居客"},{"vid":137,"value":"洁柔"},{"vid":1122,"value":"小宠"},{"vid":1125,"value":"爱博"},{"vid":1126,"value":"POWCHO/能臣"},{"vid":1127,"value":"喜家家"},{"vid":1128,"value":"好媳妇"},{"vid":1130,"value":"Superb/超威"},{"vid":1131,"value":"蓝鲲"},{"vid":138,"value":"FIYTA/飞亚达"},{"vid":1132,"value":"贝贝健"},{"vid":1133,"value":"天帐"},{"vid":1134,"value":"Zwilling/双立人"},{"vid":1135,"value":"家博士"},{"vid":1136,"value":"康铭"},{"vid":1137,"value":"Edream/e之梦"},{"vid":1138,"value":"丝飘"},{"vid":1139,"value":"富豪"},{"vid":139,"value":"泉林本色"},{"vid":1140,"value":"风韵万家"},{"vid":1141,"value":"洁枫"},{"vid":1143,"value":"云芳"},{"vid":1144,"value":"馨尚"},{"vid":1145,"value":"优真"},{"vid":1146,"value":"好吉利"},{"vid":1147,"value":"心逸"},{"vid":1148,"value":"ARSTO/爱思得"},{"vid":140,"value":"清风"},{"vid":1149,"value":"Bayco/拜格"},{"vid":1150,"value":"CILLE/希乐"},{"vid":1151,"value":"Green Apple/青苹果"},{"vid":1152,"value":"康舒"},{"vid":1153,"value":"橙叶"},{"vid":1155,"value":"Tupperware/特百惠"},{"vid":1156,"value":"KUAKE/夸克"},{"vid":1157,"value":"OOU"},{"vid":1158,"value":"十八子作"},{"vid":1160,"value":"龙之艺"},{"vid":1161,"value":"SMART WIFE/巧媳妇"},{"vid":48,"value":"Hero/英雄"},{"vid":142,"value":"Dickies"},{"vid":1163,"value":"ELEVEN DIMENSIONAL SPACE/十一维度"},{"vid":1164,"value":"Twinbell"},{"vid":1165,"value":"TVS/提薇司"},{"vid":1166,"value":"OTAFUKU/五福源仕"},{"vid":1167,"value":"宜马"},{"vid":1168,"value":"创健"},{"vid":143,"value":"BURBERRY/博柏利"},{"vid":1170,"value":"Omysky"},{"vid":1171,"value":"Leten/雷霆"},{"vid":1172,"value":"PLEASURE MORE/倍力乐"},{"vid":1173,"value":"Svakom"},{"vid":1174,"value":"DMM"},{"vid":1177,"value":"毓婷"},{"vid":1180,"value":"新东方在线"},{"vid":1181,"value":"XDF/新东方"},{"vid":1184,"value":"Bag of parody/必欧品"},{"vid":1186,"value":"Montblanc/万宝龙"},{"vid":1187,"value":"COACH/蔻驰"},{"vid":1188,"value":"FURLA/芙拉"},{"vid":145,"value":"FANCL/芳珂"},{"vid":1191,"value":"DEIRADA/狄拉达"},{"vid":146,"value":"Josiny/卓诗尼"},{"vid":1201,"value":"KIN DON/金盾"},{"vid":1202,"value":"金洋船"},{"vid":1205,"value":"圣迪思宝"},{"vid":1207,"value":"左岸"},{"vid":147,"value":"花花公子physical"},{"vid":1211,"value":"ZONEJOY/庄爵"},{"vid":1216,"value":"GEMAX/格玛仕"},{"vid":1217,"value":"Xiangyouwei/向右围"},{"vid":1218,"value":"RGLT/瑞格丽特"},{"vid":148,"value":"Winona/薇诺娜"},{"vid":1223,"value":"Booty House/藏宝阁"},{"vid":1224,"value":"吧歌达"},{"vid":1231,"value":"Skmei/时刻美"},{"vid":1233,"value":"VEGOOS/威古氏"},{"vid":1234,"value":"筱雅"},{"vid":149,"value":"Bio Island/佰澳朗德"},{"vid":1235,"value":"NO.ONEPAUL/壹号保罗"},{"vid":1236,"value":"续默"},{"vid":1238,"value":"锐力"},{"vid":1241,"value":"L'ALPINA/阿尔皮纳袋鼠"},{"vid":1243,"value":"户外尖锋"},{"vid":1247,"value":"POLO"},{"vid":1248,"value":"FEGEER/斐格"},{"vid":49,"value":"AUX/奥克斯"},{"vid":151,"value":"Gillette/吉列"},{"vid":1251,"value":"黄金甲"},{"vid":1257,"value":"Ellenfantasia/幻想曲"},{"vid":152,"value":"天堂"},{"vid":1263,"value":"Augtarlion"},{"vid":153,"value":"旺旺"},{"vid":1271,"value":"GELINSI/格琳斯"},{"vid":1272,"value":"GENVAS/君华仕"},{"vid":1273,"value":"Cnoles/蔻一"},{"vid":154,"value":"御泥坊"},{"vid":1279,"value":"CEFIRO/塞飞洛"},{"vid":1283,"value":"TUCANO/啄木鸟"},{"vid":1287,"value":"Docare/朵彩"},{"vid":155,"value":"PROYA/珀莱雅"},{"vid":1288,"value":"芬那丝"},{"vid":1291,"value":"南极人home"},{"vid":1295,"value":"PINCAI/品彩"},{"vid":156,"value":"Romoss/罗马仕"},{"vid":1303,"value":"初纯"},{"vid":1307,"value":"珍莉芬"},{"vid":157,"value":"HADAY/海天"},{"vid":1312,"value":"COEKAC"},{"vid":158,"value":"宝优妮"},{"vid":1323,"value":"古德奈"},{"vid":160,"value":"JOMOO/九牧"},{"vid":1342,"value":"歌姿羽"},{"vid":1343,"value":"KashiDi/卡诗狄"},{"vid":1346,"value":"香朵儿"},{"vid":50,"value":"Midea/美的"},{"vid":162,"value":"燕之坊"},{"vid":163,"value":"BULL/公牛"},{"vid":1383,"value":"梓煦"},{"vid":164,"value":"Kappa/卡帕"},{"vid":1390,"value":"缘花双禧"},{"vid":1396,"value":"予晨"},{"vid":165,"value":"KERCHIN/科尔沁"},{"vid":166,"value":"Umbro/茵宝"},{"vid":1424,"value":"NanJiRen+/南极人+"},{"vid":167,"value":"JanSport"},{"vid":168,"value":"GUESS"},{"vid":1438,"value":"BRIOSO"},{"vid":51,"value":"Kans/韩束"},{"vid":170,"value":"Carslan/卡姿兰"},{"vid":1467,"value":"夕遇"},{"vid":1475,"value":"PLANDOO/帕兰朵"},{"vid":172,"value":"吉香居"},{"vid":1480,"value":"佑朵儿"},{"vid":1495,"value":"OLOEY"},{"vid":1497,"value":"波爵"},{"vid":1520,"value":"舒惠杰"},{"vid":1536,"value":"金山飞雪"},{"vid":52,"value":"蓝月亮"},{"vid":1548,"value":"加加亲"},{"vid":175,"value":"夏日"},{"vid":1565,"value":"蒂安娜"},{"vid":1566,"value":"传奇保罗"},{"vid":1569,"value":"米旗蔓"},{"vid":1580,"value":"奥哥"},{"vid":176,"value":"Herborist/佰草集"},{"vid":178,"value":"Logitech/罗技"},{"vid":179,"value":"ETUDE HOUSE/伊蒂之屋"},{"vid":180,"value":"ROCK/洛克"},{"vid":182,"value":"MEIFUBAO/美肤宝"},{"vid":183,"value":"3M"},{"vid":185,"value":"SPACE7/七度空间"},{"vid":186,"value":"Camel/骆驼"},{"vid":187,"value":"Meters Bonwe/美特斯邦威"},{"vid":53,"value":"LIEBO/裂帛"},{"vid":188,"value":"Saky/舒客"},{"vid":189,"value":"Jack Wolfskin/狼爪"},{"vid":190,"value":"口水娃"},{"vid":191,"value":"PARATEX"},{"vid":192,"value":"ABC"},{"vid":54,"value":"AOKANG/奥康"},{"vid":193,"value":"盼盼"},{"vid":194,"value":"WETHERM/温碧泉"},{"vid":195,"value":"Lovefun/拉芳"},{"vid":196,"value":"MARIE DALGAR/玛丽黛佳"},{"vid":197,"value":"Ferragamo/菲拉格慕"},{"vid":198,"value":"想念"},{"vid":199,"value":"稻香村"},{"vid":55,"value":"361°"},{"vid":201,"value":"BENEUNDER/蕉下"},{"vid":202,"value":"西域美农"},{"vid":203,"value":"周黑鸭"},{"vid":207,"value":"GXG"},{"vid":56,"value":"ANTA/安踏"},{"vid":211,"value":"OIWAS/爱华仕"},{"vid":212,"value":"Sofy/苏菲"},{"vid":213,"value":"爱乡亲"},{"vid":214,"value":"卫龙"},{"vid":215,"value":"Changhong/长虹"},{"vid":216,"value":"Danz/丹姿"},{"vid":217,"value":"Decathlon/迪卡侬"},{"vid":218,"value":"Deerma/德尔玛"},{"vid":219,"value":"Haier/海尔"},{"vid":220,"value":"小狗"},{"vid":221,"value":"来伊份"},{"vid":222,"value":"Mentholatum/曼秀雷敦"},{"vid":224,"value":"Zippo/之宝"},{"vid":225,"value":"Abckids"},{"vid":226,"value":"Citylong/禧天龙"},{"vid":227,"value":"Wonderbra"},{"vid":228,"value":"网易考拉"},{"vid":230,"value":"LONGRICH/隆力奇"},{"vid":59,"value":"Pechoin/百雀羚"},{"vid":234,"value":"华美"},{"vid":235,"value":"Caran·Y/卡拉羊"},{"vid":236,"value":"十月稻田"},{"vid":237,"value":"Gf/高夫"},{"vid":60,"value":"Yaloo/雅鹿"},{"vid":238,"value":"PURE&MILD/泊美"},{"vid":240,"value":"PZH/片仔癀"},{"vid":242,"value":"阿芙"},{"vid":243,"value":"ESSILOR/依视路"},{"vid":245,"value":"LANGSHA/浪莎"},{"vid":246,"value":"Schwarzkopf/施华蔻"},{"vid":61,"value":"Joyoung/九阳"},{"vid":248,"value":"伊利"},{"vid":249,"value":"Yon Ho/永和豆浆"},{"vid":251,"value":"良品铺子"},{"vid":253,"value":"Steel Mate/铁将军"},{"vid":254,"value":"AUPU/奥普"},{"vid":62,"value":"YAYA/鸭鸭"},{"vid":255,"value":"TAODO/淘豆"},{"vid":256,"value":"Jissbon/杰士邦"},{"vid":258,"value":"HERSHEY'S/好时"},{"vid":260,"value":"美心"},{"vid":261,"value":"Penfolds/奔富"},{"vid":262,"value":"ARROW/箭牌"},{"vid":263,"value":"Mizuno/美津浓"},{"vid":265,"value":"五芳斋"},{"vid":266,"value":"SIEMENS/西门子"},{"vid":38,"value":"SKG"},{"vid":270,"value":"360"},{"vid":271,"value":"Cofoe/可孚"},{"vid":274,"value":"蒙牛"},{"vid":275,"value":"Liby/立白"},{"vid":276,"value":"Mr Muscle/威猛先生"},{"vid":277,"value":"HITO/喜多"},{"vid":64,"value":"XTEP/特步"},{"vid":278,"value":"Hongrui Textiles/红瑞纺织"},{"vid":281,"value":"修正"},{"vid":282,"value":"CONBA/康恩贝"},{"vid":283,"value":"BY-HEALTH/汤臣倍健"},{"vid":284,"value":"Ivory/爱得利"},{"vid":65,"value":"FLYCO/飞科"},{"vid":285,"value":"VS SASSOON/沙宣"},{"vid":286,"value":"FERRERO ROCHER/费列罗"},{"vid":287,"value":"途虎养车"},{"vid":288,"value":"ZOJIRUSHI/象印"},{"vid":290,"value":"冠生园"},{"vid":291,"value":"Dettol/滴露"},{"vid":292,"value":"Amore/爱茉莉"},{"vid":293,"value":"第6感"},{"vid":66,"value":"Povos/奔腾"},{"vid":295,"value":"十月结晶"},{"vid":296,"value":"Avene/雅漾"},{"vid":297,"value":"HAERS/哈尔斯"},{"vid":298,"value":"Galanz/格兰仕"},{"vid":299,"value":"SHANGHAI STORY/上海故事"},{"vid":300,"value":"盐津铺子"},{"vid":301,"value":"SHISEIDO/资生堂"},{"vid":302,"value":"FUGUANG/富光"},{"vid":304,"value":"SAST/先科"},{"vid":67,"value":"太力"},{"vid":305,"value":"序言"},{"vid":306,"value":"徐福记"},{"vid":308,"value":"adidas/阿迪达斯"},{"vid":310,"value":"Hello Kitty/凯蒂猫"},{"vid":312,"value":"NIKE/耐克"},{"vid":313,"value":"Wenger/威戈"},{"vid":314,"value":"U.S. POLO ASSN./美国马球协会"},{"vid":315,"value":"Puma/彪马"},{"vid":317,"value":"Pigeon/贝亲"},{"vid":320,"value":"Home Organizer/溢彩年华"},{"vid":322,"value":"FIRS/杉杉"},{"vid":324,"value":"Dr Brown's/布朗博士"},{"vid":325,"value":"Olay/玉兰油"},{"vid":326,"value":"GREE/格力"},{"vid":328,"value":"SOFTTO/索芙特"},{"vid":331,"value":"ORION/好丽友"},{"vid":332,"value":"HEAD/海德"},{"vid":333,"value":"HYUNDAI"},{"vid":334,"value":"Orico/奥睿科"},{"vid":335,"value":"Franic/法兰琳卡"},{"vid":336,"value":"SEAMILD/西麦"},{"vid":339,"value":"Llano/绿巨能"},{"vid":340,"value":"Pampers/帮宝适"},{"vid":341,"value":"Lagostina/拉歌蒂尼"},{"vid":343,"value":"Durex/杜蕾斯"},{"vid":345,"value":"Colgate/高露洁"},{"vid":346,"value":"Pioneer/先锋"},{"vid":347,"value":"OSM/欧诗漫"},{"vid":349,"value":"都市牧场"},{"vid":351,"value":"Teenmix/天美意"},{"vid":352,"value":"QIAODAN/乔丹"},{"vid":353,"value":"COSMO LADY/都市丽人"},{"vid":354,"value":"ESE·Y/逸阳"},{"vid":355,"value":"TCL"},{"vid":356,"value":"Okamoto/冈本"},{"vid":359,"value":"Nestle/雀巢"},{"vid":361,"value":"粒上皇"},{"vid":362,"value":"Elasun/尚牌"},{"vid":363,"value":"Stride/炫迈"},{"vid":364,"value":"Listerine/李施德林"},{"vid":365,"value":"Hygienix/洁云"},{"vid":366,"value":"金冠"},{"vid":367,"value":"金锣"},{"vid":368,"value":"MeiLing/美菱"},{"vid":369,"value":"MAY FLOWER/五月花"},{"vid":71,"value":"Tempo/得宝"},{"vid":370,"value":"Innisfree/悦诗风吟"},{"vid":372,"value":"宝宝金水"},{"vid":373,"value":"ChaCheer/洽洽"},{"vid":375,"value":"统一"},{"vid":72,"value":"鲁花"},{"vid":379,"value":"Skyworth/创维"},{"vid":380,"value":"Huawei/华为"},{"vid":382,"value":"Frogprince/青蛙王子"},{"vid":383,"value":"BASEUS/倍思"},{"vid":389,"value":"Swatch/斯沃琪"},{"vid":390,"value":"BEKAHOS/百家好世"},{"vid":391,"value":"唇动"},{"vid":395,"value":"Momax/摩米士"},{"vid":396,"value":"萨啦咪"},{"vid":398,"value":"SEKKISEI/雪肌精"},{"vid":399,"value":"UNICHARM/尤妮佳"},{"vid":400,"value":"长帝"},{"vid":402,"value":"Gainreel/歌瑞尔"},{"vid":403,"value":"ICA"},{"vid":405,"value":"Wahaha/娃哈哈"},{"vid":406,"value":"相宜本草"},{"vid":407,"value":"OPPO"},{"vid":408,"value":"vivo"},{"vid":409,"value":"雕牌"},{"vid":410,"value":"DOUBLE STAR/双星"},{"vid":411,"value":"Chigo/志高"},{"vid":412,"value":"Samsonite/新秀丽"},{"vid":413,"value":"M&G/晨光"},{"vid":414,"value":"Littleswan/小天鹅"},{"vid":74,"value":"张裕"},{"vid":415,"value":"Truecolor/真彩"},{"vid":416,"value":"不二家"},{"vid":418,"value":"Moutai/茅台"},{"vid":419,"value":"Harson/哈森"},{"vid":420,"value":"劲牌"},{"vid":421,"value":"小天才"},{"vid":423,"value":"雅客"},{"vid":75,"value":"INMAN/茵曼"},{"vid":425,"value":"Teclast/台电"},{"vid":426,"value":"CHOW TAI FOOK/周大福"},{"vid":427,"value":"超能"},{"vid":429,"value":"GOLDENMONKEY/金丝猴"},{"vid":430,"value":"Feiyue/飞跃"},{"vid":431,"value":"喔喔"},{"vid":432,"value":"IJARL/亿嘉"},{"vid":76,"value":"FUANNA/富安娜"},{"vid":433,"value":"PEPCO/小猪班纳"},{"vid":435,"value":"海底捞"},{"vid":436,"value":"金龙鱼"},{"vid":437,"value":"LITTLE SHEEP/小肥羊"},{"vid":439,"value":"The Saem/得鲜"},{"vid":440,"value":"Clean&Clear/可伶可俐"},{"vid":441,"value":"YEARCON/意尔康"},{"vid":442,"value":"Tide/汰渍"},{"vid":40,"value":"COOKER KING/炊大皇"},{"vid":77,"value":"KONKA/康佳"},{"vid":443,"value":"Hisense/海信"},{"vid":446,"value":"Relea/物生物"},{"vid":447,"value":"Rejoice/飘柔"},{"vid":448,"value":"Snowhite/白雪"},{"vid":449,"value":"PILOT/百乐"},{"vid":450,"value":"Lenovo/联想"},{"vid":451,"value":"双汇"},{"vid":452,"value":"Asus/华硕"},{"vid":453,"value":"六神"},{"vid":454,"value":"Maxam/美加净"},{"vid":455,"value":"MG/美即"},{"vid":458,"value":"Beiens/贝恩施"},{"vid":459,"value":"BLACKVIEW/凌度"},{"vid":460,"value":"达利园"},{"vid":78,"value":"SEEYOUNG/滋源"},{"vid":461,"value":"豆本豆"},{"vid":463,"value":"德力西"},{"vid":466,"value":"金稻"},{"vid":470,"value":"NUK"},{"vid":471,"value":"Nature's Way/佳思敏"},{"vid":472,"value":"JOYNCLEON/婧麒"},{"vid":476,"value":"香香侠"},{"vid":80,"value":"DURALEX/多莱斯"},{"vid":484,"value":"Bobei Elephant/邦贝小象"},{"vid":81,"value":"Pisen/品胜"},{"vid":493,"value":"无敌米奇"},{"vid":495,"value":"Yunya/韵娅"},{"vid":497,"value":"久练"},{"vid":82,"value":"Swisse/斯维诗"},{"vid":502,"value":"婴之友"},{"vid":509,"value":"贝咪咪"},{"vid":510,"value":"EBAY/易贝乐"},{"vid":511,"value":"妙纬"},{"vid":512,"value":"致亲致爱"},{"vid":519,"value":"奇尔比"},{"vid":83,"value":"GNC/健安喜"},{"vid":520,"value":"Whale's love/鲸爱"},{"vid":524,"value":"Aveeno/艾惟诺"},{"vid":525,"value":"Sebamed/施巴"},{"vid":526,"value":"Johnson's Baby/强生婴儿"},{"vid":527,"value":"郁美净"},{"vid":528,"value":"AVENT/新安怡"},{"vid":84,"value":"Hodo/红豆"},{"vid":531,"value":"润本"},{"vid":532,"value":"Knfamil/康婴健"},{"vid":533,"value":"UBEE/幼蓓"},{"vid":534,"value":"ANNUNCIATION/十月天使"},{"vid":536,"value":"Nuby/努比"},{"vid":41,"value":"Septwolves/七匹狼"},{"vid":537,"value":"Ein.b/怡恩贝"},{"vid":538,"value":"Ddung/冬己"},{"vid":539,"value":"Wyeth/惠氏"},{"vid":540,"value":"Matern'ella/子初"},{"vid":541,"value":"布朗天使"},{"vid":543,"value":"植护"},{"vid":544,"value":"贝倍舒"},{"vid":85,"value":"CHAHUA/茶花"},{"vid":545,"value":"LIEBE BABY/利贝婴儿"},{"vid":546,"value":"Excelamb/皇家婴童"},{"vid":549,"value":"Spongebob Squarepants/海绵宝宝"},{"vid":550,"value":"BABYBBZ/棒棒猪"},{"vid":551,"value":"KIDSME/亲亲我"},{"vid":552,"value":"耶丽娅"},{"vid":86,"value":"Tonlion/唐狮"},{"vid":553,"value":"Garfield/加菲猫"},{"vid":554,"value":"日康"},{"vid":555,"value":"KUB/可优比"},{"vid":556,"value":"Babyhood/世纪宝贝"},{"vid":557,"value":"Snow Bear/小白熊"},{"vid":558,"value":"MUNCHKIN/满趣健"},{"vid":559,"value":"ALCOCO/爱伦可可"},{"vid":560,"value":"ONYA/然雅"},{"vid":562,"value":"Palmbaby/手心宝贝"},{"vid":87,"value":"Bear/小熊"},{"vid":563,"value":"德佑"},{"vid":564,"value":"PIBB/漂亮宝贝"},{"vid":565,"value":"Octmami/十月妈咪"},{"vid":566,"value":"开丽"},{"vid":567,"value":"Usbaby/优生"},{"vid":568,"value":"REIZBABY/运智贝"},{"vid":569,"value":"Elepbaby/象宝宝"},{"vid":570,"value":"天真贝比"},{"vid":571,"value":"Yijan/易简"},{"vid":572,"value":"Enssu/樱舒"},{"vid":88,"value":"Romon/罗蒙"},{"vid":574,"value":"奥克欧"},{"vid":575,"value":"Classic Teddy/精典泰迪"},{"vid":576,"value":"Como tomo/可么多么"},{"vid":577,"value":"Potato/小土豆"},{"vid":578,"value":"V-coool"},{"vid":580,"value":"贝恩宝"},{"vid":89,"value":"REDDRAGONFLY/红蜻蜓"},{"vid":582,"value":"Bebear/抱抱熊"},{"vid":583,"value":"Eight-day/星期八"},{"vid":584,"value":"猫贝乐"},{"vid":585,"value":"Legendarybabe/传奇贝贝"},{"vid":586,"value":"皓淳"},{"vid":587,"value":"OPEN BABY/欧培"},{"vid":589,"value":"班妮宝贝"},{"vid":590,"value":"小飞象"},{"vid":591,"value":"美高乐"},{"vid":90,"value":"Oulin/欧琳"},{"vid":593,"value":"QinN/亲恩"},{"vid":595,"value":"Little bean/小豆苗"},{"vid":596,"value":"雅芝敏"},{"vid":598,"value":"ROYAL SONNY/皇家宝贝"},{"vid":600,"value":"三森"},{"vid":601,"value":"飘飘龙"},{"vid":91,"value":"心相印"},{"vid":602,"value":"左岸右转"},{"vid":603,"value":"HAPPY DINO/小龙哈彼"},{"vid":604,"value":"Royalbaby/优贝"},{"vid":606,"value":"健儿"},{"vid":607,"value":"Lecoco/乐卡"},{"vid":608,"value":"神舟鸟"},{"vid":609,"value":"童悦"},{"vid":610,"value":"Auby/澳贝"},{"vid":92,"value":"Daphne/达芙妮"},{"vid":611,"value":"Manon Des Pres/麦侬贝儿"},{"vid":612,"value":"HUILE TOYS/汇乐玩具"},{"vid":613,"value":"Lalababy/拉拉布书"},{"vid":614,"value":"Smoby"},{"vid":615,"value":"Mibokids/米宝兔"},{"vid":617,"value":"火火兔"},{"vid":618,"value":"育儿宝"},{"vid":619,"value":"爱婴乐"},{"vid":620,"value":"SHILOH"},{"vid":93,"value":"BRITA/碧然德"},{"vid":622,"value":"Hape"},{"vid":623,"value":"童畅"},{"vid":624,"value":"Snaen/斯纳恩"},{"vid":625,"value":"Vtech/伟易达"},{"vid":628,"value":"K'SKIDS/奇智奇思"},{"vid":629,"value":"萌乐乐"},{"vid":630,"value":"甜逗"},{"vid":42,"value":"BE&CHEERY/百草味"},{"vid":631,"value":"AOLE-HW/澳乐"},{"vid":632,"value":"优乐恩"},{"vid":633,"value":"美贝乐"},{"vid":635,"value":"Winfun/英纷"},{"vid":636,"value":"Jollybaby"},{"vid":637,"value":"QZM/巧之木"},{"vid":638,"value":"Meitoku/明德"},{"vid":639,"value":"BEI JESS/贝杰斯"},{"vid":640,"value":"纳份爱"},{"vid":641,"value":"喜迪奇"},{"vid":642,"value":"恋小猪"},{"vid":644,"value":"福孩儿"},{"vid":645,"value":"Mamma"},{"vid":646,"value":"蜜悠克"},{"vid":647,"value":"MONZON/漫踪"},{"vid":648,"value":"XST/鑫思特"},{"vid":649,"value":"乐乐鱼"},{"vid":650,"value":"Topbright/特宝儿"},{"vid":94,"value":"Walch/威露士"},{"vid":651,"value":"贝乐康"},{"vid":652,"value":"源乐堡"},{"vid":653,"value":"BABY BANANA/香蕉宝宝"},{"vid":654,"value":"怀乐"},{"vid":655,"value":"MWZ/木丸子"},{"vid":656,"value":"皇儿"},{"vid":657,"value":"顽兔"},{"vid":659,"value":"Saors/小硕士"},{"vid":660,"value":"幼得乐"},{"vid":95,"value":"J&M/快乐玛丽"},{"vid":661,"value":"Toys/乐吉儿"},{"vid":662,"value":"Hobby Tree/哈比树"},{"vid":663,"value":"佑童"},{"vid":664,"value":"JuLeBaby/聚乐宝贝"},{"vid":666,"value":"希乐多"},{"vid":667,"value":"涩咪咪"},{"vid":668,"value":"BB MYST/神秘岛"},{"vid":96,"value":"EMSA/爱慕莎"},{"vid":671,"value":"丹妮奇特"},{"vid":672,"value":"曼龙"},{"vid":673,"value":"Coleshome/蔻丝"},{"vid":674,"value":"Dr.B/娃娃博士"},{"vid":675,"value":"GD FIVESTAR TOYS/五星玩具"},{"vid":676,"value":"帕克伦"},{"vid":677,"value":"Nukied/纽奇"},{"vid":678,"value":"BabyGo/宝贝去哪儿"},{"vid":679,"value":"BeiE/贝易"},{"vid":680,"value":"HoneyDIY"},{"vid":681,"value":"阔步"},{"vid":682,"value":"Rainbow Kingdo/彩虹王国"},{"vid":683,"value":"Tinylove"},{"vid":684,"value":"阿卡手工"},{"vid":685,"value":"Chicco/智高"},{"vid":686,"value":"Hui Cheng Toys/惠诚玩具"},{"vid":687,"value":"TheNorthEhome/北国e家"},{"vid":688,"value":"Berica/贝瑞佳"},{"vid":689,"value":"依妹儿"},{"vid":690,"value":"海润阳光"},{"vid":98,"value":"Donlim/东菱"},{"vid":691,"value":"CROWNED LOVE/蒂爱"},{"vid":692,"value":"XIN LE TOYS/鑫乐"},{"vid":693,"value":"淘嘟嘟"},{"vid":694,"value":"安配"},{"vid":695,"value":"和乐族"},{"vid":696,"value":"IQANGEL/爱奇天使"},{"vid":697,"value":"开心玛特"},{"vid":698,"value":"BABYGREAT"},{"vid":699,"value":"冠腾"},{"vid":700,"value":"乐智在"},{"vid":99,"value":"Ronshen/容声"},{"vid":702,"value":"MediaBear/麦迪熊"},{"vid":704,"value":"思贝"},{"vid":705,"value":"哈喜屋"},{"vid":707,"value":"俏娃宝贝"},{"vid":708,"value":"铭塔"},{"vid":709,"value":"汇祥云"},{"vid":100,"value":"Seven 7/柒牌"},{"vid":711,"value":"皇室"},{"vid":712,"value":"迪孚"},{"vid":713,"value":"WOODEN TOYS FAMILY/木玩世家"},{"vid":714,"value":"Ubbie/优彼"},{"vid":715,"value":"Temi/糖米"},{"vid":716,"value":"CMUMM/木妈妈"},{"vid":717,"value":"Bel/博尔乐"},{"vid":718,"value":"Moondog/月亮狗"},{"vid":719,"value":"韵美"},{"vid":101,"value":"Panasonic/松下"},{"vid":720,"value":"麦田"},{"vid":721,"value":"New wood city/新木城"},{"vid":722,"value":"Nattou"},{"vid":723,"value":"B./比乐"},{"vid":725,"value":"CF/创发"},{"vid":726,"value":"幸福豆"},{"vid":727,"value":"童牛"},{"vid":728,"value":"小猪奕奕"},{"vid":729,"value":"BrightStarts"},{"vid":43,"value":"SUPOR/苏泊尔"},{"vid":102,"value":"ERAL/艾莱依"},{"vid":730,"value":"乖乖熊"},{"vid":731,"value":"诺澳"},{"vid":733,"value":"WANTONGLE/万童乐"},{"vid":734,"value":"iWAn"},{"vid":735,"value":"Weiwei Wooden Plays/薇薇木玩"},{"vid":736,"value":"BABY BOX/贝博氏"},{"vid":737,"value":"启启"},{"vid":738,"value":"Cheerbb/橙爱"},{"vid":739,"value":"PAOWANG"},{"vid":103,"value":"Dior/迪奥"},{"vid":740,"value":"Justbecause"},{"vid":741,"value":"益米"},{"vid":742,"value":"树宝宝"},{"vid":743,"value":"南国婴宝"},{"vid":744,"value":"Kaloo"},{"vid":745,"value":"笑娃娃"},{"vid":746,"value":"达拉"},{"vid":748,"value":"Jinmei Season/津美思辰"},{"vid":749,"value":"vSuch/尚趣"},{"vid":104,"value":"BEYOND/博洋"},{"vid":751,"value":"星梦圆"},{"vid":752,"value":"Paperfox/纸贵满堂"},{"vid":753,"value":"Goodplus/好加"},{"vid":754,"value":"Lijian"},{"vid":755,"value":"SHINY STAR/小巨星"},{"vid":756,"value":"XJD"},{"vid":757,"value":"环奇"},{"vid":758,"value":"Yaolan/遥蓝"},{"vid":759,"value":"MDB"},{"vid":760,"value":"宣奇"},{"vid":761,"value":"林点"},{"vid":762,"value":"Minimoto/小米米"},{"vid":763,"value":"十二色童话"},{"vid":764,"value":"锐帕"},{"vid":765,"value":"Sunnybaby/阳光宝贝"},{"vid":766,"value":"蜜居"},{"vid":767,"value":"Leleyu"},{"vid":768,"value":"卡卡贝儿"},{"vid":769,"value":"我要的"},{"vid":770,"value":"Naef"},{"vid":771,"value":"Buddyfun/贝芬乐"},{"vid":772,"value":"Zalami/智乐妙"},{"vid":773,"value":"ZIPPYMAT"},{"vid":774,"value":"Wtoy"},{"vid":775,"value":"WISDOM COOL FORT/智酷堡"},{"vid":776,"value":"益知乐"},{"vid":777,"value":"XIN YE TOYS/歆业玩具"},{"vid":778,"value":"Senteng"},{"vid":779,"value":"欧锐"},{"vid":781,"value":"淘乐智汇"},{"vid":782,"value":"Little tikes/小泰克"},{"vid":783,"value":"HLX/好来喜"},{"vid":784,"value":"魅力娃"},{"vid":785,"value":"YISBRO/益之宝"},{"vid":786,"value":"宜爽儿"},{"vid":787,"value":"Mamily/妈媚丽"},{"vid":788,"value":"CARTELO/卡帝乐鳄鱼"},{"vid":789,"value":"YGAOR/永高人"},{"vid":790,"value":"猫太子"},{"vid":791,"value":"芭芭鸭"},{"vid":792,"value":"小米步"},{"vid":795,"value":"HOBIBEAR/哈比熊"},{"vid":108,"value":"初语"},{"vid":796,"value":"木木屋"},{"vid":798,"value":"巧灵珑"},{"vid":799,"value":"梦娜"},{"vid":801,"value":"歌庆"},{"vid":804,"value":"乐乐趣"},{"vid":805,"value":"Warrior/回力"},{"vid":806,"value":"憨豆龙"},{"vid":808,"value":"7-PE/七波辉"},{"vid":809,"value":"Strolex/舒童乐"},{"vid":810,"value":"人本"},{"vid":811,"value":"沐阳"},{"vid":812,"value":"木木兔"},{"vid":814,"value":"GGBOND/猪猪侠"},{"vid":44,"value":"CHANDO/自然堂"},{"vid":110,"value":"ASD/爱仕达"},{"vid":817,"value":"小脚鸭"},{"vid":818,"value":"家得宝"},{"vid":821,"value":"Dadida/嗒嘀嗒"},{"vid":822,"value":"BEINGMATE/贝因美"},{"vid":823,"value":"PINDO/品度"},{"vid":112,"value":"OPPLE/欧普照明"},{"vid":829,"value":"Mead Johnson/美赞臣"},{"vid":830,"value":"几米熊"},{"vid":831,"value":"劲爽"},{"vid":832,"value":"润爽"},{"vid":833,"value":"Babyexpert/宝宝专家"},{"vid":836,"value":"ABQ"},{"vid":837,"value":"COGA/酷嘎"},{"vid":113,"value":"PEAK/匹克"},{"vid":838,"value":"妙优童"},{"vid":841,"value":"十年寒窗"},{"vid":854,"value":"大红鹰"},{"vid":863,"value":"Fish bobo/宝宝鱼"},{"vid":116,"value":"SNOOPY/史努比"},{"vid":865,"value":"淘亦智"},{"vid":867,"value":"芙蓉天使"},{"vid":868,"value":"Hw/蘅芜"},{"vid":869,"value":"溜达猫"},{"vid":872,"value":"Caslon/卡西龙"},{"vid":873,"value":"Baby Duck/贝贝鸭"},{"vid":117,"value":"木林森"},{"vid":883,"value":"韩熙贞"},{"vid":887,"value":"Kafellon/凯芙兰"},{"vid":888,"value":"UKISS/悠珂思"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":310,"name":"品牌","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":true,"is_sku":false,"values":[{"vid":10573,"value":"蚕丝"},{"vid":10583,"value":"PU"},{"vid":10629,"value":"其它"},{"vid":12839,"value":"pvc"},{"vid":12854,"value":"塑料"},{"vid":14092,"value":"硅胶"},{"vid":18363,"value":"涤棉混纺"},{"vid":18364,"value":"棉麻混纺"},{"vid":30873,"value":"织物"},{"vid":58791,"value":"皮革"},{"vid":88538,"value":"绒布"},{"vid":88541,"value":"原木浆纸"},{"vid":12962,"value":"涤纶(聚酯纤维)"},{"vid":12836,"value":"tpu"},{"vid":10571,"value":"棉"},{"vid":10575,"value":"化纤"},{"vid":12827,"value":"布"},{"vid":12829,"value":"绸缎"},{"vid":14093,"value":"无纺布"},{"vid":59036,"value":"聚丙烯(pp)"},{"vid":71636,"value":"聚乙烯(PE)"},{"vid":87499,"value":"皮"},{"vid":88536,"value":"蕾丝"},{"vid":88540,"value":"雪尼尔"},{"vid":172399,"value":"可降解材料"},{"vid":1666289,"value":"水晶板"},{"vid":14091,"value":"麻棉"},{"vid":58987,"value":"毛绒"},{"vid":1666288,"value":"胶垫"},{"vid":12838,"value":"EVA"},{"vid":407570,"value":"PEVA"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":317,"name":"材质","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":false,"is_sku":false,"values":[{"vid":10493,"value":"复古"},{"vid":10502,"value":"欧美"},{"vid":12896,"value":"田园"},{"vid":13051,"value":"中式"},{"vid":13056,"value":"北欧风"},{"vid":55441,"value":"日韩"},{"vid":59122,"value":"简约现代"},{"vid":10506,"value":"民族风"},{"vid":13052,"value":"韩式"},{"vid":13053,"value":"日式"},{"vid":13054,"value":"美式"},{"vid":13055,"value":"东南亚"},{"vid":13057,"value":"地中海"},{"vid":59126,"value":"明清古典"},{"vid":59130,"value":"新古典"},{"vid":65712,"value":"欧式"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":322,"name":"风格","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":true,"is_sku":false,"values":[{"vid":390864,"value":"一次性"},{"vid":525369,"value":"非一次性"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":438,"name":"产品类型","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":false,"is_sku":false,"values":[{"vid":56749,"value":"条纹"},{"vid":56750,"value":"格子"},{"vid":56752,"value":"卡通动漫"},{"vid":56754,"value":"纯色"},{"vid":87550,"value":"几何图案"},{"vid":87554,"value":"植物花卉"},{"vid":113896,"value":"风景"},{"vid":790578,"value":"渐变"},{"vid":949590,"value":"心形"},{"vid":1666283,"value":"喜庆"},{"vid":1666284,"value":"叶子"},{"vid":1666285,"value":"圆圈"},{"vid":1666324,"value":"草"},{"vid":1666325,"value":"菱形"},{"vid":87553,"value":"人物"},{"vid":113900,"value":"字母数字"},{"vid":1486886,"value":"迷彩"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":3,"min_value":"","can_note":false,"ref_pid":750,"name":"图案","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":true,"is_sku":false,"value_precision":1,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":0,"min_value":"0","can_note":false,"ref_pid":1135,"name":"厚度","value_unit":["cm","mm"],"max_value":"10","property_value_type":1},{"is_sale":false,"is_important":false,"is_sku":false,"values":[{"vid":59097,"value":"会议室"},{"vid":83778,"value":"家用"},{"vid":83779,"value":"酒店"},{"vid":1400048,"value":"教室"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":3,"min_value":"","can_note":false,"ref_pid":802,"name":"适用场景","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":false,"is_sku":false,"values":[{"vid":1811174,"value":"圆角"},{"vid":1811175,"value":"非圆角"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":2867,"name":"是否圆角设计","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":true,"is_sku":false,"values":[{"vid":13041,"value":"提花"},{"vid":14407,"value":"磨砂"},{"vid":173404,"value":"印花"},{"vid":369239,"value":"植绒"},{"vid":1830351,"value":"亮面"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":368,"name":"工艺","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":true,"is_sku":false,"values":[{"vid":13017,"value":"长方形"},{"vid":13019,"value":"圆形"},{"vid":13020,"value":"正方形"},{"vid":58705,"value":"椭圆形"},{"vid":1631470,"value":"异型"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":362,"name":"形状","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":true,"is_sku":false,"values":[{"vid":75312,"value":"优等品"},{"vid":75313,"value":"合格品"},{"vid":75314,"value":"一等品"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":979,"name":"质检标准","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":false,"is_sku":false,"values":[{"vid":10508,"value":"蝴蝶结"},{"vid":10509,"value":"流苏"},{"vid":10514,"value":"镂空"},{"vid":10526,"value":"褶皱"},{"vid":10543,"value":"纽扣"},{"vid":10552,"value":"拼接"},{"vid":13208,"value":"花边"},{"vid":13347,"value":"蕾丝边"},{"vid":16266,"value":"水洗"},{"vid":1177997,"value":"碎花"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":3,"min_value":"","can_note":false,"ref_pid":321,"name":"流行元素","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":false,"is_sku":false,"values":[{"vid":13397,"value":"抗菌"},{"vid":30812,"value":"防水"},{"vid":764422,"value":"防烫"},{"vid":1351681,"value":"防油"},{"vid":1538456,"value":"免洗"},{"vid":483071,"value":"防尘"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":3,"min_value":"","can_note":false,"ref_pid":351,"name":"功能","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":true,"is_sku":false,"values":[{"vid":24044,"value":"中国大陆"},{"vid":24046,"value":"其他海外地区"},{"vid":24047,"value":"日本"},{"vid":24048,"value":"欧洲"},{"vid":24049,"value":"韩国"},{"vid":32782,"value":"美国"},{"vid":32783,"value":"港澳台"},{"vid":32784,"value":"东南亚"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":482,"name":"产地","value_unit":[""],"max_value":"","property_value_type":0}],"choose_all_qualify_spec":false},"goods_sku_rule":{"price_range_ratio":20.0,"spec_num_limit":44},"two_pieces_discount_rule":{"if_must_two_pieces_discount":true,"max_two_pieces_discount":99,"min_two_pieces_discount":50,"recommend_two_pieces_discount":95},"goods_service_rule":{"goods_service_rule_map":{"1":{"folt_rule":1,"can_select_delivery_type":false,"quan_guo_lian_bao_rule":0,"refundable_rule":1,"privacy_delivery_rule":0,"delivery_one_day_rule":1,"zhi_huan_bu_xiu_rule":0,"lack_of_weight_claim_rule":0,"shipment_limit_second_list":[86400,172800],"bad_claim_rule":0},"2":{"folt_rule":1,"can_select_delivery_type":false,"quan_guo_lian_bao_rule":0,"refundable_rule":1,"privacy_delivery_rule":0,"delivery_one_day_rule":1,"zhi_huan_bu_xiu_rule":0,"lack_of_weight_claim_rule":0,"shipment_limit_second_list":[86400,172800],"bad_claim_rule":0}},"goods_type_list":[1,2]},"request_id":"17748680931228322"}} // 主图 + int cnt = 0; string carousel_gallery = ""; foreach (var img in prodInfo.detail.galleries.Where(g => g.type ==1).ToList()) { + cnt++; + Invoke(new Action(() => + { + cell.Value = "正在上传主图 " + cnt + "/" + prodInfo.detail.galleries.Where(g => g.type == 1).ToList().Count; + })); + string errMsg = ""; var imgBase64 = WXForms.ProductForms.WXDBProdUploadForm.GetImgBase64ForApi(out errMsg, img.url, false, false); if (!string.IsNullOrEmpty(errMsg)) { - return errMsg; + return "主图初始化失败 " + errMsg; } var pddUpImgApi = new PddApi(shop); @@ -6861,7 +6914,7 @@ Content-Type: image/jpeg errMsg = BaseRegex.GetStringJson(ref pddUpImgApiRst, "error_msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = pddUpImgApiRst; - return errMsg; + return "主图上传失败 " + errMsg; } carousel_gallery += "\"" + BaseRegex.GetStringJson(ref pddUpImgApiRst, "image_url") + "\","; } @@ -6869,6 +6922,11 @@ Content-Type: image/jpeg pddApi.Data["cat_id"] = prodInfo.detail.cat_id; + Invoke(new Action(() => + { + cell.Value = "正在选取运费模板"; + })); + // 运费模板 var pddAddressApi = new PddApi(shop); pddAddressApi.Data["page"] = 1; var pddAddressApiRst = pddAddressApi.PddGoodsLogisticsTemplateGet(); @@ -6877,7 +6935,7 @@ Content-Type: image/jpeg var errMsg = BaseRegex.GetStringJson(ref pddAddressApiRst, "error_msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = pddAddressApiRst; - return errMsg; + return "运费模板获取失败 " + errMsg; } var template_id = BaseRegex.GetStringJson(ref pddAddressApiRst, "template_id"); if (template_id == null) @@ -6886,18 +6944,25 @@ Content-Type: image/jpeg } pddApi.Data["cost_template_id"] = template_id; - pddApi.Data["country_id"] = 0; + pddApi.Data["country_id"] = 0; // 国内商品默认填0 //pddApi.Data["delivery_type"] = 1; // delivery_type INTEGER 非必填 发货方式。0:无物流发货;1:有物流发货。 // 详情图 + cnt = 0; string detail_gallery = ""; foreach (var img in prodInfo.detail.galleries.Where(g => g.type == 2).ToList()) { + cnt++; + Invoke(new Action(() => + { + cell.Value = "正在上传详情图 " + cnt + "/" + prodInfo.detail.galleries.Where(g => g.type == 2).ToList().Count; + })); + string errMsg = ""; var imgBase64 = WXForms.ProductForms.WXDBProdUploadForm.GetImgBase64ForApi(out errMsg, img.url, false, false); if (!string.IsNullOrEmpty(errMsg)) { - return errMsg; + return "详情图初始化失败 " + errMsg; } var pddUpImgApi = new PddApi(shop); @@ -6908,7 +6973,7 @@ Content-Type: image/jpeg errMsg = BaseRegex.GetStringJson(ref pddUpImgApiRst, "error_msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = pddUpImgApiRst; - return errMsg; + return "详情图上传失败 " + errMsg; } detail_gallery += "\"" + BaseRegex.GetStringJson(ref pddUpImgApiRst, "image_url") + "\","; } @@ -6918,8 +6983,118 @@ Content-Type: image/jpeg pddApi.Data["goods_desc"] = prodInfo.detail.goods_desc; pddApi.Data["goods_name"] = prodInfo.detail.goods_name; - //todo 非必填 - pddApi.Data["goods_properties"] = "[]"; + Invoke(new Action(() => + { + cell.Value = "正在生成属性"; + })); + // 获取类目属性模板 + var pddApiCatRule = new PddApi(shop); + pddApiCatRule.Data["cat_id"] = prodInfo.detail.cat_id; + var catRuleGetRst = pddApiCatRule.PddGoodsCatRuleGet(); + if (!catRuleGetRst.Contains("\"cat_rule_get_response\"")) + { + var errMsg = BaseRegex.GetStringJson(ref catRuleGetRst, "error_msg"); + if (string.IsNullOrEmpty(errMsg)) + errMsg = catRuleGetRst; + return "类目属性初始化失败 " + errMsg; + } + //{"cat_rule_get_response":{"goods_properties_rule":{"input_max_spec_num":0,"properties":[{"is_sale":false,"is_important":false,"is_sku":false,"values":[{"vid":4643510,"value":"无品牌/无注册商标"},{"vid":1280848,"value":"画南头"},{"vid":30601,"value":"固竹匠"},{"vid":220778,"value":"浪漫喜事"},{"vid":334660,"value":"梦瑾"},{"vid":130470,"value":"朋意"},{"vid":12034,"value":"THEBEAST/野兽派"},{"vid":1942,"value":"Uchino/内野"},{"vid":34231,"value":"NITORI/宜得利家居"},{"vid":6439,"value":"Brother/兄弟"},{"vid":8553,"value":"Zara Home"},{"vid":8554,"value":"MUJI/无印良品"},{"vid":14223,"value":"VERSACE/范思哲"},{"vid":18534,"value":"Mtg"},{"vid":19991,"value":"SINGER/胜家"},{"vid":196848,"value":"Hoyo"},{"vid":224544,"value":"亚朵星球"},{"vid":280,"value":"KING SHORE/金号"},{"vid":327,"value":"SEMIR/森马"},{"vid":68,"value":"MERCURY/水星家纺"},{"vid":44617,"value":"LUOLAI/罗莱"},{"vid":386,"value":"Xiaomi/小米"},{"vid":394,"value":"Lock&Lock/乐扣乐扣"},{"vid":53109,"value":"CHRISTY"},{"vid":5702,"value":"东升"},{"vid":5727,"value":"DOHIA/多喜爱"},{"vid":561,"value":"Purcotton/全棉时代"},{"vid":6159,"value":"金蝉"},{"vid":6770,"value":"MENDALE/梦洁"},{"vid":8882,"value":"HLA/海澜之家"},{"vid":9570,"value":"MINISO/名创优品"},{"vid":119495,"value":"AUSTTBABY"},{"vid":119914,"value":"棉森"},{"vid":12031,"value":"大朴"},{"vid":128592,"value":"亿恩忆"},{"vid":12598,"value":"怡沁园"},{"vid":134564,"value":"茱莉亚"},{"vid":14220,"value":"JEANSWEST/真维斯"},{"vid":16898,"value":"奥帝罗"},{"vid":16900,"value":"德奇力"},{"vid":17523,"value":"Bravo/馨而乐"},{"vid":17529,"value":"Grace·orchid/洁丽雅·兰"},{"vid":165321,"value":"孩子王"},{"vid":17819,"value":"EverShine/永亮"},{"vid":172186,"value":"BULULOM/布鲁罗曼"},{"vid":173,"value":"南极人"},{"vid":192015,"value":"Mionsoo/棉上"},{"vid":192617,"value":"Lovhome/乐巢家居"},{"vid":193562,"value":"Tumei Home Collection/图美寝饰"},{"vid":195662,"value":"Jrb/嘉瑞宝"},{"vid":197759,"value":"Gafuhome"},{"vid":202708,"value":"LATEX SYSTEMS CO.,LTD."},{"vid":1746,"value":"梦雅莉"},{"vid":1747,"value":"虹原风尚"},{"vid":1748,"value":"LUOLANNI/罗兰妮"},{"vid":1749,"value":"梓晨"},{"vid":1752,"value":"LORiCA/骆易家"},{"vid":1769,"value":"BLISS/百丽丝"},{"vid":215899,"value":"竹月阁"},{"vid":216546,"value":"荣邦"},{"vid":200,"value":"GRACE/洁丽雅"},{"vid":1957,"value":"黄古林"},{"vid":245780,"value":"yesland雅熙莱帝"},{"vid":2105,"value":"SANLI/三利"},{"vid":2106,"value":"CARESEEN/康尔馨"},{"vid":262384,"value":"爱络"},{"vid":27838,"value":"ABS/爱彼此"},{"vid":275849,"value":"伊丝绮"},{"vid":280996,"value":"Qisilove/前世有约"},{"vid":281160,"value":"Ppw"},{"vid":252,"value":"BEJIROG/北极绒"},{"vid":283511,"value":"梦蝶莎"},{"vid":2675,"value":"芳华"},{"vid":32611,"value":"TY LIVE/田园生活"},{"vid":302922,"value":"一米"},{"vid":32853,"value":"温恋"},{"vid":32879,"value":"WS/伟殳家居"},{"vid":32881,"value":"港龙"},{"vid":32882,"value":"亚亨"},{"vid":273,"value":"Disney/迪士尼"},{"vid":33880,"value":"Aqara"},{"vid":294,"value":"洁玉"},{"vid":303,"value":"网易严选"},{"vid":3274,"value":"A-LIFE/最生活"},{"vid":369086,"value":"山花"},{"vid":373614,"value":"五洲"},{"vid":329,"value":"BOBDOG/巴布豆"},{"vid":382380,"value":"SouthLife/南方生活"},{"vid":330,"value":"Montagut/梦特娇"},{"vid":69,"value":"LOVO/乐蜗"},{"vid":3602,"value":"Curbblan/卡伴"},{"vid":3897,"value":"知梦人"},{"vid":45598,"value":"SAINTMARC/尚玛可"},{"vid":45746,"value":"SINOMAX/赛诺"},{"vid":45808,"value":"SOMERELLE/安睡宝"},{"vid":45938,"value":"SUNVIM/孚日"},{"vid":397,"value":"童泰"},{"vid":464223,"value":"Yuniku/优尼可"},{"vid":4602,"value":"Jago/佳奥"},{"vid":4657,"value":"四季帘华"},{"vid":517644,"value":"家顿"},{"vid":519506,"value":"MENBORY/梦宝莉"},{"vid":532306,"value":"MENDALE HOME"},{"vid":781538,"value":"4monster"},{"vid":5240,"value":"春天十字绣"},{"vid":5247,"value":"HD/惠多"},{"vid":65402,"value":"梦雯"},{"vid":842952,"value":"赛勒"},{"vid":846015,"value":"墨斗鱼"},{"vid":5832,"value":"8H"},{"vid":923181,"value":"大江(地垫)"},{"vid":950059,"value":"甄简良品"},{"vid":79195,"value":"伊佳仁"},{"vid":79198,"value":"雅熙莱帝"},{"vid":6958,"value":"轻生活"},{"vid":7347,"value":"TANGY/天意"},{"vid":7351,"value":"FREETEX"},{"vid":94190,"value":"冬阳"},{"vid":96868,"value":"硕木"},{"vid":97393,"value":"LOFTEX/亚光"},{"vid":97771,"value":"彩朵朵"},{"vid":9254,"value":"AiSleep/睡眠博士"},{"vid":9709,"value":"HD/华德"},{"vid":9780,"value":"欧意"},{"vid":9942,"value":"百思寒"},{"vid":107350,"value":"布蝶轩"},{"vid":108166,"value":"夕姿"},{"vid":12165,"value":"一朵"},{"vid":12549,"value":"金柒"},{"vid":1286,"value":"BONAS/宝娜斯"},{"vid":17569,"value":"恩兴"},{"vid":18231,"value":"多沃"},{"vid":171,"value":"La Chapelle/拉夏贝尔"},{"vid":1740,"value":"简柔"},{"vid":1745,"value":"毛毛雨"},{"vid":216088,"value":"后构想"},{"vid":22820,"value":"艾贝德"},{"vid":216566,"value":"赛丽尔"},{"vid":247368,"value":"巾格格"},{"vid":248823,"value":"泰普诺"},{"vid":262360,"value":"赛维丝"},{"vid":32852,"value":"唯品七彩虹"},{"vid":32854,"value":"铭悦"},{"vid":32880,"value":"已庚"},{"vid":32885,"value":"美岸"},{"vid":32886,"value":"满天礼"},{"vid":32888,"value":"财领万家"},{"vid":358525,"value":"N&L"},{"vid":344,"value":"Deli/得力"},{"vid":39,"value":"恒源祥"},{"vid":425929,"value":"PATEX(泰国)"},{"vid":378,"value":"张小泉"},{"vid":51398,"value":"Mustela/妙思乐"},{"vid":4847,"value":"正帆"},{"vid":754015,"value":"SPUER/斯普尔"},{"vid":5225,"value":"朗格"},{"vid":5227,"value":"伊梦兮雨"},{"vid":66780,"value":"恒亚斯地毯"},{"vid":5963,"value":"黛安妲"},{"vid":74350,"value":"布花朵朵"},{"vid":6768,"value":"MONALISA/蒙娜丽莎"},{"vid":82037,"value":"谷今"},{"vid":8997,"value":"CRYSTAL SHINE RED/晶照红"},{"vid":9132,"value":"靠艺"},{"vid":97394,"value":"MHALE/平实美学"},{"vid":114,"value":"NICED/奈士迪"},{"vid":1042,"value":"恒澍"},{"vid":36,"value":"Pelliot/伯希和"},{"vid":45,"value":"Bosideng/波司登"},{"vid":119,"value":"五粮液"},{"vid":905,"value":"CAUDALIE/欧缇丽"},{"vid":906,"value":"Cetaphil/丝塔芙"},{"vid":907,"value":"CHANEL/香奈儿"},{"vid":908,"value":"Clarins/娇韵诗"},{"vid":120,"value":"Casio/卡西欧"},{"vid":911,"value":"Clinique/倩碧"},{"vid":912,"value":"COGI/高姿"},{"vid":913,"value":"Coreana/高丽雅娜"},{"vid":915,"value":"DAISO/大创"},{"vid":916,"value":"DHC/蝶翠诗"},{"vid":917,"value":"DOCTOR LI/李医生"},{"vid":919,"value":"Dove/多芬"},{"vid":920,"value":"Dr.Ci:Labo/城野医生"},{"vid":121,"value":"南孚"},{"vid":921,"value":"Dr.Jart+/蒂佳婷"},{"vid":922,"value":"Elixir/怡丽丝尔"},{"vid":926,"value":"Freeplus/芙丽芳丝"},{"vid":927,"value":"GIORGIO ARMANI/阿玛尼"},{"vid":928,"value":"GN Pearl/京润珍珠"},{"vid":122,"value":"Cobbe/卡贝"},{"vid":930,"value":"Guerlain/娇兰"},{"vid":935,"value":"Hera/赫妍"},{"vid":937,"value":"Holika Holika/惑丽客 惑丽客"},{"vid":938,"value":"IOPE/艾诺碧"},{"vid":942,"value":"Kanebo/嘉娜宝"},{"vid":943,"value":"KAO/花王"},{"vid":944,"value":"Kose/高丝"},{"vid":946,"value":"Kustie/蔻斯汀"},{"vid":948,"value":"LAHAR POWER/原泥动力"},{"vid":949,"value":"Laneige/兰芝"},{"vid":950,"value":"Laroche Posay/理肤泉"},{"vid":951,"value":"LION/狮王"},{"vid":952,"value":"L'occitane/欧舒丹"},{"vid":953,"value":"Mamonde/梦妆"},{"vid":954,"value":"Marubi/丸美"},{"vid":955,"value":"Marykay/玫琳凯"},{"vid":956,"value":"MAYSU/美素"},{"vid":959,"value":"ORIGINS/悦木之源"},{"vid":125,"value":"Hush Puppies/暇步士"},{"vid":966,"value":"Sephora/丝芙兰"},{"vid":969,"value":"SNP/爱神菲"},{"vid":126,"value":"Goodbaby/好孩子"},{"vid":972,"value":"SULWHASOO/雪花秀"},{"vid":974,"value":"TJOY/丁家宜"},{"vid":975,"value":"TOMATO PIE/番茄派"},{"vid":977,"value":"Vichy/薇姿"},{"vid":978,"value":"Watsons/屈臣氏"},{"vid":982,"value":"Yves Rocher/伊夫黎雪"},{"vid":983,"value":"Za/姬芮"},{"vid":985,"value":"大宝"},{"vid":986,"value":"花瑶花"},{"vid":987,"value":"满婷"},{"vid":988,"value":"美康粉黛"},{"vid":46,"value":"Royal Rose"},{"vid":989,"value":"BEAUTYFUN/美丽加芬"},{"vid":990,"value":"膜法世家"},{"vid":993,"value":"师夷家"},{"vid":994,"value":"他能量"},{"vid":995,"value":"土家硒泥坊"},{"vid":998,"value":"WZUN/吾尊"},{"vid":1000,"value":"小迷糊"},{"vid":1001,"value":"URTEKRAM/亚缇克兰"},{"vid":1002,"value":"自然之名"},{"vid":1003,"value":"YSL/圣罗兰"},{"vid":1007,"value":"Lush/岚舒"},{"vid":1008,"value":"Banila CO/芭妮兰"},{"vid":1010,"value":"Safeguard/舒肤佳"},{"vid":1011,"value":"LUX/力士"},{"vid":128,"value":"Miffy/米菲"},{"vid":1014,"value":"强生美肌"},{"vid":1017,"value":"LYNX/凌仕"},{"vid":1018,"value":"SLEK/舒蕾"},{"vid":1019,"value":"BEE&FLOWER/蜂花"},{"vid":1020,"value":"LG"},{"vid":1021,"value":"Bawang/霸王"},{"vid":1022,"value":"DIFASO/蒂花之秀"},{"vid":1023,"value":"Hazeline/夏士莲"},{"vid":1026,"value":"Mchoix/魔香"},{"vid":1028,"value":"TSUBAKI/丝蓓绮"},{"vid":1031,"value":"PANTENE/潘婷"},{"vid":1032,"value":"Head&Shoulders/海飞丝"},{"vid":1034,"value":"琴叶"},{"vid":1037,"value":"Mese/美多丝"},{"vid":130,"value":"Belle/百丽"},{"vid":1043,"value":"JM"},{"vid":1045,"value":"Yole/有乐"},{"vid":1047,"value":"云南白药"},{"vid":1048,"value":"Crest/佳洁士"},{"vid":1049,"value":"DARLIE/好来"},{"vid":131,"value":"BIG WASP/大黄蜂"},{"vid":1053,"value":"冷酸灵"},{"vid":1054,"value":"黑妹"},{"vid":1057,"value":"两面针"},{"vid":1058,"value":"Healso/华素愈创"},{"vid":1060,"value":"CNICE/纳爱斯"},{"vid":1061,"value":"草珊瑚"},{"vid":1067,"value":"KOBAYASHI/小林制药"},{"vid":1068,"value":"Sayclo/时克"},{"vid":132,"value":"DJI/大疆"},{"vid":1071,"value":"三笑"},{"vid":1072,"value":"YMER/伊米尔"},{"vid":1073,"value":"珂宜"},{"vid":1075,"value":"壹墨"},{"vid":1076,"value":"奕辰"},{"vid":47,"value":"One Leaf/一叶子"},{"vid":1078,"value":"Vatti/华帝"},{"vid":1079,"value":"喜得"},{"vid":1081,"value":"新宠之康"},{"vid":1082,"value":"澳宝"},{"vid":1083,"value":"雪貂留香"},{"vid":1084,"value":"BIOAOUA/泊泉雅"},{"vid":133,"value":"ECOVACS/科沃斯"},{"vid":1088,"value":"DORAEMON/哆啦A梦"},{"vid":1089,"value":"Keon/奇强"},{"vid":1091,"value":"Lining/李宁"},{"vid":1092,"value":"ERKE/鸿星尔克"},{"vid":1093,"value":"THREE SEVEN 777"},{"vid":1095,"value":"KAMI/开米"},{"vid":1096,"value":"妈妈壹选"},{"vid":1097,"value":"老管家"},{"vid":1098,"value":"Whisper/护舒宝"},{"vid":1099,"value":"Kotex/高洁丝"},{"vid":1100,"value":"FREEMORE/自由点"},{"vid":1101,"value":"妇炎洁"},{"vid":1102,"value":"Smilfree/笑爽"},{"vid":135,"value":"好想你"},{"vid":1103,"value":"Pinse/品萱"},{"vid":1104,"value":"BABO/斑布"},{"vid":1105,"value":"仁和"},{"vid":1106,"value":"JOLLY/娇妍"},{"vid":1111,"value":"Rexona/舒耐"},{"vid":136,"value":"Vinda/维达"},{"vid":1116,"value":"COMFORT/金纺"},{"vid":1117,"value":"白猫"},{"vid":1118,"value":"Ecover/欧维洁"},{"vid":1120,"value":"心居客"},{"vid":137,"value":"洁柔"},{"vid":1122,"value":"小宠"},{"vid":1125,"value":"爱博"},{"vid":1126,"value":"POWCHO/能臣"},{"vid":1127,"value":"喜家家"},{"vid":1128,"value":"好媳妇"},{"vid":1130,"value":"Superb/超威"},{"vid":1131,"value":"蓝鲲"},{"vid":138,"value":"FIYTA/飞亚达"},{"vid":1132,"value":"贝贝健"},{"vid":1133,"value":"天帐"},{"vid":1134,"value":"Zwilling/双立人"},{"vid":1135,"value":"家博士"},{"vid":1136,"value":"康铭"},{"vid":1137,"value":"Edream/e之梦"},{"vid":1138,"value":"丝飘"},{"vid":1139,"value":"富豪"},{"vid":139,"value":"泉林本色"},{"vid":1140,"value":"风韵万家"},{"vid":1141,"value":"洁枫"},{"vid":1143,"value":"云芳"},{"vid":1144,"value":"馨尚"},{"vid":1145,"value":"优真"},{"vid":1146,"value":"好吉利"},{"vid":1147,"value":"心逸"},{"vid":1148,"value":"ARSTO/爱思得"},{"vid":140,"value":"清风"},{"vid":1149,"value":"Bayco/拜格"},{"vid":1150,"value":"CILLE/希乐"},{"vid":1151,"value":"Green Apple/青苹果"},{"vid":1152,"value":"康舒"},{"vid":1153,"value":"橙叶"},{"vid":1155,"value":"Tupperware/特百惠"},{"vid":1156,"value":"KUAKE/夸克"},{"vid":1157,"value":"OOU"},{"vid":1158,"value":"十八子作"},{"vid":1160,"value":"龙之艺"},{"vid":1161,"value":"SMART WIFE/巧媳妇"},{"vid":48,"value":"Hero/英雄"},{"vid":142,"value":"Dickies"},{"vid":1163,"value":"ELEVEN DIMENSIONAL SPACE/十一维度"},{"vid":1164,"value":"Twinbell"},{"vid":1165,"value":"TVS/提薇司"},{"vid":1166,"value":"OTAFUKU/五福源仕"},{"vid":1167,"value":"宜马"},{"vid":1168,"value":"创健"},{"vid":143,"value":"BURBERRY/博柏利"},{"vid":1170,"value":"Omysky"},{"vid":1171,"value":"Leten/雷霆"},{"vid":1172,"value":"PLEASURE MORE/倍力乐"},{"vid":1173,"value":"Svakom"},{"vid":1174,"value":"DMM"},{"vid":1177,"value":"毓婷"},{"vid":1180,"value":"新东方在线"},{"vid":1181,"value":"XDF/新东方"},{"vid":1184,"value":"Bag of parody/必欧品"},{"vid":1186,"value":"Montblanc/万宝龙"},{"vid":1187,"value":"COACH/蔻驰"},{"vid":1188,"value":"FURLA/芙拉"},{"vid":145,"value":"FANCL/芳珂"},{"vid":1191,"value":"DEIRADA/狄拉达"},{"vid":146,"value":"Josiny/卓诗尼"},{"vid":1201,"value":"KIN DON/金盾"},{"vid":1202,"value":"金洋船"},{"vid":1205,"value":"圣迪思宝"},{"vid":1207,"value":"左岸"},{"vid":147,"value":"花花公子physical"},{"vid":1211,"value":"ZONEJOY/庄爵"},{"vid":1216,"value":"GEMAX/格玛仕"},{"vid":1217,"value":"Xiangyouwei/向右围"},{"vid":1218,"value":"RGLT/瑞格丽特"},{"vid":148,"value":"Winona/薇诺娜"},{"vid":1223,"value":"Booty House/藏宝阁"},{"vid":1224,"value":"吧歌达"},{"vid":1231,"value":"Skmei/时刻美"},{"vid":1233,"value":"VEGOOS/威古氏"},{"vid":1234,"value":"筱雅"},{"vid":149,"value":"Bio Island/佰澳朗德"},{"vid":1235,"value":"NO.ONEPAUL/壹号保罗"},{"vid":1236,"value":"续默"},{"vid":1238,"value":"锐力"},{"vid":1241,"value":"L'ALPINA/阿尔皮纳袋鼠"},{"vid":1243,"value":"户外尖锋"},{"vid":1247,"value":"POLO"},{"vid":1248,"value":"FEGEER/斐格"},{"vid":49,"value":"AUX/奥克斯"},{"vid":151,"value":"Gillette/吉列"},{"vid":1251,"value":"黄金甲"},{"vid":1257,"value":"Ellenfantasia/幻想曲"},{"vid":152,"value":"天堂"},{"vid":1263,"value":"Augtarlion"},{"vid":153,"value":"旺旺"},{"vid":1271,"value":"GELINSI/格琳斯"},{"vid":1272,"value":"GENVAS/君华仕"},{"vid":1273,"value":"Cnoles/蔻一"},{"vid":154,"value":"御泥坊"},{"vid":1279,"value":"CEFIRO/塞飞洛"},{"vid":1283,"value":"TUCANO/啄木鸟"},{"vid":1287,"value":"Docare/朵彩"},{"vid":155,"value":"PROYA/珀莱雅"},{"vid":1288,"value":"芬那丝"},{"vid":1291,"value":"南极人home"},{"vid":1295,"value":"PINCAI/品彩"},{"vid":156,"value":"Romoss/罗马仕"},{"vid":1303,"value":"初纯"},{"vid":1307,"value":"珍莉芬"},{"vid":157,"value":"HADAY/海天"},{"vid":1312,"value":"COEKAC"},{"vid":158,"value":"宝优妮"},{"vid":1323,"value":"古德奈"},{"vid":160,"value":"JOMOO/九牧"},{"vid":1342,"value":"歌姿羽"},{"vid":1343,"value":"KashiDi/卡诗狄"},{"vid":1346,"value":"香朵儿"},{"vid":50,"value":"Midea/美的"},{"vid":162,"value":"燕之坊"},{"vid":163,"value":"BULL/公牛"},{"vid":1383,"value":"梓煦"},{"vid":164,"value":"Kappa/卡帕"},{"vid":1390,"value":"缘花双禧"},{"vid":1396,"value":"予晨"},{"vid":165,"value":"KERCHIN/科尔沁"},{"vid":166,"value":"Umbro/茵宝"},{"vid":1424,"value":"NanJiRen+/南极人+"},{"vid":167,"value":"JanSport"},{"vid":168,"value":"GUESS"},{"vid":1438,"value":"BRIOSO"},{"vid":51,"value":"Kans/韩束"},{"vid":170,"value":"Carslan/卡姿兰"},{"vid":1467,"value":"夕遇"},{"vid":1475,"value":"PLANDOO/帕兰朵"},{"vid":172,"value":"吉香居"},{"vid":1480,"value":"佑朵儿"},{"vid":1495,"value":"OLOEY"},{"vid":1497,"value":"波爵"},{"vid":1520,"value":"舒惠杰"},{"vid":1536,"value":"金山飞雪"},{"vid":52,"value":"蓝月亮"},{"vid":1548,"value":"加加亲"},{"vid":175,"value":"夏日"},{"vid":1565,"value":"蒂安娜"},{"vid":1566,"value":"传奇保罗"},{"vid":1569,"value":"米旗蔓"},{"vid":1580,"value":"奥哥"},{"vid":176,"value":"Herborist/佰草集"},{"vid":178,"value":"Logitech/罗技"},{"vid":179,"value":"ETUDE HOUSE/伊蒂之屋"},{"vid":180,"value":"ROCK/洛克"},{"vid":182,"value":"MEIFUBAO/美肤宝"},{"vid":183,"value":"3M"},{"vid":185,"value":"SPACE7/七度空间"},{"vid":186,"value":"Camel/骆驼"},{"vid":187,"value":"Meters Bonwe/美特斯邦威"},{"vid":53,"value":"LIEBO/裂帛"},{"vid":188,"value":"Saky/舒客"},{"vid":189,"value":"Jack Wolfskin/狼爪"},{"vid":190,"value":"口水娃"},{"vid":191,"value":"PARATEX"},{"vid":192,"value":"ABC"},{"vid":54,"value":"AOKANG/奥康"},{"vid":193,"value":"盼盼"},{"vid":194,"value":"WETHERM/温碧泉"},{"vid":195,"value":"Lovefun/拉芳"},{"vid":196,"value":"MARIE DALGAR/玛丽黛佳"},{"vid":197,"value":"Ferragamo/菲拉格慕"},{"vid":198,"value":"想念"},{"vid":199,"value":"稻香村"},{"vid":55,"value":"361°"},{"vid":201,"value":"BENEUNDER/蕉下"},{"vid":202,"value":"西域美农"},{"vid":203,"value":"周黑鸭"},{"vid":207,"value":"GXG"},{"vid":56,"value":"ANTA/安踏"},{"vid":211,"value":"OIWAS/爱华仕"},{"vid":212,"value":"Sofy/苏菲"},{"vid":213,"value":"爱乡亲"},{"vid":214,"value":"卫龙"},{"vid":215,"value":"Changhong/长虹"},{"vid":216,"value":"Danz/丹姿"},{"vid":217,"value":"Decathlon/迪卡侬"},{"vid":218,"value":"Deerma/德尔玛"},{"vid":219,"value":"Haier/海尔"},{"vid":220,"value":"小狗"},{"vid":221,"value":"来伊份"},{"vid":222,"value":"Mentholatum/曼秀雷敦"},{"vid":224,"value":"Zippo/之宝"},{"vid":225,"value":"Abckids"},{"vid":226,"value":"Citylong/禧天龙"},{"vid":227,"value":"Wonderbra"},{"vid":228,"value":"网易考拉"},{"vid":230,"value":"LONGRICH/隆力奇"},{"vid":59,"value":"Pechoin/百雀羚"},{"vid":234,"value":"华美"},{"vid":235,"value":"Caran·Y/卡拉羊"},{"vid":236,"value":"十月稻田"},{"vid":237,"value":"Gf/高夫"},{"vid":60,"value":"Yaloo/雅鹿"},{"vid":238,"value":"PURE&MILD/泊美"},{"vid":240,"value":"PZH/片仔癀"},{"vid":242,"value":"阿芙"},{"vid":243,"value":"ESSILOR/依视路"},{"vid":245,"value":"LANGSHA/浪莎"},{"vid":246,"value":"Schwarzkopf/施华蔻"},{"vid":61,"value":"Joyoung/九阳"},{"vid":248,"value":"伊利"},{"vid":249,"value":"Yon Ho/永和豆浆"},{"vid":251,"value":"良品铺子"},{"vid":253,"value":"Steel Mate/铁将军"},{"vid":254,"value":"AUPU/奥普"},{"vid":62,"value":"YAYA/鸭鸭"},{"vid":255,"value":"TAODO/淘豆"},{"vid":256,"value":"Jissbon/杰士邦"},{"vid":258,"value":"HERSHEY'S/好时"},{"vid":260,"value":"美心"},{"vid":261,"value":"Penfolds/奔富"},{"vid":262,"value":"ARROW/箭牌"},{"vid":263,"value":"Mizuno/美津浓"},{"vid":265,"value":"五芳斋"},{"vid":266,"value":"SIEMENS/西门子"},{"vid":38,"value":"SKG"},{"vid":270,"value":"360"},{"vid":271,"value":"Cofoe/可孚"},{"vid":274,"value":"蒙牛"},{"vid":275,"value":"Liby/立白"},{"vid":276,"value":"Mr Muscle/威猛先生"},{"vid":277,"value":"HITO/喜多"},{"vid":64,"value":"XTEP/特步"},{"vid":278,"value":"Hongrui Textiles/红瑞纺织"},{"vid":281,"value":"修正"},{"vid":282,"value":"CONBA/康恩贝"},{"vid":283,"value":"BY-HEALTH/汤臣倍健"},{"vid":284,"value":"Ivory/爱得利"},{"vid":65,"value":"FLYCO/飞科"},{"vid":285,"value":"VS SASSOON/沙宣"},{"vid":286,"value":"FERRERO ROCHER/费列罗"},{"vid":287,"value":"途虎养车"},{"vid":288,"value":"ZOJIRUSHI/象印"},{"vid":290,"value":"冠生园"},{"vid":291,"value":"Dettol/滴露"},{"vid":292,"value":"Amore/爱茉莉"},{"vid":293,"value":"第6感"},{"vid":66,"value":"Povos/奔腾"},{"vid":295,"value":"十月结晶"},{"vid":296,"value":"Avene/雅漾"},{"vid":297,"value":"HAERS/哈尔斯"},{"vid":298,"value":"Galanz/格兰仕"},{"vid":299,"value":"SHANGHAI STORY/上海故事"},{"vid":300,"value":"盐津铺子"},{"vid":301,"value":"SHISEIDO/资生堂"},{"vid":302,"value":"FUGUANG/富光"},{"vid":304,"value":"SAST/先科"},{"vid":67,"value":"太力"},{"vid":305,"value":"序言"},{"vid":306,"value":"徐福记"},{"vid":308,"value":"adidas/阿迪达斯"},{"vid":310,"value":"Hello Kitty/凯蒂猫"},{"vid":312,"value":"NIKE/耐克"},{"vid":313,"value":"Wenger/威戈"},{"vid":314,"value":"U.S. POLO ASSN./美国马球协会"},{"vid":315,"value":"Puma/彪马"},{"vid":317,"value":"Pigeon/贝亲"},{"vid":320,"value":"Home Organizer/溢彩年华"},{"vid":322,"value":"FIRS/杉杉"},{"vid":324,"value":"Dr Brown's/布朗博士"},{"vid":325,"value":"Olay/玉兰油"},{"vid":326,"value":"GREE/格力"},{"vid":328,"value":"SOFTTO/索芙特"},{"vid":331,"value":"ORION/好丽友"},{"vid":332,"value":"HEAD/海德"},{"vid":333,"value":"HYUNDAI"},{"vid":334,"value":"Orico/奥睿科"},{"vid":335,"value":"Franic/法兰琳卡"},{"vid":336,"value":"SEAMILD/西麦"},{"vid":339,"value":"Llano/绿巨能"},{"vid":340,"value":"Pampers/帮宝适"},{"vid":341,"value":"Lagostina/拉歌蒂尼"},{"vid":343,"value":"Durex/杜蕾斯"},{"vid":345,"value":"Colgate/高露洁"},{"vid":346,"value":"Pioneer/先锋"},{"vid":347,"value":"OSM/欧诗漫"},{"vid":349,"value":"都市牧场"},{"vid":351,"value":"Teenmix/天美意"},{"vid":352,"value":"QIAODAN/乔丹"},{"vid":353,"value":"COSMO LADY/都市丽人"},{"vid":354,"value":"ESE·Y/逸阳"},{"vid":355,"value":"TCL"},{"vid":356,"value":"Okamoto/冈本"},{"vid":359,"value":"Nestle/雀巢"},{"vid":361,"value":"粒上皇"},{"vid":362,"value":"Elasun/尚牌"},{"vid":363,"value":"Stride/炫迈"},{"vid":364,"value":"Listerine/李施德林"},{"vid":365,"value":"Hygienix/洁云"},{"vid":366,"value":"金冠"},{"vid":367,"value":"金锣"},{"vid":368,"value":"MeiLing/美菱"},{"vid":369,"value":"MAY FLOWER/五月花"},{"vid":71,"value":"Tempo/得宝"},{"vid":370,"value":"Innisfree/悦诗风吟"},{"vid":372,"value":"宝宝金水"},{"vid":373,"value":"ChaCheer/洽洽"},{"vid":375,"value":"统一"},{"vid":72,"value":"鲁花"},{"vid":379,"value":"Skyworth/创维"},{"vid":380,"value":"Huawei/华为"},{"vid":382,"value":"Frogprince/青蛙王子"},{"vid":383,"value":"BASEUS/倍思"},{"vid":389,"value":"Swatch/斯沃琪"},{"vid":390,"value":"BEKAHOS/百家好世"},{"vid":391,"value":"唇动"},{"vid":395,"value":"Momax/摩米士"},{"vid":396,"value":"萨啦咪"},{"vid":398,"value":"SEKKISEI/雪肌精"},{"vid":399,"value":"UNICHARM/尤妮佳"},{"vid":400,"value":"长帝"},{"vid":402,"value":"Gainreel/歌瑞尔"},{"vid":403,"value":"ICA"},{"vid":405,"value":"Wahaha/娃哈哈"},{"vid":406,"value":"相宜本草"},{"vid":407,"value":"OPPO"},{"vid":408,"value":"vivo"},{"vid":409,"value":"雕牌"},{"vid":410,"value":"DOUBLE STAR/双星"},{"vid":411,"value":"Chigo/志高"},{"vid":412,"value":"Samsonite/新秀丽"},{"vid":413,"value":"M&G/晨光"},{"vid":414,"value":"Littleswan/小天鹅"},{"vid":74,"value":"张裕"},{"vid":415,"value":"Truecolor/真彩"},{"vid":416,"value":"不二家"},{"vid":418,"value":"Moutai/茅台"},{"vid":419,"value":"Harson/哈森"},{"vid":420,"value":"劲牌"},{"vid":421,"value":"小天才"},{"vid":423,"value":"雅客"},{"vid":75,"value":"INMAN/茵曼"},{"vid":425,"value":"Teclast/台电"},{"vid":426,"value":"CHOW TAI FOOK/周大福"},{"vid":427,"value":"超能"},{"vid":429,"value":"GOLDENMONKEY/金丝猴"},{"vid":430,"value":"Feiyue/飞跃"},{"vid":431,"value":"喔喔"},{"vid":432,"value":"IJARL/亿嘉"},{"vid":76,"value":"FUANNA/富安娜"},{"vid":433,"value":"PEPCO/小猪班纳"},{"vid":435,"value":"海底捞"},{"vid":436,"value":"金龙鱼"},{"vid":437,"value":"LITTLE SHEEP/小肥羊"},{"vid":439,"value":"The Saem/得鲜"},{"vid":440,"value":"Clean&Clear/可伶可俐"},{"vid":441,"value":"YEARCON/意尔康"},{"vid":442,"value":"Tide/汰渍"},{"vid":40,"value":"COOKER KING/炊大皇"},{"vid":77,"value":"KONKA/康佳"},{"vid":443,"value":"Hisense/海信"},{"vid":446,"value":"Relea/物生物"},{"vid":447,"value":"Rejoice/飘柔"},{"vid":448,"value":"Snowhite/白雪"},{"vid":449,"value":"PILOT/百乐"},{"vid":450,"value":"Lenovo/联想"},{"vid":451,"value":"双汇"},{"vid":452,"value":"Asus/华硕"},{"vid":453,"value":"六神"},{"vid":454,"value":"Maxam/美加净"},{"vid":455,"value":"MG/美即"},{"vid":458,"value":"Beiens/贝恩施"},{"vid":459,"value":"BLACKVIEW/凌度"},{"vid":460,"value":"达利园"},{"vid":78,"value":"SEEYOUNG/滋源"},{"vid":461,"value":"豆本豆"},{"vid":463,"value":"德力西"},{"vid":466,"value":"金稻"},{"vid":470,"value":"NUK"},{"vid":471,"value":"Nature's Way/佳思敏"},{"vid":472,"value":"JOYNCLEON/婧麒"},{"vid":476,"value":"香香侠"},{"vid":80,"value":"DURALEX/多莱斯"},{"vid":484,"value":"Bobei Elephant/邦贝小象"},{"vid":81,"value":"Pisen/品胜"},{"vid":493,"value":"无敌米奇"},{"vid":495,"value":"Yunya/韵娅"},{"vid":497,"value":"久练"},{"vid":82,"value":"Swisse/斯维诗"},{"vid":502,"value":"婴之友"},{"vid":509,"value":"贝咪咪"},{"vid":510,"value":"EBAY/易贝乐"},{"vid":511,"value":"妙纬"},{"vid":512,"value":"致亲致爱"},{"vid":519,"value":"奇尔比"},{"vid":83,"value":"GNC/健安喜"},{"vid":520,"value":"Whale's love/鲸爱"},{"vid":524,"value":"Aveeno/艾惟诺"},{"vid":525,"value":"Sebamed/施巴"},{"vid":526,"value":"Johnson's Baby/强生婴儿"},{"vid":527,"value":"郁美净"},{"vid":528,"value":"AVENT/新安怡"},{"vid":84,"value":"Hodo/红豆"},{"vid":531,"value":"润本"},{"vid":532,"value":"Knfamil/康婴健"},{"vid":533,"value":"UBEE/幼蓓"},{"vid":534,"value":"ANNUNCIATION/十月天使"},{"vid":536,"value":"Nuby/努比"},{"vid":41,"value":"Septwolves/七匹狼"},{"vid":537,"value":"Ein.b/怡恩贝"},{"vid":538,"value":"Ddung/冬己"},{"vid":539,"value":"Wyeth/惠氏"},{"vid":540,"value":"Matern'ella/子初"},{"vid":541,"value":"布朗天使"},{"vid":543,"value":"植护"},{"vid":544,"value":"贝倍舒"},{"vid":85,"value":"CHAHUA/茶花"},{"vid":545,"value":"LIEBE BABY/利贝婴儿"},{"vid":546,"value":"Excelamb/皇家婴童"},{"vid":549,"value":"Spongebob Squarepants/海绵宝宝"},{"vid":550,"value":"BABYBBZ/棒棒猪"},{"vid":551,"value":"KIDSME/亲亲我"},{"vid":552,"value":"耶丽娅"},{"vid":86,"value":"Tonlion/唐狮"},{"vid":553,"value":"Garfield/加菲猫"},{"vid":554,"value":"日康"},{"vid":555,"value":"KUB/可优比"},{"vid":556,"value":"Babyhood/世纪宝贝"},{"vid":557,"value":"Snow Bear/小白熊"},{"vid":558,"value":"MUNCHKIN/满趣健"},{"vid":559,"value":"ALCOCO/爱伦可可"},{"vid":560,"value":"ONYA/然雅"},{"vid":562,"value":"Palmbaby/手心宝贝"},{"vid":87,"value":"Bear/小熊"},{"vid":563,"value":"德佑"},{"vid":564,"value":"PIBB/漂亮宝贝"},{"vid":565,"value":"Octmami/十月妈咪"},{"vid":566,"value":"开丽"},{"vid":567,"value":"Usbaby/优生"},{"vid":568,"value":"REIZBABY/运智贝"},{"vid":569,"value":"Elepbaby/象宝宝"},{"vid":570,"value":"天真贝比"},{"vid":571,"value":"Yijan/易简"},{"vid":572,"value":"Enssu/樱舒"},{"vid":88,"value":"Romon/罗蒙"},{"vid":574,"value":"奥克欧"},{"vid":575,"value":"Classic Teddy/精典泰迪"},{"vid":576,"value":"Como tomo/可么多么"},{"vid":577,"value":"Potato/小土豆"},{"vid":578,"value":"V-coool"},{"vid":580,"value":"贝恩宝"},{"vid":89,"value":"REDDRAGONFLY/红蜻蜓"},{"vid":582,"value":"Bebear/抱抱熊"},{"vid":583,"value":"Eight-day/星期八"},{"vid":584,"value":"猫贝乐"},{"vid":585,"value":"Legendarybabe/传奇贝贝"},{"vid":586,"value":"皓淳"},{"vid":587,"value":"OPEN BABY/欧培"},{"vid":589,"value":"班妮宝贝"},{"vid":590,"value":"小飞象"},{"vid":591,"value":"美高乐"},{"vid":90,"value":"Oulin/欧琳"},{"vid":593,"value":"QinN/亲恩"},{"vid":595,"value":"Little bean/小豆苗"},{"vid":596,"value":"雅芝敏"},{"vid":598,"value":"ROYAL SONNY/皇家宝贝"},{"vid":600,"value":"三森"},{"vid":601,"value":"飘飘龙"},{"vid":91,"value":"心相印"},{"vid":602,"value":"左岸右转"},{"vid":603,"value":"HAPPY DINO/小龙哈彼"},{"vid":604,"value":"Royalbaby/优贝"},{"vid":606,"value":"健儿"},{"vid":607,"value":"Lecoco/乐卡"},{"vid":608,"value":"神舟鸟"},{"vid":609,"value":"童悦"},{"vid":610,"value":"Auby/澳贝"},{"vid":92,"value":"Daphne/达芙妮"},{"vid":611,"value":"Manon Des Pres/麦侬贝儿"},{"vid":612,"value":"HUILE TOYS/汇乐玩具"},{"vid":613,"value":"Lalababy/拉拉布书"},{"vid":614,"value":"Smoby"},{"vid":615,"value":"Mibokids/米宝兔"},{"vid":617,"value":"火火兔"},{"vid":618,"value":"育儿宝"},{"vid":619,"value":"爱婴乐"},{"vid":620,"value":"SHILOH"},{"vid":93,"value":"BRITA/碧然德"},{"vid":622,"value":"Hape"},{"vid":623,"value":"童畅"},{"vid":624,"value":"Snaen/斯纳恩"},{"vid":625,"value":"Vtech/伟易达"},{"vid":628,"value":"K'SKIDS/奇智奇思"},{"vid":629,"value":"萌乐乐"},{"vid":630,"value":"甜逗"},{"vid":42,"value":"BE&CHEERY/百草味"},{"vid":631,"value":"AOLE-HW/澳乐"},{"vid":632,"value":"优乐恩"},{"vid":633,"value":"美贝乐"},{"vid":635,"value":"Winfun/英纷"},{"vid":636,"value":"Jollybaby"},{"vid":637,"value":"QZM/巧之木"},{"vid":638,"value":"Meitoku/明德"},{"vid":639,"value":"BEI JESS/贝杰斯"},{"vid":640,"value":"纳份爱"},{"vid":641,"value":"喜迪奇"},{"vid":642,"value":"恋小猪"},{"vid":644,"value":"福孩儿"},{"vid":645,"value":"Mamma"},{"vid":646,"value":"蜜悠克"},{"vid":647,"value":"MONZON/漫踪"},{"vid":648,"value":"XST/鑫思特"},{"vid":649,"value":"乐乐鱼"},{"vid":650,"value":"Topbright/特宝儿"},{"vid":94,"value":"Walch/威露士"},{"vid":651,"value":"贝乐康"},{"vid":652,"value":"源乐堡"},{"vid":653,"value":"BABY BANANA/香蕉宝宝"},{"vid":654,"value":"怀乐"},{"vid":655,"value":"MWZ/木丸子"},{"vid":656,"value":"皇儿"},{"vid":657,"value":"顽兔"},{"vid":659,"value":"Saors/小硕士"},{"vid":660,"value":"幼得乐"},{"vid":95,"value":"J&M/快乐玛丽"},{"vid":661,"value":"Toys/乐吉儿"},{"vid":662,"value":"Hobby Tree/哈比树"},{"vid":663,"value":"佑童"},{"vid":664,"value":"JuLeBaby/聚乐宝贝"},{"vid":666,"value":"希乐多"},{"vid":667,"value":"涩咪咪"},{"vid":668,"value":"BB MYST/神秘岛"},{"vid":96,"value":"EMSA/爱慕莎"},{"vid":671,"value":"丹妮奇特"},{"vid":672,"value":"曼龙"},{"vid":673,"value":"Coleshome/蔻丝"},{"vid":674,"value":"Dr.B/娃娃博士"},{"vid":675,"value":"GD FIVESTAR TOYS/五星玩具"},{"vid":676,"value":"帕克伦"},{"vid":677,"value":"Nukied/纽奇"},{"vid":678,"value":"BabyGo/宝贝去哪儿"},{"vid":679,"value":"BeiE/贝易"},{"vid":680,"value":"HoneyDIY"},{"vid":681,"value":"阔步"},{"vid":682,"value":"Rainbow Kingdo/彩虹王国"},{"vid":683,"value":"Tinylove"},{"vid":684,"value":"阿卡手工"},{"vid":685,"value":"Chicco/智高"},{"vid":686,"value":"Hui Cheng Toys/惠诚玩具"},{"vid":687,"value":"TheNorthEhome/北国e家"},{"vid":688,"value":"Berica/贝瑞佳"},{"vid":689,"value":"依妹儿"},{"vid":690,"value":"海润阳光"},{"vid":98,"value":"Donlim/东菱"},{"vid":691,"value":"CROWNED LOVE/蒂爱"},{"vid":692,"value":"XIN LE TOYS/鑫乐"},{"vid":693,"value":"淘嘟嘟"},{"vid":694,"value":"安配"},{"vid":695,"value":"和乐族"},{"vid":696,"value":"IQANGEL/爱奇天使"},{"vid":697,"value":"开心玛特"},{"vid":698,"value":"BABYGREAT"},{"vid":699,"value":"冠腾"},{"vid":700,"value":"乐智在"},{"vid":99,"value":"Ronshen/容声"},{"vid":702,"value":"MediaBear/麦迪熊"},{"vid":704,"value":"思贝"},{"vid":705,"value":"哈喜屋"},{"vid":707,"value":"俏娃宝贝"},{"vid":708,"value":"铭塔"},{"vid":709,"value":"汇祥云"},{"vid":100,"value":"Seven 7/柒牌"},{"vid":711,"value":"皇室"},{"vid":712,"value":"迪孚"},{"vid":713,"value":"WOODEN TOYS FAMILY/木玩世家"},{"vid":714,"value":"Ubbie/优彼"},{"vid":715,"value":"Temi/糖米"},{"vid":716,"value":"CMUMM/木妈妈"},{"vid":717,"value":"Bel/博尔乐"},{"vid":718,"value":"Moondog/月亮狗"},{"vid":719,"value":"韵美"},{"vid":101,"value":"Panasonic/松下"},{"vid":720,"value":"麦田"},{"vid":721,"value":"New wood city/新木城"},{"vid":722,"value":"Nattou"},{"vid":723,"value":"B./比乐"},{"vid":725,"value":"CF/创发"},{"vid":726,"value":"幸福豆"},{"vid":727,"value":"童牛"},{"vid":728,"value":"小猪奕奕"},{"vid":729,"value":"BrightStarts"},{"vid":43,"value":"SUPOR/苏泊尔"},{"vid":102,"value":"ERAL/艾莱依"},{"vid":730,"value":"乖乖熊"},{"vid":731,"value":"诺澳"},{"vid":733,"value":"WANTONGLE/万童乐"},{"vid":734,"value":"iWAn"},{"vid":735,"value":"Weiwei Wooden Plays/薇薇木玩"},{"vid":736,"value":"BABY BOX/贝博氏"},{"vid":737,"value":"启启"},{"vid":738,"value":"Cheerbb/橙爱"},{"vid":739,"value":"PAOWANG"},{"vid":103,"value":"Dior/迪奥"},{"vid":740,"value":"Justbecause"},{"vid":741,"value":"益米"},{"vid":742,"value":"树宝宝"},{"vid":743,"value":"南国婴宝"},{"vid":744,"value":"Kaloo"},{"vid":745,"value":"笑娃娃"},{"vid":746,"value":"达拉"},{"vid":748,"value":"Jinmei Season/津美思辰"},{"vid":749,"value":"vSuch/尚趣"},{"vid":104,"value":"BEYOND/博洋"},{"vid":751,"value":"星梦圆"},{"vid":752,"value":"Paperfox/纸贵满堂"},{"vid":753,"value":"Goodplus/好加"},{"vid":754,"value":"Lijian"},{"vid":755,"value":"SHINY STAR/小巨星"},{"vid":756,"value":"XJD"},{"vid":757,"value":"环奇"},{"vid":758,"value":"Yaolan/遥蓝"},{"vid":759,"value":"MDB"},{"vid":760,"value":"宣奇"},{"vid":761,"value":"林点"},{"vid":762,"value":"Minimoto/小米米"},{"vid":763,"value":"十二色童话"},{"vid":764,"value":"锐帕"},{"vid":765,"value":"Sunnybaby/阳光宝贝"},{"vid":766,"value":"蜜居"},{"vid":767,"value":"Leleyu"},{"vid":768,"value":"卡卡贝儿"},{"vid":769,"value":"我要的"},{"vid":770,"value":"Naef"},{"vid":771,"value":"Buddyfun/贝芬乐"},{"vid":772,"value":"Zalami/智乐妙"},{"vid":773,"value":"ZIPPYMAT"},{"vid":774,"value":"Wtoy"},{"vid":775,"value":"WISDOM COOL FORT/智酷堡"},{"vid":776,"value":"益知乐"},{"vid":777,"value":"XIN YE TOYS/歆业玩具"},{"vid":778,"value":"Senteng"},{"vid":779,"value":"欧锐"},{"vid":781,"value":"淘乐智汇"},{"vid":782,"value":"Little tikes/小泰克"},{"vid":783,"value":"HLX/好来喜"},{"vid":784,"value":"魅力娃"},{"vid":785,"value":"YISBRO/益之宝"},{"vid":786,"value":"宜爽儿"},{"vid":787,"value":"Mamily/妈媚丽"},{"vid":788,"value":"CARTELO/卡帝乐鳄鱼"},{"vid":789,"value":"YGAOR/永高人"},{"vid":790,"value":"猫太子"},{"vid":791,"value":"芭芭鸭"},{"vid":792,"value":"小米步"},{"vid":795,"value":"HOBIBEAR/哈比熊"},{"vid":108,"value":"初语"},{"vid":796,"value":"木木屋"},{"vid":798,"value":"巧灵珑"},{"vid":799,"value":"梦娜"},{"vid":801,"value":"歌庆"},{"vid":804,"value":"乐乐趣"},{"vid":805,"value":"Warrior/回力"},{"vid":806,"value":"憨豆龙"},{"vid":808,"value":"7-PE/七波辉"},{"vid":809,"value":"Strolex/舒童乐"},{"vid":810,"value":"人本"},{"vid":811,"value":"沐阳"},{"vid":812,"value":"木木兔"},{"vid":814,"value":"GGBOND/猪猪侠"},{"vid":44,"value":"CHANDO/自然堂"},{"vid":110,"value":"ASD/爱仕达"},{"vid":817,"value":"小脚鸭"},{"vid":818,"value":"家得宝"},{"vid":821,"value":"Dadida/嗒嘀嗒"},{"vid":822,"value":"BEINGMATE/贝因美"},{"vid":823,"value":"PINDO/品度"},{"vid":112,"value":"OPPLE/欧普照明"},{"vid":829,"value":"Mead Johnson/美赞臣"},{"vid":830,"value":"几米熊"},{"vid":831,"value":"劲爽"},{"vid":832,"value":"润爽"},{"vid":833,"value":"Babyexpert/宝宝专家"},{"vid":836,"value":"ABQ"},{"vid":837,"value":"COGA/酷嘎"},{"vid":113,"value":"PEAK/匹克"},{"vid":838,"value":"妙优童"},{"vid":841,"value":"十年寒窗"},{"vid":854,"value":"大红鹰"},{"vid":863,"value":"Fish bobo/宝宝鱼"},{"vid":116,"value":"SNOOPY/史努比"},{"vid":865,"value":"淘亦智"},{"vid":867,"value":"芙蓉天使"},{"vid":868,"value":"Hw/蘅芜"},{"vid":869,"value":"溜达猫"},{"vid":872,"value":"Caslon/卡西龙"},{"vid":873,"value":"Baby Duck/贝贝鸭"},{"vid":117,"value":"木林森"},{"vid":883,"value":"韩熙贞"},{"vid":887,"value":"Kafellon/凯芙兰"},{"vid":888,"value":"UKISS/悠珂思"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":310,"name":"品牌","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":true,"is_sku":false,"values":[{"vid":10573,"value":"蚕丝"},{"vid":10583,"value":"PU"},{"vid":10629,"value":"其它"},{"vid":12839,"value":"pvc"},{"vid":12854,"value":"塑料"},{"vid":14092,"value":"硅胶"},{"vid":18363,"value":"涤棉混纺"},{"vid":18364,"value":"棉麻混纺"},{"vid":30873,"value":"织物"},{"vid":58791,"value":"皮革"},{"vid":88538,"value":"绒布"},{"vid":88541,"value":"原木浆纸"},{"vid":12962,"value":"涤纶(聚酯纤维)"},{"vid":12836,"value":"tpu"},{"vid":10571,"value":"棉"},{"vid":10575,"value":"化纤"},{"vid":12827,"value":"布"},{"vid":12829,"value":"绸缎"},{"vid":14093,"value":"无纺布"},{"vid":59036,"value":"聚丙烯(pp)"},{"vid":71636,"value":"聚乙烯(PE)"},{"vid":87499,"value":"皮"},{"vid":88536,"value":"蕾丝"},{"vid":88540,"value":"雪尼尔"},{"vid":172399,"value":"可降解材料"},{"vid":1666289,"value":"水晶板"},{"vid":14091,"value":"麻棉"},{"vid":58987,"value":"毛绒"},{"vid":1666288,"value":"胶垫"},{"vid":12838,"value":"EVA"},{"vid":407570,"value":"PEVA"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":317,"name":"材质","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":false,"is_sku":false,"values":[{"vid":10493,"value":"复古"},{"vid":10502,"value":"欧美"},{"vid":12896,"value":"田园"},{"vid":13051,"value":"中式"},{"vid":13056,"value":"北欧风"},{"vid":55441,"value":"日韩"},{"vid":59122,"value":"简约现代"},{"vid":10506,"value":"民族风"},{"vid":13052,"value":"韩式"},{"vid":13053,"value":"日式"},{"vid":13054,"value":"美式"},{"vid":13055,"value":"东南亚"},{"vid":13057,"value":"地中海"},{"vid":59126,"value":"明清古典"},{"vid":59130,"value":"新古典"},{"vid":65712,"value":"欧式"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":322,"name":"风格","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":true,"is_sku":false,"values":[{"vid":390864,"value":"一次性"},{"vid":525369,"value":"非一次性"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":438,"name":"产品类型","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":false,"is_sku":false,"values":[{"vid":56749,"value":"条纹"},{"vid":56750,"value":"格子"},{"vid":56752,"value":"卡通动漫"},{"vid":56754,"value":"纯色"},{"vid":87550,"value":"几何图案"},{"vid":87554,"value":"植物花卉"},{"vid":113896,"value":"风景"},{"vid":790578,"value":"渐变"},{"vid":949590,"value":"心形"},{"vid":1666283,"value":"喜庆"},{"vid":1666284,"value":"叶子"},{"vid":1666285,"value":"圆圈"},{"vid":1666324,"value":"草"},{"vid":1666325,"value":"菱形"},{"vid":87553,"value":"人物"},{"vid":113900,"value":"字母数字"},{"vid":1486886,"value":"迷彩"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":3,"min_value":"","can_note":false,"ref_pid":750,"name":"图案","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":true,"is_sku":false,"value_precision":1,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":0,"min_value":"0","can_note":false,"ref_pid":1135,"name":"厚度","value_unit":["cm","mm"],"max_value":"10","property_value_type":1},{"is_sale":false,"is_important":false,"is_sku":false,"values":[{"vid":59097,"value":"会议室"},{"vid":83778,"value":"家用"},{"vid":83779,"value":"酒店"},{"vid":1400048,"value":"教室"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":3,"min_value":"","can_note":false,"ref_pid":802,"name":"适用场景","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":false,"is_sku":false,"values":[{"vid":1811174,"value":"圆角"},{"vid":1811175,"value":"非圆角"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":2867,"name":"是否圆角设计","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":true,"is_sku":false,"values":[{"vid":13041,"value":"提花"},{"vid":14407,"value":"磨砂"},{"vid":173404,"value":"印花"},{"vid":369239,"value":"植绒"},{"vid":1830351,"value":"亮面"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":368,"name":"工艺","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":true,"is_sku":false,"values":[{"vid":13017,"value":"长方形"},{"vid":13019,"value":"圆形"},{"vid":13020,"value":"正方形"},{"vid":58705,"value":"椭圆形"},{"vid":1631470,"value":"异型"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":362,"name":"形状","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":true,"is_sku":false,"values":[{"vid":75312,"value":"优等品"},{"vid":75313,"value":"合格品"},{"vid":75314,"value":"一等品"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":979,"name":"质检标准","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":false,"is_sku":false,"values":[{"vid":10508,"value":"蝴蝶结"},{"vid":10509,"value":"流苏"},{"vid":10514,"value":"镂空"},{"vid":10526,"value":"褶皱"},{"vid":10543,"value":"纽扣"},{"vid":10552,"value":"拼接"},{"vid":13208,"value":"花边"},{"vid":13347,"value":"蕾丝边"},{"vid":16266,"value":"水洗"},{"vid":1177997,"value":"碎花"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":3,"min_value":"","can_note":false,"ref_pid":321,"name":"流行元素","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":false,"is_sku":false,"values":[{"vid":13397,"value":"抗菌"},{"vid":30812,"value":"防水"},{"vid":764422,"value":"防烫"},{"vid":1351681,"value":"防油"},{"vid":1538456,"value":"免洗"},{"vid":483071,"value":"防尘"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":3,"min_value":"","can_note":false,"ref_pid":351,"name":"功能","value_unit":[""],"max_value":"","property_value_type":0},{"is_sale":false,"is_important":true,"is_sku":false,"values":[{"vid":24044,"value":"中国大陆"},{"vid":24046,"value":"其他海外地区"},{"vid":24047,"value":"日本"},{"vid":24048,"value":"欧洲"},{"vid":24049,"value":"韩国"},{"vid":32782,"value":"美国"},{"vid":32783,"value":"港澳台"},{"vid":32784,"value":"东南亚"}],"value_precision":0,"input_max_num":0,"required":false,"required_rule_type":0,"choose_max_num":1,"min_value":"","can_note":false,"ref_pid":482,"name":"产地","value_unit":[""],"max_value":"","property_value_type":0}],"choose_all_qualify_spec":false},"goods_sku_rule":{"price_range_ratio":20.0,"spec_num_limit":44},"two_pieces_discount_rule":{"if_must_two_pieces_discount":true,"max_two_pieces_discount":99,"min_two_pieces_discount":50,"recommend_two_pieces_discount":95},"goods_service_rule":{"goods_service_rule_map":{"1":{"folt_rule":1,"can_select_delivery_type":false,"quan_guo_lian_bao_rule":0,"refundable_rule":1,"privacy_delivery_rule":0,"delivery_one_day_rule":1,"zhi_huan_bu_xiu_rule":0,"lack_of_weight_claim_rule":0,"shipment_limit_second_list":[86400,172800],"bad_claim_rule":0},"2":{"folt_rule":1,"can_select_delivery_type":false,"quan_guo_lian_bao_rule":0,"refundable_rule":1,"privacy_delivery_rule":0,"delivery_one_day_rule":1,"zhi_huan_bu_xiu_rule":0,"lack_of_weight_claim_rule":0,"shipment_limit_second_list":[86400,172800],"bad_claim_rule":0}},"goods_type_list":[1,2]},"request_id":"17748680931228322"}} + var catTemplateInfoObj = JsonHelper.JObjectParse(catRuleGetRst)["cat_rule_get_response"]["goods_properties_rule"]; + var catTemplateInfoStr = JsonHelper.SerializeObject(catTemplateInfoObj); + var apiCatRuleInfo = JsonHelper.DeserializeJsonToObject(catTemplateInfoStr); + + List propParamLst = new List(); + foreach (var propInfo in prodInfo.property.goods_properties) + { + var propApiInfo = apiCatRuleInfo.properties.FirstOrDefault(p => p.name == propInfo.name || p.ref_pid == propInfo.ref_pid); + if (propApiInfo != null) + { + try + { + var propParam = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(propApiInfo)); + + ApiPddPropertyValue value = null; + if (propParam.name == "品牌") + { + if (propInfo.values.FirstOrDefault()?.value == "其他家") + value = propParam.values.FirstOrDefault(v => v.value == "无品牌/无注册商标"); + else + { + //value = propParam.values.FirstOrDefault(v => v.value == propInfo.values.FirstOrDefault().value); + // 统一使用无品牌 + value = propParam.values.FirstOrDefault(v => v.value == "无品牌/无注册商标"); + } + } + else + { + if (propParam.values == null && propInfo.values.FirstOrDefault()?.value != null) + value = new ApiPddPropertyValue() { value = propInfo.values.FirstOrDefault()?.value, vid = 0 }; + else + value = propParam.values?.FirstOrDefault(v => v.value == propInfo.values.FirstOrDefault()?.value); + if (value == null) + value = propParam.values?.FirstOrDefault(v => v.value == "其他"); + } + if (value != null) + { + propParam.values = new List() { value }; + if (!string.IsNullOrEmpty(propInfo.values.FirstOrDefault()?.unit)) + { + var unit = propParam.value_unit.FirstOrDefault(v => v == propInfo.values.FirstOrDefault().unit); + if (!string.IsNullOrEmpty(unit)) + propParam.value_unit = new List() { unit }; + } + propParamLst.Add(propParam); + } + } + catch (Exception ex) + { + return "类目属性转换失败 " + ex.Message; + } + } + } + + foreach (var propApiInfo in apiCatRuleInfo.properties) + { + if (propApiInfo.required == true && !propParamLst.Any(p => p.ref_pid == propApiInfo.ref_pid)) + { + var contentOther = propApiInfo.values?.FirstOrDefault(c => c.value == "其他"); + if (contentOther != null) + { + //var prop = new goods_property_param() + var propParam = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(propApiInfo)); + propParam.values = new List() { contentOther }; + propParamLst.Add(propParam); + } + else if (propApiInfo.name == "成分含量") + { + var contentValue = propApiInfo.values?.FirstOrDefault(v => v.value.Contains("以下")); + if (contentValue != null) + { + var propParam = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(propApiInfo)); + propParam.values = new List() { contentOther }; + propParamLst.Add(propParam); + } + } + else if (propApiInfo.required_rule_type == 1 && propApiInfo.values?.Count == 1) // 二级关联属性 + { + var propParam = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(propApiInfo)); + propParamLst.Add(propParam); + } + } + } + + string goods_properties = ""; + foreach (var pp in propParamLst) + { + var pv = pp.values.FirstOrDefault(); + var value_unit = pp.value_unit.FirstOrDefault().ParseToString(); + var str = "{\"ref_pid\":" + pp.ref_pid + ",\"vid\":" + pv.vid + ",\"value\":\"" + pv.value + "\",\"value_unit\":\"" + value_unit + "\"},"; + string temp = BaseRegex.GetMatchRegexString(ref str, @"(\d{2,4}-\d{1,2}-\d{1,2})"); // 如果有时间替换成最新的 + if (!string.IsNullOrEmpty(temp)) + str = "{\"ref_pid\":" + pp.ref_pid + ",\"vid\":" + pv.vid + ",\"value\":\"" + DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + "\",\"value_unit\":\"" + value_unit + "\"},"; + goods_properties += str; + } + pddApi.Data["goods_properties"] = "[" + goods_properties.Trim(',') + "]"; pddApi.Data["goods_type"] = 1; if (!string.IsNullOrEmpty(prodInfo.detail.image_url)) @@ -6937,10 +7112,7 @@ Content-Type: image/jpeg #region 厂商直采获取推单运费模板,计算运费加价。 Invoke(new Action(() => { - if (cell != null) - { - cell.Value = "正在选取运费模板"; - } + //cell.Value = "正在选取运费模板"; })); var shippingTemplateJson = ""; @@ -7049,41 +7221,47 @@ Content-Type: image/jpeg var skuInfo = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(sku)); skuInfo.is_onsale = skuInfo.is_onsale != null ? skuInfo.is_onsale : 1; skuInfo.limit_quantity = 999; // 只入参999 - skuInfo.multi_price = (sku.multi_price * this.txtAddTimes.Text.Trim().ParseToDecimal() + this.txtAddMorePrice.Text.Trim().ParseToDecimal() * 100).ParseToInt(); - skuInfo.price = (sku.price * this.txtAddTimes.Text.Trim().ParseToDecimal() + this.txtAddMorePrice.Text.Trim().ParseToDecimal() * 100).ParseToInt(); - //厂商直采的上家缺货则保持缺货。 + + // 厂商直采的上家缺货则保持缺货。 if (skuInfo.quantity != 0) skuInfo.quantity = txtStockNum.Text.Trim().ParseToInt(); - skuInfo.multi_price += shipPrice; - skuInfo.price += shipPrice; + var new_multi_price = sku.multi_price + (shipPrice * defaultAddPriceRule.AddShippingFeeTimes).ParseToInt(); + skuInfo.multi_price = (new_multi_price * this.txtAddTimes.Text.Trim().ParseToDecimal() + this.txtAddMorePrice.Text.Trim().ParseToDecimal() * 100).ParseToInt(); + //skuInfo.price = (sku.price * this.txtAddTimes.Text.Trim().ParseToDecimal() + this.txtAddMorePrice.Text.Trim().ParseToDecimal() * 100).ParseToInt(); if (isAddMorePriceFirst) // 先加后乘 - skuInfo.multi_price = ((sku.multi_price + this.txtAddMorePrice.Text.Trim().ParseToDecimal() * 100) * this.txtAddTimes.Text.Trim().ParseToDecimal()).ParseToInt(); + skuInfo.multi_price = ((new_multi_price + this.txtAddMorePrice.Text.Trim().ParseToDecimal() * 100) * this.txtAddTimes.Text.Trim().ParseToDecimal()).ParseToInt(); skuInfo.price = skuInfo.multi_price + Math.Max(100, this.txtSinglePriceAdd.Text.Trim().ParseToDecimal() * 100).ParseToInt(); - //阶梯式加价,如果命中则按阶梯式加价进行 + + // 阶梯式加价,如果命中则按阶梯式加价进行 if (isStepAddPrice) { foreach (var addPrice in lstAddPriceRule) { - if (sku.multi_price > addPrice.MoreThanPrice * 100 && sku.multi_price <= addPrice.LessThanPrice * 100) + if (new_multi_price > addPrice.MoreThanPrice * 100 && new_multi_price <= addPrice.LessThanPrice * 100) { if (isAddMorePriceFirst) // 先加后乘 - skuInfo.multi_price = ((sku.multi_price + addPrice.AddMorePrice * 100) * addPrice.AddPriceTimes).ParseToInt(); + skuInfo.multi_price = ((new_multi_price + addPrice.AddMorePrice * 100) * addPrice.AddPriceTimes).ParseToInt(); else - skuInfo.multi_price = (sku.multi_price * addPrice.AddPriceTimes + addPrice.AddMorePrice * 100).ParseToInt(); + skuInfo.multi_price = (new_multi_price * addPrice.AddPriceTimes + addPrice.AddMorePrice * 100).ParseToInt(); skuInfo.price = skuInfo.multi_price + Math.Max(100, addPrice.SinglePriceAdd * 100).ParseToInt(); ; break; } } } - addPriceSkuInfoLst.Add(skuInfo); + // 聚水潭商品 加邮费×倍率 放前面 + //skuInfo.multi_price += (shipPrice * defaultAddPriceRule.AddShippingFeeTimes).ParseToInt(); + //skuInfo.price += (shipPrice * defaultAddPriceRule.AddShippingFeeTimes).ParseToInt(); if (marketPrice < skuInfo.price + 1000) { marketPrice = skuInfo.price.ParseToInt() + 1000; pddApi.Data["market_price"] = marketPrice; } + + addPriceSkuInfoLst.Add(skuInfo); + } #endregion @@ -7097,7 +7275,7 @@ Content-Type: image/jpeg var errMsg = BaseRegex.GetStringJson(ref PddGoodsSpecGetApiRst, "error_msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = PddGoodsSpecGetApiRst; - return errMsg; + return "初始化Sku属性失败 " + errMsg; } Dictionary specNameDic = new Dictionary(); @@ -7136,16 +7314,22 @@ Content-Type: image/jpeg var errMsg = BaseRegex.GetStringJson(ref PddGoodsSpecIdGetApiRst, "error_msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = PddGoodsSpecIdGetApiRst; - return errMsg; + return "Sku属性生成失败 " + errMsg; } specInfo.spec_id = BaseRegex.GetLongJson(ref PddGoodsSpecIdGetApiRst, "spec_id"); } } } + Dictionary skuImgDic = new Dictionary(); // 拼接sku,计算最高价格和最低价格 for (int i = 0; i < addPriceSkuInfoLst.Count; i++) { + Invoke(new Action(() => + { + cell.Value = "正在生成Sku " + (i + 1) + "/" + addPriceSkuInfoLst.Count; + })); + string spec = ""; for (int j = 0; j < addPriceSkuInfoLst[i].spec.Count; j++) { @@ -7153,38 +7337,48 @@ Content-Type: image/jpeg } spec = spec.Trim(','); - string errMsg = ""; - var imgBase64 = WXForms.ProductForms.WXDBProdUploadForm.GetImgBase64ForApi(out errMsg, addPriceSkuInfoLst[i].thumb_url, false, false); - if (!string.IsNullOrEmpty(errMsg)) + string thumb_url = ""; + if (skuImgDic.ContainsKey(addPriceSkuInfoLst[i].thumb_url)) { - return errMsg; + thumb_url = skuImgDic[addPriceSkuInfoLst[i].thumb_url]; + } + else + { + string errMsg = ""; + var imgBase64 = WXForms.ProductForms.WXDBProdUploadForm.GetImgBase64ForApi(out errMsg, addPriceSkuInfoLst[i].thumb_url, false, false); + if (!string.IsNullOrEmpty(errMsg)) + { + return "初始化Sku图片错误 " + errMsg; + } + + var pddUpImgApi = new PddApi(shop); + pddUpImgApi.Data["image"] = "data:image/jpeg;base64," + imgBase64; + var pddUpImgApiRst = pddUpImgApi.PddGoodsImageUpload(); + if (!pddUpImgApiRst.Contains("\"goods_image_upload_response\"")) + { + errMsg = BaseRegex.GetStringJson(ref pddUpImgApiRst, "error_msg"); + if (string.IsNullOrEmpty(errMsg)) + errMsg = pddUpImgApiRst; + return "生成Sku图片错误 " + errMsg; + } + thumb_url = BaseRegex.GetStringJson(ref pddUpImgApiRst, "image_url"); + skuImgDic[addPriceSkuInfoLst[i].thumb_url] = thumb_url; } - var pddUpImgApi = new PddApi(shop); - pddUpImgApi.Data["image"] = "data:image/jpeg;base64," + imgBase64; - var pddUpImgApiRst = pddUpImgApi.PddGoodsImageUpload(); - if (!pddUpImgApiRst.Contains("\"goods_image_upload_response\"")) - { - errMsg = BaseRegex.GetStringJson(ref pddUpImgApiRst, "error_msg"); - if (string.IsNullOrEmpty(errMsg)) - errMsg = pddUpImgApiRst; - return errMsg; - } - addPriceSkuInfoLst[i].thumb_url = BaseRegex.GetStringJson(ref pddUpImgApiRst, "image_url"); + int weight = addPriceSkuInfoLst[i].weight.IsNullOrZero() ? 1000 : addPriceSkuInfoLst[i].weight.ParseToInt(); skuApiString += ",{\"is_onsale\":" + addPriceSkuInfoLst[i].is_onsale + ",\"limit_quantity\":" + addPriceSkuInfoLst[i].limit_quantity + - ",\"price\":\"" + addPriceSkuInfoLst[i].price + "\",\"weight\":1000,\"multi_price\":\"" + addPriceSkuInfoLst[i].multi_price + - "\",\"thumb_url\":\"" + addPriceSkuInfoLst[i].thumb_url + "\",\"out_sku_sn\":\"" + addPriceSkuInfoLst[i].out_sku_sn + + ",\"price\":\"" + addPriceSkuInfoLst[i].price + "\",\"weight\":" + weight + ",\"multi_price\":\"" + addPriceSkuInfoLst[i].multi_price + + "\",\"thumb_url\":\"" + thumb_url + "\",\"out_sku_sn\":\"" + addPriceSkuInfoLst[i].out_sku_sn + "\",\"quantity\":" + addPriceSkuInfoLst[i].quantity + ",\"spec_id_list\":\"[" + spec + "]\"}"; if (addPriceSkuInfoLst[i].multi_price > maxPrice) maxPrice = addPriceSkuInfoLst[i].multi_price; if (addPriceSkuInfoLst[i].multi_price < minPrice) minPrice = addPriceSkuInfoLst[i].multi_price; } - pddApi.Data.Remove("goods_properties"); pddApi.Data["sku_list"] = "[" + skuApiString.Trim(',') + "]"; - //满两件折扣,todo通过pdd.goods.cat.rule.get查询具体规则 + //满两件折扣,todo可通过pdd.goods.cat.rule.get查询具体规则 pddApi.Data["two_pieces_discount"] = 99; int retryTimes = 20; @@ -7196,6 +7390,13 @@ Content-Type: image/jpeg pddApi.Data["is_refundable"] = true; goto retry; } + if (!upLoadRst.Contains("goods_add_response")) + { + var errMsg = BaseRegex.GetStringJson(ref upLoadRst, "error_msg"); + if (string.IsNullOrEmpty(errMsg)) + errMsg = upLoadRst; + return "商品提交失败 " + errMsg; + } var goods_id = BaseRegex.GetStringJson(ref upLoadRst, "goods_id"); return "{\"success\":true,\"goods_id\":" + goods_id + ",\"status\":\"已上传\",\"msg\":\"上传成功\"}"; @@ -7514,6 +7715,64 @@ Content-Type: image/jpeg { WaitUploadTime = txtWaitSeconds.Text.ParseToInt(); } + + private void btnRefreshApi_Click(object sender, EventArgs e) + { + RefreshApi(true); + } + + void RefreshApi(bool isForceRefresh = false) + { + pbShopLoading.Visible = true; + // 选中的店铺Id + Task.Run(() => + { + while (!StartUp.IsShopInit) + { + Thread.Sleep(500); + } + + var selectIds = dgvShop.Rows.Cast().Where(row + => row.Cells["colSelect"]?.Value.ParseToBool() == true).Select(r => r.Cells["colShopId"]?.Value.ToString()).ToList(); + foreach (var shop in GlobalConfig.ShopLoginList) + { + Invoke(new Action(() => + { + shop.Message = ""; + BindShop(shop, selectIds); + })); + PddApiHelper.RefreshApi(shop, isForceRefresh); + Invoke(new Action(() => + { + shop.Message = "授权更新完成"; + BindShop(shop, selectIds); + })); + } + List> lsts = GlobalConfig.ShopLoginList.Select(s => s.ApiAuthInfoList).ToList(); + NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_shop_api_auth_info_lists", lsts); + Invoke(new Action(() => { pbShopLoading.Visible = false; })); + }); + } + + private void btnProdDb_Click(object sender, EventArgs e) + { + WXUserProdListForm.Instance.lstTemuDBProductSelect = this.lstTemuDBProductSelect; + WXUserProdListForm.Instance.cmbSourceType.Items.Clear(); + WXUserProdListForm.Instance.cmbSourceType.Items.AddRange(this.cmbSourceType.Items.Cast().ToArray()); + WXUserProdListForm.Instance.SaveComplete -= dbProdList_SaveComplete; + WXUserProdListForm.Instance.SaveComplete += dbProdList_SaveComplete; + WXUserProdListForm.Instance.Show(); + WXUserProdListForm.Instance.BringToFront(); + } + + private void dbProdList_SaveComplete(object obj) + { + NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_db_prod_upload_list", this.lstTemuDBProductSelect); + Invoke(new Action(() => + { + lblWaitToUp.Text = "待上传 " + lstTemuDBProductSelect.Count + " 件"; + })); + } } public class AddPriceRule @@ -7546,6 +7805,7 @@ Content-Type: image/jpeg /// 上货库存量设置 /// public int StockNum { get; set; } = 0; + public decimal AddShippingFeeTimes { get; set; } = 1; } public class PddUploadRule diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.resx b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.resx index ca5e014..ade5094 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.resx +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.resx @@ -135,6 +135,9 @@ True + + True + True diff --git a/TEMUKJD/StartUp.cs b/TEMUKJD/StartUp.cs index c456cfc..e769b6b 100644 --- a/TEMUKJD/StartUp.cs +++ b/TEMUKJD/StartUp.cs @@ -22,6 +22,7 @@ using Work; using AllBase.Model.Param.TemuProductManage; using TemuKJD.KJDForms.ShopForms; using TemuKJD.KJDForms.AdminForms; +using TemuKJD.BLL.PddApi; namespace TemuKJD { @@ -78,15 +79,17 @@ namespace TemuKJD #endregion #endregion - #region Temu店铺登录信息 + #region 店铺登录信息 Task.Run((Action)(() => { while (!BaseClass.IsLoginSuccess) Thread.Sleep(200); ShopListForm.UpdateShop(); + PddApiHelper.PddGetLocalTokens(); IsShopInit = true; })); + #endregion #region Temu店铺登录设置参数 diff --git a/TEMUKJD/WXForms/ProductForms/WXUserProdListForm.Designer.cs b/TEMUKJD/WXForms/ProductForms/WXUserProdListForm.Designer.cs index ed6efcf..b298606 100644 --- a/TEMUKJD/WXForms/ProductForms/WXUserProdListForm.Designer.cs +++ b/TEMUKJD/WXForms/ProductForms/WXUserProdListForm.Designer.cs @@ -404,7 +404,7 @@ namespace TemuKJD.WXForms.ProductForms this.cmbCat3.DropDownWidth = 1; this.cmbCat3.FormattingEnabled = true; this.cmbCat3.IntegralHeight = false; - this.cmbCat3.Location = new System.Drawing.Point(883, 7); + this.cmbCat3.Location = new System.Drawing.Point(883, 5); this.cmbCat3.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3); this.cmbCat3.Name = "cmbCat3"; this.cmbCat3.Size = new System.Drawing.Size(201, 25); @@ -432,7 +432,7 @@ namespace TemuKJD.WXForms.ProductForms this.cmbCat2.DropDownWidth = 1; this.cmbCat2.FormattingEnabled = true; this.cmbCat2.IntegralHeight = false; - this.cmbCat2.Location = new System.Drawing.Point(625, 7); + this.cmbCat2.Location = new System.Drawing.Point(625, 5); this.cmbCat2.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3); this.cmbCat2.Name = "cmbCat2"; this.cmbCat2.Size = new System.Drawing.Size(201, 25); @@ -460,7 +460,7 @@ namespace TemuKJD.WXForms.ProductForms this.cmbCat1.DropDownWidth = 1; this.cmbCat1.FormattingEnabled = true; this.cmbCat1.IntegralHeight = false; - this.cmbCat1.Location = new System.Drawing.Point(348, 7); + this.cmbCat1.Location = new System.Drawing.Point(348, 5); this.cmbCat1.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3); this.cmbCat1.Name = "cmbCat1"; this.cmbCat1.Size = new System.Drawing.Size(201, 25); @@ -520,7 +520,7 @@ namespace TemuKJD.WXForms.ProductForms "安全+未校验", "安全商品", "未校验"}); - this.cmbWxSafe.Location = new System.Drawing.Point(71, 42); + this.cmbWxSafe.Location = new System.Drawing.Point(71, 40); this.cmbWxSafe.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3); this.cmbWxSafe.Name = "cmbWxSafe"; this.cmbWxSafe.Size = new System.Drawing.Size(201, 25); @@ -541,7 +541,7 @@ namespace TemuKJD.WXForms.ProductForms "机会商品", "以图搜品", "外部数据"}); - this.cmbSourceType.Location = new System.Drawing.Point(883, 42); + this.cmbSourceType.Location = new System.Drawing.Point(883, 40); this.cmbSourceType.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3); this.cmbSourceType.Name = "cmbSourceType"; this.cmbSourceType.Size = new System.Drawing.Size(201, 25); @@ -1604,7 +1604,6 @@ namespace TemuKJD.WXForms.ProductForms private DevComponents.DotNetBar.PanelEx btnSelect; private System.Windows.Forms.ComboBox cmbGroupFilter; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; - private System.Windows.Forms.ComboBox cmbSourceType; private System.Windows.Forms.Label lblSourceType; private System.Windows.Forms.Label lblWxSafe; private System.Windows.Forms.ComboBox cmbWxSafe; @@ -1683,5 +1682,6 @@ namespace TemuKJD.WXForms.ProductForms private System.Windows.Forms.TextBox txtCatBoundLessThan; private System.Windows.Forms.TextBox txtCatBoundMoreThan; private UserComponent.UcCheckBox chkCatBoundLessThan; + public System.Windows.Forms.ComboBox cmbSourceType; } } \ No newline at end of file diff --git a/Work/Api/AlibabaProductGet.cs b/Work/Api/AlibabaProductGet.cs index c2c3f3c..34ca4f9 100644 --- a/Work/Api/AlibabaProductGet.cs +++ b/Work/Api/AlibabaProductGet.cs @@ -18,6 +18,7 @@ namespace Work.Api public ProductCollectBase Product; public bool IsPinduoduo = false; public bool OnSale = true; + public bool IsOnSale { get { return OnSale; } set { OnSale = value; } } public AlibabaProductGet(ProductCollectBase p) { Product = p; diff --git a/Work/Api/UploadPinduoduoMain.cs b/Work/Api/UploadPinduoduoMain.cs index 1fee7d8..ab82b3b 100644 --- a/Work/Api/UploadPinduoduoMain.cs +++ b/Work/Api/UploadPinduoduoMain.cs @@ -22,6 +22,8 @@ namespace Work.Api Name = name; } + public static Dictionary>> goodCacheContent = new Dictionary>>(); + public static bool isUseCache = true; public static Dictionary EditDayTemp = new Dictionary(); public static Dictionary CatDayTemp = new Dictionary(); @@ -126,6 +128,9 @@ namespace Work.Api public static bool isUseTaoBaoCache = true; public static bool isUseDouYinCache = true; public static List PriceModelList = new List(); + + public static bool CheckSearch = false; + public void Get() { upRunning = true; diff --git a/Work/Business/CatBLL.cs b/Work/Business/CatBLL.cs new file mode 100644 index 0000000..2974013 --- /dev/null +++ b/Work/Business/CatBLL.cs @@ -0,0 +1,129 @@ +using AllBase; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Work.Api; + +namespace Work.Business +{ + public class CatBLL + { + Dictionary> dicCat = new Dictionary>(); + public static List lstCatInfo = new List(); + public void GetCat1() + { + var Shop = GetShopLoginInfo.Shops.Find(s => s.ShopName == "pdd49094313446"); + string url = "https://mms.pinduoduo.com/vodka/v2/mms/cat1List"; + string refere = "https://mms.pinduoduo.com/goods/category"; + string htmlx = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, "", Shop.Cookies); + var mc = BaseRegex.GetMatchRegex(ref htmlx, @"\{[^}]+?""stapleName"":\[([\w\W]+?)\]\}"); + dicCat.Clear(); + for (int i = 0; mc != null && i < mc.Count; i++) + { + var item = mc[i].Groups[0].Value; + int catid = BaseRegex.GetIntJson(ref item, "id");//商品ID + string stapleName = mc[i].Groups[1].Value;//商品ID + if (dicCat.ContainsKey(stapleName)) + { + dicCat[stapleName].Add(catid); + } + else + { + List lst = new List(); + lst.Add(catid); + dicCat.Add(stapleName, lst); + } + string name = BaseRegex.GetStringJson(ref item, "name");//商品ID + CatInfo cat = new CatInfo(); + cat.CatId = catid; + cat.CatName = name; + lstCatInfo.Add(cat); + } + } + + public void GetAllCat() + { + var Shop = GetShopLoginInfo.Shops.Find(s => s.ShopName == "pdd49094313446"); + if (Shop == null) + return; + + lstCatInfo.Clear(); + if (File.Exists("full_cat_json.txt")) + { + lstCatInfo = JsonHelper.DeserializeJsonToObject>(FileBase.ReadAllText("full_cat_json.txt")); + } + + var catNotGetChild = new CatInfo { CatId = 0, CatLevel = 0, CatName = "", ParentCatId = 0 }; + string refere = "https://mms.pinduoduo.com/Pdd.html"; + while (catNotGetChild != null) + { + try + { + System.Threading.Thread.Sleep(2000 + Randomx.GetId(2000)); + string url = "https://mms.pinduoduo.com/vodka/v2/mms/categories?parentId=" + catNotGetChild.CatId; + string html = GetPostTaobaoHtml.GetJsonPost(url, refere, true, "", Shop.Cookies); + + JObject jObj = JObject.Parse(html); + JArray jArr = jObj["result"] as JArray; + foreach (var item in jArr) + { + var itemStr = item.ToString(); + int level = BaseRegex.GetIntJson(ref itemStr, "level"); + int catId = BaseRegex.GetIntJson(ref itemStr, "id"); + bool isLeaf = BaseRegex.GetIntJson(ref itemStr, "leaf") == 1; + int parentCatId = BaseRegex.GetIntJson(ref itemStr, "parent_id"); + string catName = BaseRegex.GetStringJson(ref itemStr, "cat_name"); + CatInfo c = new CatInfo + { + CatId = catId, + CatLevel = level, + CatName = catName, + ParentCatId = parentCatId, + IsLeaf = isLeaf, + cat_id_1 = BaseRegex.GetIntJson(ref itemStr, "cat_id_1"), + cat_id_2 = BaseRegex.GetIntJson(ref itemStr, "cat_id_2"), + cat_id_3 = BaseRegex.GetIntJson(ref itemStr, "cat_id_3"), + cat_id_4 = BaseRegex.GetIntJson(ref itemStr, "cat_id_4"), + }; + if (!lstCatInfo.Any(lc => lc.CatId == c.CatId)) + lstCatInfo.Add(c); + } + catNotGetChild.IsGet = true; + FileBase.WriteAllText("full_cat_json.txt", JsonHelper.SerializeObject(lstCatInfo)); + catNotGetChild = lstCatInfo.FirstOrDefault(lc => lc.IsGet == false && lc.CatLevel < 4 && !lc.IsLeaf); + } + catch (Exception ex) + { + } + } + if (lstCatInfo.Count > 0) + { + string catstr = ""; + foreach (var item in lstCatInfo) + { + catstr += item.CatId + "," + item.cat_id_1 + "," + item.cat_id_2 + "," + item.cat_id_3 + "," + item.cat_id_4 + "\r\n"; + } + FileBase.WriteAllText("full_cat.txt", catstr); + } + } + } + + public class CatInfo + { + public int CatId { get; set; } + public int CatLevel { get; set; } + public int ParentCatId { get; set; } + public string CatName { get; set; } + public bool IsGet { get; set; } + public bool IsLeaf { get; set; } + public int cat_id_1 { get; set; } + public int cat_id_2 { get; set; } + public int cat_id_3 { get; set; } + public int cat_id_4 { get; set; } + } +} diff --git a/Work/Business/CpsApiBLL.cs b/Work/Business/CpsApiBLL.cs new file mode 100644 index 0000000..ec5985b --- /dev/null +++ b/Work/Business/CpsApiBLL.cs @@ -0,0 +1,47 @@ +using AllBase; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Work.Api; + +namespace Work.Business +{ + public class CpsApiBLL + { + public string Name = ""; + + public CpsApiBLL(string name = "") + { + Name = name; + } + + public void GetCpsMall(List shops) + { + foreach (var shop in shops) + { + Thread.Sleep(250 + Randomx.GetId(500)); + GetCpsMallRate(shop); + } + } + + public void GetCpsMallRate(ShopChatBase shop) + { + PinduoduoApiGetProduct api = new PinduoduoApiGetProduct(shop); + string html = api.GetCpsShopSet(); + if (html.Contains("goods_cps_mall_unit_query_response")) + { + int rate = BaseRegex.GetIntJson(ref html, "rate"); + int status = BaseRegex.GetIntJson(ref html, "status"); + shop.CpsShop.Percent = (rate / 10m) + "%"; + shop.CpsShop.Message = status == 1 ? "全店推广中" + shop.CpsShop.Percent : "未开启全店推广"; + } + else + { + LogSave.Add(Name, "店铺" + shop.ShopName + "(" + shop.Name + ")" + "读取推广数据失败。"); + } + } + } +} diff --git a/Work/Business/ProductMappingBLL/MappingTaoBaoBLL.cs b/Work/Business/ProductMappingBLL/MappingTaoBaoBLL.cs new file mode 100644 index 0000000..c222070 --- /dev/null +++ b/Work/Business/ProductMappingBLL/MappingTaoBaoBLL.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Work.Business.ProductMappingBLL +{ + public class MappingTaoBaoBLL + { + /// + /// + /// + /// + /// + /// + /// 如果是标题搜索,则放宽限制 + /// + public static List> FilterItems(List> prodList, int minPrice, int maxPrice = 0, bool isGetTitle = false, decimal multiple = 20M) + { + if (prodList == null || prodList.Count == 0) + return new List>(); + + var result = prodList.Where(p => !string.IsNullOrEmpty(p.Item1) && p.Item2 >= minPrice && p.Item3 >= maxPrice && p.Item3 < (maxPrice * 3.5M + 3000)).ToList(); + var resultx = result.Where(r => r.Item2 != r.Item3).ToList(); + if (resultx.Count > 0) + return resultx; + if (result.Count > 0) + return result; + + if (isGetTitle) + { + result = prodList.Where(p => !string.IsNullOrEmpty(p.Item1) && p.Item2 >= minPrice && p.Item3 < (maxPrice * multiple + 3000)).ToList(); + } + return result; + } + } +} diff --git a/Work/Business/ProductMappingBLL/MappingVDianApiBLL.cs b/Work/Business/ProductMappingBLL/MappingVDianApiBLL.cs new file mode 100644 index 0000000..b5f7769 --- /dev/null +++ b/Work/Business/ProductMappingBLL/MappingVDianApiBLL.cs @@ -0,0 +1,26 @@ +using AllBase; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Work.Business.ProductMappingBLL +{ + public class MappingVDianApiBLL + { + /// + /// 0上货缓存 1标题缓存 2标题搜索 3接口上货 4接口上货失败 5模拟上货 6微店群控接口上货 7标题分词缓存 8标题分词搜索 9类目搜索 10随机数据 11全文检索成功 12全文检索无满足条件 13全文检索失败 14淘宝搜索 15阿里图片搜索 16京喜搜索 + /// + /// 0上货缓存 1标题缓存 2标题搜索 3接口上货 4接口上货失败 5模拟上货 6微店群控接口上货 7标题分词缓存 8标题分词搜索 9类目搜索 10随机数据 11全文检索成功 12全文检索无满足条件 13全文检索失败 + public static void UpDateMappingResultToStatistics(string resultNumber) + { + + var html = GetHtml.GetUtf8("http://cache.aigio.cn/?type=" + resultNumber, "", 6); + if (html != "ok") + { + html = GetHtml.GetUtf8("http://cache.aigio.cn/?type=" + resultNumber, "", 10); + } + } + } +} diff --git a/Work/Business/ProductMappingBLL/MappingVDianCacheBLL.cs b/Work/Business/ProductMappingBLL/MappingVDianCacheBLL.cs new file mode 100644 index 0000000..84e2d6b --- /dev/null +++ b/Work/Business/ProductMappingBLL/MappingVDianCacheBLL.cs @@ -0,0 +1,317 @@ +using AllBase; +using AllBase.Model.Param.ToolsManage; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Work; +using Work.Api; + +namespace Work.Business.ProductMappingBLL +{ + public class MappingVDianCacheBLL + { + public static List> GetFakeCacheVDianTitle(string productTitle, ref string mappingFrom, string tid = "") + { + return GetFakeCacheVDianTitleSub(productTitle, ref mappingFrom, tid); + } + public static void GetFakeCacheQueueVDianTitle(List prod, ref string mappingFrom, string tid = "") + { + GetFakeCacheVDianQueueTitleSub(prod, ref mappingFrom, tid); + } + + public static List> GetFakeCacheVDianFissionTitle(string productTitle, ref string mappingFrom, string tid = "") + { + return GetFakeCacheVDianTitleSub(productTitle, ref mappingFrom, tid, "get_cache_fission_title"); + } + + public static List> GetFakeCacheVDianFissionTitleList(string productTitle, ref string mappingFrom) + { + var result = new List>(); + + if (string.IsNullOrEmpty(productTitle) || productTitle.Length <= 14) + return result; + + var title0_14 = productTitle.Substring(0, 14); + var title0_7 = productTitle.Substring(0, 7); + var title7_7 = productTitle.Substring(7, 7); + var title0_5 = productTitle.Substring(0, 5); + var title4_5 = productTitle.Substring(4, 5); + var title8_5 = productTitle.Substring(8, 5); + var title0_3 = productTitle.Substring(0, 3); + var title3_3 = productTitle.Substring(3, 3); + var title6_3 = productTitle.Substring(6, 3); + var title9_3 = productTitle.Substring(9, 3); + var title12_3 = productTitle.Substring(12, 3); + string[] titleArr = new string[] { title0_14, title0_7, title7_7, title0_5, title4_5, title8_5, title0_3, title3_3, title6_3, title9_3, title12_3 }; + + var html = ""; + string url = BaseClass.BuildObjString("data_change&act=get_cache_fission_title_list"); + string data = "&data="; + foreach (var t in titleArr) + { + var md5id = Md5Base.GetMd5(t).Substring(8, 16); + data += md5id + "," + Math.Abs(BaseClass.GetLong(md5id)) % 1024 + ";"; + } + data += "&" + UserLogin.GetSignaturex(); + // 根据商品标题查找缓存 + html = GetHtml.PostUtf8(url, data); + if (string.IsNullOrEmpty(html)) + html = GetHtml.PostUtf8(url, data); + + // 读取缓存成功 + if (!string.IsNullOrEmpty(html) && !html.ToLower().Contains("error")) + { + mappingFrom = "微店"; + var contents = BaseRegex.GetMatchRegex(html, "\"content\":\"([\\s\\S]+?)\""); + + foreach (System.Text.RegularExpressions.Match m in contents) + { + var content = m.Groups[1]?.ToString(); + if (content == null) + content = ""; + try + { + var tupleItems = content.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); + foreach (var tupleItem in tupleItems) + { + var items = tupleItem.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); + if (items.Length >= 2 && items[0].Length > 5) + { + try + { + var item1 = items[0]; + var item2 = items[1]; + var item3 = items.Length >= 3 ? items[2] : items[1]; + var item4 = items.Length >= 4 ? items[3] : ""; + result.Add(new Tuple(item1, Convert.ToInt32(item2), Convert.ToInt32(item3),item4)); + } + catch + { + } + } + } + } + catch + { + } + } + return result; + } + return null; + } + + /// + /// 根据商品标题寻找微店商品缓存 + /// + /// 导入商品 + /// + /// + /// + public static List> GetFakeCacheVDianTitleSub(string productTitle, ref string mappingFrom, string tid = "", string act = "get_cache_title") + { + var result = new List>(); + var html = ""; + + if (string.IsNullOrEmpty(productTitle)) + return result; + + string url = BaseClass.BuildObjString("data_change&act=" + act); + string data = ""; + // 根据商品标题查找缓存 + if (string.IsNullOrEmpty(html) || html.ToLower().Contains("error")) + { + if (tid == "") + tid = Md5Base.GetMd5(productTitle).Substring(8, 16); + long suffix = Math.Abs(BaseClass.GetLong(tid)) % 1024; + data = "&tid=" + tid + + "&suffix=" + suffix + + "&" + UserLogin.GetSignaturex(); + + html = GetHtml.PostUtf8(url, data); + if (string.IsNullOrEmpty(html)) + html = GetHtml.PostUtf8(url, data); + } + // 读取缓存成功 + if (!string.IsNullOrEmpty(html) && !html.ToLower().Contains("error")) + { + mappingFrom = "微店"; + string content = BaseRegex.GetMatchRegexString(html, "\"content\":\"([\\s\\S]+?)(])\""); + if (content != null) + { + content = content.Replace("\\", "") + "]"; + } + else + { + content = BaseRegex.GetMatchRegexString(html, "\"content\":\"([\\s\\S]+?)\""); + } + + try + { + var tupleItems = content.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); + foreach (var tupleItem in tupleItems) + { + var items = tupleItem.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); + if (items.Length >= 2 && items[0].Length > 5) + { + try + { + var item1 = items[0]; + var item2 = items[1]; + var item3 = items.Length >= 3 ? items[2] : items[1]; + var item4 = items.Length >= 4? items[3] : ""; + result.Add(new Tuple(item1, Convert.ToInt32(item2), Convert.ToInt32(item3),item4)); + } + catch + { + } + } + } + } + catch + { + } + return result; + } + return null; + } + + public static void GetFakeCacheVDianQueueTitleSub(List prods, ref string mappingFrom, string tid = "", string act = "get_cache_title") + { + //var result = new List>(); + var html = ""; + string url = BaseClass.BuildObjString("data_change&act=get_cache_title_list"); + string temp = ""; + for (int i = 0; i < prods.Count; i++) + { + var prod = prods[i]; + + // 根据商品标题查找缓存 + if (string.IsNullOrEmpty(html) || html.ToLower().Contains("error")) + { + + tid = Md5Base.GetMd5(prod.ProductTitle).Substring(8, 16); + long suffix = Math.Abs(BaseClass.GetLong(tid)) % 1024; + if (!string.IsNullOrEmpty(temp)) + temp += ";"; + temp += suffix + "," + tid; + } + } + string data = "&tids=" + temp+ "&" + UserLogin.GetSignaturex(); + html = GetHtml.PostUtf8(url, data); + if (string.IsNullOrEmpty(html)) + html = GetHtml.PostUtf8(url, data); + // 读取缓存成功 + if (!string.IsNullOrEmpty(html) && !html.ToLower().Contains("error")) + { + var m = BaseRegex.GetMatchRegex(ref html, @"\{([^\]]+?)\}"); + for (int i = 0; i < m.Count; i++) + { + var result = new List>(); + var proStr = m[i].Groups[0].Value; + mappingFrom = "微店"; + string title =GetHtml.UrlDecode(BaseRegex.GetStringJson(ref proStr, @"title")); + var prod = prods.Find(s => title.Contains(s.ProductTitle)); + if (prod == null) continue; + string content = BaseRegex.GetMatchRegexString(proStr, "\"content\":\"([\\s\\S]+?)\""); + if (content != null) + { + content = content.Replace("\\", "") ; + } + else + { + content = BaseRegex.GetMatchRegexString(proStr, "\"content\":\"([\\s\\S]+?)\""); + } + try + { + var tupleItems = content.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); + foreach (var tupleItem in tupleItems) + { + var items = tupleItem.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); + if (items.Length >= 2 && items[0].Length > 5) + { + try + { + var item1 = items[0]; + var item2 = items[1]; + var item3 = items.Length >= 3 ? items[2] : items[1]; + var item4 = items.Length >= 4 ? items[3] : ""; + result.Add(new Tuple(item1, Convert.ToInt32(item2), Convert.ToInt32(item3), item4)); + } + catch + { + } + } + } + } + catch + { + } + UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)] = result; + } + } + for (int i = 0; i < prods.Count; i++) + { + var prod = prods[i]; + if (!UploadPinduoduoMain.goodCacheContent.ContainsKey(long.Parse(prod.ProductId))) + { + var result = new List>(); + UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)] = result; + } + //UploadPinduoduoMain.goodCacheContent.Add(long.Parse(prod.ProductId), null); + if(UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)]== null) + { + var result = new List>(); + UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)]=result; + } + } + } + + public static string SaveFakeCacheVDianTitle(List> MappingResult, string productTitle, string mappingFrom, bool isAdd = true) + { + var content = ""; + foreach (var item in MappingResult) + { + content += item.Item1 + "," + item.Item2 + "," + item.Item3 + "," + item.Item4 + ";"; + } + + string url = BaseClass.BuildObjString("data_change&act=add_cache_title"); + //if (!isAdd) + // url = BaseClass.BuildObjString("data_change&act=update"); + content = content.Length > 0 ? content.Trim(';') + ";" : content; + var tid = Md5Base.GetMd5(productTitle).Substring(8, 16); + var suffix = Math.Abs(BaseClass.GetLong(tid)) % 1024; + string data = "&tid=" + tid + + "&suffix=" + suffix + + "&content=" + content + + "&title=" + HttpUtility.UrlEncode(productTitle, Encoding.UTF8) + + "&" + UserLogin.GetSignaturex(); + string result = GetHtml.PostUtf8(url, data); + return result; + } + + public static string SaveFakeCacheVDianFissionTitle(List> MappingResult, string productFissionTitle, string mappingFrom, bool isAdd = true) + { + var content = ""; + foreach (var item in MappingResult) + { + content += item.Item1 + "," + item.Item2 + "," + item.Item3 + "," + item.Item4 + ";"; + } + content = content.Length > 0 ? content.Trim(';') + ";" : content; + string url = BaseClass.BuildObjString("data_change&act=add_cache_fission_title"); + + var tid = Md5Base.GetMd5(productFissionTitle).Substring(8, 16); + var suffix = Math.Abs(BaseClass.GetLong(tid)) % 1024; + string data = "&tid=" + tid + + "&suffix=" + suffix + + "&content=" + content + + "&title=" + HttpUtility.UrlEncode(productFissionTitle, Encoding.UTF8) + + "&" + UserLogin.GetSignaturex(); + string result = GetHtml.PostUtf8(url, data); + return result; + } + } +} diff --git a/Work/Business/ProductMappingBLL/MappingVDianTitleSearchBLL.cs b/Work/Business/ProductMappingBLL/MappingVDianTitleSearchBLL.cs new file mode 100644 index 0000000..4bac07a --- /dev/null +++ b/Work/Business/ProductMappingBLL/MappingVDianTitleSearchBLL.cs @@ -0,0 +1,277 @@ +using AllBase; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Work.Business.ProductMappingBLL +{ + public class MappingVDianTitleSearchBLL + { + public static List> GetTupleListData(string title,string weidianGetTitleResult) + { + var result = new List>(); + if (weidianGetTitleResult == null) + return result; + if (weidianGetTitleResult.Contains("\\\"message\\\":\\\"OK\\\"")) + { + Newtonsoft.Json.Linq.JObject jObj = Newtonsoft.Json.Linq.JObject.Parse(weidianGetTitleResult); + weidianGetTitleResult = jObj["data"].ToString(); + } + Newtonsoft.Json.Linq.JArray jArr = new Newtonsoft.Json.Linq.JArray(); + if (weidianGetTitleResult.Contains("\"message\":\"OK\"")) + { + Newtonsoft.Json.Linq.JObject jObj = Newtonsoft.Json.Linq.JObject.Parse(weidianGetTitleResult); + jArr = jObj["result"]["viewContainer"] as Newtonsoft.Json.Linq.JArray; + } + else if (weidianGetTitleResult.Contains("\"data\":[")) + { + Newtonsoft.Json.Linq.JObject jObj = Newtonsoft.Json.Linq.JObject.Parse(weidianGetTitleResult); + jArr = jObj["data"] as Newtonsoft.Json.Linq.JArray; + } + foreach (var item in jArr) + { + var str = item.ToString(); + var id = BaseRegex.GetStringJson(ref str, "itemId"); + var name = BaseRegex.GetStringJson(ref str, "itemName"); + if (string.IsNullOrEmpty(name)) + continue; + bool compare = CompareTitle(title, name); + if (!compare) + continue; + var price = BaseRegex.GetIntJson(ref str, "itemPrice"); + if (!string.IsNullOrEmpty(id) && price > 0) + result.Add(new Tuple(id, price, price, DateTime.Now.ToString("yyyy-MM-dd"))); + } + return result; + } + public static List> GetTupleTaoBaoListData(string weidianGetTitleResult) + { + var result = new List>(); + if (weidianGetTitleResult == null) + return result; + //if (weidianGetTitleResult.Contains("\\\"message\\\":\\\"OK\\\"")) + //{ + // Newtonsoft.Json.Linq.JObject jObj = Newtonsoft.Json.Linq.JObject.Parse(weidianGetTitleResult); + // weidianGetTitleResult = jObj["data"].ToString(); + //} + Newtonsoft.Json.Linq.JArray jArr = new Newtonsoft.Json.Linq.JArray(); + //if (weidianGetTitleResult.Contains("\"message\":\"OK\"")) + //{ + // Newtonsoft.Json.Linq.JObject jObj = Newtonsoft.Json.Linq.JObject.Parse(weidianGetTitleResult); + // jArr = jObj["result"]["viewContainer"] as Newtonsoft.Json.Linq.JArray; + //} + if (weidianGetTitleResult.Contains("mtopjsonp2(")) + weidianGetTitleResult = BaseRegex.GetMatchRegexString(ref weidianGetTitleResult, @"mtopjsonp2\(({[\w\W]+?})\)"); + if (weidianGetTitleResult.Contains("\"data\":{")) + { + Newtonsoft.Json.Linq.JObject jObj = Newtonsoft.Json.Linq.JObject.Parse(weidianGetTitleResult); + jArr = jObj["data"]?["recommend"]?["resultList"] as Newtonsoft.Json.Linq.JArray; + //var lst = jObj["data"]["resultList"].ToList(); + //var ss = JArray.Parse(jObj["data"]?["recommend"]?["resultList"]?.ToString())?.ToObject>(); + } + if (jArr == null) + return result; + foreach (var item in jArr) + { + var str = item.ToString(); + var id = BaseRegex.GetStringJson(ref str, "itemId"); + int price = 0; + var pricetemp = BaseRegex.GetDecimalJson(ref str, "promotionPrice"); + price =(int)(pricetemp * 100); + if (!string.IsNullOrEmpty(id) && price > 0) + result.Add(new Tuple("tb-"+id, price, price, DateTime.Now.ToString("yyyy-MM-dd"))); + if (result.Count >= 10) + break; + } + return result; + } + + public static List> GetTupleTaoBaoListV2Data(string title,string weidianGetTitleResult) + { + var result = new List>(); + if (weidianGetTitleResult == null) + return result; + //if (weidianGetTitleResult.Contains("\\\"message\\\":\\\"OK\\\"")) + //{ + // Newtonsoft.Json.Linq.JObject jObj = Newtonsoft.Json.Linq.JObject.Parse(weidianGetTitleResult); + // weidianGetTitleResult = jObj["data"].ToString(); + //} + Newtonsoft.Json.Linq.JArray jArr = new Newtonsoft.Json.Linq.JArray(); + //if (weidianGetTitleResult.Contains("\"message\":\"OK\"")) + //{ + // Newtonsoft.Json.Linq.JObject jObj = Newtonsoft.Json.Linq.JObject.Parse(weidianGetTitleResult); + // jArr = jObj["result"]["viewContainer"] as Newtonsoft.Json.Linq.JArray; + //} + if (weidianGetTitleResult.Contains("mtopjsonp17(")) + weidianGetTitleResult = BaseRegex.GetMatchRegexString(ref weidianGetTitleResult, @"mtopjsonp17\(({[\w\W]+?})\)"); + if (weidianGetTitleResult.Contains("\"data\":{")) + { + Newtonsoft.Json.Linq.JObject jObj = Newtonsoft.Json.Linq.JObject.Parse(weidianGetTitleResult); + jArr = jObj["data"]?["itemsArray"] as Newtonsoft.Json.Linq.JArray; + //var lst = jObj["data"]["resultList"].ToList(); + //var ss = JArray.Parse(jObj["data"]?["recommend"]?["resultList"]?.ToString())?.ToObject>(); + } + if (jArr == null) + return result; + var resultx = new List>(); + foreach (var item in jArr) + { + var str = item.ToString(); + var id = BaseRegex.GetStringJson(ref str, "x_object_id"); + if (id == null) + continue; + string name = BaseRegex.GetStringJson(ref str, "title"); + double simu = BaseClass.GetSimularityBetween2Text(title, name); + if (simu < 0.8) + continue; + bool compare = CompareTitle(title, name); + if (!compare) + continue; + int price = 0; + var pricetemp = BaseRegex.GetDecimalJson(ref str, "item_price"); + price = (int)(pricetemp * 100); + if (!string.IsNullOrEmpty(id) && price > 0) + resultx.Add(new Tuple("tb-" + id, price, price,simu, DateTime.Now.ToString("yyyy-MM-dd"))); + if (resultx.Count >= 10) + break; + } + resultx = resultx.OrderByDescending(o => o.Item4).ToList(); + for (int i = 0; i < resultx.Count; i++) + { + var obj = resultx[i]; + result.Add(new Tuple(obj.Item1, obj.Item2, obj.Item3, obj.Item5)); + } + //foreach (var item in jArr) + //{ + // var str = item.ToString(); + // var id = BaseRegex.GetStringJson(ref str, "x_object_id"); + // if (id == null) + // continue; + // string name= BaseRegex.GetStringJson(ref str, "title"); + // double simu= BaseClass.GetSimularityBetween2Text(title, name); + // if (simu < 0.85) + // continue; + // bool compare = CompareTitle(title, name); + // if (!compare) + // continue; + // int price = 0; + // var pricetemp = BaseRegex.GetDecimalJson(ref str, "item_price"); + // price = (int)(pricetemp * 100); + // if (!string.IsNullOrEmpty(id) && price > 0) + // result.Add(new Tuple("tb-" + id, price, price, DateTime.Now.ToString("yyyy-MM-dd"))); + // if (result.Count >= 10) + // break; + //} + return result; + } + + public static List> GetTuplejingxiListV2Data(string title, string weidianGetTitleResult) + { + var result = new List>(); + if (weidianGetTitleResult == null) + return result; + Newtonsoft.Json.Linq.JArray jArr = new Newtonsoft.Json.Linq.JArray(); + Newtonsoft.Json.Linq.JObject jObj = Newtonsoft.Json.Linq.JObject.Parse(weidianGetTitleResult); + jArr = jObj["wareInfo"] as Newtonsoft.Json.Linq.JArray; + if (jArr == null) + return result; + var resultx = new List>(); + foreach (var item in jArr) + { + var str = item.ToString(); + var id = BaseRegex.GetStringJson(ref str, "wareId"); + if (id == null) + continue; + string name = BaseRegex.GetStringJson(ref str, "wname"); + double simu = BaseClass.GetSimularityBetween2Text(title, name); + if (simu < 0.8) + continue; + //bool compare = CompareTitle(title, name); + //if (!compare) + // continue; + int price = 0; + var pricetemp = BaseRegex.GetDecimalJson(ref str, "jdPrice"); + price = (int)(pricetemp * 100); + if (!string.IsNullOrEmpty(id) && price > 0) + resultx.Add(new Tuple("jx-" + id, price, price,simu, DateTime.Now.ToString("yyyy-MM-dd"))); + if (resultx.Count >= 10) + break; + } + resultx = resultx.OrderByDescending(o => o.Item4).ToList(); + for (int i = 0; i < resultx.Count; i++) + { + var obj = resultx[i]; + result.Add(new Tuple(obj.Item1, obj.Item2, obj.Item3, obj.Item5)); + } + return result; + } + + public static List> GetTuple1688ListData(string title,string weidianGetTitleResult) + { + var result = new List>(); + if (weidianGetTitleResult == null) + return result; + //if (weidianGetTitleResult.Contains("\\\"message\\\":\\\"OK\\\"")) + //{ + // Newtonsoft.Json.Linq.JObject jObj = Newtonsoft.Json.Linq.JObject.Parse(weidianGetTitleResult); + // weidianGetTitleResult = jObj["data"].ToString(); + //} + Newtonsoft.Json.Linq.JArray jArr = new Newtonsoft.Json.Linq.JArray(); + //if (weidianGetTitleResult.Contains("\"message\":\"OK\"")) + //{ + // Newtonsoft.Json.Linq.JObject jObj = Newtonsoft.Json.Linq.JObject.Parse(weidianGetTitleResult); + // jArr = jObj["result"]["viewContainer"] as Newtonsoft.Json.Linq.JArray; + //} + if (weidianGetTitleResult.Contains("mtopjsonp17(")) + weidianGetTitleResult = BaseRegex.GetMatchRegexString(ref weidianGetTitleResult, @"mtopjsonp17\(({[\w\W]+?})\)"); + if (weidianGetTitleResult.Contains("\"data\":{")) + { + Newtonsoft.Json.Linq.JObject jObj = Newtonsoft.Json.Linq.JObject.Parse(weidianGetTitleResult); + jArr = jObj["data"]?["offerList"] as Newtonsoft.Json.Linq.JArray; + //var lst = jObj["data"]["resultList"].ToList(); + //var ss = JArray.Parse(jObj["data"]?["recommend"]?["resultList"]?.ToString())?.ToObject>(); + } + if (jArr == null) + return result; + var resultx = new List>(); + foreach (var item in jArr) + { + var str = item.ToString(); + var id = BaseRegex.GetStringJson(ref str, "infoId"); + string name = BaseRegex.GetStringJson(ref str, "simpleSubject"); + double simu = BaseClass.GetSimularityBetween2Text(title, name); + if (simu < 0.5) + continue; + bool compare = CompareTitle(title, name); + if (!compare) + continue; + int price = 0; + var pricetemp = BaseRegex.GetDecimalJson(ref str, "price"); + price = (int)(pricetemp * 100); + if (!string.IsNullOrEmpty(id) && price > 0) + resultx.Add(new Tuple("al-" + id, price, price,simu,DateTime.Now.ToString("yyyy-MM-dd"))); + if (resultx.Count >= 10) + break; + } + resultx = resultx.OrderByDescending(o => o.Item4).ToList(); + for (int i = 0; i < resultx.Count; i++) + { + var obj = resultx[i]; + result.Add(new Tuple(obj.Item1, obj.Item2, obj.Item3, obj.Item5)); + } + return result; + } + + public static bool CompareTitle(string title,string name) + { + if ((name.Length < title.Length + 10) || name.Length <= 30) + { + return true; + } + return false; + } + } +} diff --git a/Work/Business/ProductMappingBLL/PinDuoDuoCidName.cs b/Work/Business/ProductMappingBLL/PinDuoDuoCidName.cs new file mode 100644 index 0000000..d2f5c67 --- /dev/null +++ b/Work/Business/ProductMappingBLL/PinDuoDuoCidName.cs @@ -0,0 +1,13082 @@ +using AllBase; +using NaiBa.Util.Extension; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Work.Business.ProductMappingBLL +{ + public class PinDuoDuoCidName + { + #region cid队列 + private static string CidNameAll = @"239,男装 +2603,办公用品 +2629,文化用品 +2933,3C数码配件 +5217,古董/邮币/字画/收藏 +5752,影音电器 +5834,手机 +5839,二手数码 +5851,电脑 +5906,数码相机/单反相机/摄像机 +5921,智能设备 +5955,厨房电器 +6076,大家电 +6128,生活电器 +6209,个人护理保健 +6290,网络设备 +6398,零食/坚果/特产 +6536,咖啡/麦片/冲饮 +6586,茶 +6630,粮油米面/南北干货/调味品 +6758,酒类 +6785,保健食品/膳食营养补充食品 +6883,传统滋补品 +7323,电子元器件市场 +7629,摩托车/装备/配件 +7639,汽车/用品/配件/改装 +8172,水产肉类/新鲜蔬果/熟食 +8439,女装/女士精品 +8502,新车/二手车 +8508,流行男鞋 +8509,女鞋 +8538,箱包皮具/女包/男包 +8583,内衣裤袜 +8634,腕表眼镜 +8669,服饰配件 +8721,本地化生活服务 +8722,电影/演出/体育赛事 +8723,个性定制/设计服务 +8724,购物卡/礼品卡/代金券 +8725,婚庆/摄影/摄像服务 +8726,教育培训 +8727,景点门票/周边游 +8728,旅游路线/商品/服务 +8729,生活缴费 +8730,影视/会员/腾讯QQ专区 +8731,特价酒店/客栈/公寓旅馆 +8732,网络服务/软件 +8733,网上营业厅 +8734,休闲娱乐 +8736,游戏服务/直播 +9313,床上用品 +9314,电子/电工 +9315,基础建材 +9316,家居饰品 +9317,家装灯饰光源 +9318,家装主材 +9319,居家布艺 +9320,全屋定制 +9321,商业/办公家具 +9322,特色手工艺 +9323,五金工具 +9324,住宅家具 +11683,电动车/配件/交通工具 +11684,户外/登山/旅行野营用品 +11685,运动/瑜伽/健身/球类 +11686,运动包/户外包/配件 +11687,运动服/休闲服 +11688,运动鞋 +11689,自行车/骑行装备/零配件 +13176,OTC药品 +13177,精制中药材 +13178,隐形眼镜/护理液 +14697,奶粉/辅食/营养品/零食 +14740,婴童用品 +14933,童鞋/婴儿鞋/亲子鞋 +14966,童装/婴儿装/亲子装 +15083,玩具/童车/益智/积木/模型 +15356,孕产妇用品/孕妇装/营养 +15543,书籍/杂志/报纸 +16155,农机/农具/农膜 +16192,畜牧/养殖物资 +16209,农用物资 +16237,成人用品 +16288,宠物/宠物食品及用品 +16548,餐饮具 +16676,厨房/烹饪用具 +16794,收纳整理 +16901,家庭/个人清洁工具 +16989,居家日用 +17134,节庆用品/礼品 +17249,烟品/打火机/瑞士军刀 +17285,洗护清洁剂/卫生巾/纸/香薰 +17412,饰品/流行首饰/时尚饰品 +17455,珠宝/钻石/翡翠/黄金 +17671,鲜花速递/花卉仿真/绿植园艺 +17803,乐器/吉他/钢琴/配件 +18088,装修设计/施工/监理 +18270,医疗健康服务 +18349,处方药 +18482,彩妆/香水/美妆工具 +18574,美容美体仪器 +18601,美发护发/假发 +18637,美容护肤/美体/精油 +18814,器械保健 +19298,婴童尿裤 +20078,汽车服务 +20118,交通出行 +20340,房地产 +20645,模玩/动漫/周边/cos/桌游 +245,衬衫 +246,T恤 +248,针织衫/毛衣 +3848,套装 +5208,民族服装 +7281,背心/马甲 +7282,风衣 +7283,夹克 +7284,棉裤 +7285,羽绒裤 +7286,毛呢大衣 +7287,棉衣 +7289,牛仔裤 +7290,POLO衫 +7291,皮裤 +7292,皮衣 +7294,卫衣 +7295,休闲裤 +7296,西服/西裤 +7297,羽绒服 +20639,皮草 +2604,办公用纸 +2605,包装设备/标牌及耗材 +2606,保险箱 +2607,条码扫描/采集器材 +2608,传真通信设备 +2609,打印机 +2610,打印机配件 +2611,点/验钞/收款机及配件 +2612,多功能一体机及配件 +2613,复合复印机 +2614,胶带 +2616,门禁考勤器材 +2619,其它办公设备 +2620,办公设备配件 +2621,办公耗材 +2622,扫描仪 +2623,绳索/扎带/办公线材 +2624,碎纸机 +2626,投影机配件 +4835,投影机 +4837,保管箱 +4847,磁盘刻录存储 +18995,会议音频视频 +18999,智慧办公 +20494,包装用品 +20835,广告/印刷/绘图设备 +2630,笔类书写工具 +2631,裁剪用品 +2632,财会用品 +2634,点读机电子书 +2635,画具/画材/书法用品 +2636,绘图测量用品 +2663,计算器 +2664,胶粘用品 +2665,教学用品 +2667,日常学习用品 +2668,收纳陈列用品 +2669,学习机/教育伴学机 +2670,印刷制品 +2671,纸张本册 +2672,装订用品 +5673,字帖 +18987,文创/其他文化用品 +18991,学习手写板 +2934,无线上网卡设备 +2935,笔记本电脑配件 +2936,车载手机配件 +2937,单反单电相机配件 +2938,电子书配件 +2939,电教产品配件 +2940,干电池/充电电池/套装 +2941,影音周边配件 +2942,胶片相机配件 +2943,MP3/MP4/录音笔 +2945,平板电脑配件 +2946,手机配件 +2947,数码相机配件 +2948,摄像机配件 +2949,数码包收纳 +2950,数码相框 +2951,数码周边 +2952,USB电脑周边 +2953,移动电源 +3898,插座 +5218,古玩杂项 +5226,金石篆刻 +5228,邮品 +5234,钱币 +5272,收藏品保养/鉴定工具 +18134,观赏石/奇石/矿物晶体 +18135,其它收藏品 +18136,文房用品/用具 +18137,宗教用品 +20595,器具收藏 +20598,茶酒滋补收藏 +20600,趣味收藏 +20601,书法/绘画 +5753,MP3/录音笔/收录音机 +5755,影音家电配件 +5771,广告机 +5773,影音影视播放 +5795,音箱/音响 +5806,舞台设备/专业器材 +5824,麦克风/话筒/扩音器 +5826,耳机/耳麦 +5835,智能机 +5837,功能机/非智能机 +5840,二手手机 +5842,二手平板电脑 +5844,二手笔记本电脑 +5846,二手相机 +5849,其他二手数码 +5852,笔记本电脑 +5854,平板电脑/MID +5856,品牌台机/品牌一体机/服务器 +5861,DIY电脑 +5864,闪存卡/U盘/存储/移动硬盘 +5868,电玩/配件/游戏/攻略 +5883,电脑硬件/显示器/电脑周边 +19125,服务器硬件 +5907,普通数码相机 +5910,专业数码单反 +5912,微单/单电 +5914,胶卷相机 +5917,数码摄像机 +5919,单反单电镜头 +19108,全景相机 +5922,运动跟踪器 +5924,智能摄像 +5927,智能眼镜/vr头盔 +5929,智能手表 +5931,智能健康 +5933,智能手环 +5935,智能机器人 +5937,智能飞行 +5939,其他智能设备 +5941,智能出行 +5943,智能设备配件 +5947,智能家庭 +5953,智能翻译机 +5956,电饭煲 +5958,豆浆机 +5960,榨汁机 +5962,电磁炉 +5964,电热水壶 +5966,微波炉 +5968,其他厨房家电 +5984,面包机 +5986,冰淇淋机 +5988,保健/养生/煎药壶 +5990,厨房家电配件 +5997,电烤箱 +5999,电压力锅 +6001,电陶炉 +6003,多士炉 +6005,电饼铛/可丽饼机 +6007,电热杯 +6009,电动打蛋器 +6011,电炸锅 +6013,电热饭盒 +6015,净水器 +6017,咖啡机 +6019,酸奶机 +6021,饮水机 +6023,原汁机 +6025,煮蛋器/蒸蛋器 +6027,搅拌/料理机 +6029,定时器/提醒器 +6031,电蒸锅 +6033,电热/火锅 +6035,电炖/煮粥锅/文火炉 +6037,面条机 +6039,智能厨房电器 +6041,食物垃圾处理机 +6043,净水设备 +6045,商用厨电 +19110,破壁机 +19112,切片机/绞肉机 +19114,芝士炉/电烤盘 +20107,和面机/厨师机 +20448,茶吧机/泡茶机 +20452,多功能料理锅 +20456,家用气泡水机 +20458,三明治机 +20460,食物烘干机 +20462,台式净饮机 +6077,冰箱 +6079,空调 +6081,洗衣机 +6083,热水器 +6093,冷柜/便携冷热箱 +6097,酒柜 +6099,平板电视 +6101,烘干机 +6103,厨房大电 +6113,激光电视 +6115,中央空调 +6118,大家电配件 +20095,洗鞋机 +20782,冰洗套装 +20783,洗烘套装 +20789,衣物护理机 +20791,中央新风机 +6129,抽湿器/除湿器 +6131,超声波清洗机 +6133,扫地机器人 +6135,电熨斗 +6137,擦鞋器 +6139,电风扇 +6141,擦窗机器人 +6143,除螨仪 +6145,吊扇 +6147,对讲机 +6150,电话机 +6152,挂烫机 +6154,干衣机 +6156,干鞋器 +6158,加湿器 +6160,空气净化/氧吧 +6162,吸尘器 +6164,蒸汽刷/干洗刷 +6166,暖风机/取暖器 +6168,电热毯 +6170,电热水袋 +6172,电暖足器 +6174,毛球修剪器 +6177,空调扇 +6179,服务机器人 +6181,空气净化机器人 +6183,其它生活家电 +6196,生活家电配件 +6205,蒸汽拖把 +6207,蒸汽清洁机 +20288,擦地/拖地机器人 +20309,电子灭蚊器 +20311,缝纫机 +20313,消毒水生成机 +20328,冰箱除味器 +20331,保温碟/暖菜板 +20334,换气扇/排气扇 +20336,取暖桌 +20450,电动拖把/电动扫把 +20464,暖被机 +20466,洗地机 +20560,家用新风机 +6210,各类配件 +6218,清洁美容工具 +6221,口腔护理 +6227,按摩器材 +6241,美容/美体辅助工具 +6246,美发工具 +6257,美体塑身 +6263,家用保健器材 +6270,经络保健器材 +6275,家用护理辅助器材 +6277,其他个人护理 +6279,家庭保健 +20454,干身器 +6291,路由器 +6298,网卡 +6300,电脑网络工具 +6311,宽带猫/光猫 +6313,网关 +6315,网络设备 +6338,无线网络 +6342,网络安全 +6352,机房布线 +6356,视频监控 +6362,语音视频 +6367,智能控制终端 +6369,路由器/猫/网卡配件 +6372,数码线材 +6374,无线高清 +6376,无线上网设备与终端 +6378,光纤设备 +6380,交换机 +6382,网络存储设备 +6399,山核桃/坚果/炒货 +6420,蜜饯/枣类/梅/果干/冻干 +6465,糕点/点心 +6469,饼干/膨化 +6484,奶酪/乳制品 +6490,牛肉干/猪肉脯/卤味零食 +6501,鱿鱼丝/鱼干/海味即食 +6510,糖果零食/果冻/布丁 +6514,辣条/豆类制品/蔬菜干 +6522,巧克力 +6537,咖啡伴侣/辅料 +6548,其它饮品 +6550,天然/食补粉粉食品 +6552,藕粉/麦片/冲饮品 +6567,成人奶粉 +6569,饮料 +6580,常温乳制品 +7515,速溶咖啡/咖啡豆/粉 +7521,矿泉水/纯净水 +20416,低温乳制品 +6587,普洱 +6589,黄茶 +6591,红茶 +6597,代用/花草/水果/再加工茶 +6602,乌龙茶 +6609,黑茶 +6613,白茶 +6619,绿茶 +6631,调味品/果酱/沙拉 +6654,米/面粉/杂粮 +6671,南北干货/肉类干货 +6689,方便速食 +6709,食用油/调味油 +6729,烘焙原料/辅料/食品添加剂-新 +6756,其他食品 +6759,国产白酒 +6761,配制酒/果酒 +6763,啤酒 +6765,黄酒 +6767,其他酒类 +6769,葡萄酒 +6771,保健食品酒 +6773,洋酒 +6786,蛋白粉/氨基酸/胶原蛋白 +6799,动物精华/提取物 +6805,海洋生物类 +6817,菌/菇/酵素 +6823,膳食纤维/代餐食品 +6827,维生素/矿物质/钙铁锌硒 +6845,脂肪酸/脂类 +6848,植物精华/提取物 +6880,其他膳食营养补充食品 +6884,阿胶膏方 +6890,参类滋补品 +6895,参茸贵细 +6900,蜂产品 +6905,蜂蜜 +6907,灵芝 +6913,鹿茸 +6918,滋补养生原料 +6949,三七 +6951,山药及其制品 +6953,石斛/枫斗 +6955,新食品原料 +6958,雪蛤/林蛙油 +6962,燕窝滋补品 +6966,养生茶 +6968,药食同源食品 +7010,虫草 +7012,枸杞及其制品 +18791,食疗滋补营养 +7324,无源元件 +7332,手机信号放大器 +7334,线材/线类 +7346,连接器 +7348,集成电路(IC) +7355,分立器件 +7361,计算机/服务器及零部件 +7369,电路板 +7372,电机/马达 +7382,物联网 +7391,电路保护 +7396,开关/按钮 +7411,开源硬件/电子DIY/创客 +7417,冷却和热管理 +7426,微处理器/微控制器/单片机 +7428,电声器材 +7432,LED +7443,多媒体与显示器件 +7448,电子胶/密封胶/硅胶/粘合剂 +7450,光电器件 +7455,磁 +7458,晶振与频率元件 +7461,开发板/开发套件 +7466,通信/网络/接口/功能模块 +7480,实验器材/测试器材/开发工具 +7501,电源及电源管理 +7630,船舶/装备/配件 +7631,飞行器/装备/配件 +7632,摩托车配件 +7633,摩托车装饰养护 +7635,沙滩车 +7638,摩托车骑士装备 +7717,摩托车整车 +7718,其他摩托车用品 +7640,汽车零配件 +7641,汽车美容/保养/维修 +7645,汽车外饰品/加装装潢/防护 +7646,汽车影音/车用电子/电器 +7664,车用清洗用品/清洗工具 +7677,汽车改装 +7719,汽车GPS导航仪及配件 +7720,汽车用品/内饰品 +8173,半成品菜 +8174,冰淇淋/冻品 +8175,蛋/蛋制品 +8176,海鲜/水产品/制品 +8177,生肉/肉制品 +8178,熟食/凉菜/私房菜 +8179,水果制品 +8180,新鲜蛋糕 +8181,新鲜蔬菜/蔬菜制品 +8182,新鲜水果 +8183,腌制蔬菜/泡菜/酱菜/脱水蔬菜 +8440,T恤 +8441,半身裙 +8442,背心吊带 +8443,衬衫 +8444,短外套 +8445,风衣 +8446,婚纱/旗袍/礼服 +8447,裤子 +8448,蕾丝衫/雪纺衫 +8449,连衣裙 +8450,马夹 +8451,毛呢外套 +8452,毛衣/针织衫 +8453,棉衣/棉服 +8454,抹胸 +8455,牛仔裤 +8456,皮草 +8457,皮衣 +8458,唐装/民族服装/舞台服装 +8459,套装/学生校服/工作制服 +8460,卫衣/绒衫 +8461,西装 +8462,羽绒服 +8503,新车定金 +8504,新车全款 +16538,新车首付款 +16539,二手车定金 +16540,二手车全款 +16541,二手车首付款 +8510,低帮鞋 +8511,帆布鞋 +8512,高帮鞋 +8513,凉鞋 +8514,拖鞋 +8515,靴子 +8516,雨鞋 +8517,低帮鞋 +8518,帆布鞋 +8519,高帮鞋 +8520,凉鞋 +8521,拖鞋 +8522,靴子 +8523,雨鞋 +8539,卡包 +8540,卡套 +8541,旅行袋 +8542,旅行箱 +8543,男包 +8544,女包 +8545,钱包 +8546,手机包 +8547,双肩包 +8548,箱包相关配件 +8549,钥匙包 +8550,证件包 +20492,胸包/腰包 +8584,保暖裤 +8585,保暖上装 +8586,保暖套装 +8587,插片/胸垫 +8588,搭扣 +8589,吊带/背心/T恤 +8590,吊袜带 +8591,肚兜 +8592,肩带 +8593,抹胸 +8594,内裤 +8595,乳贴 +8596,睡裤/家居裤 +8597,睡袍/浴袍 +8598,睡裙 +8599,睡衣/家居服套装 +8600,睡衣上装 +8601,塑身分体套装 +8602,塑身连体衣 +8603,塑身美体裤 +8604,塑身上装 +8605,塑身腰封/腰夹 +8606,袜子/丝袜/打底裤袜 +8607,文胸 +8608,文胸套装 +8635,功能眼镜 +8636,光学眼镜 +8637,手表 +8638,太阳眼镜 +8639,眼镜配件 +8670,耳套 +8671,婚纱礼服配件 +8672,口袋巾 +8673,领部配件 +8674,帽子 +8675,其他配件 +8676,手帕 +8677,手套 +8678,围巾/手套/帽子套件 +8679,围巾/丝巾/披肩 +8680,鞋/包/皮带配件 +8681,袖套 +8682,腰带/皮带/腰链/背带 +8683,制衣面料 +8738,3C数码服务 +8739,多媒体服务 +8740,房屋维修 +8741,广告制作/印刷/打印复印 +8742,家电相关服务 +8743,家居配送/安装/维修 +8744,家居装修施工/设计 +8745,家政服务 +8746,快递/代购/代办跑腿 +8747,民生服务 +8748,其他 +8749,汽车服务 +8750,商务服务 +8751,特色服务 +8752,文案代写 +8753,信息咨询 +8754,在线清洗/洗衣券 +8755,电影票 +8756,体育赛事 +8757,演出 +8758,展览/展会 +8759,办公/文具定制 +8760,包装用品定制 +8761,服饰箱包定制 +8762,检验检测 +8763,其他定制 +8764,日用/装饰定制 +8765,设计服务 +8766,饰品定制 +8767,数码配件定制 +8768,照片冲印 +8769,餐饮美食卡券 +8770,购物提货券 +8771,消费卡 +8772,婚车服务 +8773,婚礼表演 +8774,婚礼布置/装饰 +8775,婚礼策划 +8776,婚礼跟拍 +8777,婚礼化妆/跟妆 +8779,婚纱/礼服服务 +8780,婚纱摄影 +8781,婚宴酒店 +8782,其它婚庆 +8783,其它摄影服务 +8784,写真/亲子/全家福摄影 +15541,婚礼司仪/主持人 +8785,技能培训 +8786,教学服务 +8787,生活兴趣培训 +8788,学科辅导 +8789,学历/职业资格考试 +8790,语言培训 +8791,国内门票(含港澳台) +8793,境内周边游 +20041,国外票务(景点/赛事/演出) +8794,港澳送关服务 +8795,购物/纪念品/旅行用品 +8798,接送/包车/租车 +8800,WiFi/流量/电话卡 +8801,境外火车票 +8804,旅游优惠券/会员卡 +8806,目的地玩乐 +8807,邮轮/游船 +8808,自由行/跟团游/定制游 +19295,境内火车票 +20050,地陪/讲解/翻译/咨询服务 +20055,旅行拍照/婚纱摄影 +20057,旅行设备/相机/翻译机租赁 +20059,签证/入台证/入金证 +8809,电费 +8810,固话 +8811,加油卡 +8812,宽带 +8813,燃气费 +8814,水费 +8815,有线电视 +8816,其他增值服务 +8817,腾讯QQ专区 +8818,音乐影视 +8819,酒店预订 +8820,客栈公寓 +8821,客房/餐饮优惠券 +8824,网络服务/软件 +8825,话费 +8826,流量 +8827,手机卡 +8829,KTV +8830,茶馆/咖啡馆 +8831,户外休闲玩乐 +8832,酒吧/俱乐部/私人会所 +8833,美容美发/美体美甲 +8834,其他休闲娱乐 +8835,室内休闲玩乐 +8836,运动健身 +8837,足浴/洗浴/按摩 +8851,激活码/新手包 +8852,视频直播 +8853,网络游戏点卡 +8854,游戏币 +8855,游戏代练 +8856,游戏软件 +8857,游戏软件平台 +8858,游戏物品/资源 +8859,游戏账号 +8860,游戏装备 +18240,手游充值 +9325,被套 +9326,被子 +9327,床单 +9328,床垫/床褥/床护垫 +9329,床盖 +9330,床笠 +9331,床幔 +9332,床品定制/定做 +9333,床品配件 +9334,床品套件 +9335,床裙 +9336,床罩 +9337,电热毯 +9338,儿童床品 +9339,凉席/竹席/藤席/牛皮席 +9340,其它 +9341,睡袋 +9342,蚊帐 +9343,休闲毯/毛毯/绒毯 +9344,枕巾 +9345,枕套 +9346,枕头/枕芯 +20688,一次性床品 +9347,布线箱 +9348,插座 +9349,底盒 +9350,电工配件 +9351,电工套管 +9352,电线 +9353,断路器 +9354,防盗报警器材及系统 +9355,监控器材及系统 +9356,交换器 +9357,接线板/插头 +9358,开关 +9359,消防报警设备 +9360,智能家居系统 +9361,转换器 +9362,板材 +9363,玻璃 +9364,雕花件系列 +9365,防水材料 +9366,隔断墙 +9367,隔热材料 +9368,隔音材料 +9369,硅钙板 +9370,家用五金 +9371,门窗密封条 +9372,木方 +9373,配件专区 +9374,其他 +9375,其它基础建材 +9376,人造大理石 +9377,沙/石 +9378,砂岩 +9379,石膏板 +9380,管材管件 +9381,水泥 +9382,天然大理石 +9383,涂料(乳胶漆) +9384,线条 +9385,新型装饰材料 +9386,阳光房 +9387,油漆 +9388,砖 +19553,胶类 +20354,基础建材定金 +9389,摆件 +9390,壁饰 +9391,创意饰品 +9392,雕刻工艺 +9393,风铃及配件 +9394,工艺船 +9395,工艺伞 +9396,工艺扇 +9397,花瓶/仿真花/仿真饰品 +9398,家居钟饰/闹钟 +9399,家饰软装搭配套餐 +9400,蜡烛/烛台 +9401,其他工艺饰品 +9402,贴饰 +9403,相框/画框 +9404,香薰炉 +9405,照片/照片墙 +9406,装饰挂钩 +9407,装饰挂牌 +9408,装饰画 +9409,装饰架/装饰搁板 +9410,装饰器皿 +9411,灯具灯饰 +9412,光源 +9413,背景墙/工艺软包 +9414,厨房 +9415,瓷砖 +9416,环保/除味/保养 +9417,晾衣架/晾衣杆 +9418,其他 +9419,墙纸 +9420,卫浴用品 +9421,浴霸 +14650,地板 +14651,集成吊顶 +20352,家装主材定金 +9422,餐桌布艺 +9423,窗帘门帘及配件 +9424,刺绣套件 +9425,地垫 +9426,地毯 +9427,防尘保护罩 +9428,缝纫DIY、工具及成品 +9429,挂毯/挂布 +9430,海绵垫/布料/面料 +9431,靠垫/抱枕 +9432,其他/配件/DIY/缝纫 +9433,十字绣及工具配件 +9434,坐垫/椅垫/沙发垫 +13164,毛巾/浴巾/浴袍 +9435,窗 +9437,地暖/暖气片/散热器 +9438,背景墙 +9439,定制柜类 +9440,定制护墙板 +9441,定制淋浴房 +9442,定制衣柜 +9444,楼梯及配件 +9445,门 +9446,全屋空间定制 +9447,榻榻米空间 +9448,橱柜及配件 +9449,整装定制 +20356,全屋定制定金 +20820,家用电梯 +9450,办公家具 +9451,殡葬业家具 +9452,餐饮/烘焙家具 +9453,超市家具 +9454,城市家具 +9455,发廊/美容家具 +9456,服装店家具 +9457,货架/展柜 +9458,酒店家具 +9459,其他 +9460,桑拿/足浴/健身家具 +9461,网咖家具 +9462,校园教学家具 +9463,医疗家具 +9464,娱乐/酒吧/KTV家具 +20358,商业/办公家具定金 +9465,地区民间特色手工艺 +9466,海外工艺品 +9467,其他特色工艺品 +9468,少数民族特色工艺品 +9469,宗教工艺品 +9470,安全检查设备 +9471,电动工具 +9472,电气控制 +9473,钢材 +9474,机电五金 +9475,机械五金 +9476,紧固件 +9477,劳保用品 +9478,铝型材 +9479,气动工具 +9480,刃具 +9481,手动工具 +9482,液压/起重工具 +9483,仪器仪表 +9484,成套家具 +9485,床垫类 +9486,床类 +9487,儿童家具 +9488,根雕类 +9489,柜类 +9490,户外/庭院家具 +9491,几类 +9492,家具辅料 +9493,架类 +9494,镜子类 +9495,屏风/花窗 +9496,沙发类 +9498,箱类 +9499,桌子/案/台 +9500,坐具类 +20360,住宅家具定金 +11690,电动车零/配件 +11691,电动车维修工具 +11692,电动车整车 +11693,电动车装备区 +20827,电动车服务 +11694,垂钓装备 +11695,刀具/多用工具 +11696,登山杖/手杖 +11697,防潮垫/地席/枕头 +11698,防护/救生装备 +11699,户外服装 +11700,户外鞋靴 +11701,户外休闲家具 +11702,户外照明 +11703,军迷服饰/军迷用品 +11704,炉具/餐具/野餐烧烤用品 +11705,旅行便携装备 +11706,睡袋 +11707,通讯/导航/户外表类 +11708,望远镜/夜视仪/户外眼镜 +11709,洗漱清洁/护理用品 +11710,饮水用具/盛水容器 +11711,帐篷/天幕/帐篷配件 +11712,专项户外运动装备 +19278,户外包 +19286,弓箭及其他射击装备 +11713,F1/赛车及用品 +11714,棒球/棒球装备 +11715,保龄球/保龄球装备 +11716,壁球/壁球装备 +11717,冰球/速滑/冰上运动 +11718,大型健身器械 +11719,飞镖/桌上足球/室内休闲 +11720,橄榄球/橄榄球装备 +11721,高尔夫/高尔夫用品 +11722,击剑运动 +11723,急救用品 +11724,毽子/空竹/民间运动 +11725,篮球/篮球装备 +11726,轮滑/滑板/极限运动 +11727,麻将/棋牌/益智类 +11728,马术运动 +11729,排球/排球装备 +11730,乒乓球/乒乓球装备 +11731,台球/台球装备 +11732,跆拳道/武术/搏击 +11733,田径运动器材 +11734,跳舞毯 +11735,网球/网球装备 +11736,舞蹈/健美操/体操 +11737,游乐场/体育场馆设施 +11738,游泳/游泳装备 +11739,瑜伽装备 +11740,羽毛球/羽毛球用品 +11741,运动护具 +11742,中小型健身器材 +11743,足球/足球用品 +11744,单肩背包 +11745,防水箱包 +11746,防雨罩/背包配件 +11747,户外摄影包 +11748,挎包/拎包/休闲包 +11749,旅行箱包 +11750,其他服饰配件 +11751,钱包卡套 +11752,收纳配件包 +11753,手包/臂包 +11754,手套 +11755,双肩背包 +11756,贴章/魔术贴章 +11757,头巾/遮耳 +11758,腿套 +11759,围巾/围脖 +11760,鞋带 +11761,鞋垫 +11762,鞋油 +11763,雪套/套脚 +11764,腰包 +11765,腰带 +11766,雨衣/雨裤/雨披 +11767,运动鼓包/旅行包 +11769,运动帽 +11770,运动首饰 +11771,运动水壶 +11772,运动袜 +11773,健身服装 +11774,运动POLO衫 +11775,运动T恤 +11776,运动风衣 +11777,运动夹克/外套 +11778,运动裤 +11779,运动马甲 +11780,运动毛衣/线衫 +11781,运动棉衣 +11782,运动内衣 +11783,运动裙 +11784,运动套装 +11785,运动卫衣/套头衫 +11786,运动羽绒服 +11787,板鞋/休闲鞋 +11788,帆布鞋 +11789,篮球鞋 +11790,跑步鞋 +11791,其他运动鞋 +11792,童鞋/青少年鞋 +11793,运动沙滩鞋/凉鞋 +11794,运动拖鞋 +11795,综合训练鞋/室内健身鞋 +11796,骑行服饰/骑行装备 +11797,自行车/单车装备 +11798,自行车零/配件 +11799,自行车修车工具 +11800,自行车整车 +20831,自行车服务 +13179,OTC药品 +13181,国际医药 +19577,安神药 +19592,补虚药 +19672,化痰止咳平喘药 +19704,活血化瘀药 +19745,解表药 +19781,利水渗湿药 +19818,平肝息风药 +19839,其他中药材 +19841,清热药 +19938,祛风湿药 +19979,收涩药 +20002,泻下药 +20017,止血药 +13777,护理液 +13778,隐形眼镜 +13779,隐形眼镜配件 +14698,宝宝辅食 +14699,其他 +14700,特殊配方奶粉 +14701,婴幼儿牛奶粉 +14702,婴幼儿调味品 +14703,婴幼儿羊奶粉 +14704,婴幼儿液态奶 +14705,婴幼儿营养品 +14706,宝宝零食 +20135,儿童奶粉 +20768,儿童零食 +14742,儿童房/桌椅/家具 +14743,防撞/提醒/安全/保护 +14744,奶瓶/奶瓶相关 +14745,湿巾 +14746,童床/婴儿床/摇篮/餐椅 +14747,宝宝洗浴护肤品 +14748,背带/学步带/出行用品 +14749,理发/指甲钳/量温等护理小用品 +14750,奶嘴/奶嘴相关 +14751,其它婴童用品 +14752,清洁液/洗衣液/柔顺剂 +14753,驱蚊退烧用品 +14754,水杯/餐具/研磨/附件 +14755,睡袋/凉席/枕头/床品 +14756,消毒/暖奶/小家电 +14757,牙胶/牙刷/牙膏 +14758,婴儿手推车/学步车 +14934,凉鞋 +14935,靴子/雪地靴 +14936,板鞋 +14937,传统布鞋/手工编织鞋 +14938,帆布鞋 +14939,棉鞋 +14940,皮鞋 +14941,亲子鞋 +14942,拖鞋 +14943,舞蹈鞋 +14944,鞋配件 +14945,学步鞋 +14946,婴儿步前鞋 +14947,雨靴 +14948,运动鞋 +14967,T恤 +14968,背心吊带 +14969,衬衫 +14970,肚兜/肚围/护脐带 +14971,儿童户外裤 +14972,儿童户外套装 +14973,儿童户外衣 +14974,儿童家居服 +14975,儿童礼服 +14976,儿童内衣裤 +14977,儿童配饰 +14978,儿童旗袍/唐装/汉服 +14979,儿童袜子(0-16岁) +14980,儿童演出服 +14981,儿童泳装 +14982,反穿衣/罩衣 +14983,裤子 +14984,连身衣/爬服/哈衣 +14985,马甲 +14986,毛衣/针织衫 +14987,帽子/围巾/口罩/手套/耳套/脚套 +14988,棉袄/棉服 +14989,抹胸 +14990,披风/斗篷 +14991,其他 +14992,亲子装/亲子时装 +14993,裙子 +14994,套装 +14995,外套/夹克/大衣 +14996,卫衣/绒衫 +14997,校服/校服定制 +14998,婴儿礼盒 +14999,羽绒服饰/羽绒内胆 +20850,POLO衫 +15084,宝宝纪念品/个性产品 +15085,彩泥/粘土/软陶泥 +15086,串珠/拼图/配对/拆装/敲打玩具 +15087,电动/遥控/惯性/发条玩具 +15088,电动遥控玩具零件/工具 +15089,电子/发光/充气/整蛊玩具 +15090,儿童包/背包/箱包 +15091,儿童读物/童书 +15092,儿童机器人/变形/人偶玩具 +15093,儿童棋类/桌面游戏 +15094,儿童玩具枪 +15095,儿童智能玩具 +15096,仿真/过家家玩具 +15097,户外运动/休闲/传统玩具 +15098,绘画类用品 +15099,积木 +15100,解锁/迷宫/魔方/智力玩具 +15101,静态模型 +15102,毛绒布艺类玩具 +15103,其它玩具 +15104,手工制作/创意DIY +15105,童车/儿童轮滑 +15106,娃娃/配件 +15107,学习/实验/绘画文具 +15108,音乐玩具/儿童乐器 +15109,悠悠(溜溜)球 +15110,油动电动模型 +15111,游乐/教学设备/大型设施 +15112,游泳池/戏水玩具 +15113,幼儿爬行/学步/健身 +15114,幼儿响铃/布玩/安抚玩具 +15115,育儿书籍 +15116,早教/智能玩具 +20637,STEAM玩具/教具 +15357,哺乳文胸/内裤/产检裤 +15358,哺乳用品 +15359,产妇帽/孕妇袜/孕妇鞋 +15360,待产用品 +15361,防辐射 +15362,家居服/哺乳装/秋衣裤 +15363,妈咪包/袋 +15364,束缚带/塑身衣/盆骨矫正 +15365,吸奶器/配件 +15366,月子营养 +15367,孕产妇彩妆 +15368,孕产妇护肤/洗护/祛纹 +15369,孕产妇奶粉 +15370,孕产妇营养品 +15371,孕妇裤/托腹裤 +15372,孕妇装 +15544,保健/心理类书籍 +15553,报刊订阅 +15572,报纸 +15592,传记 +15611,地图/地理 +15618,儿童读物/童书 +15627,法律 +15650,工具书/百科全书 +15659,工业/农业技术 +15686,管理 +15705,计算机/网络 +15725,进口原版书(含港台) +15753,经济 +15767,考试/教材/论文 +15858,科学/科学研究 +15868,历史 +15890,旅游 +15900,漫画/动漫小说 +15902,期刊杂志 +15903,其他 +15905,社会科学 +15921,生活 +15937,体育运动(新) +15939,外语/语言文字 +15969,网络原创 +15980,文化/信息与知识传播 +15990,文学 +16011,小说 +16028,医学卫生 +16048,艺术 +16062,娱乐时尚 +16072,育儿书籍 +16079,哲学和宗教 +16095,政治军事 +16107,自然科学 +16139,自我实现/励志 +16152,自由组合套装 +20137,知识服务 +20852,古籍 +16156,农业机械 +16157,农业工具 +16158,农膜/篷布/遮网/大棚 +16193,畜牧/养殖服务 +16194,畜牧/养殖设备 +16195,动物保健品/兽药 +16196,饲料 +16210,肥料 +16220,农技服务 +16222,农药 +16229,种子/种苗 +20822,助剂/添加剂 +16238,男用器具 +16251,女用器具 +16258,情趣家具/配件 +16261,情趣内衣 +18347,两性用品/情趣用品 +18768,计生用品 +18783,情趣润滑/调情香水 +16289,仓鼠类及其它小宠 +16313,宠物服饰及配件 +16330,宠物附属品 +16336,宠物生活服务 +16347,宠物智能设备 +16352,动物药品及药剂 +16355,狗狗 +16357,狗零食 +16359,马类及其用品 +16368,猫/狗保健品 +16370,猫/狗美容清洁用品 +16399,猫/狗日用品 +16429,猫/狗玩具 +16441,猫/狗医疗用品 +16448,猫零食 +16450,猫咪 +16452,猫主粮 +16454,鸟类及用品 +16464,爬虫/鸣虫及其用品 +16475,其它宠物 +16479,犬主粮 +16481,水族世界 +16519,兔类及其用品 +16552,保鲜容器/保鲜器皿 +16556,杯子/水杯/水壶 +16580,餐具 +16611,茶具 +16632,酒壶/酒杯/酒具 +16651,咖啡器具 +16663,一次性餐桌用品 +16677,厨房小工具/厨房储物 +16725,烹饪用具 +16765,烧烤/烘焙用具 +16795,家庭防尘用具 +16812,家庭收纳用具 +16867,家庭整理用具 +16879,衣物洗/晒/护理用具 +20229,家庭置物用品 +16902,个人洗护清洁用具 +16942,家务/地板清洁用具 +18055,卫浴/置物用具 +16990,热水袋 +16993,保暖贴/怀炉/保暖用品 +16994,防护用品 +16995,挂历 +16996,节日/派对庆典用品 +16997,家用五金工具 +16998,家居健康用品 +16999,美体/塑身塑形/增高用具 +17000,毛巾/浴巾/浴袍 +17001,驱虫用品 +17002,其他 +17003,伞/雨具/防雨/防潮 +17004,扇/迷你风扇/配件/冰垫/冰 +17005,书写板 +17006,台历 +17007,鞋用品 +17008,香薰用品 +17009,香包/香囊 +17010,钟 +17011,家居智能设备 +17012,家居智能用品 +17135,创意礼品 +17141,婚庆用品 +17160,文化创意用品 +19507,节日/装扮用品 +20071,殡葬用品 +17250,打火机配件 +17251,打火机 +17252,瑞士军刀 +17253,烟具 +17254,替烟产品 +17286,口腔护理 +17287,面部清洁/护理 +17288,身体清洁 +17289,头发清洁/护理/造型 +17290,家庭环境清洁剂 +17291,家私/皮具护理品 +17292,驱虫用品 +17293,室内除臭/芳香用品 +17294,卫生巾/护垫 +17295,香薰用品 +17296,衣物清洁剂/护理剂 +17297,纸品/湿巾 +17298,身体护理 +20316,成人用纸尿护理用品 +17413,DIY配件 +17414,摆件 +17415,保养鉴定用品 +17416,耳饰 +17417,发饰 +17418,佛珠/木质手串 +17419,脚链 +17420,戒指/指环 +17421,其它首饰 +17422,手链 +17423,手镯 +17424,首饰收纳 +17425,项链 +17426,项坠/吊坠 +17427,胸针 +17456,K金首饰 +17457,swarovski水晶 +17458,铂金/PT +17459,彩色宝石/贵重宝石 +17460,翡翠 +17461,和田玉 +17462,黄金首饰 +17463,其他天然玉石 +17464,天然琥珀 +17465,天然珍珠 +17466,天然钻石 +20098,投资银 +20562,合成钻石 +20570,绿松石 +20578,玛瑙 +20586,南红 +17672,生活鲜花 +17673,插花培训 +17674,创意迷你植物 +17675,仿真花/绿植/蔬果成品 +17676,花卉/绿植盆栽 +17677,花卉/蔬果/草坪种子 +17678,花瓶/花器/花盆/花架 +17679,花艺包装/材料 +17680,花园植物/行道树/果树 +17681,婚礼鲜花布置 +17682,卡通花 +17683,商务用花 +17684,鲜花果篮(预定与速递) +17686,永生花/干花 +17687,园艺设计服务 +17688,园艺用品 +17689,追悼/奠仪用花 +17804,电子合成器 +17805,钢琴 +17806,乐器音箱 +17807,乐器配件 +17808,乐器工具/周边 +17809,MIDI乐器/电脑音乐 +17810,民族乐器 +17811,西洋乐器 +18051,乐器服务 +18089,单项安装 +18090,工程装修 +18091,家庭保维修 +18092,家庭装修 +18093,监理 +18094,局部装修 +18095,软装配饰 +18096,设计 +18097,装修检测治理 +18271,疾病检测与筛查 +18284,健康保险 +18292,健康管理 +18299,健康体检 +18305,口腔健康 +18311,心理咨询 +18318,眼科医疗 +18323,医疗美容 +18328,疫苗接种 +18335,孕产计划 +18342,中医医疗 +20210,互联网医院 +20321,泛健康管理 +18350,补益安神 +18354,儿科用药 +18363,风湿骨科 +18370,妇科用药 +18378,肝胆用药 +18388,呼吸系统 +18394,精神科用药 +18396,抗菌消炎 +18401,泌尿系统 +18409,免疫调节 +18411,男科用药 +18417,内分泌系统 +18421,皮肤及性病用药 +18436,神经系统 +18449,五官用药 +18454,消化系统 +18461,心脑血管 +18471,血液系统 +18477,移植用药 +18479,肿瘤用药 +18812,解热镇痛 +18483,BB霜 +18484,CC霜 +18485,彩妆盘 +18486,彩妆套装 +18487,唇笔/唇线笔 +18488,唇彩/唇蜜/唇釉 +18489,唇膏/口红 +18497,粉饼 +18498,粉底液/膏 +18499,隔离/妆前 +18500,假睫毛 +18501,睫毛膏/睫毛增长液 +18502,眉笔/眉粉/眉膏 +18509,美甲工具 +18511,美容工具 +18534,蜜粉/散粉 +18536,男士彩妆 +18553,其他彩妆 +18555,腮红/胭脂 +18557,身体彩绘 +18559,香水/香氛 +18561,修容 +18564,眼线 +18566,眼影 +18568,遮瑕 +18570,指甲油/美甲产品 +20473,定妆喷雾 +18575,口腔电子/智能产品 +18581,美容/美体辅助工具 +18590,美体塑身 +18595,清洁美容工具 +18602,护发 +18607,假发 +18615,假发配件 +18622,男士个人护理 +18627,染发烫发 +18631,头发造型 +18633,洗发水 +18635,洗护套装 +18638,T区护理 +18643,唇部护理 +18649,防晒 +18651,洁面 +18653,精油芳疗 +18662,面部按摩霜 +18664,面部护理套装 +18666,面部精华 +18667,面部磨砂/去角质 +18668,面膜 +18672,男士护理 +18707,其他保养 +18708,乳液/面霜 +18711,身体护理 +18728,手部保养 +18734,爽肤水/化妆水 +18735,卸妆 +18738,胸部护理 +18745,眼部护理 +18750,足部护理 +18815,保健用品 +18857,医疗器械 +19299,布尿裤/尿垫 +19300,拉拉裤 +19308,纸尿裤 +19310,纸尿片 +20079,汽车租赁 +20081,汽车金融 +20881,机票(非直连) +20754,二手房 +20758,新房 +20762,租房 +20646,BJD娃娃及配件 +20649,JK/DK/Cosplay服饰/道具/服务 +20654,潮玩盲盒 +20656,二次元lolita及配件 +20660,二次元古风服饰及配件 +20663,高达/机甲模型/机器人/变形类 +20671,游戏/卡通/动漫/IP周边 +20674,卡牌/桌游及配件 +20677,手办/兵人/扭蛋 +20681,专业航模/车船模/军模/穿越机 +423,衬衫 +435,T恤 +441,针织衫/毛衣 +3849,休闲套装 +5215,工装制服 +7312,其他套装 +5209,民族服装 +20641,背心 +20642,马甲 +7314,风衣 +7315,夹克 +7316,棉裤 +7317,羽绒裤 +7318,毛呢大衣 +7319,棉衣 +7298,牛仔裤 +7300,POLO衫 +7320,皮裤 +7321,皮衣 +7305,卫衣 +7307,休闲裤 +7309,西服上衣 +7310,西裤 +7311,西服套装 +7322,羽绒服 +20640,皮草 +2627,板纸 +2628,包装用纸 +4666,相片纸 +4667,打印纸 +4668,复印纸 +4669,电脑连打纸 +4670,彩喷纸 +4671,传真纸 +4672,收银纸 +4673,标签打印纸/条码纸 +4674,牛皮纸 +4675,瓦楞原纸 +4676,卡纸 +4677,纸袋纸/杯纸 +4678,防油纸/防潮纸 +4679,玻璃纸 +4680,铝箔纸 +4681,羊皮纸 +4682,鸡皮纸 +4683,透明纸 +4684,商标纸/标签纸 +4688,纸类标签 +4689,其他纸 +4795,气泡膜/气泡信封/泡沫箱 +4796,记号笔/粗笔 +4797,标价机/打包机 +4798,塑封机 +4799,装订机 +4800,牛皮信封 +4801,装订机配件 +4802,塑封机配件 +4803,覆膜机 +4804,塑封膜 +4805,装订耗材 +4806,捆扎机/打包机 +4807,封口机 +4808,真空机 +4809,打码机 +4810,灌装机 +4811,收缩机 +4812,铭牌 +4813,其他标签/标牌 +4834,保险箱 +4840,条码扫描枪 +4841,标签机/条码打印机 +4842,条码扫描枪配件 +4843,数据采集器 +4844,读卡器 +4845,磁卡 +4846,IC卡 +18998,扫码支付盒子 +4815,传真机 +4816,电话交换机 +4817,电话录音设备 +4818,其它通信设备 +4819,投币电话/磁卡电话 +4820,电话管理系统 +4821,寻呼设备 +4822,会议电话产品 +4823,传真服务器 +4824,传真机配件 +4825,通信设备配件 +4826,无线呼叫器 +4827,办公电话 +20190,电子导游机/讲解器 +20191,评价器 +20192,抢答器/答题器 +20193,投票器 +4839,打印机 +5494,3D打印机 +5495,喷墨打印机 +5496,激光打印机 +5497,墨仓式打印机 +5498,针式打印机 +5499,热升华照片打印机 +5500,热敏/热转印打印机 +5501,宽幅打印机 +4755,照片冲印设备 +4756,感光鼓芯 +4757,计数芯片 +4758,喷头/打印头 +4759,定影膜 +4760,搓纸轮 +4761,主板 +4762,定影下辊 +4763,分页器 +4764,激光器 +4765,定影上辊 +4766,接口板 +4767,电源板 +4768,电源 +4769,定影齿轮 +4770,下辊轴套 +4771,定影灯管 +4772,传感器 +4773,摆轮 +4774,上辊轴套 +4775,转印辊 +4776,上导电辊 +4777,出纸杆 +4778,打印服务器 +4779,连续供墨系统 +4828,点钞机 +4829,收款机 +4830,验钞机/笔 +4831,收款机配件 +4832,点钞机配件 +18993,点餐码/收款牌 +18994,收款提示器/播报器 +20194,收钱码/收款码/收款牌 +4788,多功能一体机 +4789,多功能一体机配件 +4790,一体化速印机 +4791,喷墨多功能一体机 +4792,彩色激光多功能一体机 +4793,黑白激光多功能一体机 +4794,墨仓式多功能一体机 +4833,复合复印机 +4735,电工胶带 +4736,工业胶带 +4737,双面胶带 +4738,美纹纸胶带 +4739,牛皮纸胶带 +4740,bopp胶带 +4741,pe胶带 +4742,pet胶带 +4743,opp胶带 +4744,pvc胶带 +4745,玛拉胶带 +4746,特氟龙胶带 +4747,布胶带 +4748,玻璃布胶带 +4749,纤维胶带 +4750,海绵胶带 +4751,铝箔胶带 +4752,沥青胶带 +4753,其他胶带 +4754,胶卷 +4780,考勤门禁 +4781,考勤机配件 +4709,光标阅卷机 +4710,冷裱机 +4711,切纸机 +4712,销毁设备 +4713,幻灯机 +4714,绘图仪 +4715,刻字机 +4716,打字机 +4717,其它办公设备 +4718,复印机配件 +4719,扫描仪配件 +4720,打字机配件 +4721,标签机配件 +4722,刻字机配件 +4723,幻灯机配件 +4724,其它设备配件 +4731,油墨 +4732,3D打印机耗材 +4733,其它耗材 +5504,墨粉/碳粉 +5505,墨盒 +5506,硒鼓/粉盒 +5507,色带/碳带 +5508,墨水 +4730,扫描仪 +4725,办公线材 +4726,行李绳 +4727,结束带 +4728,束线带 +4729,其他绳索/扎带 +4734,碎纸机 +4690,灯泡 +4691,幕布 +4692,镜头 +4693,DIY配件 +4694,其他配件 +4695,投影机吊架 +4696,投影机支架(三角架) +4697,投影机摇控器 +4698,投影胶片 +4700,翻页激光笔 +4836,投影机 +4838,保管箱 +4848,刻录盘 +4849,软盘 +4850,光盘拷贝机 +4851,光盘袋/光盘盒 +18996,MCU/会议服务器 +18997,会议麦克风 +20189,电子白板/会议教学平板一体机 +19000,WiFi探针 +19001,传感器 +19002,电子货架标签 +19003,分拣机 +19004,开放式/无人自助货架 +19005,数字标牌/户外机 +19006,数字餐牌 +19007,无人智能店 +19008,虚拟/智能试衣镜 +19009,云货架/智能货架 +19010,智能存储柜 +19011,智能购物车 +19012,智能书柜/共享图书机 +19013,自动结算台 +19014,自助查询终端 +19015,自助点餐机 +19016,自助照片打印 +20495,玻璃包装 +20496,布类包装 +20497,防锈包装 +20498,金属包装 +20499,木制包装 +20500,生产用纸 +20501,塑料包装 +20502,陶瓷包装 +20503,纸类包装 +20504,竹包装 +20836,喷绘机 +20837,平板/UV打印机 +20838,丝印机 +20839,烫金机/压烫机 +20840,条幅机 +20841,写真机 +2673,走珠签字笔 +2674,墨水补充液 +2675,钢笔 +2676,记号笔 +2677,马克笔 +2678,泡泡笔 +2679,其它功能笔 +2680,铅笔 +2681,替芯铅芯 +2682,荧光笔 +2683,油漆笔 +2684,圆珠笔 +2685,针管笔 +2686,正姿笔 +2687,中性笔 +20281,3D打印笔 +2688,拆信刀 +2689,刀片 +2690,剪刀 +2691,美工刀 +2692,切割雕刻垫板 +2693,切纸刀 +2694,其他 +2695,报表 +2696,财务证明用品 +2697,单据收据 +2698,凭证 +2699,其它财会用品 +2700,湿手器 +2701,印台 +2702,印油印泥 +2703,账本账册 +2704,点读笔 +2705,点读机 +2706,电子辞典 +2707,电子阅览器电纸书 +2708,翻译笔 +2709,丙烯颜料 +2710,儿童填色本 +2711,勾线笔 +2712,国画颜料 +2713,画板画架 +2714,绘图白图纸 +2715,蜡笔 +2716,毛笔 +2717,毛边纸 +2718,描图硫酸纸 +2719,其它 +2720,铅画纸 +2721,色卡 +2722,石膏像 +2723,书法用纸 +2724,水彩笔 +2725,水彩颜料 +2726,水彩油画专用笔 +2727,水粉颜料 +2728,素描/速写本 +2729,文房墨汁 +2730,文房四宝 +2731,宣纸 +2732,油画棒 +2733,油画颜料 +2734,镇纸 +18984,书法绘画学习套装 +20101,油画布 +20102,油画框 +20738,调色用品 +20739,毛笔字帖 +20740,水彩纸/本/水彩水粉颜料本 +20741,水写布 +20742,砚台 +2735,放大镜 +2736,各类尺三角板 +2737,其它 +2738,算盘 +2739,显微镜 +2740,圆规 +2741,计算器 +2742,胶棒 +2743,胶带胶纸胶条 +2744,胶水 +2745,其它 +18985,和纸胶带 +2746,白板 +2747,白板笔 +2748,板擦 +2749,标志牌提示牌 +2750,地球仪 +2751,粉笔 +2752,黑板 +2753,激光笔 +2754,计划表 +2755,教鞭 +2756,教学仪器实验器材 +2757,绿板 +2758,其它 +2759,旗帜 +2760,软木板照片板 +2761,荧光板 +2762,展板 +2763,笔袋 +2764,彩泥橡皮泥 +2765,卷笔刀削笔器 +2766,可爱印泥 +2768,其它文具 +2769,视力保护器 +2770,书皮 +2771,文具盒 +2772,文具套装礼盒 +2773,握笔器 +2774,橡皮 +2775,修正带 +2776,修正贴 +2777,修正液 +2778,学生书包 +2779,学生用印 +18986,书袋/补习袋 +2780,笔插 +2781,笔架 +2782,笔筒 +2783,便签盒座 +2784,便条夹照片夹 +2785,CD册 +2786,档案袋 +2787,档案盒 +2788,风琴包事务包 +2789,挂快劳快劳夹 +2790,卡套证件套 +2791,名片册 +2792,名片盒 +2793,书报架展示架 +2794,书立阅读架 +2795,文件袋 +2796,文件夹 +2797,文件座文件框 +2798,相册 +2799,意见箱抽奖箱 +2800,桌面文件柜 +2801,资料册 +2802,其他 +18989,教育伴学机 +18990,学习机 +2804,吊牌 +2805,定制包装袋纸箱 +2806,定制桌牌台牌 +2807,挂历 +2808,贺卡明信片 +2809,名片 +2810,其它印刷制品 +2811,台历 +2812,宣传单海报 +2813,自封袋自粘袋 +20630,搬家纸箱 +2814,包装纸 +2815,笔记本记事本 +2816,便条纸N次贴 +2817,不干胶标签 +2818,磁性贴 +2819,分页纸索引纸 +2820,复写纸 +2821,活页替芯 +2822,奖状证书 +2823,课业本教学用本 +2824,POP广告纸爆炸贴 +2825,其它纸品 +2826,日记本 +2827,书签 +2828,贴纸 +2829,通讯录电话本 +2831,同学录纪念册 +2832,文稿纸草稿纸 +2833,信封 +2834,信纸 +2835,折纸手工纸 +2836,别针回形针 +2837,打孔机 +2838,大头针 +2839,订书钉 +2840,订书机 +2841,回形针座盒 +2842,票夹长尾夹 +2843,其它 +2844,图钉工字钉 +5674,儿童字帖 +5675,成人字帖 +5676,老人字帖 +18988,文创/其他文化用品 +18992,学习手写板 +2954,无线上网卡设备 +2955,笔记本电池 +2956,笔记本电脑包 +2957,笔记本散热器 +2958,笔记本炫彩贴 +2959,笔记本支架/桌 +2960,笔记本键盘保护膜 +2961,笔记本屏幕贴膜 +2962,笔记本电源 +2963,笔记本个性小贴纸 +2964,笔记本零部件 +2965,笔记本膝上桌 +2966,键盘刷 +2967,苹果转换线 +2968,其他 +5478,笔记本清洁用品 +2969,车载支架 +2970,车载充电器 +2971,车载发射器 +5479,SD卡/CF卡/相机卡 +19174,背包箱具 +19175,单反/单电专用电池电源 +19176,清洁用品 +19177,机身附件 +19178,脚架云台 +19179,镜头附件 +19180,其他配件 +19181,色彩管理 +19182,闪光灯 +19183,影棚设备 +2982,电子书手写笔/电磁笔 +2983,电子书灯 +2984,电子书保护套 +2985,电子书防护包 +2986,电纸书充电器 +2987,电纸书屏幕贴膜 +2988,其它 +2989,电纸书数据线 +2990,电子辞典学习机配件 +2991,点读机点读笔配件 +2992,18650电池 +2993,18650电池盒 +2994,纽扣电池 +2995,普通干电池 +2996,其它数码充电套装 +2998,相机摄像机专用充电套装 +19249,通用电池充电套装 +2999,3D立体眼镜 +3000,AV切换器 +3001,BNC头 +3002,插头/接口 +3003,电视高压包 +3004,F头 +3005,分压盒 +3006,分配器/分频器/分支器 +3007,隔离器耦合器 +3008,机顶盒共享器 +3009,节电器省电器 +3010,KVM +3011,其它家电配件 +3012,RCA头 +3013,RF头 +3014,视音频线AV线 +3015,射频器转换器 +3016,VGA切换器 +3017,网络切换器 +3018,微波炉面板 +3019,遥控设备 +3023,其他配件 +19253,Lomo配件及周边 +19258,胶片胶卷 +19261,拍立得配件及周边 +3024,耳机线夹 +3025,耳塞保护套 +3026,耳机配件 +3027,FM/MP3发射器 +3028,MP3/MP4支架 +3029,MP4屏幕保护膜 +3030,MP3/MP4充电器 +3031,MP3/MP4保护套 +3032,MP3/MP4连接线 +3033,其它MP3/MP4配件 +4656,录音笔 +5723,MP3/MP4播放器 +3035,平板电脑保护套/壳 +3036,平板电脑外接键盘 +3037,平板电脑充电器 +3038,平板电脑支架 +3039,平板电脑底座 +3040,平板电脑包 +3041,平板电脑屏幕贴膜 +3042,平板电脑数据线 +3043,平板电脑零部件 +3044,其它平板电脑配件 +3045,手机保护套/壳 +3046,手机充电器 +3047,手机零部件 +3048,手机防尘塞 +3049,手机饰品 +3050,手机电池 +3051,手机贴膜 +3052,手机数据线 +3053,手机智能按键 +3055,手机支架/手机座 +3056,SIM卡相关 +3057,其它手机配件 +5487,手机信号放大器 +5489,TF卡/手机内存卡 +18128,应急充电器 +18129,无线充电器 +19268,手机拍照配件 +20694,手机散热器 +3058,屏幕保护膜 +3059,其它数码相机配件 +3060,数码相机充电器 +3061,数码相机电池 +3062,数码相机包 +3063,数码相机适配器 +3064,数据连接线 +18788,摄像机配件 +3065,电池收纳盒 +3066,耳机绕线器 +3067,数码收纳整理包 +3068,线缆收纳器 +3069,数码相框 +3070,触摸屏手套 +3071,读卡器 +3072,PSP游戏配件 +3073,PDA掌上电脑 +3074,其它充电器 +3075,手写笔 +3076,数码显微镜 +3077,数据线 +3078,数码设备外接键盘 +3079,闪存卡转接套 +3080,数码维修工具 +3081,音乐枕 +3082,移动支付终端机 +3083,其它电池 +3084,其它电池 +3085,USB HUB/转换器 +3086,USB Humping Dog +3087,USB按摩器 +3088,USB摆设品/装饰品 +3089,USB保暖坐垫/靠垫 +3090,USB保温碟/保温垫 +3091,USB灯 +3092,USB电话机 +3093,USB电脑锁/防盗器 +3094,USB多功能数码宝 +3095,USB翻页激光笔 +3096,USB风扇 +3097,USB加湿器 +3098,USB迷你冰箱 +3099,USB暖手宝 +3100,USB暖手鼠标垫 +3101,USB暖手套/暖脚鞋 +3102,USB食品加热包/保温盒 +3103,USB碎纸机 +3104,USB吸尘器 +3105,USB烟灰缸 +3106,USB延长线 +3107,USB氧吧/空气清新器 +3108,USB驱蚊器 +3109,移动电源 +5490,无线充电宝 +20374,户外电源 +5670,USB插座 +5671,排插 +5672,转换插头 +5227,金石篆刻 +5229,港澳台邮票 +5230,中国邮票 +5231,外国邮票 +5232,封片/杂邮 +5233,其它邮品 +5235,民国钱币 +5236,其它钱币 +5237,非流通外国钱币 +5238,非流通人民币 +5239,外汇兑换券 +5240,国库券 +5241,连体钞/纪念钞 +5242,非流通港澳台钱币 +5243,纪念币/纪念章 +5244,古代钱币 +18142,古玩鉴定/保养工具 +18143,集邮用具用品 +18144,钱币收藏用具用品 +18145,手工艺品保养工具 +18146,书画收藏/保养工具 +18147,通用工具 +18148,玉器鉴定/保养工具 +18149,篆刻工具 +18138,古生物化石 +18139,矿物晶体 +18140,奇石 +18141,其它收藏品 +18150,毛笔 +18151,臂搁 +18152,笔筒/笔具 +18153,墨/墨盒 +18154,水盂/砚滴 +18155,砚屏 +18156,砚台 +18157,纸/纸具 +18186,佛像/神像 +18187,法器/供品 +18188,佛牌 +18189,护身卡/化太岁锦囊 +18190,经文/挂饰 +18191,罗盘 +18192,其它宗教收藏 +18193,唐卡/画像 +20596,紫砂陶瓷 +20597,金属/搪瓷器具 +20599,茶酒滋补收藏 +20602,红色收藏 +20603,古玩/杂项收藏 +20604,民俗收藏 +20605,家具收藏 +20606,书法/碑帖/信札 +20607,国画 +20608,西画 +5754,MP3数码播放器/Hifi高清播放器 +19140,移动便携DVD/唱戏机 +19141,复读机 +19142,收音机/录音机 +19143,录音笔 +19144,视频眼镜 +19145,TAPE磁带随身听 +5756,碟/电池/电源适配器 +5757,电源插座/接线板 +5758,耳机/耳麦配件 +5760,音箱/音响配件 +5761,VGA线/HDMI线 +5762,麦克风/话筒配件 +5765,遥控器 +5766,音频/视频无线传输器材 +19160,家庭影院配件 +5772,广告机 +5774,网络高清播放器 +19150,CD播放机 +19151,DVD/蓝光家庭影碟机 +19152,家庭投影/投屏器 +19153,录像机 +19154,电视天线/数字机顶盒 +5796,插卡音箱/故事机 +5797,蓝牙音箱 +19161,KTV/卡拉OK音响/点歌机 +19162,胆机 +19163,低音炮 +19164,多媒体音箱 +19165,黑胶唱片机 +19166,回音壁音响 +19167,家庭影院 +19168,拉杆/广场舞音响 +19169,智能音箱/语音助手 +20401,吸顶音响 +5807,舞台调音台 +5808,打碟机 +5809,舞台分频器 +5810,舞台均衡器 +5812,舞台效果器 +5813,舞台音频放大器 +19155,耳放 +19156,功放 +19157,话放 +19158,混响 +19159,解码器 +5825,麦克风/K歌话筒 +19147,喊话器/高音喇叭 +19148,扩音器 +19149,外置声卡 +5827,有线耳机 +19146,蓝牙耳机 +5836,智能机 +5838,功能机/非智能机 +5841,二手手机 +5843,二手平板电脑 +5845,二手笔记本电脑 +5847,二手相机 +5850,其他二手数码 +5853,笔记本电脑 +5855,平板电脑/MID +5857,台式整机 +5860,一体机电脑 +19133,服务器整机 +19134,台式工作站 +19135,台式主机 +19136,移动工作站 +5862,DIY兼容机(组装机) +5863,DIY一体机 +5865,移动机械硬盘 +5866,U盘 +5867,记忆棒/内存卡 +19137,无线硬盘/NAS +19138,移动固态硬盘 +5869,游戏手柄 +5870,方向盘 +5871,摇杆 +5872,PSP专用配件 +5873,WII/WIIU专用配件 +5874,PS主机专用配件 +5875,DS/3DS专用配件 +5876,游戏软件 +5877,XBOX专用配件 +5878,世嘉 DC/MD/SS/SEGA 专用配件 +5879,任天堂NGC/FC/N64/SFC 专用配件 +5880,掌机配件 +5881,PSV专用配件 +5882,游戏软件平台 +19121,家用游戏机 +19122,跳舞毯 +19123,游戏掌机 +19124,游戏主机配件 +5884,主板 +5885,内存 +5886,CPU +5887,声卡 +5888,显卡 +5889,机械硬盘 +5890,键盘 +5891,机箱 +5892,散热器/风扇 +5893,手写输入/绘图板 +5894,键鼠套装 +5895,电源 +5896,有线鼠标 +5897,无线鼠标 +5898,固态硬盘 +5899,硬件套装 +5900,虚拟现实设备 +5901,智能电脑硬件 +5903,电脑视听配件 +5904,电脑周边 +5905,摄像头 +19120,显示器 +19272,显示器支架 +19126,服务器CPU +19127,服务器电源 +19128,服务器机箱 +19129,服务器内存 +19130,服务器配件 +19131,服务器硬盘 +19132,服务器主板 +5908,普通数码相机 +5909,运动相机 +5911,单反相机 +5913,微单/单电 +5915,其他胶卷相机 +5916,一次成像 +19101,135胶片单反 +19102,大中幅相机 +19103,旁轴相机 +19104,傻瓜相机 +19105,收藏相机 +19106,特殊相机 +19107,一次性相机 +5918,数码摄像机 +5920,单反单电镜头 +19109,全景相机 +5923,运动跟踪器 +5925,智能摄像头 +20338,智能摄像配件 +5928,智能眼镜/vr头盔 +5930,智能手表 +20339,智能儿童手表 +5932,智能健康 +5934,智能手环 +5936,智能机器人 +5938,智能飞行 +5940,其他智能设备 +5942,智能出行 +5944,智能手表贴膜 +5945,智能手表手环表带/腕带 +5946,其他智能配件 +5948,AI语音助手 +5949,家居系统套装 +5950,智能灯光 +5951,智能安防 +5952,智能排插 +5954,智能翻译机 +5957,电饭煲 +5959,豆浆机 +5961,榨汁机 +18239,小功率榨汁机 +5963,电磁炉 +5965,电热水壶 +5967,微波炉 +5969,爆米花机 +5970,刨冰机 +5971,炒冰机 +5972,豆芽机 +5976,削皮机 +5977,制冰机 +5978,电蒸炉 +5979,早餐吧 +5980,筷子消毒机 +5981,电磁茶炉 +5982,电热炉 +5983,其他厨房家电 +20287,电茶炉/煮茶器 +5985,面包机 +5987,冰淇淋机 +5989,保健/养生/煎药壶 +5991,其他厨房家电配件 +5992,净水饮水机配件耗材 +5993,豆浆搅拌研磨机配件 +5994,电煲电锅类配件 +5995,酸奶咖啡机配件及辅助配件 +5996,电热水壶保健养生壶配件 +5998,电烤箱 +6000,电压力锅 +6002,电陶炉 +6004,多士炉 +6006,电饼铛/可丽饼机 +6008,电热杯 +6010,电动打蛋器 +6012,电炸锅 +6014,电热饭盒 +6016,净水器 +6018,咖啡机 +6020,酸奶机 +6022,饮水机 +6024,原汁机 +6026,煮蛋器/蒸蛋器 +6028,搅拌/料理机 +6030,定时器/提醒器 +6032,电蒸锅 +6034,电热/火锅 +6036,电炖/煮粥锅/文火炉 +6038,面条机 +6040,炒菜机/烹饪锅 +6042,食物垃圾处理机 +6044,净水桶净水杯 +6046,香肠热狗机 +6047,磨粉机/药材粉碎机 +6048,商用面条/轧面机 +6049,商用冰淇淋甜筒雪糕机 +6050,冷饮饮料机 +6051,商用爆米花机 +6052,其他商用厨电 +6053,商用炸锅 +6054,商用打蛋搅拌机 +6055,商用烤饼机 +6056,刨冰碎冰冰沙机 +6057,炒冰/冰粥机 +6058,肠粉机 +6059,封口封杯机 +6060,关东煮机 +6061,棉花糖机 +6062,蒸炉蒸包炉 +6063,展示柜 +6064,章鱼丸机/鱼丸炉 +6065,商用和面机/厨师机 +6066,商用咖啡机 +6067,商用烘烤炉/烤箱 +6068,商用消毒柜 +6069,商用电磁炉 +6070,商用豆浆机 +6071,商用净水设备 +6072,开水机 +6073,商用吸尘器 +6074,蒸饭柜 +6075,自动售货机 +20106,扒炉/铁板烧/手抓饼炉 +19111,破壁机 +19113,切片机/绞肉机 +19115,芝士炉/电烤盘 +20108,和面机/厨师机 +20449,茶吧机/泡茶机 +20453,多功能料理锅 +20457,家用气泡水机 +20459,三明治机 +20461,食物烘干机 +20463,台式净饮机 +6078,厨房冰箱 +20785,茶几冰箱 +20786,化妆品冰箱 +20787,嵌入式冰箱 +6080,空调 +6082,洗衣机 +6084,电热水器 +6085,燃气热水器 +6086,太阳能热水器 +6087,锅炉 +6088,厨宝 +6089,电热水龙头 +6090,即热式热水器 +6091,空气源热泵热水器 +6092,热厨套装 +6094,冷柜 +6095,商用冷柜 +6096,迷你/便携/车载冷热箱 +6098,酒柜 +6100,平板电视 +6102,烘干机 +6104,消毒柜 +6105,油烟机 +6106,洗碗机 +6107,燃气灶 +6108,烟灶消套装 +6109,集成灶 +6110,嵌入式烤箱 +6111,嵌入式蒸箱 +6112,嵌入式微波炉 +6114,激光电视 +6116,天花机/风管机 +6117,中央空调套装 +6119,电视机架 +6120,冰箱配件 +6121,冷柜/酒柜/便携冷热箱配件 +6122,烟机灶具配件 +6123,洗衣机配件 +6124,3D电视眼镜 +6125,电视机遥控器 +6126,空调配件 +6127,其他大家电配件 +20096,洗鞋机 +20784,冰洗套装 +20788,洗烘套装 +20790,衣物护理机 +20792,中央新风机 +6130,抽湿器/除湿器 +6132,超声波清洗机 +6134,扫地机器人 +6136,电熨斗 +6138,擦鞋器 +6140,电风扇 +20290,空气循环扇 +20333,USB风扇 +20868,壁扇 +20869,落地扇 +20870,塔扇 +20871,台扇 +6142,擦窗机器人 +6144,除螨仪 +6146,吊扇 +20873,吊扇灯 +20874,家用吊扇 +20875,小吊扇 +6148,对讲机 +6151,电话机 +20558,立式挂烫机 +20559,蒸汽刷/手持挂烫机 +6155,干衣机 +6157,干鞋器 +6159,加湿器 +6161,空气净化器 +6163,吸尘器 +6167,暖风机/取暖器 +6169,电热毯 +6171,电热水袋 +6173,电暖足器 +6176,毛球修剪器 +6178,空调扇 +6180,服务机器人 +6182,空气净化机器人 +6185,充气泵 +6187,干手器 +6189,消毒机 +6191,电子温湿度计 +6193,加香机/香薰机 +6194,节电器 +6195,其它日用家电 +6197,电话配件 +6198,对讲机配件 +6199,缝纫机配件 +6200,风扇/换气扇配件 +6201,净化/加湿抽湿机配件 +6202,清洁/挂烫机/电熨斗配件 +6203,其他生活家电配件 +6204,吸尘器/扫地机配件 +6206,蒸汽拖把 +6208,蒸汽清洁机 +20289,擦地/拖地机器人 +20310,电子灭蚊器 +20312,缝纫机 +20314,消毒水生成机 +20329,冰箱除味器 +20332,保温碟/暖菜板 +20335,换气扇/排气扇 +20337,取暖桌 +20451,电动拖把/电动扫把 +20465,暖被机 +20467,洗地机 +20561,家用新风机 +6211,按摩器材配件 +6212,口腔护理配件 +6213,经络保健器材配件 +6214,美体瘦身配件 +6215,清洁美容工具配件 +6216,美发工具配件 +6217,家用保健器材配件 +6219,鼻毛修剪器 +6220,剃须刀 +18975,电子美容仪 +18980,美眼仪 +6222,冲牙器 +6223,电动牙刷 +6224,牙刷头 +6225,牙齿美白仪 +6226,其它口腔护理设备 +20643,牙刷消毒器 +6228,按摩棒/锤 +6229,按摩披肩/肩背敲击按摩带 +6230,按摩枕/颈腰靠垫/坐垫 +6231,按摩椅垫 +6232,按摩椅/沙发 +6233,按摩床 +6234,按摩床垫 +6235,按摩足疗机 +6236,MINI按摩器/按摩贴 +6237,其他按摩器材 +6238,头部按摩机 +6239,眼部按摩器 +6240,足部按摩走毯 +6242,电子计步器 +6243,洁耳器 +6244,体重秤/健康秤 +6245,体脂秤 +6247,电吹风 +6248,卷/直发器 +6249,焗油帽机 +6250,理发器 +6251,其它美发工具 +18973,生发仪 +6258,电子瘦身带/瘦身腰带 +6259,电动瘦腿带/美腿仪 +6260,电动修脚器 +6261,矫姿用品 +6262,蜡疗机/手蜡机 +6264,保健项圈/手环 +6265,保健护具(护腰/膝/腿) +6266,桑拿浴箱 +6267,足浴器 +6268,其它健康/保健/检测 +6269,睡眠仪 +6271,理疗仪 +6272,点穴棒 +6273,刮痧片/板 +6274,温灸器 +6276,足底理疗/气血循环机 +6278,其他个人护理 +6280,医用卫生材料 +6281,急救防护 +6282,医用床上护理 +6283,康复器械 +6284,磁疗器具 +6285,中医器械 +6286,血糖监测 +6287,视力诊察 +6288,基础诊察 +6289,血压监测 +20455,干身器 +6292,普通路由器 +6293,中继器/扩展器 +6294,电力猫 +6295,3G/4G无线路由器 +6296,随身wifi +6297,智能路由器 +6299,网卡 +6301,机柜 +6302,配线架 +6303,电脑切换器/分配器 +6304,网络测试仪 +6305,打线刀 +6306,压线钳 +6307,螺丝刀 +6308,工具套装 +6309,万用表 +6310,无盘工作站 +6312,宽带猫/光猫 +6314,网关 +6319,程控交换机 +6320,XDSL设备 +6321,网络摄像机 +6322,模块接口卡 +6323,集线器 +6324,测试仪 +6325,负载均衡 +6326,流量管理设备 +6327,收发器 +6328,转换器 +6329,串口通讯服务器 +6330,工业网络交换机 +6331,上网行为管理 +6332,功能服务器 +6333,计费系统 +6334,电力线通信设备 +6335,网络加速及优化 +6337,复用器 +18763,网页过滤 +6339,天馈系统 +6340,功率放大器 +6341,无线安全保密 +6343,物理防火墙 +6344,防火墙 +6345,UTM +6346,入侵检测 +6347,防毒及邮件过滤 +6348,物理安全隔离 +6349,内网安全 +6350,应用监管 +6351,网络漏洞扫描 +6353,综合布线 +6354,PDU电源分配器 +6355,精密空调 +6357,网络摄像机 +6358,摄像设备 +6359,图像记录 +6360,传输设备 +6361,显示控制 +6363,视频会议 +6364,中央控制系统 +6365,电视墙与操作台 +6366,音频及会议系统 +6368,智能控制终端 +6370,电源/适配器 +6371,天线 +6373,数码线材 +6375,无线高清 +6377,无线上网设备与终端 +6379,其它网络设备 +6381,交换机 +6383,磁带 +6384,磁带机 +6385,磁带库 +6386,磁盘阵列 +6387,IP网络存储 +6388,KVM切换器 +6389,NAS网络储存 +6390,RAID卡 +6391,SCSI卡 +6392,SCSI配件 +6393,SAN网络储存 +6394,网络延长器 +6395,硬盘抽取盒 +6400,山核桃/小核桃 +6401,长寿果/碧根果 +6403,开心果 +6404,夏威夷果 +6405,香榧 +6406,松子 +6407,鲍鱼果 +6408,瓜子 +6409,榛子 +6410,即食板栗 +6411,核桃仁 +6412,纸皮核桃/薄皮核桃 +6413,花生 +6414,腰果 +6415,杏仁/巴旦木 +6416,白果/银杏果 +6418,炒豆类 +6419,混合坚果 +6421,芭蕉干 +6422,菠萝蜜 +6423,草莓干 +6424,车厘子 +6425,陈皮 +6426,薯类制品 +6427,菠萝/凤梨干 +6428,佛手果 +6429,哈密瓜干 +6430,南瓜干 +6431,海棠果 +6432,黄皮 +6433,加应子/李子 +6434,金桔类制品 +6435,蓝莓 +6436,李子 +6437,榴莲干 +6438,罗汉果 +6439,芒果干 +6440,玫瑰花脯 +6441,梅类制品 +6442,木瓜 +6443,苹果干 +6444,葡萄干 +6445,桑葚干 +6446,山楂类制品 +6447,圣女果干 +6448,柿饼 +6449,蔬果干/混合冻干/混合果干 +6450,酸角 +6451,笋类制品 +6452,桃干 +6453,无花果干 +6454,杏仁/杏干 +6455,椰子片 +6456,樱桃 +6457,芋头条 +6458,枣类制品 +6459,猕猴桃干 +6460,柚脯/柚干 +6461,槟榔 +6462,橄榄 +6463,香蕉干/片 +6464,蔓越莓干 +6466,月饼 +6467,西式糕点 +6468,传统糕点 +6470,其他饼干 +6471,膨化食品 +6474,蛋卷 +6475,曲奇 +6476,薄脆/煎饼 +6477,威化 +6478,苏打饼干 +6479,压缩饼干 +6480,千层酥/蝴蝶酥 +6483,夹心饼干 +20330,喜饼 +20625,酥性饼干 +20626,韧性饼干 +6485,奶酪 +6486,奶片 +6487,奶酥 +6488,奶干 +6489,奶皮 +6491,牛肉类 +6492,鸡肉零食 +6493,鸭肉零食 +6494,兔肉干/兔丁 +6495,羊肉类 +6496,驴肉 +6497,鹅肉类 +6498,卤味素食 +6499,猪肉类 +6502,即食鱿鱼零食 +6503,即食鱼零食 +6504,即食虾零食 +6505,蟹系列 +6506,贝系列 +6507,海苔系列 +6508,海参即食 +6509,海带零食 +6512,口香糖 +20610,糖果 +20611,果冻/布丁/棒冰/碎冰冰 +6516,豆干零食 +6520,综合蔬菜干 +6521,面筋制品/辣条 +6523,巧克力制品 +6524,牛奶巧克力 +6525,黑巧克力 +6526,饼干巧克力 +6527,巧克力酱 +6528,白巧克力 +6529,夹心巧克力 +6530,松露巧克力 +6531,果仁巧克力 +6532,混合巧克力 +6540,奶精 +6542,奶油球 +6543,糖浆 +6544,白砂糖包 +6545,黄糖包 +6546,肉桂粉 +6549,其它饮品 +20425,代餐粉/奶昔 +20426,谷物营养配方粉 +20427,其他天然/食补粉粉食品 +20428,薏米粉 +20429,芝麻粉 +6553,珍珠奶茶粉 +6554,蜂蜜果味茶 +6555,藕粉 +6556,冲饮麦片 +6557,芝麻糊 +6558,冲饮果汁 +6559,豆奶粉 +6561,袋装奶茶 +6562,姜汤 +6563,双皮奶/姜汁撞奶 +6564,杯装奶茶 +6565,酸梅粉 +6566,可可/巧克力饮品 +20092,豆浆粉 +20421,白凉粉 +20422,冲饮红糖 +20412,牛奶粉 +20413,其它成人奶粉 +20414,驼奶粉 +20415,羊奶粉 +6570,即饮咖啡 +6572,凉茶 +6573,酸梅汤 +6575,茶饮料 +6576,功能饮料 +6577,碳酸饮料 +6578,果味饮料 +20430,果蔬汁 +20433,植物(蛋白)饮料 +6581,含乳饮料(常温) +6582,纯牛奶(常温) +6583,酸奶(常温) +6584,酸奶粉 +6585,羊奶(常温) +7516,咖啡豆 +7517,速溶咖啡 +7518,咖啡粉 +7519,胶囊咖啡 +20423,挂耳咖啡 +20424,咖啡液 +7522,矿泉水/纯净水 +20417,含乳饮料(低温) +20418,牛奶(低温) +20419,酸奶(低温) +20420,羊奶(低温) +6588,普洱 +6590,黄茶 +6592,正山小种 +6593,祁门红茶 +6594,金骏眉 +6595,滇红 +6596,其它红茶 +6598,代用/花草茶 +6599,花果果粒/调味茶 +6600,再加工茶 +6601,组合型花茶 +6603,其它乌龙茶 +6604,黑乌龙 +6605,大红袍 +6606,铁观音 +6607,台湾高山茶 +6608,凤凰单丛 +6610,其它黑茶 +6611,六堡茶 +6612,安化黑茶 +6614,其它白茶 +6615,寿眉 +6616,贡眉 +6617,白牡丹 +6618,白毫银针 +6620,日照绿茶 +6621,碧螺春 +6622,安吉白茶 +6623,西湖龙井 +6624,太平猴魁 +6625,六安瓜片 +6626,信阳毛尖 +6627,龙井茶(非西湖) +6628,黄山毛峰 +6629,其它绿茶 +20744,云雾茶 +6632,调味料 +6640,日常调味品 +6641,调味酱 +6643,其他调味品 +6648,豆腐乳 +6649,果酱 +6655,米类 +6656,面粉/食用粉 +6658,玉米 +6660,其它粮食 +6666,杂粮组合 +6667,豆类 +6672,干货/土特产 +6682,熏腊/香肠/火腿制品 +6691,速食粥 +6692,速食汤 +6693,方便米饭 +6694,肉制品 +6695,面条/挂面(待煮面条) +6696,意大利面 +6697,年糕 +6698,汤圆 +6699,煎饼/手抓饼 +6700,粽子 +6701,冷面 +6702,水饺/馄饨 +6703,面食 +6704,海鲜丸类 +6705,包装即食肠类 +6706,即食火锅 +6707,其他 +6708,速食菜 +20109,方便粉丝/米线/米粉 +20110,方便面/面皮 +6710,其它 +6711,蚝油 +6712,鱼露 +6713,麻油 +6714,大豆油 +6715,玉米油 +6716,调和油 +6717,红花籽油 +6718,香油 +6719,核桃油 +6720,葡萄籽油 +6721,米糠油 +6722,菜籽油 +6723,花生油 +6724,花椒油 +6725,椰子油 +6726,橄榄油 +6727,山茶油 +6728,葵花籽油 +6732,成品原料 +6735,食品添加剂 +6745,烘焙原料 +6753,烘焙原料套装 +6757,其他食品 +6760,国产白酒 +6762,配制酒/果酒 +6764,啤酒 +6766,黄酒 +6768,其他酒类 +6770,葡萄酒 +6772,保健食品酒 +6774,金酒/Gin +6775,威末/Vermouth +6776,力娇酒/Liqueur +6777,白兰地/Brandy +6778,清酒/烧酒 +6779,伏特加/Vodka +6780,龙舌兰/Tequila +6781,梅酒 +6782,威士忌/Whiskey +6783,朗姆酒/Rum +6784,预调鸡尾酒/Alcopop +6787,氨基酸 +6788,大豆分离蛋白 +6789,骨胶原蛋白 +6790,谷氨酰胺 +6791,混合蛋白 +6792,胶原蛋白 +6793,精氨酸 +6794,乳清蛋白 +6795,褪黑素/松果体素 +6796,鱼蛋白 +6797,支链氨基酸 +6798,肽类 +6800,袋鼠精 +6801,林蛙油提取物 +6802,鹿产品提取物 +6803,牛初乳 +6804,羊胎盘提取物 +6806,氨基葡萄糖 +6807,海狗/海豹油 +6808,甲壳素 +6809,角鲨烯 +6810,螺旋藻/藻类提取物 +6811,牡蛎/贝类提取物 +6812,沙丁鱼提取物 +6813,虾青素 +6814,鱼油/深海鱼油 +6815,珍珠粉 +6816,鲨鱼软骨素 +20704,鱼肝油 +6818,辅酶Q10 +6819,红曲 +6820,猴头菇提取物 +6821,酵素 +6822,益生菌 +6824,低聚糖/寡糖/低GI +6825,膳食纤维/果蔬纤维/代餐食品 +6826,生物多糖 +6828,B族维生素 +6829,复合维生素/矿物质 +6830,钙 +6831,钙镁 +6832,钙铁锌 +6833,铁 +6834,维生素A/胡萝卜素 +6835,维生素AD +6836,维生素C +6837,维生素D +6838,维生素E/小麦胚芽油 +6839,维生素E+C +6840,维生素K +6841,硒 +6842,锌 +6843,叶酸 +6844,左旋肉碱 +6846,DHA/EPA/DPA +6847,亚麻酸 +6849,pycnogenol.碧萝芷 +6850,参类提取物 +6851,茶多酚/茶族 +6852,大蒜提取物 +6853,番茄红素 +6854,葛根 +6855,蓟类 +6856,锯棕榈 +6857,苦瓜提取物 +6858,芦荟 +6859,卵磷脂 +6860,玛咖提取物 +6861,蔓越莓 +6862,玫瑰精油 +6863,木瓜提取物 +6864,纳豆提取物 +6865,南瓜/南瓜籽 +6866,苹果酸 +6867,葡萄籽提取物 +6868,蒲公英 +6869,沙棘 +6870,蛇麻草 +6871,圣约翰草提取物 +6872,叶黄素 +6873,银杏/人参银杏 +6874,越橘/蓝莓提取物 +6875,月见草油 +6876,大豆异黄酮 +6877,其它植物提取物 +6878,紫花苜蓿 +6879,紫锥菊提取物 +18789,淫羊藿提取物 +6881,其他膳食营养补充剂 +6882,膳食补充剂型饮料 +6885,阿胶原粉 +6886,阿胶膏/固元膏 +6887,阿胶浆 +6888,阿胶块 +6889,其它阿胶制品 +6891,高丽参及其制品 +6892,人参/园参及其制品 +6893,山参 +6894,西洋参 +6896,海马 +6897,红景天 +6898,干品/即食花胶/鱼胶 +6899,元贝 +20198,干品/即食海参 +6901,蜂巢素 +6902,蜂花粉 +6903,蜂王浆 +6904,其它蜂产品 +18790,蜂胶 +6906,蜂蜜 +6908,灵芝粉 +6909,灵芝片 +6910,灵芝孢子粉 +6911,其它灵芝产品 +6912,整枝灵芝 +6914,鹿茸片 +6915,鹿茸枝 +6916,鹿胎膏 +6917,其它鹿类滋补品 +6919,北沙参 +6920,不老草 +6921,传统滋补品其他 +6922,丹参 +6923,党参 +6924,豆蔻 +6925,杜仲 +6926,广金钱草 +6927,红花 +6928,花生衣 +6929,黄芪 +6930,金蝉花 +6931,罗布麻 +6932,玛咖干 +6933,麦冬 +6934,牛膝 +6935,山茱萸 +6936,生地黄 +6937,熟地黄 +6938,太子参 +6939,桃胶 +6940,天麻 +6941,威灵仙 +6942,五加皮 +6943,五味子 +6944,雪燕 +6945,益母草 +6946,皂角米 +6947,珍珠粉 +6948,制何首乌 +20199,赤小豆 +20200,肉苁蓉 +20201,锁阳 +20202,养生泡酒料 +6950,三七 +6952,山药及其制品 +6954,石斛/枫斗 +6956,蛹虫草 +6957,其他新食品原料类 +6959,其它雪蛤制品 +6960,雪蛤干 +6961,雪蛤油 +6963,即食燕窝 +6964,燕窝 +6965,燕窝制品 +6967,养生茶 +6969,白扁豆 +6970,白果 +6971,百合 +6972,藏红花 +6973,川贝 +6974,当归 +6975,风流果 +6976,佛手 +6977,甘草 +6978,葛根 +6979,荷叶 +6980,黄精 +6981,黄芩 +6982,鸡内金 +6983,桔梗 +6984,金银花 +6985,决明子 +6986,龙眼肉(桂圆) +6987,芦荟 +6988,罗汉果 +6989,蚂蚁 +6990,玫瑰茄 +6991,牛蒡 +6992,胖大海 +6993,其他药食同源食品 +6994,肉桂 +6995,桑叶 +6996,桑椹 +6997,砂仁 +6998,沙棘 +6999,松花粉 +7000,酸枣仁 +7001,天门冬 +7002,杏仁 +7003,银杏 +7004,鱼腥草 +7005,紫苏 +7006,芡实 +7007,茯苓 +7008,栀子 +7009,橘皮/陈皮 +7011,虫草 +7013,枸杞及其制品 +18792,药膳汤料/五谷养生 +18793,滋补膏方/秋梨膏/桑葚膏 +18794,滋补丸/芝麻丸/红豆薏米丸 +18795,滋补营养糖/红糖黑糖姜枣 +7325,其它元器件 +7326,电阻器 +7327,电容器 +7328,电位器 +7329,传感器 +7330,电感器 +7331,电子专用材料 +7333,手机信号放大器 +7335,网线 +7336,连接线 +7337,转接头 +7338,连接线/转接线/延长线/数据线 +7339,水晶头 +7340,杜邦线/彩排线 +7341,电子线 +7342,电线扎带/束线带 +7343,配线槽 +7344,热缩管 +7345,电源线 +7347,连接器 +7349,集成电路(IC) +7350,芯片 +7351,存储器/存储模块 +7352,时钟/计时 +7353,模数转换器/数模转换器 +7354,逻辑器件 +7356,二极管 +7357,三极管 +7358,场效应管 +7359,晶闸管/可控硅 +7360,电子管 +7362,板卡配件 +7363,机柜/机箱/壳体 +7364,外设配件 +7365,SCSI设备 +7366,SCSI卡 +7367,其它电脑元件/零配件 +7368,嵌入式计算机/工业计算机 +7370,PCB电路板/印刷线路板 +7371,排线/柔性电路板(FPC) +7373,电机/马达 +7374,编码器 +7375,步进电机 +7376,振动电机/震动马达 +7377,驱动器/控制器 +7378,直线电机/电动推杆/螺旋升降机 +7379,伺服电机/伺服系统/舵机 +7380,电动缸 +7381,六自由度运动平台 +7383,信号应答器/发射器 +7384,激光扫描模块 +7385,卫星导航定位系统 +7386,NFC模块 +7387,电子标签/射频标签 +7388,其他物联网器材 +7389,射频识别(RFID) +7390,天线 +7392,熔丝/保险丝座/断路器/保险管 +7393,防雷器/浪涌保护器/气体放电管 +7394,其他电路保护器件 +7395,静电抑制器/静电防护 +7397,开关/按钮 +7398,摇臂开关 +7399,拨动开关 +7400,其他开关元件及附件 +7401,滑动开关 +7402,限位开关 +7403,按钮 +7404,操纵杆 +7405,DIP拨码开关 +7406,旋转开关 +7407,脚踏开关 +7408,轻触开关/触摸开关 +7409,微动开关 +7410,船形开关 +7412,DIY套件/DIY材料/电子积木 +7413,机器人/机械臂 +7414,智能车 +7415,无人机及套件 +7416,特斯拉线圈(人造闪电) +7418,其他热管理器件 +7419,石墨烯 +7420,热绝缘体 +7421,半导体制冷片/热电制冷片/热泵 +7422,导热膜/石墨散热膜 +7423,散热器/散热片 +7424,导热硅胶片/导热双面胶 +7425,导热硅脂/导热膏 +7427,微处理器/微控制器/单片 +7429,喇叭/扬声器 +7430,蜂鸣器/发声器/警报器 +7431,传声器/咪头/麦克风/电声器件 +7433,LED灯珠/发光二级管 +7434,LED灯罩 +7435,LED反光杯 +7436,LED驱动电源 +7437,LED控制器 +7438,LED导光板 +7439,LED模组 +7440,LED指示灯/防爆灯/投光灯 +7441,LED透镜 +7442,其他LED器件 +7444,显示器件 +7445,显示屏/LCD液晶屏/LED +7446,OLED +7447,触摸屏/触控屏 +7449,电子胶/密封胶/硅胶/粘合剂 +7451,光电/激光器件 +7452,激光器 +7453,红外发射器/接收器 +7454,耦合器/隔离器 +7456,吸铁石/磁铁/强磁/巴克球 +7457,磁性元件/磁性材料 +7459,频率元件 +7460,晶体振荡器 +7462,开发板/学习板/评估板/工控板 +7463,树莓派配件 +7464,树莓派 +7465,Arduino系列 +7467,Wifi模块 +7468,GSM/GPRS/3G/4G模块 +7469,RF模块/射频模块 +7470,陀螺仪/指南针/惯性导航模块 +7471,Zigbee模块 +7472,有线通信/接口模块/扩展板 +7473,音频模块/功放模块 +7474,GPS模块/北斗模块/导航模块 +7475,蓝牙模块 +7476,红外模块 +7477,语音识别模块 +7478,摄像头模块/视频采集模块 +7479,超声波模块 +7481,仿真器/下载器 +7482,编程器/烧录器/烧录设备 +7483,鳄鱼夹/弹簧夹/电夹 +7484,电子实验/科学实验器材 +7485,电池盒/电池座/电池配件 +7486,面包板/实验板/万能板/洞洞板 +7487,电子测试与检测器具 +7488,排针/排母 +7489,测试针/探针 +7490,逻辑分析仪 +7491,其他开发工具与套件 +7492,功率分析仪/功率计 +7493,函数发生器 +7494,检流计 +7495,实验箱 +7496,电阻箱 +7497,测试座 +7498,周转箱 +7499,元器件盒/零件盒/方盆 +7500,电位差计 +7502,继电器 +7503,变压器 +7504,变频器 +7505,线圈 +7506,整流器 +7507,电源 +7508,稳压器 +7509,逆变器 +7510,滤波器 +7511,其他电源管理器件 +7512,适配器/转换器/充电器 +7513,电源管理IC(PMIC) +7514,太阳能电池板 +7721,船舶配件 +7722,船舶整船 +7723,飞行器配件 +7724,飞行器整件 +7725,刹车片/刹车系统 +7726,磁电机及组件 +7727,弹簧 +7728,挡泥板 +7729,点火器/点火装置 +7730,电瓶充电器 +7731,活塞 +7732,活塞环 +7733,链盘 +7734,链条 +7735,马达/起动电机 +7736,摩托车保险杠 +7737,摩托车车灯 +7738,摩托车车架 +7739,摩托车车锁 +7740,摩托车齿轮 +7741,摩托车导流罩 +7742,摩托车电瓶 +7743,摩托车发动机 +7744,摩托车防盗器 +7745,摩托车后视镜 +7746,摩托车化油器 +7747,摩托车火花塞 +7748,摩托车减震器 +7749,摩托车拉线 +7750,摩托车喇叭/音响 +7751,摩托车离合器 +7752,摩托车轮毂 +7753,摩托车轮胎 +7754,摩托车滤清器 +7755,摩托车排气管 +7756,摩托车前挡风 +7757,摩托车维修工具 +7758,摩托车尾箱 +7759,摩托车尾翼 +7760,摩托车氙气灯 +7761,摩托车钥匙 +7762,摩托车仪表 +7763,摩托车坐垫 +7764,皮带及传动组件 +7765,启动杆/刹车拉杆 +7766,气缸盖 +7767,气缸体 +7768,气缸头 +7769,气门/气门组件 +7770,曲轴 +7771,手把 +7772,手把套 +7773,摇臂/摆臂轴 +7774,油箱/油箱盖 +7775,整流器 +7776,轴承 +20111,摩托车脚垫 +20112,骑士服饰 +7783,保养工具 +7784,盖帽配饰 +7785,摩托车车衣/车罩 +7786,摩托车机油 +7787,摩托车机油添加剂 +7788,摩托车脚踏板 +7789,摩托车牌照架 +7790,摩托车外壳 +7791,清洗剂 +7792,润滑剂 +7793,贴纸/贴膜 +7795,沙滩车 +7777,风镜 +7778,摩托车头盔 +7779,摩托车雨衣 +7780,骑士包 +7781,骑士护具 +20696,二轮摩托车 +20697,三轮摩托车 +7794,其他摩托车用品 +7818,安全带及调节器 +7820,变速箱系统 +7821,车底防护板/发动机挡板 +7822,车顶架 +7823,车用附件 +7824,乘用车轮胎 +7825,挡泥板 +7826,点火系统 +7827,电气系统 +7828,动力系统 +7829,防盗系统 +7830,非乘用车轮胎 +7831,隔音隔热棉 +7832,供油系统 +7833,进排气系统 +7834,冷却系统 +7835,轮毂 +7836,轮眉 +7837,滤芯 +7838,内饰系统 +7839,其他汽车配件 +7840,外观件 +7841,尾翼/顶翼 +7842,悬挂系统 +7843,油品 +7844,雨挡 +7845,雨刮器 +7846,照明系统 +7847,制动系统 +7848,转向系统 +7849,其它美容/保养/维修品 +7850,汽车美容漆/膜/蜡工具 +7851,汽车添加剂 +7852,汽车维修/工具 +7853,汽车养护品 +20113,补漆工具 +7854,加装/装潢 +7855,其它加装/外饰/防护品 +7856,汽车防护 +7857,汽车外饰品 +7858,车用电子/电器 +7859,其它汽车电子用品 +7860,汽车电子防盗安防 +7861,汽车影音 +20349,车载冷暖箱 +20350,车载冰箱 +7796,擦车巾 +7797,车掸/蜡拖 +7798,车刷 +7799,车用清洗/除蜡/除胶剂 +7800,车用水桶 +7801,车用洗车机/设备 +7802,其它车用清洗工具/用品 +7803,汽车清洗手套 +7804,洗车海绵/洗车泥 +7805,洗车水管接头 +7806,洗车水枪 +20126,汽车玻璃防雾/驱水 +20129,汽车铁锈去除剂 +20130,清洁软胶 +20235,雪铲/除雪工具 +7816,全车改装套件 +7817,赛车文化 +7807,安全预警仪 +7808,车用便捷式GPS导航 +7809,GPS支架 +7810,GPS充电器 +7811,GPS导航模块 +7812,GPS导航软件 +7813,其它GPS导航配件 +7814,智能车机导航 +7815,智能后视镜导航 +7862,CD包/夹/袋 +7863,安全座椅凉席 +7864,摆件 +7865,包真皮座套 +7866,宝宝增高垫 +7867,抱枕 +7868,车挂 +7869,车用窗帘 +7870,车用置物袋/置物箱 +7871,车载垃圾桶 +7872,车载旅行床 +7873,车载手机支架/手机座 +7874,宠物安全扣 +7875,宠物垫 +7876,地胶 +7877,儿童安全带套/固定器/延长带 +7878,儿童防踢垫 +7879,方向盘套 +7880,防滑垫/防护垫 +7881,防雾湿巾 +7882,后视提篮镜 +7883,驾车个人用品 +7884,驾驶室脚踏板 +7885,其他内饰/驾乘用品 +7886,汽车儿童安全座椅 +7887,汽车模型 +7888,汽车内饰贴片/贴纸 +7889,汽车文化产品 +7890,汽车香水/净化/降温剂 +7891,手刹套/档把套/套饰套装 +7894,汽车座垫 +7896,头枕/腰靠 +7898,一次性方向盘保护套 +7899,一次性汽车脚垫 +7900,一次性汽车座椅保护套 +7901,遮阳挡 +7902,汽车后备箱垫 +7903,汽车脚垫 +7905,汽车座套 +20131,停车号码牌 +20736,车载电动头枕/腰靠 +20737,货箱保护垫/货箱宝 +8428,半成品菜 +8429,冰淇淋/冻品 +8184,加工蛋类及蛋制品 +8185,鲜活蛋类 +8186,贝类 +8187,淡水鱼类 +8188,海参 +8189,海水鱼类 +8190,海蜇 +8191,甲鱼 +8192,螺类 +8193,墨鱼/乌贼 +8194,其它 +8195,虾类 +8196,蟹类 +8197,鱼类制品 +8198,藻类 +8199,章鱼 +8292,鱿鱼 +20203,海鲜礼盒 +20204,海鲜熟制品 +20207,生鲜提货券 +8200,鹅肉 +8201,鸽类 +8202,鸡肉类 +8203,牛肉类 +8204,其它 +8205,其它生肉制品 +8206,鸭肉类 +8207,羊肉类 +8208,猪肉类 +8209,嫩豆腐/香干/豆制品 +8210,鸡熟食 +8211,烤鸭/酱鸭 +8212,凉菜/凉拌 +8213,卤肉类 +8214,其它 +8215,冻干水果 +8216,水果罐头 +8430,新鲜蛋糕 +8217,大蒜 +8218,冬瓜 +8219,番茄 +8220,番薯 +8221,黄瓜 +8222,苦瓜 +8223,辣椒 +8224,莲藕 +8225,萝卜 +8226,南瓜 +8227,其他 +8228,茄子 +8229,秋葵 +8230,沙拉菜 +8231,生姜 +8232,丝瓜 +8233,土豆 +8234,西兰花/花菜 +8235,新鲜板栗 +8236,新鲜菌菇 +8237,新鲜莲蓬 +8238,新鲜山药 +8239,新鲜玉米 +8240,洋葱 +8241,叶菜类 +8242,芋头 +8243,竹笋 +8244,芭乐 +8245,百香果 +8246,菠萝 +8247,菠萝蜜 +8248,草莓 +8249,车厘子/樱桃 +8250,橙 +8251,番荔枝/释迦 +8252,凤梨 +8253,哈密瓜 +8254,火龙果 +8255,桔子 +8256,蓝莓 +8257,梨 +8258,李子 +8259,荔枝 +8260,莲雾 +8261,榴莲 +8262,龙眼 +8263,芒果 +8264,毛丹/毛荔枝 +8265,木瓜 +8266,柠檬 +8267,牛油果 +8268,枇杷 +8269,苹果 +8270,葡萄/提子 +8271,其它 +8272,奇异果/猕猴桃 +8273,人参果 +8274,山竹 +8275,石榴 +8276,柿子 +8277,桃 +8278,甜瓜 +8279,西瓜 +8280,西柚 +8281,香蕉 +8282,杏 +8283,雪莲果 +8284,杨梅 +8285,杨桃 +8286,椰青 +8287,柚子 +8288,枣 +8289,酱制/酱菜/酱瓜 +8290,脱水蔬菜 +8291,腌制/泡菜 +8463,T恤 +8464,半身裙 +8465,背心吊带 +8466,衬衫 +8467,短外套 +8468,风衣 +8469,婚纱 +8470,礼服/晚装 +8471,旗袍 +8472,打底裤 +8473,棉裤/羽绒裤 +8474,西装裤/正装裤 +8475,休闲裤 +8476,蕾丝衫/雪纺衫 +8477,连衣裙 +8478,马夹 +8479,毛呢外套 +8480,毛衣/针织衫 +8481,棉衣/棉服 +8482,抹胸 +8483,牛仔裤 +8484,皮草 +8485,皮衣 +8486,民族服装/舞台装 +8487,唐装/中式服装 +20294,汉服 +8488,酒店工作制服 +8489,其它制服/套装 +8490,时尚套装 +8491,休闲运动套装 +8492,学生校服 +8493,医护制服 +8494,职业裤套装 +8495,职业裙套装 +20295,JK制服 +8496,卫衣/绒衫 +8497,西装 +8498,羽绒服 +8505,新车定金 +8506,新车全款 +16543,新车首付款 +16544,二手车定金 +16545,二手车全款 +16546,二手车首付款 +20236,布鞋 +20237,工装鞋 +20238,休闲皮鞋 +20243,正装皮鞋 +20505,板鞋 +20506,老爹鞋 +20507,运动休闲鞋 +8525,帆布鞋 +20244,高帮棉鞋 +20245,高帮皮鞋 +20246,高帮休闲鞋 +20247,洞洞鞋 +20248,其他凉鞋 +20249,沙滩鞋 +20250,包头拖 +20251,人字拖 +20252,一字拖 +20253,工装靴 +20254,马丁靴 +20255,棉靴 +20256,皮靴 +20257,雪地靴 +8530,雨鞋 +20258,布鞋 +20508,板鞋 +20509,单鞋 +20510,豆豆/乐福鞋 +20511,老爹鞋 +20512,运动休闲鞋 +8532,帆布鞋 +20268,高帮棉鞋 +20269,高帮皮鞋 +20270,高帮休闲鞋 +20271,洞洞鞋 +20351,其他凉鞋 +20272,包头拖 +20273,人字拖 +20274,一字拖 +20276,马丁靴 +20277,棉靴 +20278,皮靴 +20279,雪地靴 +8537,雨鞋 +8551,卡包 +8552,卡套 +8553,旅行袋 +8554,旅行箱 +8555,单肩包 +8556,化妆包 +8557,手拿包 +8558,手提包 +8559,斜挎包 +8562,单肩包 +8563,化妆包 +8564,手拿包 +8565,手提包 +8566,斜挎包 +8569,钱包 +8570,手机包 +8571,双肩包 +8572,防尘袋 +8573,清洗用品 +8574,吊牌 +8575,旅行箱捆绑带 +8576,箱包锁 +8577,挂扣 +8578,五金配件 +8579,贴纸 +8580,保养剂 +8581,钥匙包 +8582,证件包 +20493,胸包/腰包 +8609,保暖裤 +8610,保暖上装 +20623,保暖背心 +20624,保暖上衣 +8611,保暖套装 +8612,插片/胸垫 +8613,搭扣 +8614,吊带/背心/T恤 +8615,吊袜带 +8616,肚兜 +8617,肩带 +8618,抹胸 +8619,内裤 +8620,乳贴 +8621,睡裤/家居裤 +8622,睡袍/浴袍 +8623,睡裙 +8624,睡衣/家居服套装 +8625,睡衣上装 +8626,塑身分体套装 +8627,塑身连体衣 +8628,塑身美体裤 +8629,塑身上装 +8630,塑身腰封/腰夹 +8631,袜子/丝袜/打底裤袜 +8632,文胸 +8633,文胸套装 +8640,3D眼镜 +8641,防风镜 +8642,防蓝光镜 +8643,滑雪镜 +8644,老花镜 +8645,潜水镜 +8646,司机镜 +8647,夜视镜 +8648,游泳眼镜 +8649,运动眼镜 +8650,光学眼镜 +8651,眼镜架 +8652,眼镜片 +20362,配镜券 +8653,国产腕表 +8654,怀表 +8655,欧美腕表 +8656,其他 +8657,日韩腕表 +8658,瑞士名表 +8659,手表配件 +8660,智能腕表 +8661,太阳眼镜 +8662,镜布 +8663,眼镜袋 +8664,眼镜盒 +8665,眼镜护理剂 +8666,眼镜螺丝刀 +8667,隐形眼镜伴侣盒 +8668,隐形眼镜清洁器 +8684,耳套 +8685,皇冠配饰 +8686,婚纱裙撑 +8687,婚纱手套 +8688,头纱 +8689,新娘头饰 +8690,口袋巾 +8691,假领 +8692,领带 +8693,领结 +8694,领针 +8695,帽子 +8696,口罩 +8697,领带夹 +8698,袖扣 +8699,手帕 +8700,手套 +8701,多件套 +8702,二件套 +8703,三件套 +20468,面纱 +20469,披肩 +20470,头巾 +20471,围巾/丝巾 +8705,包带 +8706,包挂件 +8707,防滑贴 +8708,后跟贴 +8709,拎环 +8710,前掌垫 +8711,鞋撑 +8712,鞋带 +8713,鞋垫 +8714,鞋扣 +8715,钥匙扣 +8716,增高垫 +8717,袖套 +8718,腰带/皮带/腰链/背带 +8719,布面料 +8720,毛线 +20825,织带 +8864,保险 +8865,清洁保养 +8866,软件升级 +8867,数据恢复 +8869,视频/音频/电子相册制作 +8870,图片设计/处理 +8871,打孔 +8872,电路安装/维修 +8873,防水补漏 +8874,管道疏通 +8875,化粪池处理 +8876,开锁/修锁/换锁 +8877,马桶疏通 +8878,门窗维修 +8879,暖气安装/维护 +8880,墙面粉刷/补裂 +8881,水管安装/维修 +8883,灶具维修 +8884,打印服务 +8885,灯箱 +8886,复印服务 +8887,告示牌/指示牌 +8888,广告位招租 +8889,广告语设计 +8890,广告展示架制作 +8891,广告制作 +8892,会展服务 +8893,活动策划 +8894,喷绘 +8895,批量印刷服务 +8896,条幅/横幅 +8897,推广文案撰写 +8898,写真 +8899,信息发布 +8900,招牌字/门头 +8901,保险 +8902,清洁保养 +8903,上门回收 +8904,维修 +8905,家居安装 +8906,家居配送安装 +8907,家居维修 +8908,家居物流/配送 +8909,家居装修施工/设计 +8910,搬家/搬运服务 +8911,保姆/看护 +8912,除虫除蚁 +8913,家居测量/空气检测 +8914,上门保洁 +8915,快递/代购/代办跑腿 +8916,报纸杂志订阅 +8917,殡葬服务 +8918,废品回收 +8919,改衣 +8920,配镜 +8921,钟表雨伞维修 +8922,其他 +8923,车辆紧急救援 +8924,车载电子产品安装服务 +8925,零配件安装服务 +8926,内外饰加装改装服务 +8927,汽车保养服务 +8928,汽车类代办跑腿服务 +8929,汽车美容服务 +8930,汽车维修服务 +8931,安全保卫 +8932,工商注册 +8933,会计服务 +8934,进出口代理 +8935,礼品定制 +8936,商务服务 +8937,设备维修或租赁服务 +8938,市场调研 +8939,专利申请/代理 +8940,硒鼓加粉服务 +8941,知识产权服务 +8942,特色服务 +8943,文案代写 +8944,法律服务 +8945,公证 +8946,理财咨询 +8947,服装服饰售后服务 +8948,在线清洗 +8949,电影票 +8950,体育赛事 +8951,演出 +8952,展览/展会 +8953,背胶证件照 +8954,笔 +8955,笔记本定制 +8956,个性徽章 +8957,奖杯/奖章/奖状/证书 +8958,其他办公/文具/趣味定制 +8959,鼠标垫 +8960,私章/趣味印章刻制服务 +8961,胸牌定做 +8962,包装胶带/不干胶/标签 +8963,包装纸箱 +8964,其他定做类 +8965,服装定制 +8966,帽子定制 +8967,配饰定制 +8968,箱包定制 +8969,鞋类定制 +8970,检验检测 +8971,个人定制原材料 +8972,各类个性定制设备 +8973,其他商品定制 +8974,日用装饰定制 +8975,2D/3D绘图 +8976,FLASH/动画制作 +8977,服饰设计 +8978,个性签名 +8979,工业设计 +8980,卡通/动漫/插画设计 +8981,平面设计 +8982,其他设计服务 +8983,设计素材/源文件 +8984,诗词定制 +8985,样图/效果图销售 +8986,装饰工程 +8987,耳饰定制 +8988,戒指手链定制 +8989,其他饰品定制 +8990,项链定制 +8991,足饰定制 +8992,U盘定制 +8993,平板电脑壳/保护套定制 +8994,其他数码配件定制 +8995,手机壳/保护套定制 +8996,照片冲印 +8997,茶馆/茶楼 +8998,火锅/干锅/豆捞 +8999,快餐/小吃/西式快餐 +9000,其他美食折扣券 +9001,日韩料理/亚洲美食 +9002,烧烤/烧肉/烤鱼 +9003,甜品/冰淇淋/咖啡/冷饮 +9004,西餐 +9005,中餐/地方菜系 +9006,自助餐 +20104,西式快餐(实时卡券) +9007,购物券/礼品卡 +9008,面包/蛋糕/冰淇淋 +9009,食品提货券 +9010,超市/便民店卡 +9011,付费会员 +9012,商场/百货消费卡 +9013,综合通用卡/一卡通 +9014,婚车装饰 +9015,婚车租赁 +9016,婚礼表演 +9017,婚庆布置/装饰 +9018,婚礼策划 +9019,婚礼跟拍 +9020,婚礼化妆/跟妆 +9022,婚纱/礼服定做 +9023,婚纱/礼服租赁 +9024,婚纱摄影 +9025,婚宴酒店 +9026,婚庆视频/素材/资料 +9027,其它婚庆服务 +9028,宠物摄影 +9029,广告摄影 +9030,会议摄影 +9031,其它摄影服务 +9032,商品摄影服务 +9033,商品展示视频拍摄/制作 +9034,摄影摄像服务 +9035,视频/照片后期制作 +9036,相框/相册制作 +9037,证件照 +9038,儿童摄影 +9039,情侣摄影 +9040,全家福摄影 +9041,写真摄影 +9042,孕妇/亲子摄影 +15542,婚礼司仪/主持人 +9043,IT编程 +9044,办公软件 +9045,驾驶 +9046,烹饪 +9047,设计创作 +9048,社交谈判 +9049,投资理财 +9050,营销管理 +20363,技能培训(线下) +9051,office办公制作 +9052,笔译服务 +9053,方案策划 +9054,考试题库软件 +9055,口译服务 +9056,论文检测与查询 +9057,文章写作 +9058,宣传文案 +9059,表演主持 +9060,个人形象 +9061,美术 +9062,摄影摄像服务 +9063,书法 +9064,体育 +9065,舞蹈 +9066,养生 +9067,音乐 +20364,生活兴趣培训(线下) +9068,初中辅导 +9069,高中辅导 +9070,小学辅导 +9071,学前教育 +20365,学科辅导(线下) +9072,IT资格认证 +9073,财务/会计培训 +9074,公务员培训 +9075,建筑地产培训 +9076,教师资格培训 +9077,其他职业资格认证培训 +9078,司法考试 +9079,学历教育培训 +9080,研究生辅导 +9081,医学类资格认证 +9082,银行/证券培训 +9083,自学考试培训 +20366,其他学历/职业资格考试(线下) +20367,学历教育培训(线下) +20368,自学考试培训(线下) +9084,多语种 +9085,汉语 +9086,计算机语言 +9087,英语 +20369,语言培训(线下) +9088,国内门票(含港澳台) +9090,境内周边游 +20042,国外门票(景点/赛事/演出) +9091,港澳送关服务 +9092,购物/纪念品/旅行用品 +9095,租车 +20052,巴士/地铁/交通卡/一卡通 +20053,包车(按日包车/线路包车) +20054,接送(机场/点对点/拼车) +9097,境外电话卡 +9098,境外流量包 +20046,港澳台电话卡 +20047,港澳台流量包 +20048,港澳台随身WiFi +20049,境外随身wifi +9099,境外火车票 +9103,旅行优惠券 +9104,旅行会员卡 +9108,海外目的地玩乐 +9109,出境邮轮 +20063,船票 +20064,境内邮轮 +9110,境内自由行 +20065,境内定制游 +20066,境内跟团游 +20067,境外定制游 +20068,境外跟团游 +20069,境外自由行 +19296,境内线上电子票 +20051,地陪/讲解/翻译/咨询服务 +20056,旅行拍照/婚纱摄影 +20058,旅行设备/相机/翻译机租赁 +20060,签证 +20061,入金证 +20062,入台证 +9111,电费 +9112,固话 +9113,加油卡充值 +18269,实体加油卡 +9114,宽带 +9115,燃气费 +9116,水费 +9117,有线电视 +9118,其他增值会员 +9119,QQ币 +9120,QQ点 +9121,QQ会员/钻石/超级会员 +9122,音乐影视会员 +9123,国内酒店 +20070,国外酒店 +9124,客栈/公寓/民宿 +9125,客房/餐饮优惠券 +9128,程序/软件开发 +9129,充值平台软件/加款卡 +9130,多媒体/摄影 +9131,网店服务 +9132,物流服务 +9133,云计算 +9134,话费快充 +9135,话费慢充 +9136,流量包 +20879,物联网卡流量充值 +9137,手机卡 +9139,KTV +9140,茶馆/咖啡馆 +9141,户外拓展 +9142,农家乐 +9143,踏青采摘 +9144,游乐场 +9145,真人CS +9146,会所 +9147,酒吧 +9148,美发 +9149,美甲 +9150,美容/纤体/SPA +9151,其他休闲娱乐 +9152,DIY手工 +9153,密室逃脱 +9154,棋牌桌游 +9155,室内儿童玩乐 +9156,游戏厅/网咖 +9157,桌球 +9158,保龄球 +9159,网球 +9160,舞蹈/健美操 +9161,游泳 +9162,瑜伽 +9163,羽毛球 +9164,综合健身 +9165,水疗 +9166,温泉洗浴 +9167,养生按摩 +9168,足疗足浴 +9183,激活码测试号专区 +9184,视频直播 +9185,网络游戏点卡 +9186,游戏币 +9187,游戏代练 +9188,其它游戏软件 +9189,DS/3DS游戏软件 +9190,PC游戏软件 +9191,PSP/PSV游戏软件 +9192,PS游戏软件 +9193,WII/WIIU游戏软件 +9194,XBOX游戏软件 +9195,ORIGIN +9196,PSN +9197,STEAM +9198,UPLAY +9199,其他游戏平台 +9200,网页游戏物品/资源 +9201,游戏账号 +18127,游戏账号租赁 +9202,游戏装备 +20781,道具兑换(实名) +18241,手游充值\t +9501,被套 +9502,蚕丝被 +9503,化纤被 +9504,棉花被 +9505,羊毛被/驼毛被 +9506,羽绒/羽毛被 +9507,床单 +9508,床垫/床褥/床护垫 +9509,床盖 +9510,床笠 +9511,床幔 +9512,被套定制 +9513,被子/被芯定制 +9514,床单定制定做 +9515,床垫定制定做 +9516,床罩定制 +9517,广告毛巾/礼品毛巾 +9518,靠垫定制 +9519,凉席定制定做 +9520,套件定制 +9521,枕套定制 +9522,桌布/桌旗定制定做 +9523,床品配件 +9524,床品套件/四件套/多件套 +20811,婚庆床品套件 +20812,酒店床品套件 +9525,床裙 +9526,床罩 +9527,电热毯 +9528,抱被/襁褓包 +9529,儿童被套 +9530,儿童被子 +9531,儿童床单 +9532,儿童床垫 +9533,儿童床品套件 +9534,儿童毯子 +9535,儿童枕套 +9536,婴童多件套 +9537,婴童凉席 +9538,婴童睡袋/防踢被 +9539,婴童蚊帐 +9540,婴童枕头/枕芯 +9541,凉席/竹席/藤席/牛皮席 +9542,其它 +9543,睡袋 +9544,蚊帐 +20699,法兰绒毛毯 +20700,拉舍尔毛毯 +20701,毛巾被/毛巾毯 +20702,其他毛毯/绒毯 +20703,珊瑚绒毛毯 +9546,枕巾 +9547,枕套 +20523,U型枕 +20524,花草枕 +20525,记忆棉枕 +20526,其他枕头/枕芯 +20527,乳胶枕 +20528,纤维枕 +20529,羽绒/羽毛枕 +20690,一次性床品 +9549,强电布线盒 +9550,弱电布线盒 +9551,地插 +9552,电话+电视插座 +9553,电话插座 +9554,电脑+电话插座 +9555,电脑+电视插座 +9556,电脑插座 +9557,电视插座 +9558,电源插座 +9559,开关插座套装 +9560,音频插座 +9562,地插底盒 +9563,开关/插座底盒 +20370,底盒修复器 +9564,保险丝 +9565,电笔 +9566,电度表 +9567,电工胶带 +9568,电视分配器 +9569,汇流排 +9570,接线端子 +19551,其他电工配件 +9571,电线管 +9572,电线管配件 +9573,单芯线 +9574,电话线 +9575,电缆线 +9576,护套线 +9577,视频线 +9578,网络线 +9579,音响线 +9580,空气开关 +9581,漏电保护器 +9582,安防配件 +9583,报警主机 +9584,断电报警器 +9585,家用单机温感探测器 +9586,家用单机烟感探测器 +9587,家用气体检测报警器 +9588,入侵检测设备 +9589,智能电子脉冲围栏系统 +9590,成套监控设备 +9591,光端机 +9592,画面分割器 +9593,监控器材配件 +9594,监控摄像机 +9595,监控显示器 +9596,识音器/集音器 +9597,视频采集卡 +9598,视频监控测试仪 +9599,视频解码器 +9600,视频矩阵服务器 +9601,视频转换器 +9602,音频采集卡 +9603,音频跟随器 +9604,音频切换器 +9605,硬盘录像机/DVR +9606,云台 +9607,字符叠加器 +9608,交换器 +9609,插头 +9610,接线板/插排 +9611,转换插头 +20132,USB插座 +20371,电缆盘/绕线盘/收线器 +9612,插卡取电开关 +9613,触摸开关 +9614,单控开关 +9615,多控开关 +9616,防溅盒 +9617,感应开关 +9618,门铃/门禁开关 +9619,双控开关 +9620,调光开关 +9621,调速开关 +9622,遥控开关 +9623,浴霸专用开关 +20297,定时开关 +20372,按钮开关/控制器 +20373,闸刀开关 +9624,报警按钮 +9625,报警灯 +9626,报警喇叭/警号 +9627,报警模块 +9628,壁挂广播控制柜 +9629,壁挂消防广播功放 +9630,回路板 +9631,火灾显示盘 +9632,警铃 +9633,喷淋头 +9634,气体灭火控制盘 +9635,吸顶式消防广播音箱 +9636,消防电话 +9637,消防控制柜/控制箱 +9638,消防稳压电源 +9639,总线控制盘 +9640,灯光控制系统 +9641,电器控制系统 +9642,电源控制系统 +9643,楼宇智能系统 +9644,其他智能家居用品 +9645,影音控制系统 +9646,智能安防报警器材 +9647,智能插座 +9648,智能家居套装 +9649,智能监控摄像机 +9650,智能开关 +9651,智能转换器 +19552,门铃 +9652,电池转换器 +9653,电源转换器 +9654,集成板 +9655,建筑模板 +9656,胶合板 +9657,铝塑板 +9658,免漆板 +9659,欧松板 +9660,三聚氰胺板 +9661,生态板 +9662,饰面板 +9663,细木工板 +9664,中密度板 +9665,玻璃砖 +9666,彩绘玻璃 +9667,防弹玻璃 +9668,钢化玻璃 +9670,磨沙玻璃 +9671,普通平板玻璃 +9672,艺术玻璃 +9673,中空玻璃 +18761,夹胶玻璃 +9674,实木梁托 +9675,通花板 +9676,防水涂料 +20133,防水卷材 +9677,玻璃隔断墙 +9678,电视背景墙 +9679,屏风 +9680,隔热保温片 +9681,管道隔热保温套 +9682,墙体外保温体系 +9683,隔音板 +9684,隔音棉 +9685,硅钙板 +9686,插销 +9687,窗用配件 +9688,合页 +9689,家具五金 +9690,拉手 +9691,门用配件 +9692,其他五金件 +9693,绳/链/钩 +9694,锁具 +20753,锁具配件 +9695,窗密封条 +9696,门底密封条 +9697,防腐木 +9698,木龙骨 +9699,碳化木 +9700,原木木方 +9701,玻璃窗配件 +9702,玻璃配件 +9703,贴墙纸配件 +9704,贴砖配件 +9705,其他 +9706,安全网 +9707,基础材料 +9708,井盖 +9709,石棉瓦 +9710,人造大理石 +9711,粗沙 +9712,鹅卵石 +9713,细沙 +9714,中沙 +9715,砂岩背景墙 +9716,砂岩雕刻 +9717,防火石膏板 +9718,防水石膏板 +9719,普通石膏板 +9720,石膏板配件 +9721,PE管 +9722,PPR管 +9723,UPVC管 +9724,不锈钢管 +9725,镀锌管 +9726,管材连接件/配件 +9727,铜管 +9728,白水泥 +9729,黑水泥 +9730,大理石制品 +9731,啡岗纹系列 +9732,黑墨玉系列 +9733,爵士白系列 +9734,米黄系列 +9735,墨绿玉系列 +9736,晚霞红系列 +9737,雪花白系列 +9738,硅藻泥 +9739,内墙白色哑光乳胶漆 +9740,内墙乳胶漆 +9741,特种涂料 +9742,外墙乳胶漆 +9743,艺术涂料 +9744,木线条 +9745,石膏线条 +9746,相框线条 +9747,护墙角 +9748,金箔 +9749,透光石 +9750,亚克力板 +9751,有机玻璃板 +9752,有机玻璃棒 +9753,装饰性吸音材料 +9754,钢结构阳光房 +9755,铝合金阳光房 +9756,工业漆 +9757,木器漆 +9758,艺术漆 +9759,油漆辅料 +9760,多孔砖 +9761,红砖 +9762,轻质砖 +9763,透水砖 +9764,砖雕 +19554,玻璃胶/密封胶 +19555,瓷砖胶 +19556,胶带 +19557,免钉胶 +19558,泡沫胶 +19559,其它胶水/胶黏剂 +19560,墙纸胶水 +19564,云石胶 +20355,基础建材定金 +9766,摆件 +9767,壁饰 +9768,百变造型香皂 +9769,创意礼品 +9770,创意门挡 +9771,搞怪杯子 +9772,海螺/贝壳/珊瑚 +9773,空中吊饰 +9774,扭曲雕塑品 +9775,女巫布艺 +9776,其他 +9777,太阳能娃娃 +9778,幸运星/瓶 +9779,椰子壳 +9780,招财猫 +9781,根雕 +9782,木雕 +9783,石雕 +9784,炭雕 +9785,玉雕 +9786,风铃及配件 +9787,工艺船 +9788,工艺伞 +9789,工艺扇 +9790,DIY仿真材料 +9791,仿真花/假花 +9792,仿真水果 +9793,仿真植物盆景 +9794,干花/花瓣/花包/树枝 +9795,花器/花瓶 +9796,花艺套餐 +9797,挂钟 +9798,立钟/落地钟 +9799,台钟/闹钟 +9800,座钟 +20552,家居钟饰/闹钟配件 +9801,家饰软装搭配套餐 +9802,无味蜡烛 +9803,香薰蜡烛 +9804,烛台 +9805,其他工艺饰品 +9806,冰箱磁性贴 +9807,冰箱贴纸 +9808,瓷砖/玻璃贴 +9809,电脑贴 +9810,开关贴 +9811,马桶贴 +9812,其他贴饰 +9813,墙贴 +9814,衣柜贴 +19139,地贴 +20553,家具贴膜 +20554,美缝贴 +20723,防油贴 +9815,相框/画框 +9816,香薰炉 +9817,照片/画片 +9818,照片墙 +9819,装饰挂钩 +9820,装饰挂牌 +9821,DIY/数字油画 +9822,版画 +9823,标本类装饰画 +9824,工艺画 +9825,国画 +9826,其他装饰画 +9827,书法 +9828,无框画挂钟 +9829,现代装饰画 +9830,油画 +20849,装饰海报 +9831,装饰架/装饰搁板 +9832,储物罐 +9833,果盘/果篓 +9834,饰品盒 +9835,阳光罐/月光罐 +9836,音乐盒 +9837,装饰盆 +9838,装饰碗 +9839,装饰烟灰缸 +9840,装饰纸巾盒 +9841,装饰坐盘/挂盘 +9842,壁灯 +9843,成套灯具 +9844,橱柜灯 +9846,灯具配件 +9847,吊灯 +9848,感应灯 +9849,格栅/面板灯/平板灯 +9850,工矿灯具 +9851,功能性灯具 +9853,镜前灯 +9854,落地灯 +9855,其他灯具灯饰 +9856,射灯 +9857,室外灯饰 +9858,台灯 +9859,筒灯 +9860,吸顶灯 +9861,小夜灯 +9862,应急灯 +9863,支架灯 +20436,充电灯泡/地摊灯 +20439,吊扇灯 +20441,其他庭院灯饰 +20442,太阳能庭院灯饰 +20489,道路灯具 +9864,LED光源 +9865,卤钨灯 +9866,其他光源 +9867,荧光灯 +9868,背景墙软包 +9870,工艺软包 +9871,天花板软包 +9872,厨房挂件 +9873,厨房龙头 +9874,厨盆/水槽 +9875,厨用垃圾桶 +9876,拉篮 +9877,米桶 +9878,其他厨房配用件 +9879,水槽配件 +9880,玻化砖 +9881,瓷砖背景墙 +9882,瓷砖装饰附件 +9883,仿古砖 +9884,马赛克 +9885,抛晶砖 +9886,其他类瓷砖 +9887,通体砖 +9888,微晶石 +9889,釉面砖 +9890,保养系列 +9891,除味系列 +9892,环保系列 +9893,固定式晾衣架 +9894,晾衣架配件 +9895,伸缩晾衣架 +9896,升降晾衣架 +9897,其他 +9898,PVC墙纸 +9899,纯纸墙纸 +9900,定制壁画 +9901,铝箔墙纸 +9902,其他材质类墙纸 +9903,墙布/壁布/布面墙纸 +9904,绒面墙纸 +9905,沙面墙纸(喷砂壁纸) +9906,无纺布墙纸 +9907,冲水器 +9908,地漏 +9909,蹲便器 +9910,角阀 +9911,净身妇洗器 +9912,淋浴房 +9913,商用卫浴 +9914,拖把池 +9915,卫浴家具 +9916,卫浴龙头 +9917,卫浴配件 +9918,卫浴水箱 +9919,卫浴五金/挂件 +9920,洗面盆 +9921,小便器 +9922,浴缸 +9923,坐便器 +9924,坐便器盖板 +19543,淋浴花洒 +20801,浴室壁挂凳椅 +20802,整体卫浴套装 +20862,喷头/喷枪 +9927,灯暖式浴霸 +9928,多功能浴霸 +9929,风暖式浴霸 +20555,浴霸配件 +14652,地板附件 +14653,地板革(PVC地板) +14654,强化复合地板 +14655,实木地板 +14656,实木复合地板 +14657,特殊用途地板 +14658,竹地板 +14659,电器模块 +14660,集成吊顶套餐 +14661,扣板模块 +14662,配件模块 +20353,家装主材定金 +9930,餐垫 +9931,餐巾 +9932,椅套 +9933,桌布 +9934,桌布/桌旗/桌椅套/椅垫 +9935,桌旗 +9936,桌椅脚套/桌脚垫 +20848,茶几垫 +9937,电动窗帘整体套装 +9938,百叶帘/折帘/罗马帘 +9939,成品窗帘 +9940,窗纱 +9941,定制窗帘 +9942,辅料配件 +9943,卷帘 +9944,门帘 +9945,全屋窗帘套餐 +9946,线帘 +9947,珠帘/挂帘 +9948,蜀绣 +9949,苏绣 +9950,湘绣 +9951,粤绣 +9952,地垫 +9953,地毯 +9954,电话套 +9955,电脑罩 +9956,电视机罩 +9957,钢琴罩 +9958,挂袋 +9959,酒瓶套 +9960,开关套 +9961,空调罩 +9962,门把手套 +9963,沙发套 +9964,万能盖巾 +9965,微波炉罩 +9966,洗衣机罩 +9967,遥控器篮 +9968,遥控器套 +9969,饮水机罩 +13175,床头罩 +19540,烤火罩 +20383,床头柜盖布 +20865,暖气片罩 +20866,一次性防尘罩 +9970,笔 +9971,布艺DIY成品 +9972,尺子 +9973,缝纫DIY材料套装 +9974,缝纫DIY工具套装 +9976,缝纫机 +9977,划粉 +9978,剪刀 +9979,镊子 +9980,热熔胶棒 +9981,热熔胶枪 +9982,线 +9983,绣花机 +9984,针 +9985,锥子 +20480,缝纫DIY配件/辅料 +9986,挂毯/壁毯 +20867,挂布/背景布 +9987,海绵垫/布料/面料 +20402,抱枕 +20403,床头靠垫 +20404,腰靠垫 +9989,其他/配件/DIY/缝纫 +9990,十字绣成品 +9991,十字绣工具 +9992,十字绣配件 +9993,十字绣套件 +9994,绣布 +9995,绣线 +9996,原版绣图 +9997,美臀垫/保健坐垫 +9998,飘窗垫 +9999,蒲团 +10000,沙发垫 +10001,椅垫 +13165,毛巾/面巾 +13166,浴裙/浴袍/浴衣 +13167,浴巾 +13168,手帕/擦手巾 +13169,干发帽 +13170,浴巾毛巾方巾套装 +13171,布艺蛋糕/蛋糕毛巾 +10002,防盗窗 +10003,平开窗 +10004,其他窗 +10005,纱窗 +10006,推拉窗 +10007,外悬窗 +10008,无框阳台窗 +10016,低温电热辐射地暖系统 +10017,低温热水辐射地暖 +10018,暖气片/散热器 +10019,背景墙 +10020,定制博古柜 +10021,定制餐边柜 +10022,定制电视柜 +10023,定制柜门板 +10024,定制酒柜 +10025,定制飘窗柜 +10026,定制入户柜 +10027,定制沙发柜 +10028,定制书柜 +10029,定制书架 +10030,定制书台 +10031,定制洗手柜 +10032,定制洗衣机柜 +10033,定制鞋柜 +10034,定制玄关柜 +10035,定制浴室柜 +10036,定制杂物柜 +10037,花格 +10038,集成墙板/护墙板 +10039,集成墙板/护墙板附件 +10040,定制淋浴房 +10041,定制淋浴房拉门 +10042,整体衣帽间 +10043,定制衣柜 +10048,楼梯扶手/护栏 +10049,楼梯立柱 +10050,楼梯踏步板 +10051,缩颈龙骨 +10052,楼梯 +10053,防火门 +10054,进户门 +10055,门附件 +10056,室内门 +10057,庭院门 +10058,移门/隔断门 +20818,电动门/伸缩门 +20819,卷帘门/挡风门 +10059,车库空间定制 +10060,储藏室空间定制 +10061,儿童房空间定制 +10062,健身房空间定制 +10063,酒窖空间定制 +10064,客厅空间定制 +10065,内遮阳/外遮阳系统定制 +10066,全屋净化新风系统 +10067,全屋净水系统 +10068,全屋空气调节系统 +10069,书房空间定制 +10070,睡眠系统定制 +10071,卧室空间定制 +10072,阳光房定制 +10073,阳台空间定制 +10074,影音室空间定制 +10075,娱乐室空间定制 +10076,和室窗 +10077,榻榻米几桌 +10078,和室门 +10079,榻榻米椅 +10080,升降桌 +10081,榻榻米垫 +10082,榻榻米柜/床 +10083,榻榻米辅料 +10084,厨房空间套餐 +10085,橱柜配用件 +10086,橱柜 +10087,整装定制 +20357,全屋定制定金 +20821,家用电梯 +10088,办公柜类 +10089,办公椅 +10090,办公桌 +10091,报刊架 +10092,成套办公家具 +10093,公共休闲系列 +10094,会客沙发/茶几 +10095,接待台 +10096,屏风隔断 +10097,钥匙箱 +10098,骨灰盒 +10099,餐车 +10100,餐柜 +10101,餐盘收集车 +10102,餐桌 +10103,餐台脚 +10104,餐椅 +10105,火锅桌 +10106,卡座 +10107,转盘 +10108,堆高车 +10109,购物车 +10110,购物篮 +10111,行李柜 +10112,寄存柜 +10113,米粮桶 +10114,平板手推车/工具车 +10115,收银台 +10116,蔬菜篮/水果篮 +10117,装卸车 +10118,公共基础设施 +10119,交通服务设施 +10120,美化丰富空间设施 +10121,信息服务设施 +10122,大工椅/师傅椅 +10123,工具车 +10124,理发镜台 +10125,毛巾柜 +10126,美发椅 +10127,美发转灯 +10128,美甲台 +10129,美容/美发床 +10130,吊环 +10131,服装标签 +10132,服装模特 +10133,试鞋凳 +20195,服装展示架 +20196,挂钩 +10134,安全套架 +10135,仓储货架 +10136,超市货架 +10137,促销架/促销车 +10138,服装货架 +10139,红酒架/柜 +10140,化妆品货架 +10141,化妆品展柜 +10142,货架附件 +10143,精品展柜/陈列柜 +10144,冷冻食品架/柜 +10145,面包架 +10146,内衣货架 +10147,生鲜恒温架/柜 +10148,饰品架/柜 +10149,蔬菜水果架 +10150,图书音像货架 +10151,五金工具货架 +10152,鞋货架 +10153,眼镜货架 +10154,酒店单间/标间/成套家具 +10155,酒店行李柜 +10156,酒店沙发 +10157,酒店桌椅 +10158,其他 +10159,沐浴桶 +10160,桑拿手牌 +10161,移动汗蒸房 +10162,足浴/桑拿沙发 +10163,足浴盆 +10164,电竞太空舱 +10165,电竞椅 +10166,网咖桌 +10167,黑板 +10168,课桌椅 +10169,实验柜 +10170,实验台 +10171,演讲台 +10172,护理屏风 +10173,牵引椅 +10174,输液椅 +10175,牙科椅 +10176,医药架 +10177,助行器 +10178,坐便椅 +10179,酒吧凳/酒吧椅 +10180,酒吧台 +10181,卡座 +10182,跳舞台 +20359,商业/办公家具定金 +10183,布老虎 +10184,刺绣 +10185,刀剑相关 +10186,风筝 +10187,葫芦 +10188,剪纸 +10189,景泰蓝 +10190,绢人 +10191,空竹 +10192,蜡染印染 +10193,脸谱 +10194,木偶 +10195,内画鼻烟壶 +10196,泥人/泥塑/面塑 +10197,年画 +10198,皮影 +10199,漆器 +10200,其他 +10201,青花瓷 +10202,梳子/梳篦 +10203,唐卡 +10204,铁画 +10205,中国结 +10206,竹编/竹雕 +20286,非遗手工艺 +10207,埃及特色 +10208,巴基斯坦特色 +10210,波西米亚特色 +10211,俄罗斯特色 +10212,其他国家特色 +10213,泰国特色 +10214,印度特色 +10215,越南特色 +18764,北欧特色 +10216,其他特色工艺品 +10217,阿昌族 +10218,白族特色 +10219,保安族 +10220,布朗族 +10221,布依族 +10222,藏族特色 +10223,朝鲜族 +10224,达斡尔族 +10225,傣族 +10226,德昂族 +10227,东乡族 +10228,侗族 +10229,独龙族 +10230,俄罗斯族 +10231,鄂伦春族 +10232,鄂温克族 +10233,高山族 +10234,哈尼族 +10235,哈萨克族 +10236,赫哲族 +10237,回族 +10238,基诺族 +10239,京族 +10240,景颇族 +10241,柯尔克孜族 +10242,拉祜族 +10243,黎族 +10244,傈僳族 +10245,珞巴族 +10246,满族 +10247,毛南族 +10248,门巴族 +10249,蒙古族特色 +10250,苗族特色 +10251,仫佬族 +10252,纳西族 +10253,怒族 +10254,普米族 +10255,羌族 +10256,撒拉族 +10257,畲族 +10258,水族 +10259,塔吉克族 +10260,塔塔尔族 +10261,土家族 +10262,土族 +10263,佤族 +10264,维吾尔族 +10265,乌孜别克族 +10266,锡伯族 +10267,彝族 +10268,仡佬族 +10269,裕固族 +10270,壮族特色 +10271,道教工艺品 +10272,佛珠/念珠 +10273,基督教工艺品 +10274,其他宗教工艺品 +10275,伊斯兰教工艺品 +13172,佛教工艺品 +10276,车底检查镜 +10277,金属探测器 +10278,无线电波探测仪 +10279,倒角机 +10280,电锤 +10281,电动扳手 +10282,电动螺丝批 +10283,电动批头 +10284,电动坡口机 +10285,电动套丝机 +10286,电剪 +10287,电锯 +10288,打磨片/切割片 +10289,电磨机 +10290,电刨 +10291,电钻 +10292,雕刻机 +10293,光饰机 +10294,角磨机 +10295,界铝机 +10296,螺丝机 +10297,磨刀机 +10298,抛光机 +10299,其他电动工具 +10300,切割机 +10301,砂带机 +10302,砂轮机 +10303,砂纸机 +10304,修边机 +10305,云石机 +10306,直磨机 +19566,开槽机 +19567,喷涂机 +19568,水钻机 +20298,瓷砖平铺机 +20299,搅拌机 +20548,割草机 +20631,电剪 +20807,电动工具配件 +10307,LED设备 +10308,变频器 +10309,变压器 +10310,不间断电源/应急电源 +10311,低压电气 +10312,电工电器成套设备 +10313,电线电缆 +10314,工控系统及装备 +10315,工业电源 +10316,互感器 +10317,机器人 +10318,继电器 +10319,节电器 +10320,配电输电设备 +10321,太阳能电池 +10322,稳压器 +10323,线材 +10324,蓄电池 +10325,扁钢 +10326,槽钢 +10327,钢板 +10328,角钢 +10329,螺纹钢 +10330,圆钢 +10331,泵 +10332,变速机 +10333,电池/电力配件 +10334,电动机 +10335,电机配件 +10336,电热设备 +10337,发电机 +10338,焊接设备 +10339,内燃机 +10340,其他机电五金 +10341,压力管道 +10342,压力容器 +19118,油锯 +19571,工业风机 +20809,泵配件 +10343,传动件 +10344,弹簧 +10345,吊钩/抓钩 +10346,吊滑车 +10347,阀门 +10348,法兰 +10349,分离设备 +10350,工作台 +10351,管夹 +10352,管接头 +10353,滚动轴承 +10354,滚筒 +10355,滑动轴承 +10356,滑轮 +10357,化工管道及配件 +10358,机械喷嘴 +10359,炉头 +10360,密封件 +10361,其他机械五金 +10362,托辊 +10363,轴承附属件 +19572,铡草机 +20300,粉碎机 +20301,饲料颗粒机 +20730,玉米脱粒机 +10364,挡圈 +10365,垫圈 +10366,钉 +10367,螺钉 +10368,螺母 +10369,螺栓 +10370,螺柱 +10371,铆钉 +10372,膨胀类 +10373,其它紧固件 +10374,销 +10375,组合件和连接副 +10376,防护服 +10377,呼吸防护 +10378,交通安全保护 +10379,手部防护 +10380,头部/耳部防护 +10381,消防器材 +10382,眼部/面部防护 +10383,坠落防护 +10384,足部防护鞋 +20302,护栏/隔离栏/围栏/铁丝网 +20303,绳网 +10385,工业用铝型材 +10386,铝板 +10387,吹风枪 +10388,其他气动工具 +10389,气铲/气锹 +10390,气锤 +10391,气钉枪 +10392,气动扳手 +10393,气动捣固机 +10394,气动封箱机 +10395,气动工具配件 +10396,气动棘轮扳手 +10397,气动搅拌机 +10398,气动冷压接钳 +10399,气动螺丝刀 +10400,气动铆钉枪 +10401,气动磨光机 +10402,气动元件 +10403,气镐 +10404,热风枪 +10405,施工除尘器 +10406,板牙 +10407,车刀 +10408,滚刀 +10409,铰刀类 +10410,拉刀 +10411,刨刀 +10412,其他刃具 +10413,丝锥 +10414,镗刀 +10415,铣刀类 +10416,钻头 +19573,开孔器 +10417,扳手 +10418,测量工具 +10419,冲/撬棒 +10420,锤 +10421,锉/刨 +10422,刀 +10423,电子电工工具 +10424,斧 +10425,工具包/箱/车 +10426,工具组合套装 +10427,焊接喷涂 +10428,划线工具 +10429,夹持类工具 +10430,剪 +10431,锯和锯条 +10432,螺丝批/旋具头 +10433,其他手动工具 +10434,汽修汽保工具 +10435,热熔胶枪/胶棒 +10436,套筒及配件 +10437,涂刷工具 +10438,凿 +20549,农具 +10439,起重工具 +10440,液压工具 +10441,测厚仪 +10442,测距望远镜 +10443,测距仪 +10444,测亩仪 +10445,测湿仪 +10446,测速仪 +10447,测温仪 +10448,测线仪 +10449,电表 +10450,电镀电容表 +10451,电热工具 +10452,电子秤 +10453,电阻测试仪 +10454,风速仪 +10455,干燥箱 +10456,经纬仪 +10457,流量计 +10458,其它仪表仪器 +10459,气体检测仪 +10460,气体探测仪 +10461,钳形表 +10462,墙体探测仪 +10463,燃气表 +10464,示波器 +10465,水表 +10466,水份仪 +10467,水平仪 +10468,酸度计 +10469,推拉力计 +10470,万用表 +10471,温控仪 +10472,温度计/湿度计 +10473,压力表 +10474,噪音仪 +10475,兆欧表 +10476,照度仪 +10477,转速表 +20382,地磅/地磅秤 +20635,水准仪 +20636,仪器仪表配件 +10478,餐厅成套家具 +10479,功能房成套家具 +10480,客厅成套家具 +10482,门厅成套家具 +10483,其他成套家具 +10484,书房成套家具 +10485,卧室成套家具 +10486,3D床垫 +10487,弹簧床垫 +10488,复合床垫 +10489,海绵床垫 +10490,卷包/折叠床垫 +10491,其他床垫 +10492,乳胶床垫 +10493,水床垫 +10494,椰棕床垫 +10495,圆床垫 +10496,棕榈床垫 +10497,拔步床/架子床 +10498,板木结合床 +10499,板式床 +10500,布艺床 +10501,充气床 +10502,床架/床板 +10503,床配件 +10504,高低/子母床 +10505,罗汉床 +10506,皮艺床 +10507,实木床 +10508,藤艺床 +10509,铁艺/钢木床 +10510,衣柜床 +10512,折叠床/午休床 +10513,儿童学习桌 +10514,儿童餐椅 +10515,儿童成套家具 +10516,儿童床 +10517,儿童凳 +10518,儿童沙发 +10519,儿童椅 +10520,其他 +10521,婴儿床 +13174,儿童床垫 +10522,根雕茶几 +10523,根雕茶桌 +10524,根雕凳子 +10525,根雕花架 +10526,其他 +10527,餐边柜/橱柜 +10528,床头柜 +10529,电视柜 +10530,吊柜/壁柜 +10531,顶箱柜 +10532,斗柜 +10533,佛柜/佛龛 +10534,柜子配件 +10535,简易衣柜 +10536,角柜 +10537,酒柜 +10538,连体书桌柜 +10539,门厅/玄关柜 +10540,飘窗柜 +10541,其它柜类 +10542,书柜 +10543,鞋柜 +10544,药柜 +10545,衣柜 +10547,户外秋千 +10548,木屋凉亭 +10549,伞具 +10550,桌 +10551,桌椅套件 +10552,坐具 +18756,户外床 +10553,茶几 +10554,角几/边几 +10555,炕几 +10556,套几 +10557,玻璃 +10558,布艺 +10559,海绵 +10560,家具纸 +10561,皮革 +10562,其它家具配件 +10563,亚克力 +10564,CD架 +10565,壁炉架 +10566,多宝格/博古架 +10567,格架 +10568,花架/花几 +10569,画架 +10570,家用雨伞架 +10571,酒架 +10572,面盆架 +10573,其他架类 +10574,书报架 +10575,书架 +10576,鞋架 +10577,衣帽架 +10578,置物架/搁板 +10579,组合衣架 +10580,穿衣镜 +10581,化妆镜 +10582,其他 +10583,插屏 +10584,挂屏 +10585,花窗 +10586,折屏 +10587,座屏 +10588,布艺沙发 +10589,充气沙发 +10590,贵妃椅/榻 +10591,懒人沙发 +10592,皮艺沙发 +10593,沙发床 +10594,沙发凳/脚踏 +10595,沙发配件及辅料 +10596,实木沙发 +10597,藤/竹沙发 +10598,铁艺沙发 +10603,藏箱/扣箱/衣箱 +10604,家用保险箱 +10605,其他 +10606,吧台 +10607,餐桌 +10608,电脑桌 +10609,供桌 +10610,经桌 +10611,麻将桌 +10612,其他桌子 +10613,棋桌 +10614,琴桌 +10615,书桌 +10616,梳妆台/桌 +10617,条案 +10618,玄关台 +10619,折叠桌 +13173,桌子配件 +20693,烤火桌 +20864,茶桌/台 +10620,凳类 +10621,椅类 +10622,坐具配件 +20361,住宅家具定金 +11801,保险丝 +11802,保险丝座 +11803,电动车刹车装置 +11804,电动车车篮/车筐 +11805,电动车充电插座 +11806,电动车灯 +11807,电动车电池 +11809,电动车反光镜 +11810,电动车飞轮 +11811,电动车辐条 +11812,电动车后备箱 +11813,电动车脚踏 +11814,电动车开关 +11815,电动车控制器 +11816,电动车内胎 +11817,电动车前叉/减震装置 +11818,电动车碳刷/刷架 +11819,电动车外胎 +11820,电动车线类 +11821,电动车轴承 +11822,电动车坐垫 +11823,电机 +11824,平衡车零配件 +20877,电动车挡泥板 +20878,电动车外壳 +11825,AB胶 +11826,扳手 +11827,除锈剂 +11828,电池夹 +11829,电池检测仪 +11830,电动车补胎工具 +11831,电烙铁 +11832,焊锡丝 +11833,胶棒 +11834,绝缘胶布 +11835,控制器接头/插接件 +11836,冷补胶 +11837,气门芯 +11838,撬胎棒 +11839,热熔枪 +11840,热缩管 +11841,拖车拖挂 +11842,万用表 +11843,橡胶锤 +11844,扎带 +11845,整车检测仪 +11846,电动滑板车 +11847,电动摩托车 +11848,电动三轮车 +11849,电动四轮车 +11850,电动自行车 +11851,老年代步车 +11852,自平衡电动车 +11853,瘪胎助推器 +11854,电池修复器 +11855,电池修复液 +11856,电动车GPS定位器 +11857,电动车报警器 +11858,电动车车载充电器 +11859,电动车撑伞架 +11860,电动车充电器 +11861,电动车充气泵 +11862,电动车打气筒 +11863,电动车挡风被 +11864,电动车导航仪 +11865,电动车点烟器 +11866,电动车电池盒 +11867,电动车定时器 +11868,电动车儿童座椅 +11869,电动车防尘罩 +11870,电动车防风镜 +11871,电动车防晒衣/披肩 +11872,电动车护膝 +11873,电动车货架 +11874,电动车记录仪 +11875,电动车脚垫 +11876,电动车铃/喇叭 +11877,电动车面罩/帽 +11878,电动车手机导航支架 +11879,电动车手套/护手 +11880,电动车锁 +11881,电动车套锁 +11882,电动车贴 +11883,电动车头盔 +11884,电动车雨披 +11885,电动车遮阳伞 +11886,电动个性车牌 +11887,电压转换器 +11888,儿童座椅棚 +11889,快速充电站 +11890,骑行防水鞋套 +11891,头盔镜片防雾剂 +11892,增程器 +20826,头盔锁 +20876,电动车挡风衣 +20828,电动车安装服务 +20829,电动车上牌服务 +20830,电动车维修/保养服务 +11893,绑钩器 +11894,抄网 +11895,抄网杆 +11896,抄网头 +11897,垂钓小配件 +11898,打窝船 +11899,钓竿 +11900,钓台 +11901,钓箱 +11902,钓鱼船 +11903,钓鱼船推进器 +11904,钓鱼剪刀 +11905,钓鱼警报器 +11906,钓鱼帽 +11907,钓鱼伞 +11908,钓鱼手套 +11909,钓鱼鞋 +11910,钓鱼椅、凳 +11911,饵料盒 +11912,浮漂 +11913,浮漂座 +11914,竿止 +11915,控鱼钳 +11916,路亚钳 +11917,漂盒 +11918,其他垂钓用品 +11919,铅皮 +11920,铅坠 +11921,伸缩扣 +11922,失手绳 +11923,太空豆 +11924,探鱼器 +11925,脱钩器 +11926,线盒 +11927,醒目豆 +11928,鱼饵 +11929,鱼钩 +11930,鱼护/活鱼袋 +11931,鱼桶 +11932,鱼网/虾笼/其它渔具 +11933,鱼线 +11934,鱼线轮 +11935,渔具包 +11936,渔具套装 +11937,支架 +11938,止血钳 +19284,水草刀 +20100,线组 +20530,鱼叉 +11939,刀鞘/刀套 +11940,多功能组合工具 +11941,放大镜 +11942,工兵铲/工兵锹 +11943,工兵斧/营地斧 +11944,挂扣 +11945,军刀卡/万能刀卡 +11946,磨刀护刀相关 +11947,其他户外刀具 +11948,伞绳 +11949,野营旅行小配件 +20531,瑞士军刀 +11950,登山杖/手杖 +11951,地布/地席 +11952,防潮垫 +11953,辅配件 +11954,其他垫子 +11955,枕头 +19281,充气垫 +11956,防护口罩 +11957,防护面罩 +11958,防灾包/防地震包 +11959,急救包/急救箱 +11960,急救护理用品 +11961,急救毯/保温毯 +11962,救生棒/荧光棒 +11963,其他防护救生装备 +11964,求生锯/绳锯/线锯 +11965,求生哨 +11966,求生绳/逃生绳 +11967,取暖用品 +11968,生存包 +11969,信号镜 +11970,运动护具 +11971,保暖棉服 +11972,冲锋衣裤 +11973,钓鱼服 +11974,功能内衣内裤 +11975,户外休闲衣裤 +11976,滑雪服 +11977,其他户外服装 +11978,潜水服 +11979,软壳衣裤 +11980,速干衣裤 +11981,一次性内裤 +11982,羽绒服 +11983,运动户外风衣 +11984,抓绒衣裤 +19276,户外服饰配件 +19285,防晒衣/皮肤衣 +20719,一次性内衣 +20720,一次性袜子 +11985,登山鞋/徒步鞋 +11986,高海拔登山靴/攀冰鞋 +11987,户外休闲鞋 +11988,滑雪鞋/雪地靴 +11989,攀岩鞋 +11990,其他户外鞋 +11991,沙滩鞋/凉鞋/拖鞋 +11992,溯溪鞋 +11993,越野跑鞋 +19277,户外雨靴 +11994,充气床 +11995,吊床 +11996,户外床/折叠床 +11997,户外椅子凳子 +11998,户外桌椅套装 +11999,户外桌子 +12000,其他 +12001,秋千 +12002,野餐垫 +12003,灯具配件 +12004,钓鱼灯 +12005,其他灯 +12006,潜水照明装备 +12007,手电筒 +12008,头灯 +12009,信号灯/发光棒/救生灯 +12010,营地灯/帐篷灯 +12011,军迷包具 +12012,军迷配饰 +12013,迷彩服/军迷服/作训服 +19283,军迷鞋靴 +12014,冰包/冰桶 +12015,挡风板 +12016,点火用具 +12017,户外鼓风机 +12018,其他 +12019,烧烤炉/烤架 +12020,烧烤配件 +12021,烧烤野炊燃料 +12022,套锅/户外炊具 +12023,调味盒/调料瓶 +12024,野餐包/户外餐具套装 +12025,野餐餐具 +12026,野餐篮/鸡蛋蓝/食品袋 +12027,野餐炉具 +19280,保温箱 +12028,旅行安全 +12029,其他旅行用品 +12030,睡袋 +12031,GPS/电子导航设备 +12032,户外功能手表 +12033,其他表类 +12034,无线电/对讲机/通讯设备 +12035,指南针/温度计/其他计标 +12036,垂钓望远镜 +12037,红外夜视仪 +12038,户外眼镜 +12039,激光测距望远镜 +12040,普通望远镜 +12041,数码望远镜 +12042,天文望远镜 +12043,望远镜配件 +12044,防虫/防蚊用品 +12045,口腔清洁护理用品 +12046,马桶垫 +12047,毛巾 +12048,美发用品 +12049,其它 +12050,剃须刀 +12051,洗护用品 +12052,洗手液 +12053,洗漱包/化妆包 +19282,应急尿袋 +20721,一次性床单被套 +20722,一次性浴缸袋 +20834,旅行洗漱套装 +12054,户外烧水壶/茶壶/咖啡壶 +12055,净水设备 +12056,酒壶 +12057,配件区 +12058,水杯 +12059,水壶 +12060,水盆 +12061,水桶 +12062,野外沐浴袋/太阳能沐浴袋 +12063,饮用水袋/皮囊 +12064,车顶帐篷 +12065,儿童帐篷/游戏屋 +12066,更衣/沐浴帐篷 +12067,工程/民用/活动/救灾篷 +12068,露营/旅游/登山帐篷 +12069,沙滩帐/钓鱼遮阳帐篷 +12070,帐篷配件 +12071,遮阳篷/雨篷/车篷/天幕 +12072,冲浪/滑水/帆板 +12073,登山攀岩攀冰 +12074,风筝/滑翔伞 +12075,滑雪装备 +12076,其他 +12077,潜水装备 +12078,水上船艇 +19279,户外包 +19287,弹弓 +19288,弹弓配件 +19289,弹弓套装 +19290,钢珠及泥丸 +19291,弓 +19292,弓箭配件 +19293,箭 +12079,赛车车迷用品 +12080,赛车服 +12081,赛车帽 +12082,赛车鞋 +12083,棒球 +12084,棒球棒 +12085,棒球帽 +12086,棒球球迷用品 +12087,棒球手套 +12088,棒球服 +12089,棒球鞋 +12090,更多棒球配件 +12091,保龄球 +12092,保龄球包 +12093,保龄球挂件 +12094,保龄球瓶 +12095,保龄球鞋 +12096,更多保龄球配件 +12097,壁球 +12098,壁球拍 +12099,壁球拍线 +12100,壁球鞋 +12101,更多壁球配件 +12102,冰刀鞋 +12103,冰球 +12104,冰球杆 +12105,冰上运动配件区 +12106,更多冰上运动 +12107,滑冰服 +12108,倒立机 +12109,冲浪机 +12110,大型健身器械配件区 +12111,登山机 +12112,动感单车 +12113,更多大型健身器械 +12114,划船机 +12115,健身车 +12116,健身路径 +12117,举重床/卧推器 +12118,力量训练器械 +12119,漫步机 +12120,跑步机 +12121,骑马机 +12122,器械减震垫 +12123,甩脂机 +12124,跳跳床/蹦蹦床 +12125,椭圆机 +18760,走步机 +12126,飞镖 +12127,更多室内休闲用品 +12129,桌上冰球 +12130,桌上足球 +18762,沙狐球 +12131,橄榄球 +12132,橄榄球服 +12133,橄榄球头盔 +12134,橄榄球鞋 +12135,更多橄榄球配件 +12136,高尔夫服装 +12137,高尔夫杆套 +12138,高尔夫球 +12139,高尔夫球钉 +12140,高尔夫球杆 +12141,高尔夫球帽 +12142,高尔夫伞 +12143,高尔夫手套 +12144,高尔夫鞋 +12145,高尔夫装备包 +12146,更多练习配件区 +12147,挥杆练习器 +12148,推杆练习器 +12149,花剑系列 +12150,击剑护具 +12151,击剑剑包 +12152,击剑袜 +12153,击剑鞋 +12154,佩剑系列 +12155,重剑系列 +12156,急救用品 +12157,拔河绳 +12158,板羽球(三毛球) +12159,板羽球拍 +12160,嗒嗒球/球拍 +12161,风筝 +12162,更多民间运动用品 +12163,滚铁环 +12164,剑球/技巧球 +12165,毽子 +12166,可乐球 +12167,空竹 +12168,门球 +12169,沙包 +12170,藤球 +12171,陀螺 +12172,无极健身球 +12173,裁判/教练用品 +12174,更多篮球用品 +12175,篮球 +12176,篮球板 +12177,篮球包/篮球袋 +12178,篮球充气设备 +12179,篮球服 +12180,篮球架/篮球框 +12181,篮球球迷用品 +12182,篮球袜 +12183,篮球网 +12184,摆摆乐 +12185,暴走鞋 +12186,便携魔轮 +12187,弹跳跷 +12188,风火轮 +12189,更多极限运动 +12190,滑板 +12191,滑板车 +12192,活力板 +12193,极限飞盘 +12194,极限装备/配件区 +12195,竞技独轮车 +12196,漂移板/分体滑板 +12197,双排轮 +12198,直排轮 +12199,UNO牌 +12200,矮人矿工 +12201,筹码 +12202,德国心脏病 +12203,斗兽棋 +12204,多米诺骨牌 +12205,富饶之城 +12206,更多棋牌 +12207,官捉兵 +12208,国际象棋 +12209,卡卡颂 +12210,拉密/以色列麻将 +12211,狼人 +12212,麻将 +12213,魔方/3D魔方 +12214,牌九 +12215,扑克 +12216,色子/骰子 +12217,筛盅 +12218,万智牌 +12219,围棋 +12220,洗牌机 +12221,中国象棋 +12222,转盘 +12223,鞍具系列 +12224,马车配件 +12225,马匹清洁/马房用品 +12226,马匹装备 +12227,马球用品 +12228,马术场地用具 +12229,马术文化用品 +12230,骑士装备 +12231,充气设备 +12232,排球 +12233,排球服 +12234,排球球网 +12235,排球鞋 +12236,排球战术板 +12237,排球柱 +12238,更多乒乓球配件 +12239,计分器/翻分牌 +12240,乒乓底板 +12241,乒乓球成品拍 +12242,乒乓球挡板 +12243,乒乓球发球机 +12244,乒乓球服 +12245,乒乓球盒 +12246,乒乓球捡球器 +12247,乒乓球拍套/包 +12248,乒乓球台 +12249,乒乓球袜 +12250,乒乓球网架/网 +12251,乒乓球鞋 +12252,乒乓套胶/海绵/单胶片 +12253,清洁保养装备 +12254,粘合剂/胶水 +20472,乒乓球训练器 +12255,杆盒/杆筒/杆袋 +12256,皮头/杆头 +12257,皮头胶水 +12258,巧粉夹/巧粉袋 +12259,巧克粉 +12260,球杆保养工具 +12261,球杆保养油 +12262,球杆加长器 +12263,台尼/台球布 +12264,台球 +12265,台球杆 +12266,台球挂件 +12267,台球架杆器 +12268,台球配件 +12269,台球三角架 +12270,台球三指手套 +12271,台球修杆器 +12272,台球桌 +12273,T型棍/T型拐 +12274,负重设备 +12275,更多武术设备 +12276,剑道 +12277,九节鞭 +12278,空手道 +12279,拳击/散打/泰拳 +12280,柔道 +12281,三节甩棍/伸缩棍 +12282,摔跤 +12283,双截棍 +12284,跆拳道 +12285,太极 +12287,裁判用具 +12288,海绵垫/体操垫 +12289,接力棒 +12290,跨栏架 +12291,链球 +12292,起跑器 +12293,起跑器架 +12294,铅球 +12295,铅球架 +12296,山羊/跳马/跳箱 +12297,田径场地辅助用具 +12298,田径运动服 +12299,田径运动鞋 +12300,跳高杆 +12301,跳高架 +12302,铁饼 +12303,铁饼架 +12304,跳舞毯 +12305,避震器 +12306,更多网球配件 +12307,手胶/吸汗带 +12308,网球 +12309,网球包 +12310,网球服 +12311,网球帽 +12312,网球拍 +12313,网球赛事纪念 +12314,网球线 +12315,网球鞋 +12316,网球训练用品 +12317,运动袜 +12318,芭蕾舞 +12319,藏族舞 +12320,草裙舞 +12321,朝鲜舞 +12322,傣族舞 +12323,肚皮舞 +12324,钢管舞 +12325,广场舞 +12326,健美操 +12327,街舞 +12330,啦啦队 +12331,摩登舞 +12332,踢踏舞 +12333,体操 +12334,现代舞 +12335,新疆舞 +12336,秧歌舞 +12337,中国古典舞 +12619,更多舞种 +14685,爵士舞 +14686,拉丁舞 +12338,草地铺设及设备 +12339,场馆灯光设备 +12340,场馆印象设备 +12341,更多场馆设施 +12342,计时/显示设备 +12343,塑胶/运动地板 +12344,泳池设备 +12345,游乐场设施 +12346,座椅 +12347,比基尼 +12348,儿童泳衣/裤 +12349,分体泳衣 +12350,裹裙/披纱 +12351,救生衣 +12352,连体泳衣 +12353,男士泳衣 +12354,亲子家庭装 +12355,情侣装泳衣 +12356,沙滩裤 +12357,戏水玩具 +12358,泳镜 +12359,泳帽 +12360,游泳池 +12361,游泳圈 +12362,游泳专用包 +12363,游泳装备 +12364,更多瑜伽用品 +12365,健身球架 +12366,伸展带/瑜伽绳 +12367,瘦手臂套 +12368,瘦小腿套 +12369,洗鼻壶/洗鼻盐 +12370,眼枕 +12371,瑜伽包 +12372,瑜伽垫 +12373,瑜伽垫捆绑带/毛扣 +12374,瑜伽发带 +12375,瑜伽服饰 +12376,瑜伽服用胸垫 +12377,瑜伽工艺品 +12378,瑜伽拉力带 +12379,瑜伽披肩 +12380,瑜伽铺巾 +12381,瑜伽球 +12382,瑜伽圈/普拉提圈 +12383,瑜伽手套 +12384,瑜伽舒展器/健康架 +12385,瑜伽体位图靠垫 +12386,瑜伽袜子 +12387,瑜伽香薰精油 +12388,瑜伽鞋 +12389,瑜伽砖 +12390,更多羽毛球装备 +12391,球网 +12392,手胶/吸汗带 +12393,羽毛球 +12394,羽毛球包 +12395,羽毛球服 +12396,羽毛球拍 +12397,羽毛球拍线 +12398,羽毛球鞋 +12399,运动毛巾 +12400,运动帽 +12401,运动袜 +12402,运动护具 +12403,臂力器 +12404,单双杠/引体向上 +12405,弹力棒/健身棒 +12406,俯卧撑架 +12407,杠铃 +12408,呼啦圈 +12409,计步器 +12410,计时器 +12411,健腹轮/健腹器 +12412,健身锤/按摩捶 +12413,健身器材套装 +12414,健身球/保健球 +12415,健身踏板/韵律踏板 +12416,健身椅 +12417,颈椎牵引器 +12418,拉力绳/拉力器 +12419,美腿机/腿部训练器 +12420,美腰机/挺腰器 +12421,扭腰盘 +12422,踏步机 +12423,体重秤/健康秤 +12424,跳绳 +12425,跳跳环/闪光跳 +12426,跳跳球/蹦蹦球 +12427,娃娃跳/弹跳器 +12428,腕力器 +12429,握力器 +12430,哑铃 +12431,仰卧板/健腹板 +12432,中小型健身器材配件区 +12433,足底按摩垫 +19273,筋膜枪 +12434,裁判使用 +12435,训练背心(分组对抗) +12436,训练辅助用具 +12437,足球 +12438,足球服 +12439,足球球门 +12440,足球球网 +12441,足球袜 +12442,足球鞋 +12443,足球鞋钉 +12444,足球战术板 +12445,单肩背包 +12446,单肩包 +12447,防水箱 +12448,手机袋 +12449,双肩包 +12450,相机包 +12451,防雨罩/背包配件 +12452,户外摄影包 +12453,挎包/拎包/休闲包 +12454,旅行包 +12455,旅行箱 +12456,其他服饰配件 +12457,卡包 +12458,钱包 +12459,钥匙包 +12460,证件包 +12461,鞋袋 +12462,杂物袋 +12463,脏衣篓 +12464,手包/臂包 +12465,手套 +12466,双肩背包 +12467,贴章/魔术贴章 +12468,头巾/遮耳 +12469,腿套 +12470,围巾/围脖 +12471,鞋带 +12472,鞋垫 +12473,鞋油 +12474,雪套/套脚 +12475,腰包 +12476,腰带 +12477,雨衣/雨裤/雨披 +12478,运动鼓包/旅行包 +12480,运动帽 +12481,保健环 +12482,智能手环 +12483,运动水壶 +12484,运动袜 +12485,健身裤 +12486,健身套装 +12487,健身衣 +12488,训练防护衣裤 +12489,运动POLO衫 +12490,运动T恤 +12491,运动风衣 +12492,运动夹克/外套 +12493,运动裤 +12495,单马甲 +12496,棉马甲 +12497,羽绒马甲 +12498,运动毛衣/线衫 +12499,运动棉衣 +12500,运动背心 +12501,运动内裤 +12502,运动内衣套装 +12503,运动文胸 +12504,运动半身裙 +12505,运动连衣裙 +12506,运动套装 +12507,运动卫衣/套头衫 +12508,运动羽绒服 +12509,板鞋/休闲鞋 +12510,帆布鞋 +12511,篮球鞋 +12512,跑步鞋 +12513,其他运动鞋 +12514,童鞋/青少年鞋 +12515,运动沙滩鞋/凉鞋 +12516,运动拖鞋 +12517,综合训练鞋/室内健身鞋 +12518,防风/尘保暖面罩 +12519,骑行服 +12520,骑行头盔 +12521,骑行袜 +12522,骑行鞋 +12523,骑行眼镜/风镜 +12524,袖/腿套/束管带 +12525,自行车包 +12526,自行车手套 +12527,自行车头巾 +12528,车铃/喇叭 +12529,打气筒 +12530,单车护链贴 +12531,灯架/灯夹 +12532,儿童座椅 +12533,防水地图袋 +12534,货架/尾架 +12535,捆扎带/车把带 +12536,水壶架 +12537,自行车撑伞架 +12538,自行车灯 +12539,自行车码表及配件 +12540,自行车手机架 +12541,自行车水壶 +12542,自行车锁 +12543,自行车贴纸/反光贴 +12544,变速器/保护器 +12545,车篮/车筐 +12546,车圈/刀圈 +12547,车条/幅条 +12548,更多零件/配件 +12549,脚撑/停车架/骑行台 +12550,脚踏/轴承/滚珠 +12551,前叉/避震装置 +12552,曲柄 +12553,泥除/挡泥板 +12554,牙盘 +12555,牙盘曲柄中轴套装 +12556,中轴 +12557,自行车把立 +12558,自行车把套 +12559,自行车刹车装置 +12560,自行车车把 +12561,自行车车架 +12562,自行车车头碗 +12563,自行车飞轮 +12564,自行车花鼓 +12565,自行车链条/链条扣 +12566,自行车轮组 +12567,自行车内胎 +12568,自行车外胎 +12569,坐垫/鞍座 +12570,座管/座杆 +12571,扳手 +12572,补胎胶水 +12573,补胎片 +12574,挫胎片 +12575,多功能刀 +12576,多功能钳 +12577,更多修车工具 +12578,截链器 +12579,螺丝刀 +12580,气门芯 +12581,撬胎棒 +12582,润滑油 +12583,洗链器 +12584,线剪钳 +12585,修车架 +12586,BMX小轮车 +12587,儿童自行车 +12588,更多自行车 +12589,公路自行车 +12590,旅行自行车 +12591,母子车/亲子车 +12592,青少年学生车 +12593,轻便车/通勤自行车 +12594,三轮车 +12595,山地自行车 +12596,双人/三人自行车 +12597,死飞 +12598,折叠自行车 +12599,智能自行车 +20832,自行车服务 +13780,避孕 +13781,补益安神 +13782,肠胃用药 +13783,儿科用药 +13784,风湿骨外伤 +13785,妇科用药 +13786,肝胆用药 +13787,感冒咳嗽 +13788,解热镇痛 +13789,泌尿生殖 +13790,男科用药 +13791,皮肤科用药 +13792,维矿物质 +13793,五官用药 +13794,心脑血管 +13795,眩晕晕车用药 +13836,国际非处方药 +13837,国际医疗器械 +19578,柏子仁 +19579,磁石 +19580,茯神 +19581,合欢花 +19582,合欢皮 +19583,琥珀 +19584,龙齿 +19585,首乌藤 +19586,酸枣仁 +19587,天仙子 +19588,远志 +19589,珍珠 +19590,朱砂 +19591,紫石英 +19593,阿胶 +19594,巴戟天 +19595,白扁豆 +19596,白芍 +19597,白首乌 +19598,白术 +19599,百合 +19600,北沙参 +19601,鳖甲 +19602,补骨脂 +19603,楮实子 +19604,刺五加 +19605,葱子 +19606,大枣 +19607,当归 +19608,党参 +19609,冬虫夏草 +19610,杜仲 +19611,杜仲叶 +19612,凤凰衣 +19613,甘草 +19614,狗肾 +19615,枸杞子 +19616,龟甲 +19617,蛤蚧 +19618,海参 +19619,海龙 +19620,海马 +19621,核桃仁 +19622,黑芝麻 +19623,红参 +19624,红景天 +19625,胡芦巴 +19626,黄精 +19627,黄芪 +19628,绞股蓝 +19629,韭菜子 +19630,灵芝 +19631,龙眼肉 +19632,鹿茸 +19633,鹿药 +19634,麦冬 +19635,南沙参 +19636,女贞子 +19637,盘龙参 +19638,人参 +19639,人参叶 +19640,肉苁蓉 +19641,肉桂 +19642,桑椹 +19643,沙苑子 +19644,山麦冬 +19645,山药 +19646,蛇床子 +19647,石斛 +19648,熟地黄 +19649,锁阳 +19650,太白参 +19651,太子参 +19652,天冬 +19653,铁皮石斛 +19654,菟丝子 +19655,巫山淫羊藿 +19656,五指毛 +19657,西洋参 +19658,仙茅 +19659,续断 +19660,燕窝 +19661,阳起石 +19662,银耳 +19663,淫羊藿 +19664,玉竹 +19665,炙甘草 +19666,炙黄芪 +19667,钟乳石 +19668,珠子参 +19669,竹节参 +19670,紫河车 +19671,紫梢花 +19673,白附子 +19674,白前 +19675,百部 +19676,川贝母 +19677,胆南星 +19678,瓜蒌 +19679,海浮石 +19680,海蛤壳 +19681,海藻 +19682,芥子 +19683,桔梗 +19684,苦杏仁 +19685,款冬花 +19686,昆布 +19687,龙脷叶 +19688,马兜铃 +19689,猫爪草 +19690,木蝴蝶 +19691,胖大海 +19692,枇杷叶 +19693,平贝母 +19694,水半夏 +19695,天南星 +19696,天竺黄 +19697,葶苈子 +19698,瓦楞子 +19699,旋覆花 +19700,皂角 +19701,浙贝母 +19702,竹茹 +19703,紫苑 +19705,北刘寄奴 +19706,茺蔚子 +19707,川牛膝 +19708,川芎 +19709,大血藤 +19710,丹参 +19711,莪术 +19712,骨碎补 +19713,广东王不留行 +19714,红花 +19715,鸡血藤 +19716,急性子 +19717,姜黄 +19718,卷柏 +19719,两面针 +19720,凌霄花 +19721,刘寄奴 +19722,马鞭草 +19723,没药 +19724,牛膝 +19725,乳香 +19726,三棱 +19727,水蛭 +19728,丝瓜络 +19729,苏木 +19730,桃仁 +19731,铁包金 +19732,土鳖虫 +19733,土牛膝 +19734,王不留行 +19735,五灵脂 +19736,西红花 +19737,夏天无 +19738,延胡索 +19739,益母草 +19740,郁金 +19741,预知子 +19742,月季花 +19743,泽兰 +19744,自然铜 +19746,白芷 +19747,薄荷 +19748,苍耳子 +19749,柴胡 +19750,蝉蜕 +19751,葱白 +19752,淡豆豉 +19753,灯盏细辛 +19754,鹅不食草 +19755,防风 +19756,粉葛 +19757,浮萍 +19758,藁本 +19759,葛根 +19760,谷精草 +19761,广升麻 +19762,桂枝 +19763,黄荆子 +19764,荆芥 +19765,菊花 +19766,麻黄 +19767,蔓荆子 +19768,木贼 +19769,牛蒡子 +19770,牛至 +19771,前胡 +19772,羌活 +19773,桑叶 +19774,升麻 +19775,生姜 +19776,细辛 +19777,香薷 +19778,辛夷 +19779,樱桃核 +19780,紫苏叶 +19782,扁蓄 +19783,车前草 +19784,车前子 +19785,赤小豆 +19786,川木通 +19787,垂盆草 +19788,大腹皮 +19789,倒扣草 +19790,灯心草 +19791,地肤子 +19792,冬瓜皮 +19793,冬葵子 +19794,粉萆薢 +19795,茯苓 +19796,广金钱草 +19797,海金沙 +19798,虎杖 +19799,滑石 +19800,鸡骨草 +19801,金钱草 +19802,连钱草 +19803,绵萆薢 +19804,木通 +19805,苘麻子 +19806,瞿麦 +19807,桑白皮 +19808,肾茶 +19809,石韦 +19810,通草 +19811,小通草 +19812,薏苡仁 +19813,茵陈 +19814,玉米须 +19815,泽泻 +19816,枳椇子 +19817,猪苓 +19819,蝉花 +19820,玳瑁 +19821,地龙 +19822,钩藤 +19823,蒺藜 +19824,僵蚕 +19825,羚羊角 +19826,龙骨 +19827,罗布麻叶 +19828,明党参 +19829,牡蛎 +19830,牛黄 +19831,全蝎 +19832,蛇蜕 +19833,石决明 +19834,水牛角 +19835,天麻 +19836,蜈蚣 +19837,赭石 +19838,珍珠母 +19840,其他中药材 +19842,白背叶根 +19843,白矾 +19844,白花蛇舌草 +19845,白蔹 +19846,白头翁 +19847,白薇 +19848,白鲜皮 +19849,败酱草 +19850,板蓝根 +19851,半边莲 +19852,半枝莲 +19853,北豆根 +19854,布渣叶 +19855,赤芍 +19856,川射干 +19857,穿心莲 +19858,椿皮 +19859,大青叶 +19860,淡竹叶 +19861,地耳草 +19862,地骨皮 +19863,地黄 +19864,独脚金 +19865,浮小麦 +19866,岗梅根 +19867,功劳木 +19868,关黄柏 +19869,贯众 +19870,荷叶 +19871,胡黄连 +19872,葫芦茶 +19873,黄柏 +19874,黄连 +19875,黄芩 +19876,黄药子 +19877,火炭母 +19878,鸡蛋花 +19879,积雪草 +19880,金银花 +19881,救必应 +19882,决明子 +19883,苦参 +19884,苦丁茶 +19885,连翘 +19886,龙胆 +19887,龙葵 +19888,漏芦 +19889,芦根 +19890,罗汉果 +19891,马勃 +19892,马齿苋 +19893,密蒙花 +19894,牡丹皮 +19895,木鳖子 +19896,木棉花 +19897,南板蓝根 +19898,扭肚藤 +19899,蒲公英 +19900,千里光 +19901,秦皮 +19902,青黛 +19903,青果 +19904,青蒿 +19905,青天葵 +19906,青葙子 +19907,忍冬藤 +19908,三丫苦 +19909,山慈菇 +19910,山豆根 +19911,山银花 +19912,山芝麻 +19913,射干 +19914,石膏 +19915,石上柏 +19916,水飞蓟 +19917,天花粉 +19918,天葵子 +19919,土茯苓 +19920,委陵菜 +19921,无花果 +19922,西青果 +19923,溪黄草 +19924,夏枯草 +19925,玄参 +19926,野菊花 +19927,叶下珠 +19928,银柴胡 +19929,鱼腥草 +19930,粤丝瓜络 +19931,知母 +19932,栀子 +19933,肿节风 +19934,重楼 +19935,紫草 +19936,紫草茸 +19937,紫花地丁 +19939,白英 +19940,半枫荷 +19941,蚕沙 +19942,穿破石 +19943,穿山龙 +19944,豆豉姜 +19945,独活 +19946,防己 +19947,狗脊 +19948,广东海风藤 +19949,广东海桐皮 +19950,广东络石藤 +19951,海风藤 +19952,海桐皮 +19953,金钱白花蛇 +19954,宽筋藤 +19955,老鹳草 +19956,雷公藤 +19957,鹿衔草 +19958,路路通 +19959,络石藤 +19960,木防己 +19961,木瓜 +19962,牛大力 +19963,千斤拔 +19964,千年健 +19965,秦艽 +19966,青风藤 +19967,桑寄生 +19968,伸筋草 +19969,石南藤 +19970,透骨草 +19971,威灵仙 +19972,乌梢蛇 +19973,五加皮 +19974,豨莶草 +19975,香加皮 +19976,徐长卿 +19977,寻骨风 +19978,走马胎 +19980,白果 +19981,赤石脂 +19982,覆盆子 +19983,海螵蛸 +19984,诃子 +19985,金樱子 +19986,莲子 +19987,莲子心 +19988,麻黄根 +19989,南五味子 +19990,糯稻根 +19991,芡实 +19992,肉豆蔻 +19993,桑螵蛸 +19994,山茱萸 +19995,石榴皮 +19996,乌梅 +19997,五倍子 +19998,五味子 +19999,益智 +20000,银杏叶 +20001,禹余粮 +20003,巴豆 +20004,大黄 +20005,番泻叶 +20006,甘遂 +20007,何首乌 +20008,火麻仁 +20009,芦荟 +20010,芒硝 +20011,牵牛子 +20012,商陆 +20013,玄明粉 +20014,亚麻子 +20015,郁李仁 +20016,紫苏子 +20018,艾叶 +20019,白及 +20020,白茅根 +20021,侧柏叶 +20022,大蓟 +20023,地榆 +20024,儿茶 +20025,花蕊石 +20026,槐花 +20027,槐角 +20028,鸡冠花 +20029,莲房 +20030,马蔺子 +20031,墨旱莲 +20032,藕节 +20033,蒲黄 +20034,茜草 +20035,三七 +20036,仙鹤草 +20037,小蓟 +20038,萱草根 +20039,血竭 +20040,血余炭 +14557,护理液 +14555,彩色隐形眼镜 +14556,隐形眼镜 +14558,隐形眼镜伴侣 +14559,隐形眼镜清洁器 +14707,菜粉/水果粉 +14708,果/菜/肉/混合泥 +14709,果汁/饮品 +14710,米粉/米糊/汤粥 +14711,面条 +14712,磨牙棒/饼干 +14713,肉松/鱼松 +20766,其他宝宝辅食 +14722,其他 +14723,低体重儿/早产儿奶粉 +14724,豆奶粉 +14725,防腹泻/抗过敏奶粉 +14726,婴幼儿牛奶粉 +14727,食用油 +14728,调料 +14729,婴幼儿羊奶粉 +14730,婴幼儿液态奶 +14731,DHA/核桃油 +14732,蛋白粉 +14733,钙铁锌 +14734,牛初乳 +14735,葡萄糖 +14736,清凉/调理/奶伴 +14737,维生素 +14738,益生菌 +14739,鱼肝油 +14714,果肉条/果干 +14715,海苔 +14716,奶酪/奶片 +14718,泡芙 +14719,溶溶豆 +14720,鱼肉肠 +14721,糖果 +20767,其他宝宝零食 +20136,儿童奶粉 +20769,果肉条/果干 +20770,海苔 +20771,奶酪/奶片 +20772,其他儿童零食 +20773,肉肠 +20774,糖果 +14771,成套桌椅 +14772,儿童房/婴儿房 +14773,儿童书桌椅/写字台 +14774,儿童椅 +14775,儿童桌 +14776,沙发 +14777,安全别针 +14778,安全门卡 +14779,保护盖/保护罩 +14780,床护栏 +14781,蹬被/尿湿/防丢提醒器 +14782,多功能安全锁 +14783,防触电保护 +14784,防撞角 +14785,防撞条 +14786,门护栏 +14787,婴儿监护器 +14788,保温奶瓶 +14789,保温桶 +14790,保温箱 +14791,防胀气装置 +14792,奶瓶 +14793,奶瓶把/手柄 +14794,奶瓶储存盒/奶瓶盒 +14795,奶瓶盖 +14796,奶瓶干燥架 +14797,奶瓶夹 +14798,奶瓶刷/奶嘴刷 +14799,奶瓶温度计 +14800,智能奶瓶 +14801,湿巾 +20375,棉柔巾 +14770,作废 +14802,餐椅 +14803,摇篮 +14804,摇椅 +14805,婴儿床/儿童床 +14806,幼儿园专用床 +14807,按摩油 +14808,宝宝防晒乳/露 +14809,宝宝护唇/润唇 +14810,宝宝洗手液 +14811,鼻眼清洗液 +14812,护发素 +14813,护臀膏 +14814,脸盆 +14815,沐浴棉/浴擦 +14816,沐浴乳/沐浴露 +14817,润肤乳/霜 +14818,爽身粉/痱子粉 +14819,水温计 +14820,洗发杯/水勺 +14821,洗发帽 +14822,洗发水 +14823,洗浴护肤礼盒 +14824,婴儿皂/儿童皂/香皂 +14825,浴巾 +14826,浴袍 +14827,浴盆 +14828,浴网/浴兜 +20088,儿童洗面奶 +14829,抱婴腰带/腰凳 +14830,背带/背袋 +14831,出行用品 +14832,汽车安全座椅/安全背带 +14834,学步带 +14835,婴儿车防雨罩 +14836,婴儿车遮阳伞 +14837,雨衣 +14838,育儿背巾 +14839,安全梳子/刷子 +14840,宝宝耳勺/发光耳勺 +14841,宝宝剪刀/指甲钳 +14842,宝宝理发器 +14843,宝宝量温 +14844,宝宝棉棒/棉签 +14845,儿童马桶盖/架 +14846,儿童坐便凳 +14847,粉扑 +14848,理发围布 +14849,尿布桶 +14850,尿布桶配件 +14851,清洁镊子 +14852,身高尺 +14853,湿巾加热器 +14854,温湿度计/室温计 +14855,吸鼻器 +14856,婴儿电吹风 +14857,婴儿电子秤 +14858,婴童防护耳罩 +14859,婴童防护口罩 +14860,奶嘴/安抚奶嘴 +14861,奶嘴储存盒/奶嘴盒 +14862,奶嘴打孔器 +14863,奶嘴链 +14864,其它婴童用品 +14865,宝宝洗衣粉 +14866,宝宝洗衣液 +14867,宝宝洗衣皂 +14868,奶瓶果蔬清洗液 +14869,衣物柔顺/柔软剂 +14870,宝宝贴 +14871,防蚊水 +14872,金水 +14873,驱蚊器 +14874,驱蚊手带 +14875,驱蚊贴 +14876,蚊香片 +14877,蚊香液 +14878,止痒膏 +14879,儿童餐具 +14880,果汁瓶 +14881,口水巾/吸汗巾/饭兜/毛巾 +14882,魔术杯软嘴 +14883,奶粉储存盒/奶粉盒 +14884,食物研磨器 +14885,水杯 +14886,水杯配件 +14887,水壶 +14888,喂药器 +14889,吸管 +14890,吸管刷 +14897,床单/床罩 +14898,床褥 +14899,床围/床靠 +14900,尿布袋/床头挂袋 +14901,睡袋/防踢被 +14902,婴童抱被/抱毯 +14903,婴童被子/被套 +14904,婴童床垫 +14905,婴童床品套件 +14906,婴童凉席系列 +14907,婴童毛毯/盖毯 +14908,婴童蚊帐 +14909,婴童枕头/枕芯 +14912,BB煲/电粥锅 +14913,宝宝料理机/食物搅拌器 +14914,宝宝蒸蛋机/煮蛋器 +14915,电动奶粉搅拌器 +14916,消毒器/消毒锅/消毒包 +14917,暖奶器/加热器 +14918,调奶器 +14919,电动牙刷 +14920,儿童护牙素 +14921,固齿器 +14922,乳牙刷/训练牙刷/护齿牙刷 +14923,食物咬咬袋 +14924,牙膏 +14925,牙膏牙刷套装 +14926,牙胶 +14927,三轮推车 +14928,双胞胎推车 +14929,四轮推车 +14930,推车配件 +14931,学步车 +14949,凉鞋 +20513,皮靴/棉靴 +20514,雪地靴 +14951,板鞋 +14952,传统布鞋/手工编织鞋 +14953,帆布鞋 +14954,棉鞋 +14955,皮鞋 +14956,亲子鞋 +14957,拖鞋 +14958,舞蹈鞋 +14959,其他鞋配件 +14960,鞋带 +14961,鞋垫 +14962,学步鞋 +14963,婴儿步前鞋 +14964,雨靴 +14965,运动鞋 +15000,T恤 +15001,背心吊带 +15002,衬衫 +15003,肚兜 +15004,肚围/护脐带 +15005,儿童冲锋裤 +15006,儿童滑雪裤 +15007,儿童软壳裤 +15008,儿童速干裤 +15009,儿童运动裤 +15010,儿童运动套装 +15011,儿童冲锋衣 +15012,儿童滑雪服 +15013,儿童皮肤衣/防晒衣 +15014,儿童软壳衣 +15015,儿童速干T恤 +15016,儿童速干衬衫 +15017,儿童运动衣 +15018,儿童抓绒衣 +15019,家居服连体衣 +15020,家居服上装 +15021,家居服套装 +15022,家居裤/睡裤 +15023,家居袍/睡袍 +15024,家居裙/睡裙 +15025,浴袍 +15026,儿童礼服 +15027,保暖裤 +15028,保暖上衣 +15029,内裤 +15030,内衣套装 +15031,包包 +15032,背带 +15033,发饰 +15034,假发 +15035,假领 +15036,领带 +15037,领结 +15038,手链 +15039,太阳镜 +15040,项链 +15041,腰带 +15042,旗袍 +15043,唐装 +20727,汉服 +15044,儿童袜子(0-16岁) +15045,儿童演出服 +15046,泳帽 +15047,泳衣裤 +15048,反穿衣/罩衣 +15049,裤子 +15050,连身衣/爬服/哈衣 +15051,马甲 +15052,毛衣/针织衫 +15053,多件套/帽子/围巾/手套等组合 +15054,耳套/耳暖 +15055,防抓手套/护脚/护膝 +15056,口罩 +15057,帽子 +15058,手套 +15059,围巾 +15060,袖套 +15061,棉袄/棉服 +15062,抹胸 +15063,披风/斗篷 +15064,其他 +15065,亲子装/亲子时装 +15066,半身裙 +15067,连衣裙 +15068,套装 +15069,风衣 +15070,夹克/皮衣 +15071,呢大衣 +15072,皮草/仿皮草 +15073,普通外套 +15074,西服/小西装 +15075,卫衣/绒衫 +15076,校服/校服定制 +15077,婴儿礼盒 +15078,羽绒服 +15079,羽绒裤 +15080,羽绒连体衣 +15081,羽绒马甲 +15082,羽绒内胆 +20851,POLO衫 +15117,宝宝饰品套装 +15118,挂历 +15119,纪念册 +15120,脚镯 +15121,名字贴 +15122,手脚印 +15123,手镯 +15124,胎毛笔 +15125,胎毛挂坠/挂件 +15126,胎毛绣 +15127,胎毛章 +15128,长命锁 +15129,彩泥/橡皮泥 +15130,软陶泥 +15131,粘土/超轻粘土 +15132,插珠/蘑菇插钉 +15133,打地鼠/敲击果虫 +15134,钓鱼类玩具 +15135,叠叠圈/叠套玩具 +15136,几何形状套柱 +15137,建构/拼插积木 +15138,螺母拆装/组合玩具 +15139,螺丝形状配对玩具 +15140,拼图/拼板 +15141,其他形状认知/配对玩具 +15142,敲打台/其他敲打玩具 +15143,数字屋/形状盒/多孔认知玩具 +15144,形状配对扭扭蛋 +15145,婴儿手抓球 +15146,婴幼儿串珠/绕珠 +15147,电动/遥控车 +15148,电动/遥控船类 +15149,电动/遥控动物/人物 +15150,电动/遥控飞机 +15151,电动/遥控轨道 +15152,电动/遥控机器人 +15153,发条玩具 +15154,惯性/回力/滑行玩具 +15155,其它 +15156,四驱车零配件/工具 +15157,遥控车升级件/零配件 +15158,遥控飞机零配件 +15159,创意/整蛊玩具 +15160,电子玩具 +15161,发光玩具 +15162,塑料充气玩具(其他材质勿放) +15165,儿童行李箱 +15166,拉杆包 +15167,拉杆箱 +15168,零钱包 +15169,书包 +15170,斜挎包/拎包/腰包 +15171,绘本/图画书 +15172,奥特曼玩具专区 +15173,儿童机器人/变形玩具 +15174,其他人偶玩具 +15175,多功能棋 +15176,儿童桌面游戏类 +15177,飞行棋 +15178,强手棋/大富翁棋 +15179,跳棋 +15180,游戏叠叠乐 +15181,电动玩具枪 +15182,其他玩具枪 +15183,软弹枪 +15184,水弹枪 +15185,水枪 +15186,app互动玩具 +15187,编程玩具 +15188,意念控制玩具 +15189,仿真/动物玩偶 +15190,仿真果蔬/食物 +15191,仿真照相机 +15192,过家家玩具 +15193,其它仿真玩具 +15194,切切看 +15195,吹泡泡 +15196,儿童帐篷/游戏屋 +15197,飞镖/射击/射箭类 +15198,飞盘/飞碟/竹蜻蜓类 +15199,风车 +15200,海洋球/波波球 +15201,呼啦圈 +15202,其他户外休闲玩具 +15203,球类玩具/球类运动 +15204,拳击袋/拳击手套 +15205,沙包 +15206,跳绳 +15207,跳跳玩具/跳跃类运动 +15208,投掷套圈 +15209,陀螺 +15210,摇马 +15211,画板 +15212,画笔/画刷 +15213,画布 +15214,绘画桌 +15215,调色盘 +15216,颜料 +15217,颜料绘画组合 +15218,多米诺骨牌 +15219,解锁/解环玩具 +15220,迷宫类 +15221,魔方 +15222,智力解题/通关玩具 +15223,车模 +15224,船舶/舰艇 +15225,飞机模型 +15226,火车模型 +15227,家居/生活场景 +15228,建筑/DIY小屋/拼装模型 +15229,军舰/航母 +15230,木偶/关节木偶 +15231,其他模型玩具 +15232,坦克/军事战车 +15233,毛绒布艺类玩具 +15234,其它玩具 +15235,DIY玉米粒 +15236,白模填色/模具彩绘 +15237,其他手工制作 +15238,沙画/胶画/画 +15239,手工串珠/穿珠/首饰编织 +15240,手工创意粘贴类 +15241,手工食品制作 +15242,手工折纸/剪纸书 +15243,手工制作工具/彩纸/配件 +15244,织布机/手工编织/刺绣类 +15245,儿童电动车 +15246,护具 +15247,滑板/活力板 +15248,滑板车 +15249,溜冰鞋/旱冰鞋 +15250,扭扭车 +15251,三轮车 +15252,踏行车/滑行学步车 +15253,童车配件 +15254,头盔 +15255,自行车 +15256,娃娃/配件 +15257,笔袋 +15258,笔类 +15259,笔筒 +15260,儿童书法用品 +15261,卡通造型橡皮 +15262,科学实验 +15263,描红本/涂色本 +15264,数学学习板/计算架 +15265,文件袋 +15266,文具盒 +15267,文具礼盒/绘画套装 +15268,削笔器/削笔刀 +15269,坐姿矫正器 +15270,八音盒/音乐盒 +15271,吹奏玩具/乐器 +15272,打击乐器 +15273,电动手拍鼓 +15274,电子琴玩具/儿童电子琴 +15275,钢琴/玩具钢琴 +15276,架子鼓 +15277,乐器套装 +15278,铃类乐器 +15279,其他音乐玩具/儿童乐器 +15280,敲琴 +15281,沙锤/沙蛋/沙球 +15282,玩具吉他 +15283,玩具小提琴/手风琴 +15284,音乐电话 +15285,音乐话筒 +15286,悠悠(溜溜)球 +15287,车模 +15288,船模 +15289,固定翼 +15290,坦克 +15291,直升机 +15292,蹦床 +15293,大型组合式游乐设备 +15294,发牌机 +15295,感统训练器材/教学设备 +15296,滑梯 +15297,麻将机 +15298,乒乓球台 +15299,其他游乐设施 +15300,跷跷板 +15301,秋千 +15302,软体组合器材 +15303,隧道/钻洞 +15304,台球桌 +15305,洗牌机 +15306,摇摆机/摇摇乐 +15307,游戏围栏 +15308,游艺机 +15309,桌上冰球 +15310,桌上足球 +15311,鼻夹 +15312,充气筒 +15313,耳塞 +15314,护耳贴 +15315,护脐贴 +15316,救生衣 +15317,溶质 +15318,水上游艺设施 +15319,洗澡书 +15320,戏水/玩沙玩具 +15321,婴儿/儿童游泳圈 +15322,泳镜 +15323,游泳池 +15324,浴帽/洗发帽 +15325,爬行垫 +15326,手推学步玩具 +15327,拖拉学步玩具 +15328,婴儿健身器 +15329,游戏毯/音乐毯 +15330,幼儿学爬玩具 +15331,宝宝布书 +15332,拨浪鼓 +15333,不倒翁 +15334,布质/软胶积木 +15335,床铃/床挂 +15336,手偶/安抚玩偶 +15337,摇铃 +15338,儿童营养健康 +15339,家庭教育 +15340,胎教 +15341,育儿百科 +15342,育儿其他 +15343,孕产/育儿 +15344,宝宝海报/胎教海报 +15345,磁性贴 +15346,多功能玩具台/游戏桌 +15347,儿童MP3/故事机 +15348,儿童玩具表 +15349,其它早教玩具类 +15350,贴纸 +15351,玩具挂图/认知卡 +15352,早教机/点读学习 +15353,早教教具/早教套装 +15354,早教闪卡/潜能开发卡 +15355,智能公仔/娃娃 +20638,STEAM玩具/教具 +15373,(文胸-内裤)套装 +15374,背扣 +15375,哺乳文胸 +15376,内裤 +15377,生理裤/产检裤 +15378,胸垫插片 +15379,哺乳枕 +15380,防溢乳垫 +15381,母乳储存保鲜 +15382,乳房冷热敷 +15383,乳头保护罩 +15384,乳头矫正 +15385,产妇帽 +15386,产妇头巾 +15387,孕妇袜/连裤袜/打底袜 +15388,孕妇鞋 +15389,产妇护垫 +15390,产妇卫生巾 +15391,待产包 +15392,护腰枕 +15393,看护垫/一次性床垫 +15394,其他 +15395,清洁棉 +15396,湿巾 +15397,托腹带/保胎带 +15398,一次性马桶垫纸 +15399,一次性内裤 +15400,孕妇马桶/坐便器 +15401,防辐射布料 +15402,防辐射吊带 +15403,防辐射肚兜/护胎宝 +15404,防辐射卡 +15405,防辐射口罩 +15406,防辐射马甲 +15407,防辐射面罩 +15408,防辐射内裤 +15409,防辐射裙 +15410,防辐射手机袋/卡带 +15411,防辐射套装 +15412,防辐射围裙 +15413,其他防辐射 +15414,哺乳吊带 +15415,哺乳衣/月子服 +15416,家居服上装 +15417,家居服套装 +15418,家居裤 +15419,家居袍 +15420,家居裙 +15421,其他 +15422,秋裤 +15423,秋衣 +15446,秋衣裤套装 +15425,妈咪包/袋 +15426,盆骨矫正带 +15427,束腹带 +15428,塑身分体套装 +15429,塑身裤 +15430,塑身连体衣 +15431,塑身上衣 +15432,吸奶器 +15433,吸奶器配件 +15434,其他 +15435,通乳产品 +15436,月乃汤 +15437,月子餐 +15438,月子米酒 +15439,月子食用油 +15440,孕产妇bb霜 +15441,孕产妇彩妆套装 +15442,孕产妇唇膏/口红 +15443,孕产妇眉笔/眉粉/眉膏 +15444,孕产妇腮红/胭脂 +15445,孕产妇卸妆 +15447,唇部护理 +15448,淡疤护理 +15449,防晒/隔离 +15450,护发 +15451,化妆水/爽肤水 +15452,洁面 +15453,美容胶带 +15454,面部精华 +15455,面部套装 +15456,面膜 +15457,其他 +15458,妊娠纹护理 +15459,乳房护理 +15460,乳液/面霜 +15461,身体护理 +15462,洗发 +15463,洗发护发套装 +15464,纤体紧致 +15465,眼部护理 +15466,月子牙刷 +15467,孕产妇漱口水 +15468,孕产妇牙膏 +15469,腿脚舒缓 +15506,孕产妇奶粉 +15507,产后塑身品 +15508,其他 +15509,孕产妇DHA +15510,孕产妇多元营养 +15511,孕产妇防便秘营养品 +15512,孕产妇钙铁锌 +15513,孕产妇牛初乳 +15514,孕产妇维生素 +15515,孕产妇叶酸 +15516,孕产妇益生菌 +15517,孕产妇鱼肝油 +15518,孕妇裤/托腹裤 +15519,T恤 +15520,半身裙 +15521,衬衫/雪纺衫 +15522,吊带/背心 +15523,连衣裙 +15524,马甲 +15525,毛衣 +15526,棉衣/羽绒服/大衣 +15527,其他 +15528,套装 +15529,外套/风衣 +15530,卫衣/绒衫 +15531,影楼服饰 +15532,孕妇婚纱 +15533,孕妇礼服 +15534,针织衫 +19542,孕产妇铃铛 +15545,常见病防治 +15546,家庭医生 +15547,健身 +15548,两性健康 +15549,心理健康 +15550,饮食营养 食疗 +15551,中老年保健 +15552,中医养生 +15554,报纸订阅 +15555,期刊订阅 +15573,宠物报纸 +15574,服饰/美容报纸 +15575,怀孕/育儿报纸 +15576,计算机报纸 +15577,家居设计报纸 +15578,家庭/情感/两性报纸 +15579,旅游报纸 +15580,烹饪/饮食报纸 +15581,汽车报纸 +15582,人文地理报纸 +15583,商业/财经报纸 +15584,时尚报纸 +15585,体育运动报纸 +15586,文摘/文学报纸 +15587,新闻/时事报纸 +15588,医疗保健报纸 +15589,艺术/摄影报纸 +15590,影视/娱乐/音乐报纸 +15591,综合及其它报纸 +15593,财经人物 +15594,法律人物 +15595,教育家 +15596,军事人物 +15597,科学家 +15598,历史人物 +15599,领袖/政治人物 +15600,普通百姓 +15601,人物/传记其它 +15602,体育界 +15603,文学家 +15604,医学家 +15605,艺术家/建筑设计 +15606,音乐家 +15607,娱乐圈/影星/歌星 +15608,哲学家 +15609,宗教人物 +15610,综合 +15612,国家/地区概况 +15613,交通地图 +15614,旅游地图册/集 +15615,世界行政区划图 +15616,世界行政区划图册/集 +15617,中国行政区划图 +15619,儿童文学 +15620,绘本/图画书 +15621,科普百科 +15622,其它儿童读物 +15623,启蒙/认知 +15624,少儿艺术 +15625,益智游戏 +15626,幼儿/少儿英语 +15628,财政法/经济法 +15629,法律汇编/法律法规 +15630,法律史 +15631,法律知识读物 +15632,法学理论 +15633,犯罪学/刑事侦查学 +15634,港澳台地区/特别行政区基本法 +15635,高等法律教材 +15636,国际法 +15637,国家法/宪法 +15638,行政法 +15639,劳动与社会保障法 +15640,民法 +15641,商法 +15642,世界各国法律 +15643,司法案例/实务解析 +15644,司法鉴定/法医学 +15645,司法制度 +15646,诉讼法 +15647,土地法/农业经济管理法令 +15648,刑法 +15649,自然资源与环境保护法 +15651,百科全书 +15652,标准 +15653,汉语/辞典 +15654,年鉴/年刊 +15655,其它工具书 +15656,色卡 +15657,图书目录文摘索引 +15658,专业辞典 +15660,电工技术/家电维修 +15661,电信通信 +15662,电子/通信 +15663,电子电路 +15664,工业技术其它 +15665,航空航天 +15666,化学工业 +15667,环境科学 +15668,机械工程 +15669,家用电器 +15670,建筑/水利 +15671,交通/运输 +15672,矿业技术 +15673,能源与动力工程 +15674,农业 +15675,汽车 +15676,轻工业/手工业 +15677,石油 天然气工业 +15678,冶金工业 +15679,原子能技术 +15680,自动化技术 +15687,财务管理 +15688,创业企业和企业家 +15689,电子商务 +15690,供应链管理 +15691,管理其它 +15692,管理学理论/MBA +15693,广告营销 +15694,金融投资 +15695,领导学 +15696,企业管理 +15697,企业经营与管理 +15698,人力资源 +15699,商务谈判 +15700,商务写作 +15701,商业史传 +15702,生产与运作管理 +15703,项目管理 +15704,战略管理 +15706,安全与加密 +15707,办公自动化软件 +15708,操作系统 +15709,程序设计 +15710,计算机安全与密码学 +15711,计算机辅助设计和工程 +15712,计算机控制仿真与人工智能 +15713,计算机理论和方法 +15714,计算机软件工程 +15715,计算机手册 +15716,计算机系统结构 +15717,计算机硬件组装、维护 +15718,其它计算机/网络书籍 +15719,软件工程 +15720,数据库 +15721,图形图像/多媒体 +15722,网络通信 +15723,网站设计/网页设计语言 +15724,信息系统 +15726,儿童读物原版书 +15727,法律类原版书 +15728,工具书原版书 +15729,管理类原版书 +15730,健康类原版书 +15731,经济类原版书 +15732,考试类原版书 +15733,科普读物原版书 +15734,科学技术类原版书 +15735,旅游类原版书 +15736,人文社科类原版书 +15737,社会科学类原版书 +15738,生活类原版书 +15739,文化类原版书 +15740,文学类原版书 +15741,小说类原版书 +15742,艺术类原版书 +15743,娱乐时尚类原版书 +15744,原版期刊杂志 +15745,原版其它 +15746,自然科学类原版书 +15754,保险业 +15755,财政/货币/税收 +15756,各部门经济 +15757,国际贸易/世界各国贸易 +15758,国民经济管理 +15759,国内贸易经济 +15760,金融 +15761,经济计划/经济计算及方法 +15762,经济理论 +15763,商品学 +15764,世界及各国经济概况 +15765,统计 审计 +15766,中国经济/中国经济史 +15768,高等成人教育 +15769,公务员考试 +15770,会计/证券/经济/金融职称考试 +15771,计算机等级考试/认证 +15772,建筑工程类职称考试 +15773,教材 +15774,考研 +15775,论文集 +15776,其它类职称考试 +15777,社会实用教材 +15778,司法考试 +15779,外语考试 +15780,小学教辅 +15781,医药卫生类职称考试 +15782,艺术体育考试 +15783,中考/高考 +15784,中学教辅 +15859,科学发明研究/创造学 +15860,科学学 +15861,科学研究方法论 +15862,科学研究组织/管理/工作方法 +15863,情报学/情报工作 +15864,世界各国科学研究事业 +15865,未来学 +15866,知识学 +15867,专利研究/技术标准研究 +15869,地方史志/民族史志 +15870,历史知识读物 +15871,史学理论 +15872,世界史 +15873,文物/考古 +15874,中国史 +15891,导游专业用书 +15892,国内旅游指南/攻略 +15893,国外旅游指南/攻略 +15894,旅游理论与实务 +15895,旅游其它 +15896,旅游摄影/画册 +15897,旅游随笔 +15898,旅游小百科 +15899,特色旅游 +15901,漫画书籍 +16154,期刊杂志 +15904,其他 +15906,传媒出版 +15907,教育/教育普及 +15908,劳动科学 +15909,民族学 +15910,人口学 +15911,社会科学其它 +15912,社会科学总论 +15913,社会学 +15914,统计学 +15915,外国社会 +15916,文化人类学 +15917,系统论/系统科学/系统工程 +15918,心理学 +15919,语言文字 +15920,中国社会 +15922,爱车一族书籍 +15923,博彩类书籍 +15924,菜谱 +15925,茶类书籍 +15926,炒股书籍 +15927,都市手工艺书籍 +15928,购房/置业书籍 +15929,婚恋 +15930,家居风水类书籍 +15931,家居装修书籍 +15932,理财/基金书籍 +15933,生活百科书籍 +15934,养花书籍 +15935,饮食文化书籍 +15936,幽默笑话书籍 +15938,体育运动(新) +15940,其他外语 +15941,实用英语 +15942,中国少数民族语言/汉藏语系 +15970,都市情感 +15971,古典言情 +15972,豪门纯爱 +15973,幻想穿越 +15974,科幻悬疑 +15975,历史军事 +15976,青春校园 +15977,仙侠奇侠 +15978,玄幻奇幻 +15979,游戏竞技 +15981,地域文化 群众文化 +15982,广播/电视事业 +15983,世界文化 +15984,图书馆学 档案学 +15985,文化理论 +15986,文化史 +15987,信息与传播理论 +15988,中国民俗 +15989,中国文化/民俗 +15991,回忆录 +15992,纪实/报告文学 +15993,民间文学/民族文学 +15994,外国诗歌 +15995,外国随笔/散文集 +15996,外国文学小说 +15997,文学理论/文学批评与研究 +15998,文学其它 +15999,文学史 +16000,文学作品集 +16001,戏剧 +16002,现代/当代文学 +16003,中国古代随笔 +16004,中国古诗词 +16005,中国现当代诗歌 +16006,中国现当代随笔 +16012,短篇小说集/故事集 +16013,古/近代小说(1919年前) +16014,官场小说 +16015,军事小说 +16016,科幻小说 +16017,历史小说 +16018,其它小说 +16019,青春/都市/言情小说 +16020,世界名著 +16021,外国小说 +16022,现代小说1919-1949年 +16023,乡土小说 +16024,玄幻/武侠小说 +16025,影视同期书 +16026,侦探推理/恐怖惊悚小说 +16027,职场小说 +16029,儿科学 +16030,耳鼻喉科学 +16031,妇产科学 +16032,护理学 +16033,基础医学 +16034,口腔科学 +16035,临床医学 +16036,内科学 +16037,皮肤病学/性病学 +16038,神经病和精神病学 +16039,特种医学 +16040,外科学 +16041,眼科学 +16042,药学 +16043,医学其它 +16044,影像医学 +16045,预防医学、卫生学 +16046,中医 +16047,肿瘤学 +16049,电影/电视艺术 +16050,雕塑 +16051,工艺美术 +16052,绘画 +16053,建筑艺术 +16054,设计 +16055,摄影艺术 +16056,收藏鉴赏 +16057,书法/篆刻/字帖书籍 +16058,舞蹈 +16059,艺术理论 +16060,艺术其它 +16061,音乐 +16063,宠物 +16064,服饰 +16065,减肥塑身 +16066,美容/美体/化妆 +16067,明星写真 +16068,时尚图鉴 +16069,星座/占卜/测试 +16070,游戏 +16071,瑜伽 +16073,儿童营养健康 +16074,家庭教育 +16075,胎教 +16076,育儿百科 +16077,育儿其他 +16078,孕产/育儿 +16080,道教 +16081,佛教 +16082,基督教 +16083,伦理学 +16084,逻辑学 +16085,马克思主义哲学 +16086,美学 +16087,其他宗教 +16088,外国哲学 +16089,伊斯兰教 +16090,哲学知识读物 +16091,哲学总论 +16092,中国哲学 +16093,宗教理论 +16094,宗教知识读物 +16096,党政读物 +16097,军事技术 +16098,军事理论 +16099,领袖著作 +16100,世界各国共产党/共产主义运动 +16101,世界军事 +16102,世界政治 +16103,外交/国际关系 +16104,政治理论 +16105,中国军事 +16106,中国政治 +16108,测绘学 +16109,地理学/自然地理学 +16110,海洋学 +16111,航空与航天 +16112,化学 +16113,晶体学 +16114,科普读物 +16115,其它科学技术 +16116,气象学 +16117,生命科学/生物学 +16118,数学 +16119,天文学 +16120,物理学 +16121,自然科学史/研究方法 +16122,自然科学总论 +16140,成功 +16141,礼仪 +16142,励志 +16143,谋略 +16144,情商与情绪 +16145,求职/面试 +16146,人际沟通 +16147,时间管理 +16148,心灵与修养 +16149,演讲/口才 +16150,职场 +16151,自我实现 +16153,自由组合套装 +20138,IT/互联网 +20139,会计/财经类 +20140,升学/考研 +20141,兴趣/生活 +20142,语言/留学 +20143,职业/考试 +20853,法律/政治/历史 +20854,家居风水 +20855,社会科学 +20856,生活/保健 +20857,文学/小说 +20858,医学 +20859,艺术 +20860,哲学宗教 +16179,耕种机械 +16180,粮油加工设备 +16181,林业机械 +16182,农机服务/代种代收 +16183,农机配件 +16184,农机租赁 +16185,农用拖拉机 +16186,排灌设备 +16187,农用无人机 +16188,农用运输车辆 +16189,施肥机械 +16190,收割机械 +16191,植保机械 +16164,叉 +16165,铲子 +16166,锄头 +16167,高压水枪 +16168,镐 +16169,灌溉工具 +16170,镰刀 +16171,农用包装器具 +16172,农用防护器具 +16173,农用剪 +16174,耙子 +16175,其它农用工具 +16176,锹 +16177,锨 +16159,农用薄膜 +16160,农用防虫网 +16161,农用篷布 +16162,农用遮阳网 +16163,温室大棚支架 +16197,畜牧/养殖技术服务 +16198,配种服务 +16199,畜牧/养殖器械 +16200,肥料/饲料/屠宰加工设备 +16201,渔业用具 +20144,漏粪板 +20145,摇蜜机 +16202,兽药 +20146,动物保健品 +16203,动物营养品 +16204,浓缩料 +16205,全价料 +16206,饲料添加剂 +16207,饲料原料 +16208,预混料 +16211,氮肥 +16212,复合肥 +16213,钾肥 +16214,磷肥 +16215,其他肥料 +16216,生物肥料 +16217,新型肥料 +16218,叶面肥 +16219,有机肥 +16221,农技服务 +16223,除草剂 +16224,杀虫剂 +16225,杀菌剂 +16226,杀螨剂 +16227,杀鼠剂 +16228,生长调节剂 +16230,动物种苗 +16231,花卉林木树苗/种球 +16232,粮油作物种子 +16233,食用菌菌种 +16234,蔬菜种子 +16235,水果种子/种苗 +16236,药材种子/种苗 +20823,助剂/添加剂 +16239,后庭按摩器 +16243,其他男用 +16245,倒模 +18774,充气娃娃 +18775,情趣环 +18776,情趣套 +18777,实体娃娃 +18810,飞机杯 +16254,女用穿戴 +16255,其他女用 +16257,震动棒 +18778,仿真阳具 +18779,缩阴球 +18780,跳蛋 +18781,吸舔器 +16259,性爱沙发 +16260,性爱椅 +18782,SM玩具 +16262,情趣内裤 +16264,情趣睡衣 +16265,情趣丝袜 +16266,情趣套装 +16267,情趣文胸 +20845,情趣配饰 +18348,两性用品/情趣用品 +18769,艾滋病检测试纸 +18770,避孕套 +18771,精子检测试纸 +18772,排卵验孕 +18784,按摩油 +18785,润滑液 +18786,调情香水 +18787,延时用品 +16290,仓鼠 +16291,宠物貂 +16292,宠物狐狸 +16293,飞鼠 +16294,龙猫 +16295,饲料/零食 +16296,豚鼠 +16297,香猪 +16298,小宠用品 +16299,医疗/保健品 +16314,宠物背包 +16315,宠物服装 +16316,宠物指甲套 +16317,发饰 +16318,服装/用品定做 +16319,挂饰/挂牌 +16320,帽子 +16321,其它服饰配件 +16322,生理裤 +16323,头饰 +16324,袜子 +16325,围巾 +16326,鞋子 +16331,标本 +16332,宠物殡葬用品 +16333,宠物车贴 +16334,宠物相册、明信片等周边 +16335,其他 +16337,宠物殡葬 +16338,宠物寄养 +16339,宠物美容 +16340,宠物配种 +16341,宠物清洁 +16342,宠物摄影 +16343,宠物托运 +16344,宠物训练 +16345,宠物医疗 +16346,其他宠物服务 +16348,宠物智能穿戴设备 +16349,宠物智能环境监察设备 +16350,宠物智能监控伴侣设备 +16351,宠物智能喂养设备 +16353,猫/狗药品 +16354,水族药品药剂 +16356,狗狗 +16358,狗零食 +16360,马 +16361,马鞍 +16362,马刺 +16363,马口衔/马嚼子 +16364,马笼套 +16365,马匹保健护理 +16366,马饲料 +16367,马蹄挫 +16369,猫/狗保健品 +16371,吹风机 +16372,吹水机 +16373,电推剪 +16374,耳部清洁 +16375,狗厕所 +16376,脚掌滋润/防滑/护理 +16377,口腔清洁 +16378,猫砂 +16379,猫砂铲 +16380,猫砂盆/猫厕所 +16381,毛巾/浴巾/吸水毛巾 +16382,美容服 +16383,美容剪 +16384,美容台 +16385,尿片/尿垫/护垫 +16386,排梳 +16387,其他美容清洁用品 +16388,拾便器 +16389,洗澡/按摩刷 +16390,香波浴液 +16391,香水/除味剂 +16392,牙具 +16393,眼部清洁 +16394,浴池/浴盆 +16395,粘毛器 +16396,针梳 +16397,止血粉 +16398,指甲剪 +16400,杯子 +16401,背包/箱包 +16402,宠物车载垫 +16403,宠物车载笼 +16404,宠物汽车安全带 +16405,宠物推车 +16406,储粮桶 +16407,床/垫/沙发 +16408,电热板/电热毯 +16409,更多日用品 +16410,航空箱 +16411,家用牵引带 +16412,笼子 +16413,散热板 +16414,勺 +16415,碗 +16416,窝/屋/帐篷 +16417,项圈 +16418,训练器 +16419,饮水器/水壶/水头 +16420,诱导剂 +16421,语言翻译机 +16422,止吠器 +16423,专业比赛牵引带 +16424,追踪器 +16425,自动喂食器 +16426,嘴套 +16430,逗猫棒 +16431,发声玩具 +16432,飞盘 +16433,漏食球 +16434,猫爬架 +16435,猫抓板 +16436,其它玩具 +16437,绳结玩具 +16438,丝瓜络玩具 +16439,套装玩具 +16440,橡胶球/球形玩具 +16442,绷带 +16443,其他 +16444,钳 +16445,试纸 +16446,手术台 +16447,体温计 +16449,猫零食 +16451,猫咪 +16453,猫主粮 +16455,鸟 +16456,鸟笼 +16457,鸟食 +16458,鸟用具 +16459,医疗用品 +16465,蚕宝宝 +16466,蚂蚁 +16467,蚂蚁工坊 +16468,爬虫/鸣虫食物 +16469,爬虫/鸣虫医疗 +16470,爬虫/鸣虫用具 +16471,其他爬虫/鸣虫 +16472,蟋蟀 +16473,蝎类 +16474,蜘蛛 +16476,其它宠物 +16477,其它宠物粮食 +16478,其它宠物用具 +16480,犬主粮 +16482,PH调节剂 +16483,除藻剂 +16484,观赏龟/鳖饲料 +16485,观赏虾蟹等饲料 +16486,观赏鱼饲料 +16487,龟/鳖 +16488,黑水素 +16489,螺 +16490,其他益生菌 +16491,其它水族宠物 +16492,水族服务 +16493,虾 +16494,硝化细菌 +16495,蟹 +16496,鱼 +16497,鱼缸等水族设备 +16498,鱼缸净水剂 +16499,鱼缸水质稳定剂 +16520,草架 +16521,厕所 +16522,垫料 +16523,服饰 +16524,脚垫 +16525,笼子 +16526,其他 +16527,食盆 +16528,兔 +16529,兔绳 +16530,兔兔保健品 +16531,兔兔干草 +16532,兔兔零食 +16533,兔兔磨牙 +16534,兔兔医疗用品 +16535,兔兔主粮 +16536,玩具 +16537,饮水器 +16553,保温袋 +16554,保鲜盖 +16555,保鲜盒 +16557,保温杯 +16558,保温壶 +16559,杯垫 +16560,杯套 +16561,杯子套装/情侣对杯 +16562,玻璃杯 +16563,定制/广告杯 +16564,防漏杯/密封杯 +16565,防漏杯盖 +16566,隔热杯 +16567,冷水壶 +16568,马克杯 +16569,马克杯盖 +16570,奶杯/牛奶杯 +16571,柠檬杯 +16573,水具套装 +16574,随手杯 +16575,太空杯 +16576,吸管 +16577,吸管杯 +16578,摇摇杯 +16579,运动壶/旅行壶 +20184,热水瓶及配件 +16581,便携/折叠餐具 +16582,玻璃餐具套装 +16583,餐垫 +16584,餐具笼/架 +16585,餐具陶瓷套装 +16586,叉/勺/筷套装 +16587,碟 +16588,定制餐具 +16589,饭盒/保温桶/保温提锅 +16590,果盆/果盘/果篮 +16591,韩国厨美餐具 +16592,酒店餐具 +16593,筷子 +16594,扭曲勺 +16595,盘 +16596,配套瓷器 +16597,盆 +16598,瓶/罐 +16599,水果叉/水果签 +16600,碗 +16601,西餐餐叉 +16602,西餐餐具套装 +16603,西餐刀具 +16604,西餐勺 +16605,蟹八件 +16612,茶杯 +16613,茶宠摆件 +16614,茶道零配 +16615,茶道香炉 +16616,茶海 +16617,茶壶 +16618,茶夹 +16619,茶巾 +16620,茶滤 +16621,茶盘 +16622,茶匙 +16623,茶托 +16624,茶叶罐 +16625,冲茶器 +16626,盖碗 +16627,公道杯 +16628,花草茶具 +16629,飘逸杯 +16630,闻香杯 +16631,整套茶具 +16633,冰夹 +16634,冰桶 +16635,挤柠檬器 +16636,家用酒壶 +16637,酒杯 +16638,酒盒 +16639,酒架 +16640,酒具套装 +16641,酒签 +16642,酒塞 +16643,开罐器 +16644,开瓶器 +16645,漏斗 +16646,滤冰器 +16647,滤酒器 +16648,调酒器 +16649,橡木酒具 +16650,醒酒器 +16652,打奶器 +16653,咖啡杯 +16654,咖啡壶 +16655,咖啡机 +16656,咖啡滤纸 +16657,咖啡勺 +16658,咖啡套具 +16659,磨豆机 +16660,奶罐 +16661,配套器具 +16662,糖缸 +16664,保鲜袋 +16665,保鲜膜 +16666,缠绕膜 +16667,封口膜 +16668,可降解餐具/环保餐具 +16669,塑杯 +16670,一次性餐盒 +16671,一次性餐桌用品套装 +16672,一次性筷子 +16673,一次性手套 +16674,一次性桌布 +16675,纸杯 +19493,一次性勺子 +19494,一次性吸管 +16678,DIY模具 +16679,包饺子器 +16680,剥蒜器/压蒜器 +16681,厨房秤/计量秤 +16682,厨房储物架/厨房置物架 +16683,厨房点火器/点火棒 +16684,厨房电器配套用品 +16685,厨房小工具套装 +16686,储物瓶罐/厨房储物器皿 +16687,定时器/计时器/提醒器 +16688,多功能切菜器 +16689,封口机 +16690,封口夹 +16691,核桃夹 +16692,鸡蛋加工 +16693,绞肉机/碎肉宝 +16694,搅拌棒 +16695,开橙器/剥橙器 +16696,沥水篮 +16697,滤水器/净水器 +16698,面条机/压面机 +16699,其它 +16700,敲肉锤 +16701,手动榨汁器 +16702,按压式饮水器 +16703,寿司DIY工具 +16704,水果分割器 +16705,旋盖小宝 +19297,磨刀器 +20520,调味球 +20521,压嘴/泵头 +20705,剥壳/去核器 +20707,厨用拔毛器/取刺用具 +20708,厨用取碗夹/取盘夹/防烫夹 +20709,厨用铁指甲 +20710,防油挡板 +20711,瓜子钳 +20713,手动果蔬脱水器/甩水器 +16726,刀具 +16727,锅具/煲/烧水壶 +16728,烹饪工具套装 +16729,烹饪勺铲 +16730,其他 +16732,砧板/菜板 +16766,烘焙DIY器具 +16767,烧烤架炉/烧烤DIY用具 +16796,冰箱防尘罩 +16797,餐桌罩 +16798,车罩 +16799,床罩 +16800,大衣/西服罩 +16801,电话防尘罩 +16802,电脑防尘罩 +16803,电扇/风扇防尘罩 +16804,电视罩 +16805,开关防尘贴 +16806,空调防尘罩 +16807,沙发罩 +16808,微波炉防尘罩 +16809,鞋罩/靴罩/鞋袋 +16810,遥控器防尘套 +16811,衣物/被子防尘袋 +20076,空调挡风板 +20315,暖气罩 +16813,便携购物车 +16814,储物箱 +16815,旅行收纳套装 +16816,收纳包 +16817,收纳袋 +16818,收纳凳 +16819,收纳罐 +16820,收纳柜 +16821,收纳盒 +16822,收纳架 +16823,收纳篮 +16824,收纳瓶 +16825,收纳套 +16826,收纳桶 +16868,抽气泵 +16869,挂钩/粘钩 +16870,夹子/收纳夹子 +16871,理线器/集线器/绕线器 +16872,尼龙绳 +16873,绳子 +16874,双面贴物器 +16875,橡筋 +16878,桌/椅/床脚垫 +19275,床单/被子固定器 +20226,盆架 +20227,洗衣机底座 +20228,鞋架 +20476,沙发垫固定器 +16880,除尘刷 +16881,搓衣板 +16883,叠衣板 +16884,护洗袋 +16885,夹子 +16886,裤架 +16887,晾衣杆 +16888,领带架 +16889,毛球修剪器 +16890,晒衣篮 +16891,烫衣板及配件 +16892,洗护球 +16893,小型晒衣架 +16894,衣叉 +16895,衣架 +16896,衣帽架 +16898,置地/升降晾晒衣架 +20477,衣物除尘滚/粘毛滚及配件 +20544,晾衣绳 +20230,壁挂/悬挂置物架 +20231,橱/柜/抽屉内隔板 +20232,落地置物架 +20233,桌面/台面置物架 +16903,DIY面膜工具 +16904,搓脚板/洗脚刷/磨脚石 +16905,耳勺/采耳工具 +16906,发圈/发网 +16907,发贴 +16908,干发帽 +16909,焗油耳罩 +16910,焗油帽子 +16911,焗油手套 +16912,焗油梳子 +16913,焗油碗 +16914,焗油围布 +16915,卷/美发棒 +16916,卷发筒/卷发球 +16917,棉签/棉棒/棉片 +16918,面扑/粉扑 +16919,沐浴按摩用品 +16920,沐浴球 +16921,盘发器 +16922,喷瓶/面霜分装瓶 +16923,其他焗油用品 +16924,人体秤/体重秤 +16926,束发带 +16927,剃须刀 +16928,剃须刀架 +16929,剃须刀片 +16930,剃须清洁刷 +16931,洗脸刷/化妆刷 +16932,洗漱包 +16933,牙签 +16934,浴擦 +16935,浴帽 +16936,浴刷 +16937,造型板 +16938,指甲刀/指甲钳 +19274,女用剃毛刀 +20379,镜梳套装 +20380,梳子/化妆梳/按摩梳 +20381,随身化妆镜 +16943,百洁布 +16944,玻璃清洁器及配件 +16945,簸箕 +16946,擦地拖鞋 +16947,除尘掸/掸头 +16948,钢丝球 +16949,刮刮乐拖把 +16950,海绵擦 +16951,家务手套 +16952,胶棉拖把 +16953,静电除尘纸 +16954,垃圾袋 +16955,垃圾夹 +16956,垃圾桶/垃圾架 +16957,脸盆 +16958,抹布 +16959,喷水拖把 +16960,平板拖把 +16961,扫把及扫把头 +16962,刷子 +16963,水桶 +16964,水拖 +16965,拖把配件 +16966,围裙 +16967,围裙套装 +16968,吸尘器 +16969,袖套 +16970,旋转拖把 +16971,桌面清洁套装 +18056,杯架/取杯器 +18057,地垫 +18058,非便携式用镜 +18059,管道疏通器 +18060,过滤器/净水器 +18061,花洒/淋蓬头 +18062,挤牙膏器 +18063,卷纸器/纸巾架 +18064,马桶刷/厕所刷 +18065,马桶套/马桶座圈 +18066,毛巾挂/毛巾架 +18067,沐浴桶/沐浴盆 +18068,乳液器 +18069,水塞/地漏 +18070,痰盂 +18071,洗漱杯 +18072,牙刷架/牙具座 +18073,浴帘 +18074,浴帘杆 +18075,浴帘配件 +18076,浴室角架/置物架 +18077,浴室用品配件 +18078,浴室用品套件 +18079,皂盒 +18080,皂网/架 +18081,粘钩 +18082,足浴盆/足浴桶 +20392,花洒配件 +20395,泡脚袋 +20813,地漏防臭器 +20814,马桶提盖器 +20815,泡澡浴垫/坐垫 +20816,一次性泡澡袋 +20817,浴罩 +20824,坐浴盆/马桶盆 +16991,电热水袋 +16992,冲水热水袋 +17013,保暖贴 +17014,保暖披肩 +17015,保暖手套 +17016,保暖鞋 +17017,发热鞋垫 +17018,怀炉/怀炉用品 +17019,暖脚宝/暖垫 +17020,暖手贴 +17021,暖风机 +17022,暖手宝 +17023,暖腹宝 +17024,热水袋套 +17025,桌上暖垫 +17026,安全帽 +17027,防护服 +17028,防护鞋 +17029,防护面具 +17030,防护耳罩 +17031,防护手套 +17032,反光配件/挂件/贴饰 +17033,反光穿戴用品 +17034,隔音耳塞 +17035,护腕垫 +17036,护目镜 +17037,护膝/护腰/护肩/护颈 +17038,肩部防护用品 +17039,颈部防护用品 +17040,口罩 +17041,手部防护用品 +17042,头部防护用品 +17043,腿部防护用品 +17044,腕部防护用品 +17045,胸部防护用品 +17046,膝部防护用品 +17047,普通眼罩 +17048,腰部防护用品 +17049,眼贴 +17050,肘部防护用品 +17051,挡风被 +20396,一次性口罩垫 +20397,蒸汽面罩 +20398,蒸汽眼罩 +17052,挂历 +17053,气球/飘空气球 +17054,剪刀/美发剪/园艺剪 +17055,家用梯 +17056,照明电筒 +17057,缝纫机/绣花机 +17058,缝纫机/绣花机配件 +17059,空气净化剂 +17060,应急去污宝 +17061,竹炭包/炭盒/活性炭 +17062,指纹清洁纸 +17065,美容小工具 +17066,美体用品 +17086,增高用品 +17067,酒店毛巾浴巾 +17068,毛巾/面巾 +17069,手巾/手帕 +17070,浴巾 +17071,浴裙/浴袍/浴衣 +17072,浴巾毛巾方巾套装/三件套 +20077,汗蒸服 +17073,超声波驱蚊器/电子驱蚊器 +17074,苍蝇拍 +17075,电蚊拍 +17076,防蚊贴/防蚊手环 +17077,防霉防蛀 +17078,灭蚊灯/吸蚊机/灭蝇灯 +17079,灭鼠笼/捕鼠器/粘鼠贴 +17080,驱蚊草 +17081,驱蚊挂件 +17082,驱蚊扣 +17083,驱蚊喷雾/走珠 +17084,纱窗/纱门 +17085,粘蝇纸 +20724,除螨垫 +20725,除螨贴 +20726,祛螨包 +17087,其他 +17088,防雨布 +17089,防潮垫/抽屉垫 +17090,伞 +17091,伞架/伞配件 +17092,雨披/雨衣 +17093,雨罩 +17094,雨棚 +17095,雨鞋 +20400,挡雨帽 +17096,冰垫 +17097,冰贴 +17098,冰枕 +17099,降温喷雾 +17100,迷你风扇 +17101,扇子 +17102,扇子配件 +17103,书写板 +17104,台历 +17105,烘鞋器 +17106,居家鞋 +17107,鞋套机 +17108,鞋套 +17109,鞋拔 +17110,鞋塞 +17111,鞋垫 +17112,鞋刷/鞋擦 +17113,鞋撑 +17114,靴夹 +17115,鞋袜干爽剂 +17116,鞋袜除臭剂 +20842,鞋底 +17117,香薰香料 +20863,香炉/香薰炉 +17118,香包/香囊 +17119,定时器/计时器 +17063,家居智能设备 +17064,家居智能用品 +17169,布艺蛋糕/蛋糕毛巾 +17170,笔筒 +17171,创意颈枕 +17172,创意坐垫 +17173,创意抱枕 +17174,创意玩偶 +17175,创意钥匙包 +17176,储蓄罐 +17177,创意零钱包 +17178,创意/设计玩具 +17179,创意/设计灯 +17180,防丢器 +17181,其他礼品/节庆用品 +17182,手机链 +17183,时尚烟灰缸 +17184,生日报 +17185,相册 +17186,钥匙扣 +19495,金箔花 +20280,礼品盒/包装盒 +20291,礼品套装 +20292,相框 +20376,音乐盒 +20556,许愿瓶/漂流瓶 +17195,拱门 +17196,婚庆公仔 +17197,婚庆绢花 +17198,婚庆印章 +17199,花瓣/仿真花瓣 +17200,婚庆展台/婚庆门亭 +17201,手腕花 +17202,胸花 +17203,子孙桶 +19496,伴手礼 +19497,红包/利是封 +19498,婚房布置套装 +19499,拉花 +19500,礼花/礼炮 +19501,礼金簿/签名册 +19502,请柬 +19503,糖盒/糖盒配件 +19504,席位卡 +19505,喜字/剪纸/贴纸 +19506,新娘配件 +20847,婚庆跪垫 +17229,文化创意杯子 +17230,文化创意餐具 +17231,文化创意冰箱贴 +17232,文化创意化妆镜 +17233,文化创意手环 +17234,文化创意明信片 +17235,文化创意杯垫/餐垫 +17236,文化创意文具 +17237,文化创意邮册/出版物/徽章 +17238,文艺创意钱包/购物收纳袋 +17239,文化创意包/袋 +17240,文化衫 +19508,充气用品 +19509,灯笼 +19510,电子鞭炮 +19511,对联 +19512,挂饰/生肖挂饰 +19513,荷花灯/河灯 +19514,贺卡/卡片 +19515,角色扮演类用品 +19516,节庆布艺用品 +19517,孔明灯 +19518,蜡烛 +19519,毛条 +19520,门幅 +19521,面具 +19522,南瓜灯 +19523,喷彩/喷雪 +19524,飘空气球 +19525,气球 +19526,哨子 +19527,生肖用品 +19528,圣诞服饰 +19529,圣诞礼品 +19530,圣诞鹿 +19531,圣诞帽 +19532,圣诞树 +19533,圣诞袜 +19534,圣诞装饰品 +19535,兔子灯 +19536,荧光棒 +19537,整蛊用品 +19538,中国结 +19539,装饰灯 +19550,其他节日装扮用品 +20377,蛋糕装饰 +20515,吊顶纱幔 +20516,路引 +20557,装扮彩旗 +20072,殡葬纸品 +20073,其他殡葬用品 +20074,寿衣鞋服 +17255,打火机用油 +17256,火石 +17257,礼盒 +17258,棉芯 +17259,皮套 +17260,其他 +17261,油壶 +17262,防水万次火柴 +17263,火柴 +17264,充气打火机 +17265,煤油打火机 +17266,其他打火机 +17267,一次性打火机 +20188,充电打火机 +17268,瑞士军刀 +17272,卷烟器 +17273,其他 +17274,雪茄剪/刀 +17275,烟嘴 +17276,烟盒 +17277,烟斗及烟斗配件 +17269,电子烟/烟油 +17270,国草 +17271,茶烟 +20806,电子烟配件 +17318,护牙素 +17319,口腔护理套装 +17320,口腔清新剂 +17321,杀菌消炎剂 +17322,漱口水 +17323,牙齿美白脱色剂 +17324,牙粉 +17325,牙膏 +17326,牙刷/口腔清洁工具 +17327,牙线/牙线棒 +17328,洁面皂/洁面产品 +17329,面膜 +17330,乳液/面霜 +17331,润唇膏 +17332,爽肤水 +17333,剃须啫喱/剃须膏/剃须泡 +17334,眼部护理精华 +17335,眼部护理套装 +17336,眼胶 +17337,眼膜 +17338,眼霜 +17359,搓泥浴宝 +17360,沐浴露 +17361,泡澡花瓣 +17362,泡澡药包 +17363,私处洗液 +17364,洗手液 +17365,香皂 +17366,浴盐 +17367,浴液 +17372,发膜/护发产品 +17373,护发素 +17374,摩斯/啫喱/头发造型 +17375,洗发水 +17376,洗护套装 +17305,玻璃清洁剂 +17306,布艺用品清洁剂 +17307,多用途清洁剂 +17308,管道疏通剂 +17309,洁瓷剂 +17310,空调清洁剂 +17311,马桶清洁剂/洁厕剂 +17312,墙体除霉剂 +17313,水垢清洁剂/除垢剂 +17314,洗洁精 +17315,洗衣机槽清洁剂 +17316,消毒液 +17317,油污清洁剂 +17299,地面清洁剂 +17300,地面保养剂 +17301,地毯干洗剂 +17302,家私清洁/护理剂 +17303,鞋/靴干洗剂 +17304,鞋油 +19541,皮具皮革护理剂 +17339,电蚊香套装 +17340,防霉防蛀片 +17341,杀虫剂(卫生用药) +17342,盘香/灭蚊香/蚊香盘 +17343,蚊香加热器 +17344,蚊香片 +17345,蚊香液 +17368,冰箱除味剂 +17369,干燥剂 +17370,甲醛清除剂/甲醛测试 +17371,空气芳香剂 +17378,护垫 +17379,裤型卫生巾 +17380,卫生巾 +17381,卫生棉条 +17382,香薰精油 +17383,香薰/精油皂 +17384,香薰蜡烛 +17385,香薰香料 +17386,彩漂 +17387,干洗剂 +17388,留香珠 +17389,漂白剂 +17390,吸色片 +17391,洗衣粉 +17392,洗衣凝珠 +17393,常规洗衣液 +17394,洗衣皂 +17395,衣领净 +17396,衣物除菌剂 +17397,衣物柔顺剂 +17398,织物喷雾 +17399,抽纸 +17400,厨房纸巾 +17401,家用防油贴纸 +17402,卷筒纸 +17403,棉柔巾/洗脸巾 +17404,平板卫生纸 +17405,湿厕纸 +17406,湿巾 +17407,手帕纸 +17408,吸油纸/膜 +20283,商用纸品 +20378,保湿柔纸巾/乳霜纸 +17346,防晒霜 +17347,护手霜 +17348,护足霜 +17349,花露水 +17350,清凉油/防暑/醒神药油 +17351,身体磨砂膏/去角质膏 +17352,身体乳液 +17353,爽身粉 +17354,盐敷包 +17355,浴足剂 +17356,足部磨砂膏 +17357,足贴 +17358,足浴盐 +20317,成人护理垫 +20318,成人拉拉裤 +20319,成人纸尿裤 +20320,成人纸尿片 +17428,扣 +17429,链条 +17430,其他DIY饰品配件 +17431,绳 +17432,弯管 +17433,线 +17434,针 +17435,摆件 +17436,擦银布 +17437,其他 +17438,洗金水 +17439,耳饰 +17440,发饰 +17441,佛珠/念珠 +17442,手串/宝珠 +17443,脚链 +17444,戒指/指环 +17445,其它首饰 +17446,手链 +17447,手镯 +17448,首饰袋 +17449,首饰盒 +17450,首饰箱 +17451,首饰展示架 +17452,项链 +17453,项坠/吊坠 +17454,胸针 +17467,耳饰 +17468,脚饰 +17469,戒指 +17470,颈饰 +17471,其他 +17472,手镯手链 +17473,投资贵金属 +17474,胸饰 +17475,耳饰 +17476,戒指 +17477,颈饰 +17478,其他 +17479,手镯手链 +17480,胸饰 +17481,耳饰 +17482,戒指 +17483,颈饰 +17484,其他 +17485,手镯手链 +17486,投资贵金属 +17487,胸饰 +17488,耳饰 +17489,戒指 +17490,颈饰 +17491,其他 +17492,手镯手链 +17493,胸饰 +17494,珠宝奇石 +17495,耳饰 +17496,戒指 +17497,颈饰 +17498,其他 +17499,手镯手链 +17500,珠宝奇石 +18087,胸饰 +17501,笔搁 +17502,车挂 +17503,戒指 +17504,颈饰 +17505,其他 +17506,手镯手链 +17507,烟嘴 +17508,珠宝半成品 +17509,珠宝奇石 +17510,耳饰 +17511,脚饰 +17512,戒指 +17513,颈饰 +17514,其他 +17515,手镯手链 +17516,投资贵金属 +17517,胸饰 +17518,阿富汗玉 +17519,巴玉 +17520,东陵石 +17521,俄罗斯玉 +17522,耳饰 +17523,发饰 +17524,汉白玉 +17525,黄龙玉 +17526,戒指 +17527,晶白玉/京白玉 +17528,颈饰 +17529,蓝田玉 +17530,马来玉 +17531,祁连玉/酒泉玉 +17532,其他 +17533,青海玉/昆仑玉 +17534,手镯手链 +17535,乌兰翠 +17536,岫岩玉 +17537,珠宝奇石 +17538,耳饰 +17539,戒指 +17540,颈饰 +17541,其他 +17542,手镯手链 +17543,珠宝奇石 +17544,耳饰 +17545,戒指 +17546,颈饰 +17547,其他 +17548,手镯手链 +17549,胸饰 +17550,珠宝奇石 +17551,耳饰 +17552,戒指 +17553,颈饰 +17554,裸钻 +17555,其他 +17556,手镯手链 +17557,胸饰 +20099,投资银 +20563,耳饰 +20564,戒指 +20565,颈饰 +20566,裸钻 +20567,其他 +20568,手镯手链 +20569,胸饰 +20571,车挂 +20572,耳饰 +20573,戒指 +20574,颈饰 +20575,其他 +20576,手镯手链 +20577,珠宝奇石 +20579,车挂 +20580,耳饰 +20581,戒指 +20582,颈饰 +20583,其他 +20584,手镯手链 +20585,珠宝奇石 +20587,车挂 +20588,耳饰 +20589,戒指 +20590,颈饰 +20591,其他 +20592,手镯手链 +20593,珠宝奇石 +17690,周期订阅鲜花 +20093,花材 +20094,鲜花速递(同城) +17691,插花培训 +17692,创意迷你植物 +17693,仿真果蔬 +17694,仿真花 +17695,仿真绿植 +20728,仿真草坪 +17696,大型绿植/成品组合盆栽 +17697,多肉植物 +17698,花卉 +17699,绿植 +17700,家庭园艺种子 +17701,种球 +17702,花架 +17703,花篮 +17704,花盆 +17705,花瓶 +17706,栅栏 +20800,种植箱 +17707,花艺包装 +17708,其他 +17709,制作材料 +17710,观叶/花灌木 +17711,果树 +17712,行道树/乔木 +17713,宿根/地被植物 +17714,婚车鲜花 +17715,婚庆花篮 +17716,玫瑰花瓣 +17717,其它 +17718,鲜花拱门 +17719,新娘手捧花 +17720,胸花 +17721,卡通花 +17722,商务用花 +17723,鲜花果篮(预定与速递) +17725,干花 +17726,永生花 +17727,园艺设计服务 +17728,铲/耙/锹/锄 +17729,打草绳等其他绳子 +17730,大型篱笆/栅栏 +17731,防护手套 +17732,割草机/草坪机 +17733,花卉药剂 +17734,花托/移动托盘 +17735,花园管/软管/包纱管 +17736,花园水泵 +17737,家庭园艺肥料/营养土/营养液 +17738,其它园艺用品 +17739,取水/灌溉设备 +17740,洒水/浇水壶 +17741,水晶珠/玻璃珠 +17742,水枪/地埋式喷头 +17743,微喷/滴灌/接头类 +17744,温度计/湿度计 +17745,小型喷雾壶 +17746,摇臂/景观喷头 +17747,育苗盘/营养钵 +17748,园艺/刀/剪/锯 +17749,智能园艺用品 +20729,绿篱机 +20798,小型喷雾壶配件 +20799,园林摆件 +17750,追悼/奠仪用花 +17812,电子合成器 +17813,钢琴 +17814,贝司音箱 +17815,多功能音箱 +17816,监听音箱 +17817,监听耳机 +17818,键盘音箱 +17819,吉他音箱 +17820,箱琴音箱 +17821,音箱脚踏控制器 +17822,音箱支架 +17823,背带 +17824,拨片 +17825,镲片 +17826,擦拭布/抛光布 +17827,电源/适配器 +17828,笛头 +17829,笛膜 +17830,调音器 +17831,鼓棒/鼓锤/鼓槌 +17832,鼓皮 +17833,鼓凳 +17834,鼓刷 +17835,鼓架/镲架 +17836,号嘴 +17837,键盘架 +17838,节拍器 +17839,吉他配件 +17840,胶带 +17841,乐器连接线 +17842,乐器指甲 +17843,乐器盒 +17844,乐器包 +17845,乐器罩 +17846,谱架/谱台 +17847,琴弦 +17848,琴凳/键盘凳 +17849,其它乐器配件 +17850,哨片 +17851,松香等低值易耗品 +17852,手指练习器 +17853,踏板 +17854,踏套/脚垫 +17855,踏板控制器 +17856,提琴配件 +17857,哑鼓垫 +17858,音叉 +17859,音笛 +17860,指挥棒 +17862,乐器周边 +17863,五线谱电教板 +18050,乐器工具 +17864,编曲键盘 +17865,调音台 +17866,电子吹管 +17867,耳机放大器 +17868,话筒 +17869,话筒夹/话筒架 +17870,话筒放大器 +17871,混音器 +17872,乐器软件 +17873,录音棚监听控制器 +17874,MIDI键盘 +17875,MIDI键盘控制器 +17876,MIDI吹奏控制器 +17877,模拟合成器 +17878,其它MIDI配件 +17879,软音源 +17880,声卡接口 +17881,声卡转换器 +17882,音频接口 +17883,鼓-民族鼓 +17884,锣 +17885,民族吹奏乐器 +17886,民族弹拨乐器 +17887,民族拉弦乐器 +17888,其他民族乐器 +17889,其他西洋乐器 +17890,西洋吹奏乐器 +17891,西洋弦乐器 +17892,西洋键盘乐器 +17893,西洋打击乐器 +18052,乐器教学 +18053,乐器维修 +18054,乐器定制 +18107,单项安装 +18108,工程装修 +18109,家庭保维修 +18098,半包装修 +18099,清包施工 +18100,全案装修 +18101,全包装修 +18102,节点监理 +18103,全程监理 +18104,设计审核 +18105,验房 +18106,预算审核 +18110,局部改造 +18111,局部软装定制 +18112,局部硬装翻新 +18113,局部整体翻新 +18114,局部主材套餐 +18115,软装配饰 +18116,工程设计 +18117,家庭设计 +18118,装修污染检测 +18119,装修检测治理 +18272,动脉硬化检测 +18273,骨质疏松检测 +18274,基因检测 +18275,甲状腺检测 +18276,免疫疾病筛查 +18277,脑血管检测 +18278,其他慢性病筛查 +18279,视力检测 +18280,糖尿病检测 +18281,听力检测 +18282,胃幽门螺杆菌检测 +18283,肿瘤筛查 +18285,防癌保障 +18286,老人健康 +18287,女性健康 +18288,少儿健康 +18289,医疗费用 +18290,意外健康 +18291,住院津贴 +18293,康复理疗 +18294,三高管理 +18295,睡眠管理 +18296,体重管理 +18297,营养管理 +18298,健康权益 +20223,儿童生长发育管理 +20224,皮肤健康管理 +20225,综合健康管理 +18300,旅游体检 +18301,入职体检 +18302,影像检查 +18303,孕前检查 +18304,综合体检 +18306,补牙 +18307,洗牙洁牙 +18308,牙齿美白 +18309,正畸 +18310,种植牙 +18312,个人成长 +18313,恋爱婚姻 +18314,亲子教育 +18315,情绪压力 +18316,人际关系 +18317,职业发展 +18319,白内障 +18320,视力矫正 +18321,眼底病 +18322,验光配镜 +18324,抗衰老 +18325,毛发美容 +18326,皮肤美容 +18327,眼眉美容 +18329,病毒疫苗 +18330,儿童疫苗 +18331,宫颈癌疫苗 +18332,狂犬疫苗 +18333,流感疫苗 +18334,其他疫苗 +18336,不孕不育 +18337,产后康复 +18338,产科 +18339,产前无创基因检测 +18340,妇科 +18341,试管婴儿 +18343,艾灸针灸刮痧 +18344,拔罐推拿按摩 +18345,中医膏方 +18346,中医足疗 +20211,报告解读 +20212,复诊延方 +20213,检查检验 +20214,健管课程 +20215,健康教育 +20216,开药门诊 +20217,名医专科 +20218,我问医答 +20219,医护到家 +20220,医生问诊 +20221,用药解读 +20222,预约挂号 +20322,健身瑜伽 +20323,生活美容 +18351,安神补脑 +18352,补气补血 +18353,健脾益肾 +18355,儿科痱子湿疹 +18356,儿科感冒退热 +18357,儿科惊风 +18358,儿科贫血 +18359,儿科驱虫药 +18360,儿科维矿物质 +18361,儿科消化胃肠 +18362,儿科止咳祛痰 +18364,跌打损伤 +18365,风湿关节炎 +18366,骨关节炎 +18367,骨质疏松 +18368,痛风 +18369,腰椎颈椎病 +18371,保胎育胎 +18372,避孕药 +18373,妇科炎症 +18374,更年期用药 +18375,乳腺增生 +18376,调经养颜 +18377,子宫肌瘤 +18379,保肝护肝 +18380,胆结石 +18381,胆囊炎 +18382,肝腹水 +18383,肝性脑病 +18384,肝炎 +18385,肝硬化 +18386,黄疸 +18387,脂肪肝 +18389,肺部疾病 +18390,呼吸道感染 +18391,哮喘 +18392,支气管炎 +18393,止咳化痰 +18395,精神科用药 +18397,抗病毒类 +18398,抗细菌类 +18399,口服抗真菌类 +18400,中药消炎类 +18402,利尿通淋 +18403,尿道结石 +18404,尿毒症 +18405,尿路感染 +18406,尿频尿急 +18407,肾结石 +18408,肾炎 +18410,免疫调节 +18412,前列腺炎 +18413,前列腺增生 +18414,少精无精 +18415,脱发白发 +18416,阳痿早泄 +18418,甲状腺减退 +18419,甲状腺亢进 +18420,糖尿病 +18422,疤痕 +18423,白癜风 +18424,痤疮 +18425,冻疮烫伤 +18426,狐臭腋臭 +18427,淋病梅毒 +18428,皮肤过敏 +18429,皮炎湿疹 +18430,蚊虫叮咬 +18431,银屑病 +18432,痈疽疔疮 +18433,疣类疱疹 +18434,鱼鳞病 +18435,真菌感染 +18437,癫痫 +18438,多动症 +18439,老年痴呆 +18440,面瘫 +18441,脑瘫 +18442,帕金森 +18443,神经衰弱 +18444,神经损伤 +18445,神经性疼痛 +18446,睡眠障碍 +18447,头痛眩晕 +18448,周围神经病 +18450,鼻科用药 +18451,耳科用药 +18452,口及咽喉用药 +18453,眼科用药 +18455,便秘 +18456,肠胃炎 +18457,腹泻 +18458,消化不良 +18459,消化道溃疡 +18460,痔疮 +18462,高胆固醇血症 +18463,高血压 +18464,高血脂 +18465,冠心病 +18466,脑血栓 +18467,其它心脑血管病 +18468,心绞痛 +18469,心律失常 +18470,中风 +18472,白细胞减少症 +18473,骨髓增生异常综合症 +18474,贫血 +18475,血友病 +18476,原发性血小板增多症 +18478,移植用药 +18480,辅助治疗用药 +18481,抗肿瘤用药 +18813,解热镇痛 +18490,BB霜 +18491,CC霜 +18492,彩妆盘 +18493,彩妆套装 +18494,唇笔/唇线笔 +18495,唇彩/唇蜜/唇釉 +18496,口红 +20734,润唇膏 +18503,粉饼 +18504,粉底液/膏 +18505,隔离/妆前 +18506,假睫毛 +18507,睫毛膏/睫毛增长液 +18508,眉笔/眉粉/眉膏 +18510,美甲工具 +18512,发贴 +18513,粉刺针 +18514,化妆镜 +18515,化妆棉 +18516,化妆刷 +18517,化妆套刷 +18518,假睫毛工具 +18519,美妆蛋/海绵 +18520,棉签/棉棒/棉包 +18521,面扑/粉扑 +18522,束发带 +18523,刷包/化妆包 +18524,双眼皮胶水 +18525,双眼皮贴 +18526,眼眉工具 +20475,洗脸巾 +20833,粉扑/化妆刷清洁剂 +18535,蜜粉/散粉 +18537,男士BB霜 +18538,男士彩妆套装 +18539,男士唇膏 +18540,男士粉饼 +18541,男士粉底 +18542,男士高光 +18543,男士隔离乳/霜 +18544,男士睫毛膏/睫毛增长液 +18545,男士眉笔 +18546,男士蜜粉 +18547,男士腮红 +18548,男士卸妆 +18549,男士眼线 +18550,男士眼影 +18551,男士阴影 +18552,男士遮瑕 +18554,其他彩妆 +18556,腮红/胭脂 +18558,身体彩绘 +18560,香水/香氛 +18562,高光 +18563,阴影 +18565,眼线 +18567,眼影 +18569,遮瑕 +18571,甲油胶 +18572,其它指甲彩妆 +18573,指甲油 +20474,定妆喷雾 +18576,电动牙刷 +18577,电子美牙产品 +18578,口腔护理配件 +18579,水牙线 +18580,牙刷头 +18582,鼻梁增高器 +18583,护理美甲器 +18584,睫毛卷翘器 +18585,美容/美体辅助工具配件 +18586,美容修剪器 +18587,其他美容/美体工具 +18588,瘦脸机/瘦脸工具 +18589,塑身带/塑形带 +18591,电动丰胸仪 +18592,女士脱毛/剃毛器 +18593,其他美体塑身 +18594,塑身按摩贴 +18596,电子美容仪 +18597,毛孔清洁器/洁面仪 +18598,美容喷雾机/蒸脸器 +18599,美眼仪 +18600,其他清洁美容配件 +18603,护发精油 +18604,头皮护理 +18605,发膜 +18606,护发素 +18608,发包/丸子 +18609,卷发片 +18610,刘海片 +18611,马尾 +18612,其他假发 +18613,整顶假发 +18614,直发片 +18616,假发发箍 +18617,假发梳子 +18618,假发发网 +18619,假发护理液 +18620,假发支架 +18621,其他假发配件 +18623,男士护发素 +18624,男士洗发水 +18625,男士造型 +18626,男士洗护套装 +18628,其他染发烫发产品 +18629,染发膏 +18630,烫发水 +18632,摩斯/啫喱/头发造型 +18634,洗发水 +18636,洗护套装 +18639,T区护理套装 +18640,鼻膜 +18641,鼻贴 +18642,黑头导出液 +18644,唇部护理套装 +18645,唇部精华 +18646,唇部磨砂 +18647,唇膜 +18648,润唇膏/润唇啫喱 +18650,防晒 +18652,洁面 +18654,纯露/花水 +18655,单方精油 +18656,复方精油 +18657,基底精油 +18658,精油芳疗用具 +18659,手工皂/精油皂 +18660,无香基底产品 +18663,面部按摩霜 +18665,面部护理套装 +18669,面部精华 +18670,面部磨砂/去角质 +18671,面膜 +18673,男士鼻贴 +18674,男士唇部精华 +18675,男士唇部磨砂膏 +18676,男士唇膜 +18677,男士防晒乳霜 +18678,男士肥皂 +18679,男士护理套装 +18680,男士洁面 +18681,男士精油 +18682,男士颈膜 +18683,男士颈霜 +18684,男士面部精华 +18685,男士面部磨砂膏 +18686,男士面部乳霜 +18687,男士面膜 +18688,男士沐浴露 +18689,男士喷雾 +18690,男士润唇膏 +18691,男士身体磨砂膏 +18692,男士身体乳 +18693,男士爽肤水 +18694,男士爽身粉 +18695,男士私处护理 +18696,男士剃须膏 +18697,男士脱毛膏 +18698,男士须后水 +18699,男士眼部精华 +18700,男士眼膜 +18701,男士眼霜 +18702,男士浴盐 +18703,男士止汗露 +18704,男士足部磨砂膏 +18705,男士足膜 +18706,男士足霜 +18709,其他保养 +18710,乳液/面霜 +18712,除毛凝胶 +18713,颈膜 +18714,颈霜 +18715,沐浴露 +18716,喷雾 +18717,身体按摩霜 +18718,身体护理套装 +18719,身体磨砂 +18720,身体乳/霜 +18721,身体皂 +18722,爽身粉 +18723,私处护理 +18724,脱毛膏 +18725,纤体/瘦身用品 +18726,浴盐 +18727,止汗露 +18729,护手霜 +18730,手部保养套装 +18731,手部磨砂 +18732,手膜 +18733,指甲修护乳/霜 +18736,爽肤水/化妆水 +18737,卸妆 +18739,丰胸精油 +18740,丰胸乳霜 +18741,美胸精华 +18742,美胸喷雾 +18743,乳晕护理 +18744,胸部护理套装 +18746,眼部护理套装 +18747,眼部精华 +18748,眼膜 +18749,眼霜 +20779,洗眼液 +20780,眼贴 +18751,足部磨砂 +18752,足膜 +18753,足霜 +18754,足贴 +18816,艾灸/艾条/艾柱/温灸器 +18817,按摩器材 +18818,拔罐器 +18819,保健型制氧机 +18820,成人尿裤 +18821,风湿骨痛保健(消) +18822,妇科炎症凝胶(消) +18823,膏药贴 +18824,刮痧器具 +18825,国际器械 +18826,呼吸配件 +18827,急救用品 +18828,煎药壶/机 +18829,健康秤 +18830,戒烟产品 +18831,康复护理 +18832,康复训练器材 +18833,空气净化器 +18834,口腔健康 +18835,口罩 +18836,冷热敷器具 +18837,理疗仪 +18838,棉签棉球 +18839,面部健康 +18840,男士洗液护理(消) +18841,镊子/手术剪 +18842,皮肤消毒护理(消) +18843,褥疮垫 +18844,纱布绷带 +18845,香熏理疗 +18846,眼部护理保健(消) +18847,药箱 +18848,医用耗材 +18849,运动健康 +18850,智能秤 +18851,智能手环 +18852,中医保健 +18853,助行器 +18854,足部护理用品 +18855,足部健康 +18856,足浴粉 +20843,退热贴 +18858,X射线配件 +18859,艾灸盒/艾灸仪/艾灸装置 +18860,按摩器材(器械) +18861,保健理疗 +18862,病房护理 +18863,采血用品 +18864,超声仪器 +18865,磁疗器具 +18866,耳鼻喉科 +18867,缝合材料及粘合剂 +18868,妇产科 +18869,腹部外科 +18870,高分子材料及制品 +18871,高频仪器 +18872,骨科 +18873,光学及内窥镜设备 +18874,核素设备 +18875,呼吸机 +18876,呼吸配件(器械) +18877,护具 +18878,化验和基础设备 +18879,激光仪器 +18880,急救防护 +18886,急救用品(器械) +18887,计划生育 +18888,检测试纸 +18889,健康秤(器械) +18890,静脉曲张袜 +18891,康复器械 +18899,康复训练器材(器械) +18900,口腔科材料 +18901,口腔科设备 +18902,医用口罩 +18903,冷热敷器械 +18904,理疗仪(器械) +18905,临床检验仪 +18906,轮椅 +18907,泌尿肛肠 +18908,棉签棉球(器械) +18909,暖宫贴 +18910,祛疤产品 +18911,褥疮垫(器械) +18912,纱布绷带(器械) +18913,烧伤(整形)科 +18914,射线防护 +18915,神经外科 +18916,手术剪/手术刀/镊子 +18917,手术室诊疗设备 +18918,胎心仪/胎语仪 +18919,体外循环及血液处理设备 +18920,体温计 +18921,外科 +18922,卫生材料及敷料 +18923,雾化器 +18924,洗鼻器/吸鼻器 +18925,显微外科 +18926,消毒和灭菌 +18927,心电监测仪 +18928,胸腔心血管 +18929,血糖仪/血糖试纸 +18930,血压计 +18931,血氧仪 +18932,眼科 +18933,药箱(器械) +18934,医用床上护理 +18938,医用低温设备 +18939,医用电子仪器 +18940,医用服饰 +18941,医用胶带 +18942,医用面膜 +18943,医用手套 +18944,医用卫生材料 +18949,医用用具 +18950,造口袋 +18951,诊疗器械 +18957,脂肪测量仪 +18958,植入材料和人工器官 +18959,制氧机/氧气袋/氧气瓶 +18960,智能医疗器械 +18961,中医器械 +18966,助听器 +18967,助行器(器械) +18968,注射穿刺器械 +18969,足浴养生泡脚盆(器械) +20844,创可贴/创口贴 +19301,布尿裤 +19302,隔尿床垫 +19303,隔尿垫巾 +19304,隔尿裙 +19305,尿布带 +19306,纱布尿布 +19307,拉拉裤 +19309,纸尿裤 +19311,纸尿片 +20080,汽车租赁 +20082,车抵贷 +20083,二手车贷款 +20084,汽车保险 +20085,汽车贷款 +20086,售后回租 +20087,整车直租 +20883,国内机票 +20755,公寓/写字楼/厂房 +20756,商铺 +20757,住宅 +20759,公寓/写字楼/厂房 +20760,商铺 +20761,住宅 +20763,公寓/写字楼/厂房 +20764,商铺 +20765,住宅 +20647,BJD娃娃 +20648,BJD娃娃配件 +20650,Cosplay服装 +20651,JK/DK/学生装 +20652,Cosplay配件/道具 +20653,Cos摄影/后期/化妆服务 +20655,潮玩盲盒 +20657,洛丽塔服装 +20658,洛丽塔服饰配件 +20659,洛丽塔鞋类 +20661,二次元古风服装 +20662,二次元古风配饰 +20664,变形金刚模型专区 +20665,高达模型专区 +20666,其他机器人/机甲/变形系列 +20667,圣斗士星矢模型专区 +20668,太空堡垒模型专区 +20669,新世纪福音战士机体专区 +20670,模型制作工具/辅料耗材 +20672,游戏周边 +20673,卡通/动漫/IP周边 +20675,卡牌/桌游 +20676,卡牌/桌游配件 +20678,兵人专区 +20679,手办专区 +20680,盒蛋/扭蛋/食玩 +20682,场景/建筑模型 +20683,航模/直升机/飞机模型 +20684,火车/摩托/汽车模型 +20685,舰艇/船只/舰船模型 +20686,其他模型 +20687,坦克/战车/武器模型 +19184,包/箱配件 +19185,保护箱 +19186,防潮箱 +19187,防寒设备 +19188,摄影包 +19189,单反/单电充电器 +19190,单反/单电电池 +19191,单反/单电适配器 +19192,cmos清洁 +19193,擦屏布 +19194,高压气罐 +19195,镜头笔 +19196,镜头纸/镜头布 +19197,毛刷 +19198,气吹 +19199,清洁套装 +19200,清洁液 +19201,单反手柄 +19202,对焦屏 +19203,快门线 +19204,取景器 +19205,热靴水平仪 +19206,无线传输设备 +19207,相机背带 +19208,相机挂绳 +19209,相机腕带 +19210,相机眼罩 +19211,相机专用遥控器 +19212,液晶屏保护膜 +19213,脚架 +19214,脚架包 +19215,脚架配件 +19216,快装板 +19217,摄影梯 +19218,云台 +19219,单反机身盖 +19220,脚架接环 +19221,镜头袋/镜头筒 +19222,镜头盖 +19223,滤镜 +19224,增距镜 +19225,遮光罩 +19226,转接环 +19227,测光表 +19228,广角镜 +19229,数码伴侣 +19230,数码望远镜 +19231,说明书/使用指南 +19232,显示器/打印机色彩校正仪 +19233,专业摄影背心 +19234,白平衡镜 +19235,灰板 +19236,校色仪 +19237,相机色卡 +19238,闪光灯配饰 +19239,相机闪光灯 +19240,背景布类 +19241,灯附件 +19242,反光器具 +19243,辅助道具类 +19244,柔光器具 +19245,摄影棚 +19246,摄影台/静物台 +19247,外拍灯 +19248,影室灯 +19250,充电电池 +19251,充电电池套装 +19252,充电器 +19254,Lomo镜头 +19255,Lomo潜水盒 +19256,Lomo闪光灯 +19257,Lomo相机包 +19259,胶卷 +19260,快显胶片 +19262,涂鸦笔 +19263,相片角贴 +19264,一次成像相册 +19265,一次成像相机专用包 +19266,照片夹子 +19267,自拍镜头 +19269,手机镜头 +19270,遥控器 +19271,自拍杆/架 +20695,手机补光灯 +18176,电报/货款单 +18177,回音卡/反馈卡 +18178,贺卡 +18179,明信片/邮资片 +18180,企业金卡 +18181,信封/实寄封 +18182,邮筒 +18183,邮折/卡 +18184,邮戳 +18185,邮件清单/挂号单 +18158,笔插 +18159,笔筒 +18160,笔掭/笔觇 +18161,笔洗 +18162,笔挂/笔床/笔帘 +18163,笔架/笔搁 +18164,墨盒/墨匣 +18165,墨床/墨台 +18166,墨锭 +18167,墨汁 +18168,空白扇面 +18169,蜡纸 +18170,毛边纸 +18171,绵纸 +18172,信纸 +18173,宣纸 +18174,元书纸 +18175,镇纸/压尺 +18194,宝瓶 +18195,钵/钵袋 +18196,打坐垫/拜垫 +18197,灯座 +18198,道鞋 +18199,道巾 +18200,道袍 +18201,道袜 +18202,电蜡烛 +18203,佛龛 +18204,法螺 +18205,拂尘 +18206,法轮 +18207,供灯 +18208,供杯 +18209,金刚线 +18210,净瓶 +18211,金刚铃 +18212,金刚杵 +18213,蜡烛 +18214,摩尼宝 +18215,曼扎盘 +18216,念佛机/播经机 +18217,念佛计数器 +18218,舍利塔/嘎乌 +18219,手鼓 +18220,圣水杯 +18221,僧鞋 +18222,僧服 +18223,僧袜 +18224,僧帽 +18225,文昌塔 +18226,香 +18227,香具 +18228,钺刀 +18229,液体酥油 +18230,纸制品/冥纸/冥币 +18231,钟/铃铛 +18232,转经筒 +18233,护身卡 +18234,化太岁锦囊 +18235,车挂 +18236,哈达 +18237,画像 +18238,唐卡 +7526,广式月饼 +7527,苏式月饼 +7528,冰淇淋月饼 +7529,滇式月饼/云南月饼 +7531,无糖月饼 +7532,其他月饼 +7533,蛋糕 +7534,华夫饼 +7535,面包 +7536,其他西式糕点 +7537,马卡龙 +7538,瑞士卷 +7539,甜甜圈 +7540,铜锣烧 +7541,泡芙 +7542,烧饼类 +7544,糕团类 +7545,含馅酥皮类 +7546,麻花/炸面食 +7547,沙琪玛 +7548,蝴蝶酥 +7549,其他传统糕点 +7550,爆米花 +7551,薯片 +7552,锅巴 +7553,其他膨化食品 +20627,掌心脆 +20628,雪饼/米饼 +20629,虾条/虾片 +20615,酥糖 +20616,硬糖 +20617,软糖 +20618,压片糖 +20619,奶糖 +20620,牛轧糖 +20621,棉花糖 +20622,其他糖果 +20612,棒冰/碎冰冰 +20613,果冻/布丁 +20431,纯果蔬汁 +20432,浓缩果蔬汁 +20434,豆奶/豆浆 +20435,其他植物(蛋白)饮料 +7554,火锅调料 +7556,寿司调料 +7557,其他调料 +7558,烧烤调料 +7559,辣椒类调料 +7560,咖喱 +7561,花椒/八角/桂皮 +7568,酱油 +7569,料酒 +7570,食糖 +7571,鸡精/味精 +7572,醋制品 +7562,沙拉/千岛/蛋黄酱 +7563,鱼籽酱 +7564,虾酱 +7565,豆瓣酱 +7566,番茄酱 +7567,辣椒酱 +18798,花生酱 +18802,芝麻酱 +20296,其他酱类调料 +7573,大米 +7574,小米 +7575,薏米 +7576,泰国香米 +7579,糯米 +7580,糙米 +7628,黑米 +7581,黄豆 +7582,黑豆 +7583,绿豆 +7584,红豆 +7585,其它 +7586,香菇类 +7587,莲子 +7588,桂圆干/龙眼 +7589,荔枝干 +7590,银耳/白木耳 +7591,百合干 +7592,其它 +7593,黑木耳 +7594,猴头菇 +7595,松茸 +7596,竹荪 +7597,姬松茸 +7598,火腿 +7599,培根 +7600,香肠/腊肠 +7601,待加工香肠 +7602,腊/腌肉 +7525,冰淇淋粉 +7603,果冻/布丁粉 +7604,蛋挞原料 +7618,琼脂 +7619,吉利丁片 +7620,泡打粉 +7621,塔塔粉 +7622,鱼胶粉 +7623,食用色素 +7624,小苏打 +7625,吉士粉 +7626,香草精 +7627,其它食品添加剂 +7605,黄油 +7606,芝士新 +7607,奶精炼乳 +7608,奶油 +7609,面包糠 +7610,预拌粉 +7611,酵母粉 +7612,其它 +7613,饼干制作套装 +7614,甜品制作套装 +7615,面包制作套装 +7616,蛋糕制作套装 +7617,中式糕点制作套装 +7906,冲锋舟 +7907,游艇 +7908,波箱电脑 +7909,飞轮/齿轮 +7910,变速箱/波箱/分动箱总成 +7911,油封 +7912,离合器总成 +7913,车用天线 +7914,警示牌 +7915,备用油箱 +7916,车轮锁/车位锁 +7917,轮毂盖 +7918,备胎罩 +7919,油箱盖 +7920,拉货灯/代驾灯类 +7921,后备箱弹簧助力器 +7922,大视野后视辅助镜 +7923,门锁盖 +7924,电瓶搭火线 +7925,点火线圈 +7926,分电器 +7927,点火器 +7928,高压线 +7929,火花塞 +7930,汽车仪表 +7931,车用芯片 +7932,汽车传感器 +7933,发电机 +7934,保险片 +7935,整流器 +7936,汽车太阳能充电板 +7937,汽车电瓶/蓄电池 +7938,气缸及部件 +7939,皮带 +7940,涨紧轮 +7941,启动马达 +7942,发动机总成及部件 +7943,缸盖/缸体 +7944,活塞及部件 +7945,曲轴及部件 +7946,机油泵 +7947,气门部件 +7948,方向盘锁 +7949,中控锁 +7950,汽车钥匙 +7951,喷油嘴 +7952,油泵 +7953,油箱 +7954,排气管 +7955,增压器 +7956,三元催化 +7957,进气歧管 +7958,排气歧管 +7959,进气总管 +7960,水箱保护网 +7961,水泵 +7962,风扇 +7963,冷凝器 +7964,节温器 +7965,水箱 +7966,散热器 +7967,压缩机及空调部件 +7968,空调滤芯 +7969,机油滤芯 +7970,空气滤芯 +7971,汽油滤芯 +7972,三滤套装 +7973,扶手箱 +7974,座椅及附件 +7975,方向盘 +7976,排挡杆 +7977,安全气囊/气囊电脑 +7978,车窗及其配件 +7979,原厂烟灰缸 +7980,空调旋钮 +7981,天窗及配件 +7982,保险杠 +7983,车门拉手 +7984,倒车镜/后视镜 +7985,汽车包围 +7986,越野车外侧脚踏板 +7987,叶子板内衬 +7988,叶子板 +7989,中网 +7990,减震 +7991,轴承 +7992,差速器 +7993,半轴 +7994,传动轴 +7995,汽车弹簧 +7996,桥壳 +7997,上下摆臂 +7998,止推杆 +7999,摆臂球头 +8000,车壳 +8001,大梁 +8002,车架 +8003,后桥 +8004,前桥 +8005,分动箱油 +8006,汽车发动机机油 +8007,刹车油 +8008,手动变速箱油/齿轮油 +8009,自动变速箱油 +8010,转向助力油 +8011,HID氙气灯 +8012,汽车灯泡 +8013,大灯总成 +8014,防追尾灯 +8015,车内灯 +8016,汽车车灯透镜 +8017,汽车灯罩 +8018,氙气灯安定器 +8019,大灯清洗 +8020,刹车片 +8021,刹车盘 +8022,真空助力器 +8023,刹车油管 +8024,刹车泵(ABS) +8025,刹车卡钳 +8026,刹车鼓 +8027,刹车蹄 +8028,制动器总成 +8029,方向助力泵 +8030,方向机总成 +8031,方向拉杆部件 +8033,抛光机/封釉机 +8034,电烤枪 +8035,刮板 +8036,镀晶/车釉/车漆镀膜 +8037,车蜡 +8038,车用砂纸 +8039,抛光盘 +8040,打蜡海绵 +8041,轮毂喷膜 +8042,机油添加剂 +8043,汽油添加剂 +8044,柴油添加剂 +8045,千斤顶 +8046,应急灯/维修灯 +8047,汽车升降机 +8048,四轮定位仪 +8049,扒胎机 +8050,轮胎平衡仪 +8051,氮气充气机 +8052,安全锤工具 +8053,空气压缩机 +8054,拖车绳/网/绑带 +8055,滤清磁铁 +8056,音响改装工具 +8057,轮胎平衡块 +8058,维修工具/工具箱 +8059,泥雪沙地脱困板 +8060,补胎工具 +8061,玻璃修复工具 +8062,汽车电路测电笔 +8063,汽车检测仪 +8064,玻璃水 +8065,防冻液 +8066,底盘装甲 +8067,节油器 +8068,清洗剂/养护剂 +20116,冷媒 +20117,三元催化剂 +20197,汽车杀菌/消毒剂 +20114,补漆笔 +20115,自动喷漆 +8069,装饰性轮眉 +8070,门腕 +8071,尾喉/消声器 +8072,碳纤维改装件 +8073,汽车灯罩框 +8074,汽车装饰灯 +8075,灯眉 +8076,刹车卡钳罩 +8077,气门芯套 +8078,车身/车窗饰条 +8079,汽车防静电用品 +8080,轮胎防滑链 +8081,汽车车衣 +8082,雨眉/晴雨挡 +8083,防撞胶条/防刮条 +8084,玻璃防爆隔热膜 +8085,车用密封胶条 +8086,防护条 +8087,防护板 +20120,汽车遮阳伞 +20234,雪挡 +8088,漆面保护膜 +8089,汽车装饰贴 +8090,车用双面胶 +8091,车牌架/牌照托 +8092,汽车车标 +8093,改色膜 +8094,车用氧吧/空气净化器 +8095,车载保温箱 +8098,电动尾门 +8099,车载手机充电器 +8100,车用吸尘器 +8101,车用点烟器 +8102,车用电扇 +8103,车载加热/保温杯 +8104,车载蓝牙/免提电话 +8105,车载路由器 +8106,应急启动电源 +8107,车载充气泵 +8108,车载剃须刀 +8109,电台/对讲设备/中继台 +8110,车载数字电视盒 +8111,汽车空调 +8112,车用电器配件 +8113,车载电子产品配件 +8114,蓝牙检测仪 +8115,电源转换器 +8116,逆变器 +8117,驾驶模拟机 +8118,电动折叠后视镜 +8119,新能源汽车充电设备/充电桩 +20122,公路电子收费/ETC/OBU +20735,车载电饭煲 +8120,玻璃升降器 +8121,车载摄像头 +8122,车载诊断系统/OBD +8123,倒车雷达 +8124,防盗器配件 +8125,防瞌睡提醒器 +8126,跟踪器 +8127,汽车防盗器 +8128,全车影像 +8129,舒适进入 +8130,胎压监测 +8131,抬头显示/HUD +8132,行车记录仪 +20644,执法记录仪 +8133,车载MP3/MP4 +8134,汽车音箱/低音炮 +8135,汽车喇叭/高音头 +8136,汽车功放 +8137,车载CD机 +8138,车载电脑/准系统 +8139,车载碟盒 +8140,车载音乐配件 +8141,车用显示器 +8142,车用头枕屏 +8143,音频线/数据线 +20124,车载音乐U盘 +20127,防雾剂/防雨剂 +20128,防雾膜/防雨膜 +8144,车用纸巾 +8145,气压表/胎压表 +8146,酒精测试仪 +8147,司机护目镜 +8148,车用灭火器 +8149,车用钥匙扣 +8150,车用钥匙包 +8151,车用指南针/指南球 +8152,方向盘助力器 +8153,车用电子钟表 +8154,车用眼镜夹/票据夹 +8155,车用水杯架/饮料架 +8156,车用笔记本架 +8157,车用衣服架 +8158,车用烟灰缸 +8159,驾驶证件套 +8160,急救包 +8161,多功能手电 +8162,车用挂钩 +8163,车用纸巾盒/套 +8164,越野平衡仪 +8165,年检车贴 +8166,司机防晒手套 +8167,便利尿袋 +8168,汽车香水香薰 +8169,车用空气净化/清新剂 +8170,车用炭类吸附品 +8171,空气降温剂 +8293,其它 +8294,松花/皮蛋 +8295,喜蛋 +8296,咸鸭蛋 +8297,鹌鹑蛋 +8298,鹅蛋 +8299,鸽蛋 +8300,鸡蛋 +8301,其它 +8302,鸭蛋 +8303,鲍鱼 +8304,北极贝 +8305,贝类制品 +8306,蛏子 +8307,带子 +8308,干贝/瑶柱 +8309,蛤蜊 +8310,花蛤 +8311,蓝口贝 +8312,毛蚶 +8313,其它贝类 +8314,青口贝 +8315,扇贝 +8316,扇贝柱 +8317,生蚝 +8318,夏夷贝 +8319,象拔蚌 +8320,紫口贝 +8321,斑鱼 +8322,比目鱼 +8323,鲳鱼 +8324,带鱼 +8325,鲽鱼 +8326,多春鱼(新) +8327,黄鱼 +8328,金枪鱼 +8329,龙利鱼 +8330,马鲛鱼 +8331,鳗鱼 +8332,其它 +8333,秋刀鱼 +8334,三文鱼 +8335,鳕鱼 +8336,翡翠螺 +8337,海螺 +8338,螺蛳 +8339,泥螺 +8340,其它螺类 +8341,田螺 +8342,冷冻墨鱼 +8343,墨鱼干 +8344,墨鱼丸/花枝丸 +8345,冻虾 +8346,活虾 +8347,虾干 +8348,虾类制品 +8349,虾皮/虾米/海米 +8350,虾仁 +8351,大闸蟹 +8353,帝王蟹 +8354,红毛蟹 +8355,黄金蟹 +8356,老虎蟹 +8357,其它蟹类 +8358,青蟹 +8359,梭子蟹 +8360,蟹棒 +8361,蟹脚 +8362,蟹类制品 +8363,鳕蟹 +8364,珍宝蟹 +8367,花胶/鱼胶 +8368,其它 +8369,鱼干 +8370,鱼糕/鱼饼 +8371,鱼类罐头 +8372,鱼丸/鱼滑 +8373,海带 +8374,其它 +8375,紫菜 +8376,冷冻章鱼 +8377,章鱼干 +8365,冷冻鱿鱼 +8366,鱿鱼干 +20205,其他海鲜熟制品 +20206,小龙虾熟制品 +20208,大闸蟹提货券 +8378,乳鸽 +8379,其它 +8380,生鸡肉 +8381,鸡肉丸/肉串 +8382,其它鸡肉类 +8383,生鸡腿 +8384,整鸡 +8385,鸡胸 +8386,生鸡翅 +8387,生牛肉 +8388,牛丸/肉串 +8389,其它牛肉类 +8390,牛排 +8391,牛腩 +8392,牛肉卷/片 +8393,牛腱子 +8394,牛尾 +8395,牛杂类 +8396,鸭肉 +8397,其它 +8398,生羊肉 +8399,其它羊肉类 +8400,羊肉卷/片 +8401,羊肉串 +8402,生羊腿 +8403,生羊排/肋排 +8404,脊背/羊蝎子 +8405,生猪肉 +8406,贡丸/肉串 +8407,猪排 +8408,其它 +8409,豆干香干 +8410,嫩豆腐 +8411,老豆腐 +8412,豆皮千张 +8413,豆泡面筋 +8414,生素鸡 +8415,其它豆制品 +8416,萝卜干 +8417,酱瓜 +8418,什锦菜 +8419,笋丝 +8420,橄榄菜 +8421,榨菜/大头菜 +8422,野山菌 +8423,金针菇 +8424,泡菜 +8425,糖蒜 +8426,酸菜 +8427,咸菜/雪菜 +8499,裤子 +8500,裙子 +8501,上衣 +8507,套装 +9206,安防报警设备安装 +9207,成品楼梯安装 +9208,成品门/移门安装 +9209,厨房设施安装服务 +9210,橱柜安装服务 +9211,窗帘轨道安装服务 +9212,床安装服务 +9213,灯具安装 +9214,地板安装 +9215,地暖施工安装 +9216,蹲便器安装 +9217,柜体安装服务 +9218,集成吊顶安装 +9219,空调安装服务 +9220,淋浴房安装 +9221,淋浴拉门安装 +9222,淋浴龙头安装 +9223,龙头安装 +9224,面盆安装 +9225,墙纸铺贴 +9226,热水器安装服务 +9227,三角阀安装 +9228,沙发安装服务 +9229,视听设备安装服务 +9230,卫浴配件安装 +9231,卫浴五金安装 +9232,小便斗安装 +9233,椅子安装服务 +9234,浴霸安装 +9235,浴缸安装 +9236,浴室柜安装 +9237,浴室镜安装 +9238,浴室镜柜安装 +9239,桌台几类安装服务 +9240,坐便器安装 +9241,安防报警安装服务套餐 +9242,成品楼梯安装服务套餐 +9243,成品门/移门安装服务套餐 +9244,厨房设施安装服务套餐 +9245,橱柜安装服务套餐 +9246,窗帘轨道安装服务套餐 +9247,床安装服务套餐 +9248,灯具安装服务套餐 +9249,地板安装服务套餐 +9250,地暖安装服务套餐 +9251,蹲便器安装服务套餐 +9252,柜体安装服务套餐 +9253,集成吊顶安装服务套餐 +9254,空调安装服务套餐 +9255,淋浴房安装服务套餐 +9256,淋浴拉门安装服务套餐 +9257,淋浴龙头安装服务套餐 +9258,龙头安装服务套餐 +9259,面盆安装服务套餐 +9260,墙纸铺贴服务套餐 +9261,热水器安装服务套餐 +9262,三角阀安装服务套餐 +9263,沙发安装服务套餐 +9264,视听设备安装服务套餐 +9265,卫浴配件安装服务套餐 +9266,小便斗安装服务套餐 +9267,椅子安装服务套餐 +9268,浴缸安装服务套餐 +9269,浴室柜安装服务套餐 +9270,浴室镜安装服务套餐 +9271,浴室镜柜安装服务套餐 +9272,桌台几类安装服务套餐 +9273,坐便器安装服务套餐 +9274,办公家具维修 +9275,地板维修 +9276,生活家具维修 +9277,大件搬运 +9278,钢琴搬运 +9279,货运搬场 +9280,家具拆装 +9281,居家搬家 +9282,空调移机 +9283,企业搬家 +9284,起重安装 +9285,设备搬迁 +9286,小型搬家 +9287,长途搬家 +9288,催乳师 +9289,管家 +9290,看护/陪护 +9291,临时看护服务 +9292,普通保姆 +9293,涉外保姆 +9294,婴童馆服务 +9295,育婴师 +9296,月嫂 +9297,专业营养师 +9298,家庭保洁 +9299,开荒保洁 +9300,冰淇淋/甜品 +9301,西点/面包/蛋糕 +9302,干货炒货提货券 +9303,海鲜水产提货券 +9304,酒水饮料提货券 +9305,米面粮油提货券 +9306,其他食品提货券 +9307,生肉禽蛋提货券 +9308,水果提货券 +9309,速冻食品提货券 +9310,月饼券 +9311,粽子券 +9312,日法德俄韩西班牙其他 +10623,红外探测器 +10624,门磁探测器 +10625,声磁探测器 +10626,震动探测器 +10627,半球形摄像机 +10628,防爆摄像机 +10629,仿真摄像机 +10630,红外摄像机 +10631,枪机 +10632,球形摄像机 +10633,网络摄像机 +10634,一体化摄像机 +10635,软件压缩卡 +10636,硬件压缩卡 +10637,PC式硬盘录像机 +10638,嵌入式硬盘录像机 +10639,调光硅箱 +10640,调光控制台 +10641,调光面板 +10642,电动窗帘控制机及配件 +10643,地暖控制面板 +10644,空调控制面板 +10645,门窗控制器 +10646,室内新风系统 +10647,电源控制器 +10648,家用场景面板 +10649,人体感应开关 +10650,遥控开关 +10651,电控锁 +10652,电子巡更系统 +10653,楼层显示器 +10654,楼宇对讲设备 +10655,门禁读卡器 +10656,门禁机 +10657,门禁智能卡 +10658,排队机/叫号器 +10659,停车场控制机/道闸 +10660,背景音乐控制器 +10661,背景音乐主机 +10662,影音多媒体中央控制系统 +10663,5号转1号 +10664,5号转2号 +10665,7号转5号 +10666,电压转换 +10667,暗插销 +10668,明插销 +10669,撑杆 +10670,窗锁 +10671,滑轮 +10672,门/窗钩 +10673,密封条 +10674,羊眼 +10675,执手 +10676,暗合页 +10677,弹簧合页 +10678,普通型合页 +10679,双袖型合页 +10680,脱卸合页 +10681,轴承合页 +10682,子母合页 +10683,暗箱扣 +10684,层板拖 +10685,橱柜脚 +10686,导轨 +10687,防尘胶条 +10688,防撞胶粒 +10689,防撞器 +10690,搁板销 +10691,挂衣钩 +10692,柜脚/腿 +10693,柜内裤架 +10694,家具底座 +10695,家具脚垫 +10696,家具连接件 +10697,家具转盘 +10698,角码 +10699,铰链 +10700,脚轮/万向轮 +10701,门板封边 +10702,木塞/木榫 +10703,气动杆 +10704,塑胶封边条 +10705,踢脚板 +10706,线孔盖 +10707,衣杆 +10708,椅扶手 +10709,转椅扶手 +10710,转椅五星脚 +10711,大拉手 +10712,小拉手 +10713,安全链/扣 +10714,闭门器 +10715,地弹簧 +10716,吊滑 +10717,门鼻 +10718,门弹弓 +10719,门夹 +10720,门镜/猫眼 +10721,门牌 +10722,门吸 +10723,门挡 +10724,碰珠 +10725,压条 +10726,浴室玻璃夹 +10727,玻璃托/夹 +10728,不锈钢垃圾桶 +10729,缎带/扎带 +10730,风管 +10731,钢板网 +10732,钢丝绳 +10733,货品支架 +10735,铝板网 +10736,铝合金梯子/移动爬梯 +10737,其他五金 +10739,S钩 +10740,丙烯绳 +10741,宠物链 +10742,涤纶绳 +10743,花蓝螺丝 +10744,尼龙绳 +10745,套环 +10746,铁环链 +10747,车锁 +10748,电子锁/智能锁 +10749,挂锁 +10750,机械门锁 +10751,家具锁 +10752,特殊用锁 +10753,自行车锁 +18242,密封条 +18244,玻璃夹 +18245,玻璃拉杆 +18246,玻璃钻头 +18247,玻璃抓 +18249,玻璃压条 +18250,玻璃铰链 +18251,玻璃钉 +18252,钢丝吊码 +18253,楼梯玻璃链接 +18254,壁纸铲刀 +18257,基膜墙纸胶套装 +18259,基膜 +18261,勾缝剂 +18262,十字卡 +10754,管堵 +10755,管帽 +10756,接头 +10757,螺母 +10758,三通 +10759,水管配件 +10760,四通 +10761,弯头 +10762,环氧漆(地坪漆) +10763,金属漆 +10764,木蜡油 +10765,水性木器漆 +10766,油性木器漆 +10767,虫胶漆片 +10769,红丹粉/铅红 +10771,界面剂 +10772,腻子/批嵌材料 +10773,清油 +10774,色浆 +10775,色精 +10776,涂料添加剂 +19565,其他油漆辅料 +19561,胶粉 +19562,胶浆 +19563,糯米胶 +10777,花壶瓶 +10778,花篮 +10779,花盆 +10780,花瓶 +10781,花桶 +10782,花栅栏 +10783,其他花器 +10784,杀菌灯具 +10785,生鲜灯 +10786,植物生长灯 +20440,灭蚊灯 +10787,端景台灯饰 +10788,阅读台灯 +10789,装饰台灯 +20443,其他太阳能庭院灯饰 +20444,太阳能草坪灯 +20445,太阳能投光灯 +20490,其他道路灯具 +20491,太阳能路灯 +10790,LED单灯 +10791,LED灯带 +10792,LED灯管 +10793,紧凑型节能荧光灯 +10794,直管荧光灯 +10795,厨房挂件套餐 +10796,刀架 +10797,锅盖架 +10798,微波炉支架 +10799,支架挂钩 +10800,置物架 +15537,电热水龙头 +15538,普通水龙头 +10801,水槽单品 +10802,水槽套餐 +10803,沥水板 +10804,沥水篮 +10805,水槽下水器 +10806,水槽皂液器 +10807,地线 +10808,股线 +10809,花片 +10810,立柱 +10811,腰线 +10812,转角 +10813,除味剂 +10814,活性炭/竹炭包 +10815,净化液 +10816,空气净化器 +10817,炭雕 +10818,苯氨清除剂 +10819,甲醛检测剂/自测盒 +10820,甲醛清除剂 +10821,顶座 +10822,定向滑轮组 +10823,定向转角 +10824,钢丝绳 +10825,滑轮 +10826,晾杆 +10827,手摇器 +10828,感应冲水器 +10829,普通冲水阀 +10830,淋浴房配件 +10831,整体淋浴房 +20803,淋浴房底盆 +10832,感应龙头 +10833,干发器/酒店电吹风 +10834,烘手器 +10835,擦手纸箱 +10836,浴室边柜 +10837,浴室柜 +10838,浴室柜组合 +10839,浴室镜 +10840,浴室镜柜 +19549,洗衣机柜 +20804,智能浴室镜 +10842,净身盆龙头 +10844,面盆龙头 +10845,拖把池龙头 +10846,洗衣机龙头 +10847,浴缸淋浴龙头 +10848,厨卫龙头配件 +10849,蹲便器配件 +10850,进水软管 +10851,其他卫浴配件 +10852,卫浴五金套件 +20745,地漏配件 +20746,阀芯 +20747,生料带 +20748,下水管/排水管 +20805,水龙头起泡器 +10853,杯架/漱口杯 +10854,肥皂盒/皂碟 +10855,挂钩/挂衣钩 +10856,过滤器/净水器 +10857,化妆品架 +10858,卷纸器/纸巾架 +10859,马桶刷 +10860,马桶刷架 +10861,毛巾杆/毛巾挂 +10862,毛巾环 +10863,美容镜 +10864,卫浴五金/挂件套餐 +10865,卫浴置物架 +10866,浴巾架/毛巾架 +10867,浴室扶手 +10868,浴室角架 +10869,皂液器 +10870,半嵌入式洗脸盆 +10871,挂墙式洗脸盆 +10872,立柱盆 +10873,脸盆配用件 +10874,盆、台一体成型式台盆 +10875,台上盆 +10876,台上艺术碗盆 +10877,台下盆 +10878,普通小便斗 +10879,无水小便斗 +10880,小便器配件 +10881,一体感应式小便斗 +10882,按摩浴缸 +10883,普通浴缸 +10884,浴缸配件 +10885,普通坐便器 +10886,一体智能坐便器 +10887,座便器配件 +10888,普通坐便盖板 +10889,智能坐便盖板 +19544,花洒底座 +19545,花洒喷头 +19546,花洒软管 +19547,花洒支架 +19548,淋浴花洒套装 +14663,地板弹簧 +14664,地板胶垫 +14665,地板龙骨 +14666,防潮膜(地板膜) +14667,收边条/压线条 +14668,踢脚线 +14669,樟木块 +14670,防火地板 +14671,防静电地板 +14672,隔音地板 +14673,漏缝地板/格栅地板 +14674,灯暖模块 +14675,多功能组合电器 +14676,换气模块 +14677,暖风模块 +14678,射灯模块 +14679,照明模块 +20446,凉霸 +14680,扣板吸盘 +14681,龙骨 +14682,收边条 +14683,丝杆 +10890,布百叶配件 +10891,窗帘绑带 +10892,窗帘杆 +10893,窗帘轨道 +10894,窗帘扣 +10895,窗帘面料 +10896,挂钩/挂球 +10897,窗帘花边/蕾丝 +10898,帘杆 +10899,帘珠 +10900,铅线 +10901,铅坠 +10902,无纺布 +20481,布贴 +20482,缝纫花边 +20483,拉链 +20484,魔术贴/粘扣带/固定贴 +20485,纽扣 +20486,其他缝纫DIY配件/辅料 +20487,丝带/绸带/布带 +20488,珠子/钻饰/花朵 +10903,拆线器/拆线刀 +10904,串珠针 +10905,剪刀 +10906,绕线板 +10907,水溶笔 +10908,线号签/线号贴 +10909,线盒 +10910,绣绷 +10911,绣架 +10912,绣针 +10913,针扎针插 +10914,杯垫 +10915,家居用品 +10916,手机链/立体绣 +10917,首饰盒 +10918,书签 +10919,钥匙扣 +10920,婴儿用品 +10921,纸巾盒/纸巾套 +10933,低温电器辐射地暖系统 +10934,地暖发热电缆 +10935,地暖电热膜/电热炕板 +10936,感温探头 +10937,冷引线 +10938,铝箔隔热膜 +10939,温控器 +10940,壁挂炉 +10941,低温热水辐射地暖 +10942,地暖阀门 +10943,地暖专用管材 +10944,地暖专用循环水泵 +10945,分水器 +10946,膨胀水箱 +10947,水力分压器 +10948,温度控制器 +10959,封边 +10960,开门机 +10961,门标配五金件 +10962,门吸/门挡 +10963,门辅料 +10964,门轨 +10965,门配饰 +10966,门扇 +10967,门套线 +10968,压条 +10969,柜体 +10970,门板 +10971,台面 +10972,矮柜 +10973,保险柜 +10974,更衣柜 +10975,柜子配件 +10976,文件柜 +10977,大班椅/老板椅 +10978,会议椅/会客椅 +10979,接待椅 +10980,培训椅 +10981,前台椅/吧椅 +10982,休闲椅 +10983,椅子配件 +10984,中班椅 +10985,办公电脑桌 +10986,大班台/老板桌 +10987,会议桌 +10988,培训台 +10989,前台/接待台 +10990,演讲台 +10991,阅览桌 +10992,中班台 +10993,桌子配件 +10994,组合/屏风工作位 +10995,餐桌椅系列 +10996,等候椅系列 +10997,剧院椅系列 +10998,排椅系列 +10999,休闲椅系列 +11000,茶几 +11001,沙发 +11002,沙发配件 +11003,办公屏风/隔断 +11004,高隔断/隔墙 +11005,安检门 +11006,电话亭 +11007,公共椅 +11008,公共饮水器 +11009,健身娱乐设施 +11010,垃圾筒/烟灰皿 +11011,灭火箱 +11012,清洁手推车 +11013,售报亭 +11014,移动厕所 +11015,邮筒 +11016,交通指示牌 +11017,路标 +11018,路障 +11019,停车牌 +11020,无障碍设施 +11021,自行车停放设施 +11022,雕塑 +11023,叠水瀑布 +11024,花坛 +11025,景观小品 +11026,喷泉 +11027,L展架 +11028,X展架/易拉宝 +11029,布告栏 +11030,导向牌 +11031,灯箱 +11032,广告牌 +11033,广告旗杆 +11034,广告帐蓬 +11035,户外旗杆 +11036,拉网架 +11037,信息张贴栏 +11038,宣传栏 +11039,杂志报刊架 +11040,刀剑 +11041,刀剑保养品 +11042,剑袋 +11043,剑架/剑托 +11044,白族草编工艺 +11045,白族木雕 +11046,白族扎染 +11047,其他 +11048,藏族贲巴壶 +11049,藏族哈达 +11050,藏族绘画 +11051,藏族曼扎盘 +11052,藏族唐卡 +11053,其他 +11054,西藏古代铜雕 +11055,蒙古皮画 +11056,蒙古碗 +11057,蒙古族鼻烟壶 +11058,蒙古族别致腰带 +11059,蒙古族佩饰 +11060,蒙古族皮囊酒壶 +11061,蒙古族竹雕画 +11062,其他 +11063,苗族剪纸 +11064,苗族蜡染 +11065,苗族马尾斗笠 +11066,苗族泥哨 +11067,苗族挑花 +11068,苗族银饰 +11069,苗族长角帽 +11070,苗族织锦 +11071,其他 +11072,铜鼓 +11073,壮锦 +11074,壮绣 +11075,壮族儿帽 +11076,壮族花山崖壁画 +11077,佛珠挂链 +11078,佛珠手链 +11079,佛珠项链 +11080,冲击扳手 +11081,定扭矩扳手 +11082,角向扳手 +11083,扭剪扳手 +11084,其他电动扳手 +11085,电动曲线锯 +11086,电链锯 +11087,电圆锯 +11088,马刀锯/往复锯 +11089,其他类型电锯 +11090,台锯 +20632,电动羊毛剪 +20633,裁布剪/裁布机 +20808,电动修枝剪 +11091,LED开关电源 +11092,LED显示器 +11093,通用变频器 +11094,专用变频器 +11095,船用变压器 +11096,电炉变压器 +11097,电源变压器 +11098,电子变压器 +11099,隔离变压器 +11100,恒压变压器 +11101,控制变压器 +11102,矿用变压器 +11103,脉冲变压器 +11104,普通变压器 +11105,试验变压器 +11106,调压变压器 +11107,稳压变压器 +11108,音频变压器 +11109,照明变压器 +11110,单相应急电源 +11111,高频不间断电源 +11112,工频不间断电源 +11113,三相应急电源 +11114,变送器 +11115,低压断路器 +11116,低压接触器 +11117,低压开关柜 +11118,低压控制器 +11119,低压熔断器 +11120,电抗器 +11121,电涌保护器 +11122,定时器/时控开关 +11123,断路器辅助 +11124,防爆电气 +11125,分流器 +11126,功率补偿器件 +11127,计数器 +11128,起动器 +11129,数字温控器 +11130,调速器 +11131,脱扣器 +11132,主令电器 +11133,特种电缆 +11134,通用电缆 +11135,PLC +11136,保护器 +11137,人机界面 +11138,伺服定位系统 +11139,振动盘 +11140,开关电源 +11141,直流稳压电源 +11142,电流互感器 +11143,电压互感器 +11144,电子式互感器 +11145,零序电流互感器 +11146,钳形电流互感器 +11147,组合互感器 +11148,AGV小车 +11149,服务机器人 +11150,机器人配件 +11151,电磁继电器 +11152,固态继电器 +11153,加速度继电器 +11154,时间继电器 +11155,温度继电器 +11156,变频器 +11157,标准表 +11158,定时器 +11159,节能控制器 +11160,配电设备 +11161,箱式变电站 +11162,太阳能充电器 +11163,太阳能灯 +11164,太阳能电池组件 +11165,补偿式电力稳压器 +11166,单/三相全自动稳压器 +11167,通用型稳压器 +11168,专用型稳压器 +11169,扎丝 +11170,固定型 +11171,起动型 +20547,蓄电池充电器 +11172,充气泵 +11173,电泵 +11174,其它类型泵 +11175,水泵 +11176,增压泵 +19569,空压机 +11177,齿轮变速机 +11178,行星摆线针轮减速机 +11179,行星齿轮减速机 +11180,减速机配件 +11181,涡轮蜗杆减速机 +11182,伴热设备 +11183,电热带 +11184,电热管 +11185,电热膜 +11186,电热圈/片/盘/板 +11187,电热丝 +11188,发热芯 +11189,工业电炉 +11190,工业烤箱 +11191,硅碳棒 +11192,其他电热设备 +11193,热电偶 +11194,热电阻 +11195,实验电炉 +19570,孵化器 +20861,驻车加热器 +11196,柴油发电机 +11197,发电机组零部件 +11198,风力发电机 +11199,其他发电机 +11200,汽油发电机 +11201,燃煤发电机 +11202,燃气发电机 +11203,水力发电机 +11204,太阳能发电机 +11205,储能机 +11206,等离子焊机 +11207,等离子切割机 +11208,点焊机 +11209,电火花 +11210,电阻焊机 +11211,滚焊机 +11212,焊管机 +11213,焊锡机 +11214,焊线机 +11215,回流焊接机 +11216,激光焊机 +11217,激光切割机 +11218,摩擦焊机 +11219,排焊机 +11220,碰焊机 +11221,其他电焊/切割设备 +11222,塑焊机 +11223,线切割 +11224,压焊机 +19116,电焊机 +19117,焊接配件 +11225,柴油机 +11226,其他内燃机 +11227,汽油机 +11228,齿轮 +11229,齿轮箱 +11230,传动带 +11231,传动链 +11232,带轮 +11233,联轴器 +11234,链轮 +11235,涡轮 +11236,底阀 +11237,截止阀 +11238,其他阀门 +11239,球阀 +11240,旋塞阀 +11241,闸阀 +11242,止回阀 +11243,关节轴承 +11244,滚针轴承 +11245,角接触球轴承 +11246,深沟球轴承 +11247,调心滚子轴承 +11248,调心球轴承 +11249,推力滚子轴承 +11250,推力球轴承 +11251,外球面球轴承 +11252,圆柱滚子轴承 +11253,圆锥滚子轴承 +11254,直线运动轴承 +11255,转盘轴承/回转轴承 +11256,组合轴承 +11257,保持架 +11258,挡圈 +11259,钢珠/滚珠 +11260,滚子 +11261,紧定套 +11262,锁紧垫圈 +11263,锁紧螺母 +11264,套管 +11265,退卸衬套 +11266,止推环 +11267,轴承润滑油脂 +11268,轴承装卸工具 +11269,轴承座 +11270,半空心铆钉 +11271,半圆头铆钉 +11272,标牌铆钉 +11273,抽芯铆钉 +11274,环槽铆钉 +11275,鸡眼铆钉 +11276,空心铆钉 +11277,平头铆钉 +11278,平锥头铆钉 +11279,其他铆钉 +11280,台阶铆钉 +11281,子母铆钉 +11282,内置式膨胀螺栓 +11283,膨胀螺栓 +11284,膨胀螺丝 +11285,其他膨胀类紧固件 +11286,塑料膨胀管 +11287,塑料胀塞 +11288,账紧塞 +11289,反光安全服 +11290,防尘服 +11291,防化服 +11292,防静电服 +11293,防酸碱工作服 +11294,阻燃服 +11295,电动送风面罩 +11296,电焊口罩 +11297,防尘口罩 +11298,防毒口罩 +11299,呼吸器 +20749,防尘/防毒滤棉 +11300,安全标志 +11301,反光带 +11302,反光镜 +11303,反光锥 +11305,减速带/减速垄 +11306,路障闪灯 +11307,水马/防撞桶 +20846,斜坡垫/台阶垫 +11309,防割手套 +11310,隔热/耐高温手套 +11311,防静电/绝缘手套 +11312,无尘手套 +20775,耐磨手套 +20776,耐酸碱/耐油手套 +20777,其他防护手套 +11313,安全帽 +11314,其他头部/耳部防护用品 +20447,隔音耳塞/耳罩 +11315,灭火器 +11316,灭火毯 +11317,消防服 +11318,消防斧 +11319,消防水带 +11320,消防头盔 +20134,消防靴 +11321,防风镜 +11322,防护镜 +11323,防护面罩 +11324,防紫外线镜 +11325,焊工墨镜 +11326,紧急冲淋装置及洗眼器 +11327,安全带 +11328,安全绳 +11329,安全网 +11330,缓降器 +11331,防砸鞋/防刺穿鞋 +11333,绝缘鞋/防静电鞋 +11334,耐酸碱鞋/防化鞋 +20750,防滑鞋/防水鞋/防油鞋 +20751,耐高温鞋/防火鞋 +20752,其他防护鞋 +11335,孔车刀 +11336,螺丝车刀 +11337,其他车刀 +11338,切断车刀 +11339,圆车刀 +11340,机用铰刀 +11341,手用铰刀 +11342,机用丝锥 +11343,其他丝锥 +11344,手用丝锥 +11345,丝锥扳手 +11346,键槽铣刀 +11347,锯片铣刀 +11348,立铣刀 +11349,面铣刀 +11350,其他铣刀 +11351,三面刃铣刀 +11352,圆柱铣刀 +11353,冲击钻头 +11354,电锤钻头 +11355,扩孔钻 +11356,麻花钻 +11357,其他钻 +11358,中心钻 +11359,侧面孔勾扳手 +11360,单头呆扳手 +11361,管活两用扳手 +11362,活扳手 +11363,棘轮扳手 +11364,快速管子扳手 +11365,两用扳手 +11366,梅花扳手 +11367,内六角扳手 +11368,内四角扳手 +11369,扭力扳手 +11370,其他扳手 +11371,十字柄套筒扳手 +11372,手动套筒扳手 +11373,双头呆扳手 +11374,增力扳手 +11375,标尺 +11376,表坐 +11377,秤 +11378,带表卡尺 +11379,电子数显卡尺 +11380,钢直尺 +11381,机床工具 +11382,角尺 +11383,卷尺 +11384,卡钳 +11385,量规 +11386,量块 +11387,量油尺 +11388,木折尺 +11389,其他测量工具 +11390,千分尺 +11391,塞尺 +11392,水平尺 +11393,线垂 +11394,样板 +11395,游标卡尺 +11396,指示表 +11397,钉冲 +11398,尖冲 +11399,其他 +11400,起钉器 +11401,撬棒 +11402,圆柱冲 +11403,圆锥冲 +11404,中心冲 +11405,安全锤 +11406,安装锤/胶锤 +11407,钣金锤 +11408,锤头 +11409,电工锤 +11410,木工锤 +11411,其他锤 +11412,钳工锤 +11413,石工锤 +11414,羊角锤 +11415,圆头锤 +11416,斩口锤 +11417,锉刨 +11418,刀锉 +11419,金刚锉 +11420,锯锉 +11421,木刨 +11422,刨片 +11423,其他 +11424,钳工锉 +11425,什锦锉 +11426,异形锉 +11427,整形锉 +11428,钟表锉 +11429,玻璃刀 +11430,铲刀 +11431,刀片 +11432,电工刀 +11433,雕刻刀 +11434,刮刀 +11435,管子割刀 +11436,滚花刀 +11437,家用刀 +11438,美工刀 +11439,抹泥刀 +11440,其他刀 +11441,砌刀 +11442,砂轮整形刀 +11443,油灰刀 +11444,重型刀 +11445,测电笔 +11446,电工维修工具 +11447,电烙铁 +11448,电子焊接工具配件 +11449,电子焊接工具套装 +11450,电子钳 +11451,其他电子工具 +11452,线缆工具 +11453,采伐斧 +11454,木工斧 +11455,其他斧类 +11456,石工斧 +11457,消防斧 +11458,工具包 +11459,工具车/手推车/平板车 +11460,工具柜 +11461,零件盒 +11462,五金工具箱 +11464,家用工具组套 +11465,组合套装 +11466,电焊丝 +11467,电焊条 +11468,多彩喷涂枪 +11469,割炬 +11470,焊剂 +11471,焊炬/枪 +11472,焊台 +11473,焊铁/电焊头 +11474,焊锡 +11475,喷笔 +11476,喷灯 +11477,喷火枪 +11478,喷漆枪 +11479,喷枪 +11480,其他焊接喷涂工具 +11481,钎料 +11482,松香 +11483,方箱 +11484,划规 +11485,划线盘 +11486,划线用V形铁 +11487,划针 +11488,墨斗 +11489,墨汁 +11490,其他 +11491,G/F字夹 +11492,扁嘴钳 +11493,剥线钳 +11494,大力钳 +11495,挡圈/卡簧钳 +11496,顶切钳 +11497,钢丝钳 +11498,管钳 +11499,胡桃钳 +11500,尖嘴钳 +11501,紧线钳 +11502,鲤鱼钳 +11503,其他夹持类工具 +11504,铅印钳 +11505,手虎钳 +11506,水泵钳 +11507,水口钳 +11508,台虎钳 +11509,弯嘴钳 +11510,线缆钳 +11511,斜嘴钳 +11512,压线钳 +11513,羊角起钉钳 +11514,鹰嘴断线钳 +11515,圆嘴钳 +11516,桌虎钳 +11517,裁缝剪 +11518,电工剪 +11519,家用剪 +11520,理发剪 +11521,其他剪 +11522,铁皮剪 +11523,园艺剪 +11524,钢锯 +11525,机用锯条 +11526,鸡尾锯 +11527,夹背锯 +11528,锯片 +11529,木工带锯 +11530,其他 +11531,手工锯 +11532,手用钢锯条 +11533,冲击螺丝批 +11534,棘轮螺丝批 +11535,绝缘螺丝批 +11536,螺丝批组套 +11537,其他 +11538,旋具头组套 +11539,IC起拔器 +11540,POP广告用品 +11541,打气筒 +11542,粉斗 +11543,钢丝刷 +11545,静电防护刷 +11546,绝缘布 +11547,其他工具 +11548,油漆刷/滚筒 +19574,瓷砖顶高器 +20810,断丝取出器 +11549,车身维修工具 +11550,底盘维修工具 +11551,电器维修工具 +11552,轮胎维修工具 +11553,其他汽修汽保工具 +11554,润滑设备及工具 +11555,通用汽修组套 +11556,引擎维修工具 +11557,12角套筒 +11558,12角长套筒 +11559,6角套筒 +11560,6角长套筒 +11561,扳杆 +11562,风动密封圈 +11563,花型套筒 +11564,滑杆 +11565,接杆 +11566,接头 +11567,其他 +11568,气动套筒 +11569,旋具套筒 +11570,滚筒刷 +11571,毛笔 +11572,泥板 +11573,排笔 +11574,其它漆工工具 +11575,其它涂刷工具 +11576,羊毛刷 +11577,油画笔 +19575,砂纸/砂架 +11578,木凿 +11579,其他凿 +11580,石工凿 +11581,卷扬机 +11582,其他起重工具 +11583,起重滑车 +11584,起重钳 +11585,千斤顶 +11586,升降台 +19576,吊机 +20304,吊装带 +20305,钢丝绳 +20306,葫芦 +11587,法兰分离器 +11588,钢丝绳切断机 +11589,螺帽破开器 +11590,其他液压工具 +11591,弯排机 +11592,液压冲孔机/切排机 +11593,液压机/油压机 +11594,液压开孔器 +11595,液压螺栓拉伸器 +11596,液压弯管机 +11597,液压装卸车 +11598,餐边柜+酒架 +11599,餐桌+餐椅 +11600,餐桌椅+餐边柜 +11601,餐桌椅+餐边柜+餐车 +11602,餐桌椅+餐边柜+酒柜 +11603,餐桌椅+餐车 +11604,餐桌椅+餐柜+酒柜+餐车 +11605,餐桌椅+酒柜 +11606,餐桌椅+酒柜+餐车 +11607,餐桌椅+酒架 +11608,茶几+电视柜 +11609,沙发+茶几 +11610,沙发+茶几+电视柜 +11611,沙发+茶几+电视柜+角几 +11612,沙发+角几 +11613,隔断+ 鞋柜 +11614,门厅柜+鞋柜 +11615,玄关台+门厅柜+衣帽架 +11616,书桌+写字椅 +11617,书桌椅+书柜 +11618,书桌椅+书柜+休闲沙发 +11619,床+床头柜 +11620,床+床头柜+梳妆台 +11621,床+床头柜+梳妆台+衣柜 +11622,床+床头柜+衣柜 +11623,梳妆台+梳妆凳 +11624,双层床+写字桌 +11625,双层床+写字桌+衣柜 +11626,床插 +11627,床铰链 +11628,床幔 +11629,其它床配件 +11630,抽屉滑轨 +11631,防尘胶条 +11632,柜脚 +11633,铰链(合页) +11634,拉手 +11635,螺丝 +11636,其它柜子配件 +11637,塑料孔塞盖 +11638,液压秆 +11639,衣钩 +11640,衣管托 +11641,衣柜挂衣秆 +11642,移门路轨 +11643,轴承 +11644,单个书柜 +11645,组合书柜 +11649,伞坐 +11650,遮阳伞 +11651,公园桌 +11652,沙滩桌 +11653,公园椅 +11654,庭院凳 +18757,吊床 +18758,躺床 +18759,折叠床 +11655,保丽龙颗粒 +11656,充气泵及修补工具 +11657,泡钉 +11658,沙发脚 +11659,矮凳 +11660,充气凳 +11661,床尾凳 +11662,鼓墩/绣墩 +11663,换鞋凳 +11664,其它凳子 +11665,梳妆凳 +11666,折叠凳 +11669,按摩椅 +11670,餐椅 +11671,电脑椅 +11672,吊篮/吊椅 +11673,交椅 +11674,其它椅子 +11675,沙发椅 +11676,围椅/圈椅 +11677,摇椅 +11678,折叠椅/躺椅 +11679,连接杆 +11680,其它椅子配件 +11681,旋转件 +11682,椅脚 +12600,打水桶 +12601,装鱼桶 +12602,护刀油 +12603,磨刀棒 +12604,磨刀护刀套装 +12605,磨刀石 +12606,暖宝宝贴 +12607,暖手宝 +12608,取暖炉 +12609,保暖棉裤 +12610,保暖棉衣 +12611,保暖棉衣裤套装 +12612,冲锋裤 +12613,冲锋衣 +12614,冲锋衣裤套装 +12615,功能内裤 +12616,功能内衣上装 +12617,功能内衣下装 +12618,内衣裤套装 +12620,户外休闲裤 +12621,户外休闲衣 +12622,户外休闲衣裤套装 +12623,滑雪裤 +12624,滑雪衣 +12625,滑雪衣裤套装 +12626,软壳裤 +12627,软壳衣 +12628,软壳衣裤套装 +12629,速干T恤 +12630,速干背心 +12631,速干衬衣 +12632,速干裤 +12633,速干衣裤套装 +12634,羽绒裤 +12635,羽绒衣 +12636,羽绒衣裤套装 +12637,抓绒裤 +12638,抓绒衣 +12639,抓绒衣裤套装 +12640,充电器 +12641,电池/燃料 +12642,电筒套/灯套 +12643,光杯 +12644,开关帽 +12645,其他 +12646,手电头带 +12647,鞍袋 +12648,包具配件 +12649,解放包/单肩包 +12650,空降包 +12651,其他包 +12652,腿包 +12653,腰包/臂包/拎包 +12654,战术双肩背包 +12655,风镜/眼镜 +12656,军迷帽/平顶帽/解放 +12657,军迷手表 +12658,面罩 +12659,旗帜 +12660,身份牌/金属牌 +12661,头盔 +12662,勋章/臂章/肩章/纪念章 +12663,战术护具/护膝/护腕 +12664,战术手套/军迷手套 +12665,战术腰带/皮带/腰封 +12666,T恤 +12667,衬衫 +12668,风衣 +12669,吉利服/伪装服 +12670,夹克 +12671,军大衣/棉大衣 +12672,毛衣 +12673,迷彩裤/军迷裤/工装裤 +12674,裙子/迷彩裙 +12675,卫衣 +12676,休闲背心 +12677,羽绒衣 +12678,战术背心 +12679,作训外套/套装/野战套装 +12680,冰包 +12681,冰桶 +12682,打火机 +12683,打火石/点火棒 +12684,点火器 +12685,火柴 +12686,穿串器 +12687,烧烤叉 +12688,烧烤夹 +12689,烧烤盘 +12690,烧烤网 +12691,烧烤针 +12692,刷子 +12693,锡纸 +12694,竹签 +12695,固态酒精 +12696,烧烤炭 +12697,野炊气罐及其他 +12698,TSA密码锁 +12699,普通密码锁 +12700,其他安全防盗产品 +12701,晾衣绳 +12702,其他 +12703,转换插头 +12704,漱口水 +12705,牙膏 +12706,牙刷 +12707,发卡 +12708,镜子 +12709,梳子 +12710,沐浴露 +12711,洗发水 +12712,洗面奶 +12713,香皂 +12714,壶套/杯套/保温套 +12715,瓶盖/杯盖 +12716,水袋配件 +12717,水具清洁用品 +12718,皮水袋/皮囊 +12719,塑料水袋 +12720,地钉 +12721,挂钩 +12722,篷布/网纱 +12723,其他配件 +12724,修补包/修补贴 +12725,帐杆/支撑杆/单杆修补管 +12726,帐篷绳 +12727,鼻头 +12728,冲浪板 +12729,冲浪板背袋 +12730,舵 +12731,帆板 +12732,防寒衣/防磨衣 +12733,防滑垫 +12734,滑水板 +12735,滑水板套 +12736,滑水绳 +12737,滑水手套 +12738,滑水鞋 +12739,脚绳 +12740,救生衣 +12741,蜡块 +12742,安全带 +12743,保护器 +12744,抱石垫 +12745,扁带 +12746,冰镐 +12747,冰爪 +12748,冰锥 +12749,挂片 +12750,滑轮 +12751,快挂(专业攀岩用) +12752,镁粉袋 +12753,攀岩绳包 +12754,膨胀钉 +12755,上升器 +12756,绳索 +12757,锁具 +12758,头盔 +12759,下降器 +12760,岩钉 +12761,岩石塞 +12762,滑翔伞 +12763,固定器 +12764,滑雪板 +12765,滑雪护具 +12766,滑雪头盔 +12767,滑雪眼镜 +12768,雪杖 +12769,浮力调整器(BC) +12770,呼吸管/呼吸器 +12771,呼吸调节器 +12772,脚蹼 +12773,面镜 +12774,配重和配重带 +12775,气瓶 +12776,潜水电脑 +12777,潜水浮标 +12778,潜水减压表 +12779,潜水帽 +12780,潜水袜 +12781,潜水箱包 +12782,潜水靴 +12783,潜水仪表 +12784,手蹼 +12785,手写板 +12786,水下推进器 +12787,探棒 +12788,船桨/划艇配件 +12789,独木舟 +12790,帆船 +12791,龙舟 +12792,摩托艇 +12793,皮划艇充气艇 +12794,冰刀刀套 +12795,冰球杆头 +12796,冰球球门 +12797,冰鞋包 +12798,冰鞋套 +12799,单刀片 +12800,花式滑冰网袜 +12801,磨刀机 +12802,磨刀架 +12803,磨刀石 +12804,速滑眼镜 +12805,镖翼/尾翼 +12806,飞镖 +12807,飞镖杆 +12808,飞镖盘/飞镖靶 +12809,飞镖套装 +12810,更多飞镖配件 +12814,更多桌上足球配件 +12815,桌上足球台 +12816,桌上足球用球 +18765,沙狐球 +18766,沙狐球沙 +18767,沙狐球台 +12817,高尔夫杆包 +12818,高尔夫球包 +12819,高尔夫鞋包 +12820,高尔夫衣物包 +12821,打击垫 +12822,动作矫正器 +12823,发球机 +12824,高尔夫球迷用品 +12825,高尔夫鞋钉 +12826,更多 +12827,果岭草 +12828,果岭叉 +12829,果岭洞杯 +12830,果岭旗标 +12831,电动花剑整剑 +12832,花剑剑服 +12833,花剑零配 +12834,花剑面罩 +12835,花剑手套 +12836,花剑套装 +12837,训练花剑条 +12838,训练花剑整剑 +13163,电动花剑条 +12839,电动佩剑条 +12840,电动佩剑整剑 +12841,佩剑剑服 +12842,佩剑零配 +12843,佩剑面罩 +12844,佩剑手套 +12845,佩剑套装 +12846,训练佩剑条 +12847,训练佩剑整剑 +12848,电动重剑条 +12849,电动重剑整剑 +12850,训练重剑条 +12851,训练重剑整剑 +12852,重剑剑服 +12853,重剑零配 +12854,重剑面罩 +12855,重剑手套 +12856,重剑套装 +12857,风筝 +12858,风筝线 +12859,更多风筝配件 +12860,绕线板 +12861,更多空竹配件 +12862,空竹 +12863,空竹抖杆 +12864,门球 +12865,门球包 +12866,门球杆 +12867,门球球门 +12868,专用计时/记分器 +12869,裁判服 +12870,裁判专用哨 +12871,换人牌 +12872,计分牌 +12873,计时工具 +12874,篮球战术板 +12875,T型滑板工具 +12876,穿钉 +12877,滑板/漂移板砂纸 +12878,滑板包 +12879,滑板轮子 +12880,滑板桥 +12881,轮滑包 +12882,轮滑鞋套 +12883,轮滑桩 +12884,漂移板护边 +12885,润滑油 +12886,速滑刀架 +12887,速滑服 +12888,头盔 +12889,直排轮子 +12890,轴承 +12891,家用麻将牌 +12892,旅行简装麻将牌 +12894,麻将垫 +12895,手搓麻将桌 +12896,麻将纸牌 +12897,自动麻将机 +20097,其他麻将配件 +12898,马鞍 +12899,马鞍包/袋 +12900,马鞍垫 +12901,马鞍护理液/鞍油 +12902,马鞍架 +12903,蹬带 +12904,肚带/肚带扣 +12905,号码布 +12906,口衔铁/马嚼/马衔 +12907,量马尺 +12908,马绑腿/马护腿/马护蹄 +12909,马镫 +12910,马镫带/马镫革 +12911,马缰绳 +12912,马蹄测量角尺 +12913,马蹄钉 +12914,马蹄铁 +12915,马眼罩/耳罩/嘴套/护尾 +12916,马衣 +12917,牵马/调教龙头 +12918,前胸带/低头革 +12919,水勒/缰绳/口衔套装 +12920,马球 +12921,马球杆 +12922,马球护膝 +12923,马球帽 +12924,马球靴 +12925,马鞭 +12926,马鞭架 +12927,马刺/马刺带 +12928,马裤/大恰 +12929,马术包/骑士包 +12930,马术风镜 +12931,马术护腿 +12932,马术手套 +12933,马术头盔 +12934,骑士服装 +12935,骑士马靴 +12936,脱鞋器 +12937,清洁保养套装 +12938,清洗剂 +12939,洗胶绵 +12940,更多 +12941,母球定位器 +12942,皮头削 +12943,皮头压制器 +12944,台球刷 +12945,刀 +12946,更多剑道配件 +12947,剑 +12948,剑道服 +12949,更多空手道配件 +12950,空手道道带 +12951,空手道服 +12952,空手道护具 +12953,空手道练习靶 +12954,空手道手套 +12955,拳击服 +12956,更多拳击配件 +12957,拳击护具 +12958,拳击擂台 +12959,拳击沙袋 +12960,拳击手套 +12961,拳击头盔 +12962,拳击鞋 +12963,沙袋架 +12964,速度球/发泄球 +12965,更多柔道配件 +12966,柔道垫 +12967,柔道服 +12968,柔道腰带 +12969,更多摔跤配件 +12970,摔跤布袋 +12971,摔跤垫 +12972,摔跤服 +12973,摔跤鞋 +12974,更多跆拳道配件 +12975,跆拳道包 +12976,跆拳道表演板 +12977,跆拳道场馆垫 +12978,跆拳道道带 +12979,跆拳道服 +12980,跆拳道鞋 +12981,跆拳道脚靶 +12982,更多太极配件 +12983,太极拂尘 +12984,太极服 +12985,太极棍 +12986,太极剑 +12987,太极柔力球 +12988,太极扇 +12989,太极鞋 +12990,裁判台 +12991,裁判椅 +12992,裁判专用哨 +12993,更多 +12994,计时工具 +12995,铁饼链球插牌 +12996,安全员警戒线 +12997,场地测量尺 +12998,场地吸水器 +12999,撑杆跳插斗 +13000,道次墩 +13001,更多 +13002,划线车 +13003,平砂板 +13004,铅球抵趾板 +13005,助跳板 +13006,高弹力橡筋 +13007,固腕支架 +13008,六角球/反应球 +13009,网球框 +13010,网球练习器 +13011,网球网 +13012,运动毛巾 +13013,芭蕾舞服 +13014,芭蕾舞护腿袜/护具 +13015,芭蕾舞配件 +13016,芭蕾舞鞋 +13017,芭蕾舞演出服 +13018,藏族舞服 +13019,藏族舞配饰 +13020,藏族舞鞋 +13021,草裙 +13022,草裙舞配饰 +13023,草裙舞套装 +13024,朝鲜舞服 +13025,朝鲜舞配饰 +13026,朝鲜舞鞋 +13027,傣族舞服 +13028,傣族舞配饰 +13029,肚皮舞配饰 +13030,肚皮舞上装 +13031,肚皮舞套装(演出服) +13032,肚皮舞下装 +13033,肚皮舞鞋 +13034,肚皮舞腰链 +13035,钢管舞服 +13036,钢管舞钢管 +13037,钢管舞鞋 +13041,广场舞半身裙 +13042,广场舞裤 +13043,广场舞连衣裙 +13044,广场舞配件 +13045,广场舞上装 +13046,广场舞套装 +13047,广场舞鞋 +13048,健美操道具 +13049,健美操上装 +13050,健美操套装 +13051,健美操下装 +13052,健美操鞋 +13053,街舞服装 +13054,街舞配件 +13055,街舞鞋 +13065,更多啦啦队配饰 +13066,啦啦队彩绘 +13067,啦啦队彩球 +13068,啦啦队服 +13069,啦啦队头饰 +13070,摩登舞配饰 +13071,摩登舞上装 +13072,摩登舞套装(含演出服) +13073,摩登舞下装 +13074,摩登舞鞋 +13076,踢踏舞服 +13077,踢踏舞配饰 +13078,踢踏舞鞋 +13079,体操比赛服 +13080,体操道具 +13081,体操服 +13082,体操鞋 +13083,现代舞服装 +13084,现代舞配饰 +13085,现代舞鞋 +13086,新疆舞配饰 +13087,新疆舞鞋 +13088,秧歌舞服 +13089,秧歌舞配饰 +13090,秧歌舞鞋 +13091,古典舞服 +13092,古典舞配饰 +13093,古典舞鞋 +13038,更多舞蹈服装 +13039,更多舞蹈配饰 +13040,更多舞鞋 +14687,爵士舞道具/配件 +14688,爵士舞服装 +14689,爵士舞鞋 +14690,拉丁舞练习套装 +14691,拉丁舞配件 +14692,拉丁舞上装 +14693,拉丁舞下装 +14694,拉丁舞鞋 +14695,拉丁舞演出服 +13094,更多游泳装备 +13095,鼻夹 +13096,比基尼头花/胸花 +13097,冲浪板 +13098,充气床 +13099,充气沙发 +13100,充气设备 +13101,充气水球/戏水球 +13102,打水板/浮板 +13103,耳塞 +13104,防雾剂/帖 +13105,护耳贴 +13106,护脐贴 +13107,脚蹼 +13108,沙滩外套 +13109,沙滩针织衫 +13110,手臂浮圈 +13111,手蹼 +13112,水温计/温度计 +13113,水下MP3 +13114,水中拉力带 +13115,泳衣胸垫 +13116,游泳浮标 +13117,浴巾/吸水巾 +13118,遮阳帽/沙滩帽 +13119,专用呼吸管 +13120,瑜伽t恤 +13121,瑜伽背心 +13122,瑜伽短裙 +13123,瑜伽连体衣 +13124,瑜伽内衣 +13125,瑜伽套装 +13126,瑜伽外套 +13127,瑜伽长裤 +13128,瑜伽中/短裤 +13129,穿线机及配件 +13130,发力练习器 +13131,防滑粉 +13132,球鞋袋 +13133,羽毛球挂件 +13134,羽毛球网架/网柱 +13135,羽拍袋 +13136,羽拍护线管 +13137,裁判服 +13138,裁判徽章 +13139,裁判巡边旗 +13140,裁判专用哨 +13141,更多 +13142,红黄牌 +13143,换人牌 +13144,计分牌 +13145,计时工具 +13146,挑边器 +13147,充气装备 +13148,跳栏/跳格梯 +13149,鞋子收纳袋 +13150,袖标 +13151,障碍物/标志物 +13152,装备袋 +13156,场地自行车 +13157,宠物自行车 +13158,更多 +13159,广告自行车 +13160,速降自行车 +13161,斜躺自行车 +13162,越野公路车 +14560,安神补脑 +14561,补气补血 +14562,健脾益肾 +14563,小儿肠胃 +14564,小儿感冒 +14565,小儿维矿 +14566,白发脱发 +14567,抗病毒类 +14568,抗菌消炎 +14569,皮脂汗腺 +14570,癣症 +14571,鼻 +14572,耳 +14573,口 +14574,咽喉 +14575,眼 +14578,国际儿科药品 +14579,国际风湿骨伤药品 +14580,国际妇科药品 +14581,国际解热镇痛用药 +14582,国际男科药品 +14583,国际皮肤科药品 +14584,国际五官用药 +14585,国际眩晕晕车药品 +20793,国际补益安神 +20794,国际肠胃用药 +20795,国际肝胆药品 +20796,国际感冒咳嗽用药 +20797,国际维矿物质药品 +14586,国际避孕套 +14587,国际口罩 +14588,国际体温计类 +14589,国际血糖用品 +14590,国际血压仪器 +14591,国际医用用具 +14592,国际诊断试纸 +14593,国际助听器 +15535,汽车背带 +15536,汽车座椅 +14891,口水巾 +14892,三角巾 +14893,食饭兜 +14894,手帕 +14895,吸汗巾/垫背巾 +14896,小围嘴 +14910,被套 +14911,被子 +15470,唇部护理套装 +15471,唇部磨砂膏 +15472,唇部精华 +15473,唇膜 +15474,面膜粉 +15475,面膜 +15476,乳房护理套装 +15477,乳房精油 +15478,乳晕护理 +15479,乳房喷雾 +15480,乳房乳霜 +15481,乳房精华 +15482,按摩油 +15483,颈膜 +15484,沐浴露 +15485,身体护理套装 +15486,身体喷雾 +15487,身体皂 +15488,手部磨砂膏 +15489,爽身粉 +15490,身体磨砂膏 +15491,身体乳霜 +15492,纤体绷带 +15493,浴盐 +15494,足部磨砂膏 +15495,足膜 +15496,手部乳霜 +15497,手膜 +15498,手部护理套装 +15499,手部磨砂膏 +15500,洗手液 +15501,眼部乳霜 +15502,眼部精华 +15503,眼部护理套装 +15504,眼胶 +15505,眼膜 +15556,财经类报纸订阅 +15557,IT类报纸订阅 +15558,军事类报纸订阅 +15559,其它类报纸订阅 +15560,体育类报纸订阅 +15561,新闻类报纸订阅 +15562,音乐类报纸订阅 +15563,保健类期刊订阅 +15564,财经类期刊订阅 +15565,服饰类期刊订阅 +15566,IT类期刊订阅 +15567,旅游类期刊订阅 +15568,其它类期刊订阅 +15569,汽车类期刊订阅 +15570,体育类期刊订阅 +15571,音乐类期刊订阅 +15681,畜牧/养殖 +15682,林业 +15683,农业基础科学 +15684,园艺 +15685,渔业 +15747,财富 +15748,读者文摘 +15749,福布斯 +15750,国家地理 +15751,人物 +15752,时代周刊 +15785,初级会计职称考试 +15786,财税外贸保险类职称考试其它 +15787,国际会计师专业资格考试 +15788,跟单员 +15789,会计从业资格考试 +15790,经济专业技术资格 ( 经济师 ) +15791,美国管理会计师考试 +15792,统计专业技术资格考试 +15793,英国特许公认会计师ACCA +15794,中级会计职称考试 +15795,注册会计师考试 +15796,注册审计师执业资格考试 +15797,注册税务师考试 +15798,注册统计师考试 +15799,证券从业资格考试 +15800,Adobe认证 +15801,Cisco认证 +15802,计算机软件专业技术资格和水平 +15803,计算机考试其它 +15804,Microsoft认证 +15805,Oracle认证 +15806,全国计算机应用技术NIT +15807,全国计算机等级考试 +15808,SUN认证 +15809,系统分析员 +15810,城市规划师考试 +15811,二级建筑师考试 +15812,建筑考试其他 +15813,全国一级建造师考试 +15814,全国二级建造师考试 +15815,一级建筑师考试 +15816,大学教材 +15817,小学教材 +15818,中学教材 +15819,导游员资格考试 +15820,电子商务师 +15821,公关员资格考试 +15822,教师资格考试 +15823,秘书资格证书考试 +15824,企业培训师 +15825,人力资源管理师 +15826,物业管理员 +15827,物流师 +15828,执业考试其它 +15829,德语考试 +15830,法语考试 +15831,公共英语/PET +15832,管理类研究生报考/GMAT +15833,剑桥商务英语/BEC +15834,其它外语考试 +15835,日语考试 +15836,TOEIC +15837,托福/TOEFL +15838,研究生报考/GRE +15839,英语口译资格考试 +15840,英语口语考试 +15841,英语四六级 +15842,英语翻译资格考试 +15843,雅思/IELTS +15844,英语三级 +15845,专业英语四八级 +15846,职称英语 +15847,护士考试 +15848,卫生资格考试 +15849,医药卫生类职称考试其它 +15850,药学考试 +15851,中国营养师 +15852,执业医师 +15853,高考 +15854,高考名校教材 +15855,高考试题汇编 +15856,小学升初中 +15857,中考 +15875,大洋洲史 +15876,非洲史 +15877,美洲史 +15878,欧洲史 +15879,世界通史 +15880,亚洲 +15881,当代史(1919-1949) +15882,近现代史(1840-1919) +15883,明清史 +15884,宋辽金元史 +15885,隋唐五代十国 +15886,三国两晋南北朝 +15887,先秦史 +15888,中国通史 +15889,战国秦汉 +15943,德语 +15965,俄语 +15966,法语 +15967,其它语系 +15968,日语 +15948,翻译 +15949,教材 +15950,求职英语 +15951,商务英语 +15952,生活英语 +15953,双语读物 +15954,听力/口语 +15955,行业/职业英语 +15956,娱乐/休闲英语 +15957,英语学习方法 +15958,英语语法 +15959,英语口语 +15960,英语词汇 +15961,英语翻译 +15962,英语写作 +15963,英语学术著作 +15964,专著 +16007,非洲/大洋洲文学小说 +16008,美国/美洲文学小说 +16009,日韩文学/亚洲文学 +16010,英国文学/欧洲文学 +16123,动物 +16124,地震 +16125,河流 +16126,海洋 +16127,海洋生物 +16128,环境保护/治理 +16129,昆虫 +16130,科普读物其它 +16131,历史学 +16132,鸟类 +16133,气象 +16134,人类 +16135,生态 +16136,星体观测 +16137,植物 +16138,自然灾害 +16268,男式情趣内裤 +16269,女式情趣内裤 +16300,厕所 +16301,笼子 +16302,木屑 +16303,其它 +16304,秋千 +16305,散热板 +16306,食盆 +16307,喂食器 +16308,窝 +16309,浴房 +16310,浴沙 +16311,小宠保健品 +16312,小宠医疗用品 +16327,宠物服装 +16328,发饰 +16329,领结 +16427,床 +16428,垫子 +16460,笼子 +16461,其他 +16462,秋千 +16463,喂食器 +16500,?水温计 +16501,?温控设备 +16502,?造景/装饰 +16503,?照明器材 +16504,pH计 +16505,冲氧泵 +16506,定时器/自控系统 +16507,二氧化碳设备 +16508,肥料 +16509,孵化器 +16510,过滤设备 +16511,其它水族用具设备 +16512,潜水泵 +16513,杀菌消毒设备 +16514,生态瓶/创意缸/桌面微景缸 +16515,水草 +16516,喂食器 +16517,鱼缸/水族箱 +16518,鱼缸清洁用具 +20185,热水瓶 +20186,热水瓶内胆 +20187,热水瓶外壳 +16606,瓷器套装 +16607,家用瓷器 +16608,江中杯 +16609,调羹/饭勺 +16610,牙签筒 +16706,手提秤/挂秤 +16707,台秤 +20519,厨房秤/计量秤配件 +16708,厨房墙壁置物架/厨房墙壁挂 +16709,厨房置物架/角架 +16710,刀架 +16711,锅盖架 +16712,冰格/制冰袋 +16713,刨冰机/碎冰机 +16714,微波炉手套 +16715,微波炉专用盒 +20706,炉罩/煤气防风罩 +16716,米桶/米缸 +16717,密封罐 +16718,调味瓶罐 +16719,油壶 +16720,打蛋器 +16721,蛋清分离器 +16722,切蛋器 +20712,转蛋器 +16723,寿司帘 +16724,寿司套件/料理套件 +16733,菜刀 +16734,厨房雕刻刀 +16735,多功能刀 +16736,冷冻调理刀 +16737,面包刀 +16738,全套厨房刀具 +16739,蔬果刨丝器/瓜果刀 +16740,水果削皮器 +16741,特殊用途刀 +16742,鱼鳞刨 +16743,斩骨刀 +16744,炒锅 +16745,炖锅/炖煲/汤煲 +16746,锅盖 +16747,锅组套装 +16748,火锅 +16749,煎锅/平底锅 +16750,奶锅 +16751,汽锅 +16752,砂锅/石锅 +16753,烧水壶 +16754,汤锅 +16755,压力锅/高压锅 +16756,蒸格 +16757,蒸锅 +16758,饭勺 +16759,锅铲 +16760,煎铲 +16761,漏勺 +16762,木铲 +16763,全套勺铲 +16764,汤勺 +16768,杯子 +16769,裱花嘴/裱花枪/裱花袋 +16770,点心/甜品包装 +16771,擀面杖 +16772,烘焙机 +16773,烘焙模具 +16774,烘焙器具套装 +16775,烘焙用纸 +16776,烤箱 +16777,量秤 +16778,量勺 +16779,面粉筛 +16780,其它烘焙器具 +20715,揉面袋 +20716,揉面垫 +20731,蛋卷机 +20732,烘焙刀/抹刀 +20733,烘焙刮板 +16781,固态酒精 +16782,其他烧烤用品 +16783,烧烤车 +16784,烧烤夹/叉/铲/针 +16785,烧烤架 +16786,烧烤炉 +16787,烧烤盘 +16788,烧烤刷 +16789,烧烤炭 +16790,烧烤网 +16791,烧烤用具套装 +16792,手动鼓风机 +16793,锡纸/油纸 +16827,收纳箱 +16828,医药箱 +16829,CD包 +16830,化妆包 +16831,卡包/证件包 +16832,卫生巾收纳包 +16833,保温包 +16834,便当包 +16835,饭盒袋 +16836,购物袋/环保袋 +16837,其他收纳袋 +16838,收纳挂袋 +16839,压缩袋 +16840,衣物/内衣收纳袋 +20172,礼品袋 +20173,自封袋/封口袋 +16841,笔筒 +16842,牙签筒 +16843,收纳柜 +16844,鞋柜 +16845,衣物收纳柜/简易衣橱 +16846,CD盒 +16847,内衣收纳盒 +16848,其他收纳盒 +16849,食物收纳盒 +16850,首饰盒 +16851,文具收纳盒 +16852,鞋盒 +16853,牙签盒 +16854,药盒 +16855,纸巾盒 +16856,桌面收纳盒 +20075,化妆品收纳盒 +16857,CD架 +16858,红酒架 +16859,首饰架 +16860,纸巾架 +16861,购物篮 +16862,其他收纳篮 +16863,提菜篮 +16864,脏衣篮 +16865,卡套 +16866,纸巾套 +16899,挂壁式 +16900,落地式 +20478,除尘纸/滚筒 +20479,衣物除尘滚/粘毛滚 +16972,除尘掸 +16973,掸头 +16974,垃圾架 +16975,垃圾桶 +16976,扫把 +16977,扫把头 +16978,厨房用刷 +16979,床刷 +16980,精密仪器刷 +16981,其它 +16982,卫生间用刷 +16983,衣物用刷 +16984,尘推头 +16985,胶棉拖把头 +16986,其他配件 +16987,条状拖把头 +16988,拖把桶 +18083,柜镜/梳妆镜 +18084,落地镜 +18085,双面镜 +18086,浴室镜 +20393,花洒底座/支架 +20394,花洒软管 +17120,怀炉 +17121,怀炉专用油 +17122,怀炉套 +17123,裁缝刀剪 +17124,厨房剪刀 +17125,家用剪刀 +17126,美发刀剪 +17127,园艺刀剪 +17128,艾灸袋 +17129,手动按摩器 +17131,按摩滚轮 +17132,束腿带 +17133,塑身腰腹带 +17278,通条 +17279,压棒及相关工具 +17280,烟刀 +17281,烟斗包 +17282,烟斗清洁用品 +17283,烟斗架 +17284,烟斗 +17409,活性炭 +17410,甲醛清除剂 +17411,甲醛检测仪 +20284,商用擦手纸 +20285,商用大盘卷纸 +17558,笔搁 +17559,车挂 +17560,发饰 +17561,戒指扳指 +17562,颈饰 +17563,手镯手链 +17564,烟嘴 +17565,珠宝半成品 +17566,珠宝奇石 +17567,笔搁 +17568,车挂 +17569,发饰 +17570,戒指扳指 +17571,颈饰 +17572,手镯手链 +17573,烟嘴 +17574,珠宝半成品 +17575,珠宝奇石 +17576,笔搁 +17577,车挂 +17578,发饰 +17579,戒指扳指 +17580,颈饰 +17581,手镯手链 +17582,烟嘴 +17583,珠宝半成品 +17584,珠宝奇石 +17585,笔搁 +17586,车挂 +17587,发饰 +17588,戒指扳指 +17589,颈饰 +17590,手镯手链 +17591,烟嘴 +17592,珠宝半成品 +17593,珠宝奇石 +17594,笔搁 +17595,车挂 +17596,发饰 +17597,戒指扳指 +17598,颈饰 +17599,手镯手链 +17600,烟嘴 +17601,珠宝半成品 +17602,珠宝奇石 +17603,笔搁 +17604,车挂 +17605,发饰 +17606,戒指扳指 +17607,颈饰 +17608,手镯手链 +17609,烟嘴 +17610,珠宝半成品 +17611,珠宝奇石 +17612,笔搁 +17613,车挂 +17614,发饰 +17615,戒指扳指 +17616,颈饰 +17617,手镯手链 +17618,烟嘴 +17619,珠宝半成品 +17620,珠宝奇石 +17621,笔搁 +17622,车挂 +17623,发饰 +17624,戒指扳指 +17625,颈饰 +17626,手镯手链 +17627,烟嘴 +17628,珠宝半成品 +17629,珠宝奇石 +17630,笔搁 +17631,车挂 +17632,发饰 +17633,戒指扳指 +17634,颈饰 +17635,手镯手链 +17636,烟嘴 +17637,珠宝半成品 +17638,珠宝奇石 +17639,笔搁 +17640,车挂 +17641,发饰 +17642,戒指扳指 +17643,颈饰 +17644,手镯手链 +17645,烟嘴 +17646,珠宝半成品 +17647,珠宝奇石 +17648,车挂 +17649,发饰 +17650,戒指扳指 +17651,颈饰 +17652,手镯手链 +17653,烟嘴 +17654,珠宝半成品 +17655,珠宝奇石 +17660,手镯手链 +17656,车饰 +17657,发饰 +17658,戒指扳指 +17659,颈饰 +17661,烟嘴 +17662,珠宝半成品 +17663,珠宝奇石 +17664,发饰 +17665,戒指扳指 +17666,颈饰 +17667,手镯手链 +17668,烟嘴 +17669,珠宝半成品 +17670,珠宝奇石 +17751,花艺包装盒 +17752,花艺包装纸 +17753,花艺缎带 +17754,花艺纱网/纺织布 +17755,玻璃纸 +17756,彩带 +17757,花杆 +17758,花托 +17759,花心 +17760,剪刀 +17761,胶带 +17762,胶枪 +17763,胶水 +17764,模具 +17765,钳 +17766,手揉纸 +17767,树叶 +17768,铁丝 +17769,皱纹纸 +17770,铲子 +17771,锄头 +17772,耙子 +17773,电磁阀 +17774,阀门箱 +17775,感应器 +17776,过滤器 +17777,控制器 +17778,千秋架 +17779,取水阀 +17780,10米清洗套装 +17781,15米清洗套装 +17782,20米清洗套装 +17783,30米清洗套装 +17784,地埋散射喷头 +17785,地埋旋转喷头 +17786,高压清洗机 +17787,接头等配件 +17788,清洗刷 +17789,水车架 +17790,水枪 +17791,?雾化微喷/滴灌设备 +17792,常用简易接头 +17793,毛管/PE管 +17794,湿度计 +17795,温度计 +17796,园艺检测仪 +17797,?喷泉/水景景观喷头 +17798,?塑料摇臂喷头 +17799,金属摇臂喷头 +17800,剪刀 +17801,手工锯 +17802,芽接刀 +17894,贝司弦 +17895,班卓琴弦 +17896,拨片/拨片套 +17897,背带钮 +17898,变调夹 +17899,电吉他弦 +17900,单块效果器 +17901,吊架 +17902,调音器 +17903,古典吉他弦 +17904,滑棒/指套 +17905,吉他效果器配件 +17906,吉他连接线 +17907,吉他背带 +17908,吉他背包/琴盒 +17909,吉他电源 +17910,吉他合成器 +17911,脚凳 +17912,民谣吉他弦 +17913,曼陀铃弦 +17914,清洁保护品 +17915,拾音器 +17916,上弦器 +17917,弦枕 +17918,弦柱 +17919,综合效果器 +17920,肩垫 +17921,拉弦板 +17922,琴托 +17923,琴码 +17924,提琴盒/包 +17925,提琴弓 +17926,提琴弦 +17927,微调 +17928,弦钮 +17929,指板 +17930,板鼓 +17931,花盆鼓 +17932,排鼓 +17933,堂鼓 +17934,铜鼓 +17935,细腰鼓 +17936,象脚鼓 +17937,腰鼓 +17938,秧歌鼓 +17939,战鼓 +17940,低音锣 +17941,虎音锣 +17942,京锣 +17943,开道锣 +17944,苏锣 +17945,手锣 +17946,武锣 +17947,云锣 +17948,舟山锣 +17949,巴乌 +17950,尺八 +17951,笛子 +17952,管子 +17953,葫芦笙 +17954,葫芦丝 +17955,芦笙 +17956,笙 +17957,唢呐 +17958,陶笛 +17959,埙 +17960,箫 +17961,弹布尔 +17962,冬不拉 +17963,古琴 +17964,古筝 +17965,箜篌 +17966,柳琴 +17967,琵琶 +17968,秦琴 +17969,阮 +17970,热瓦普 +17971,三弦 +17972,扬琴 +17973,月琴 +17974,艾捷克 +17975,板胡 +17976,低音胡 +17977,二胡 +17978,高胡 +17979,革胡 +17980,京二胡 +17981,京胡 +17982,马头琴 +17983,马骨胡 +17984,四胡 +17985,椰胡 +17986,中胡 +17987,坠琴 +17988,梆子 +17989,镲锅 +17990,川钹 +17991,大铙 +17992,大钹 +17993,大顶钹 +17994,广钹 +17995,军镲 +17996,快板 +17997,拍板 +17998,碰钟 +17999,其它民族乐器 +18000,萨巴依 +18001,水镲 +18002,铜书板 +18003,腰鼓镲 +18004,秧歌镲 +18005,钹类 +18006,卡林巴/拇指琴 +18007,木琴/钟琴 +18008,其它西洋乐器 +18009,竖琴 +18010,巴松/大管 +18011,大号 +18012,单簧管 +18013,短笛 +18014,口琴 +18015,卡祖笛 +18016,萨克斯风 +18017,双簧管 +18018,竖笛 +18019,小号 +18020,圆号 +18021,长号 +18022,长笛 +18023,贝司-木贝司 +18024,贝司-电贝司 +18025,班卓琴 +18026,大提琴 +18027,低音提琴/倍大提琴 +18028,吉他-民谣吉他 +18029,吉他-电吉他 +18030,吉他-古典吉他 +18031,吉他-电箱吉他 +18033,尤克里里/小吉他 +18034,中提琴 +18755,小提琴 +18035,电子琴 +18036,风琴 +18038,口风琴 +18039,手卷钢琴 +18040,数码钢琴 +18041,手风琴 +18042,邦戈鼓 +18043,电子鼓 +18044,非洲鼓 +18045,架子鼓/爵士鼓 +18046,静音鼓 +18047,康佳鼓 +18048,卡洪鼓/箱鼓 +18049,小军鼓 +18120,公共空间设计 +18121,全案设计 +18122,软装设计 +18123,硬装设计 +18124,空气质量检测 +18125,石材放射检测 +18126,空气质量治理 +20324,美甲美睫 +20325,美容皮肤管理 +20326,纹眉纹绣 +20327,纤体SPA +18527,胶水 +18528,假睫毛辅助工具 +18529,镊子 +18530,修眉刀 +18531,睫毛夹 +18532,眉卡 +18533,其他眼眉工具 +18881,创可贴/创口贴 +18882,急救毯 +18883,其他急救防护用品 +18884,疝气带 +18885,伤口辅料 +18892,便厕用具 +18893,拐杖 +18894,颈椎牵引器 +18895,其他康复辅助器械 +18896,私处护理 +18897,吸痰器 +18898,止鼾器 +18935,病床/护理床 +18936,床上护理垫 +18937,导尿包/集尿器 +18945,齿科器械 +18946,脱脂棉消毒刷 +18947,洗耳球 +18948,阴道冲洗器 +18952,叩诊锤 +18953,其他基础诊察器械及配件 +18954,听诊器 +18955,压舌板 +18956,医用放大镜 +18962,拔罐器具 +18963,刮痧器具 +18964,其它中医器械 +18965,针灸器具"; + #endregion + + + + #region 拼多多一级分类 + private static string jsonCaiId = "{\"success\":true,\"errorCode\":1000000,\"errorMsg\":null,\"result\":[{\"id\":17412,\"name\":\"饰品/流行首饰/时尚饰品\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":16901,\"name\":\"家庭/个人清洁工具\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":17671,\"name\":\"鲜花速递/花卉仿真/绿植园艺\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":5906,\"name\":\"数码相机/单反相机/摄像机\",\"notice\":\"二手商品请放置在二手类目。\",\"stapleName\":[\"数码电器\"]},{\"id\":16155,\"name\":\"农机/农具/农膜\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":5921,\"name\":\"智能设备\",\"notice\":\"二手商品请放置在二手类目。\",\"stapleName\":[\"数码电器\"]},{\"id\":16676,\"name\":\"厨房/烹饪用具\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":2603,\"name\":\"办公用品\",\"notice\":\"\",\"stapleName\":[\"数码电器\"]},{\"id\":17455,\"name\":\"珠宝/钻石/翡翠/黄金\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":18482,\"name\":\"彩妆/香水/美妆工具\",\"notice\":\"\",\"stapleName\":[\"美容个护\"]},{\"id\":8508,\"name\":\"流行男鞋\",\"notice\":\"运动品牌请勿错放到此类目\",\"stapleName\":[\"服饰箱包\"]},{\"id\":8509,\"name\":\"女鞋\",\"notice\":\"运动品牌请勿错放到此类目\",\"stapleName\":[\"服饰箱包\"]},{\"id\":16192,\"name\":\"畜牧/养殖物资\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":6209,\"name\":\"个人护理保健\",\"notice\":\"\",\"stapleName\":[\"数码电器\"]},{\"id\":5955,\"name\":\"厨房电器\",\"notice\":\"\",\"stapleName\":[\"数码电器\"]},{\"id\":2629,\"name\":\"文化用品\",\"notice\":\"书籍类商品请勿放在此类目;二手商品请放到二手类目。\",\"stapleName\":[\"数码电器\"]},{\"id\":16209,\"name\":\"农用物资\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":14933,\"name\":\"童鞋/婴儿鞋/亲子鞋\",\"notice\":\"\",\"stapleName\":[\"母婴玩具\"]},{\"id\":8538,\"name\":\"箱包皮具/女包/男包\",\"notice\":\"\",\"stapleName\":[\"服饰箱包\"]},{\"id\":16989,\"name\":\"居家日用\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":17249,\"name\":\"烟品/打火机/瑞士军刀\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":5217,\"name\":\"古董/邮币/字画/收藏\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":9313,\"name\":\"床上用品\",\"notice\":\"\",\"stapleName\":[\"家纺家具家装\"]},{\"id\":19298,\"name\":\"婴童尿裤\",\"notice\":\"\",\"stapleName\":[\"母婴玩具\"]},{\"id\":9314,\"name\":\"电子/电工\",\"notice\":\"\",\"stapleName\":[\"家纺家具家装\"]},{\"id\":9315,\"name\":\"基础建材\",\"notice\":\"\",\"stapleName\":[\"家纺家具家装\"]},{\"id\":9316,\"name\":\"家居饰品\",\"notice\":\"\",\"stapleName\":[\"家纺家具家装\"]},{\"id\":9317,\"name\":\"家装灯饰光源\",\"notice\":\"\",\"stapleName\":[\"家纺家具家装\"]},{\"id\":6758,\"name\":\"酒类\",\"notice\":\"\",\"stapleName\":[\"食品保健\"]},{\"id\":9318,\"name\":\"家装主材\",\"notice\":\"\",\"stapleName\":[\"家纺家具家装\"]},{\"id\":9319,\"name\":\"居家布艺\",\"notice\":\"\",\"stapleName\":[\"家纺家具家装\"]},{\"id\":9320,\"name\":\"全屋定制\",\"notice\":\"\",\"stapleName\":[\"家纺家具家装\"]},{\"id\":14697,\"name\":\"奶粉/辅食/营养品/零食\",\"notice\":\"\",\"stapleName\":[\"母婴玩具\"]},{\"id\":9321,\"name\":\"商业/办公家具\",\"notice\":\"此类目放置商用及办公家具,家用家具请勿放此类目。\",\"stapleName\":[\"家纺家具家装\"]},{\"id\":9322,\"name\":\"特色手工艺\",\"notice\":\"\",\"stapleName\":[\"家纺家具家装\"]},{\"id\":9323,\"name\":\"五金工具\",\"notice\":\"\",\"stapleName\":[\"家纺家具家装\"]},{\"id\":9324,\"name\":\"住宅家具\",\"notice\":\"\",\"stapleName\":[\"家纺家具家装\"]},{\"id\":2933,\"name\":\"3C数码配件\",\"notice\":\"\",\"stapleName\":[\"数码电器\"]},{\"id\":14966,\"name\":\"童装/婴儿装/亲子装\",\"notice\":\"\",\"stapleName\":[\"母婴玩具\"]},{\"id\":5752,\"name\":\"影音电器\",\"notice\":\"二手商品请放置在二手类目。\",\"stapleName\":[\"数码电器\"]},{\"id\":6785,\"name\":\"保健食品/膳食营养补充食品\",\"notice\":\"需提交食品流通许可证或食品生产许可证\",\"stapleName\":[\"食品保健\"]},{\"id\":17285,\"name\":\"洗护清洁剂/卫生巾/纸/香薰\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":8583,\"name\":\"内衣裤袜\",\"notice\":\"内衣裤袜、家居服请放此类目。\",\"stapleName\":[\"服饰箱包\"]},{\"id\":6536,\"name\":\"咖啡/麦片/冲饮\",\"notice\":\"需提交食品流通许可证或食品生产许可证\",\"stapleName\":[\"食品保健\"]},{\"id\":17803,\"name\":\"乐器/吉他/钢琴/配件\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":18574,\"name\":\"美容美体仪器\",\"notice\":\"\",\"stapleName\":[\"美容个护\"]},{\"id\":6290,\"name\":\"网络设备\",\"notice\":\"二手商品请放置在二手类目。\",\"stapleName\":[\"数码电器\"]},{\"id\":14740,\"name\":\"尿片/洗护/喂哺/推车床\",\"notice\":\"此类目只放置宝宝用品,孕产妇用品勿放。\",\"stapleName\":[\"母婴玩具\"]},{\"id\":16794,\"name\":\"收纳整理\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":7323,\"name\":\"电子元器件市场\",\"notice\":\"二手商品请放置在二手类目。\",\"stapleName\":[\"数码电器\"]},{\"id\":16288,\"name\":\"宠物/宠物食品及用品\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":11683,\"name\":\"电动车/配件/交通工具\",\"notice\":\"\",\"stapleName\":[\"运动户外\"]},{\"id\":16548,\"name\":\"餐饮具\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":11684,\"name\":\"户外/登山/旅行野营用品\",\"notice\":\"\",\"stapleName\":[\"运动户外\"]},{\"id\":11685,\"name\":\"运动/瑜伽/健身/球类\",\"notice\":\"\",\"stapleName\":[\"运动户外\"]},{\"id\":11686,\"name\":\"运动包/户外包/配件\",\"notice\":\"\",\"stapleName\":[\"运动户外\"]},{\"id\":11687,\"name\":\"运动服/休闲服\",\"notice\":\"\",\"stapleName\":[\"运动户外\"]},{\"id\":11688,\"name\":\"运动鞋\",\"notice\":\"\",\"stapleName\":[\"运动户外\"]},{\"id\":18601,\"name\":\"美发护发/假发\",\"notice\":\"\",\"stapleName\":[\"美容个护\"]},{\"id\":11689,\"name\":\"自行车/骑行装备/零配件\",\"notice\":\"\",\"stapleName\":[\"运动户外\"]},{\"id\":15543,\"name\":\"书籍/杂志/报纸\",\"notice\":\"在此一级类目发布商品需提供相应资质\",\"stapleName\":[\"家居生活\"]},{\"id\":8634,\"name\":\"腕表眼镜\",\"notice\":\"隐形眼镜/护理液请不要放在此类目。\",\"stapleName\":[\"服饰箱包\"]},{\"id\":6586,\"name\":\"茶\",\"notice\":\"\",\"stapleName\":[\"食品保健\"]},{\"id\":6076,\"name\":\"大家电\",\"notice\":\"\",\"stapleName\":[\"数码电器\"]},{\"id\":5834,\"name\":\"手机\",\"notice\":\"二手商品请放置在二手类目。\",\"stapleName\":[\"数码电器\"]},{\"id\":18637,\"name\":\"美容护肤/美体/精油\",\"notice\":\"\",\"stapleName\":[\"美容个护\"]},{\"id\":7629,\"name\":\"摩托车/装备/配件\",\"notice\":\"二手商品请放置在二手类目。\",\"stapleName\":[\"汽配摩托\"]},{\"id\":5839,\"name\":\"二手数码\",\"notice\":\"\",\"stapleName\":[\"数码电器\"]},{\"id\":7639,\"name\":\"汽车/用品/配件/改装\",\"notice\":\"二手商品请放置在二手类目。\",\"stapleName\":[\"汽配摩托\"]},{\"id\":5851,\"name\":\"电脑\",\"notice\":\"二手商品请放置在二手类目。\",\"stapleName\":[\"数码电器\"]},{\"id\":8669,\"name\":\"服饰配件\",\"notice\":\"\",\"stapleName\":[\"服饰箱包\"]},{\"id\":6883,\"name\":\"传统滋补品\",\"notice\":\"\",\"stapleName\":[\"食品保健\"]},{\"id\":6630,\"name\":\"粮油米面/南北干货/调味品\",\"notice\":\"\",\"stapleName\":[\"食品保健\"]},{\"id\":15083,\"name\":\"玩具/童车/益智/积木/模型\",\"notice\":\"\",\"stapleName\":[\"母婴玩具\"]},{\"id\":8172,\"name\":\"水产肉类/新鲜蔬果/熟食\",\"notice\":\"\",\"stapleName\":[\"水果生鲜\"]},{\"id\":17134,\"name\":\"节庆用品/礼品\",\"notice\":\"\",\"stapleName\":[\"家居生活\"]},{\"id\":239,\"name\":\"男装\",\"notice\":\"女装、童装、男士箱包、内衣裤袜、运动户外、配件类请勿放\",\"stapleName\":[\"服饰箱包\"]},{\"id\":6128,\"name\":\"生活电器\",\"notice\":\"\",\"stapleName\":[\"数码电器\"]},{\"id\":8439,\"name\":\"女装/女士精品\",\"notice\":\"请使用商品实物拍摄图片;童装、男装、女士箱包、内衣、鞋、配件请勿放。\",\"stapleName\":[\"服饰箱包\"]},{\"id\":15356,\"name\":\"孕产妇用品/孕妇装/营养\",\"notice\":\"\",\"stapleName\":[\"母婴玩具\"]},{\"id\":6398,\"name\":\"零食/坚果/特产\",\"notice\":\"\",\"stapleName\":[\"食品保健\"]}]}"; + #endregion + + private static Dictionary dicMainCidName = new Dictionary(); + public static string MainCidName(long cid) + { + if (dicMainCidName.Count <= 0) + { + JObject jb = JObject.Parse(jsonCaiId); + var result = jb["result"]; + foreach (var re in result) + { + CidModel cidm = new CidModel(); + long cidtemp = re["id"].ParseToLong(); + cidm.CidName = re["name"].ParseToString(); + cidm.MainCidName = BaseRegex.GetMatchRegexString(re["stapleName"].ToString(), "\"([\\w\\W]+?)\""); + dicMainCidName.Add(cidtemp, cidm); + } + } + if (dicMainCidName.ContainsKey(cid)) + { + return dicMainCidName[cid].MainCidName; + } + else + { + return "其他"; + } + } + + private static Dictionary DicCidName = new Dictionary(); + public static string CidName(long cid) + { + if (DicCidName.Count <= 0) + { + string[] ArrayCidName = CidNameAll.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); + foreach (string str in ArrayCidName) + { + string[] arrAn = str.Split(','); + DicCidName.Add(arrAn[0].ParseToLong(), arrAn[1]); + } + } + if (DicCidName.ContainsKey(cid)) + { + return DicCidName[cid]; + } + else + { + return "其他"; + } + } + + + } + public class CidModel + { + public string CidName { get; set; } + public string MainCidName { get; set; } + + } +} diff --git a/Work/Business/ProductMappingBLL/ProductMapping.cs b/Work/Business/ProductMappingBLL/ProductMapping.cs new file mode 100644 index 0000000..b76bab5 --- /dev/null +++ b/Work/Business/ProductMappingBLL/ProductMapping.cs @@ -0,0 +1,3637 @@ +using AllBase; +using AllBase.Helper; +using AllBase.Model.Param.ToolsManage; +using NaiBa.Util.Extension; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; +using Work; +using Work.Api; +using Work.Business.ProductMappingBLL; +using Work.CollectClass; + +namespace Work.Business.ProductMappingBLL +{ + public class ProductMapping + { + public bool isRun { get; set; } = false; + public string Name { get; set; } = "数据转换"; + public decimal addPercent { get; set; } = 30; + public decimal addPrice { get; set; } = 10; + public Form ParentFrom { get; set; } + private bool isUseProxyIP { get; set; } + /// + /// 是否使用资源包 + /// + public bool IsResourcePack { get; set; } = false; + /// + /// 是否跳过预售 + /// + public bool IsSkipPreSale { get; set; } = true; + + /// + /// 下架等的商品集合。记录下来下次有同id的直接跳过 + /// + private Dictionary dicOffSaleProduct = new Dictionary(); + + /// + /// 转换控制锁,防止高并发 + /// + private static readonly object _lockerMapping = new object(); + /// + /// 待转换商品 + /// + private List lstProductParam = new List(); + /// + /// 已转换商品 + /// + private List lstProductInfo = new List(); + public static List luceneUrlList = new List(); + private CancellationTokenSource m_cancellationTokenSource; + private bool isDelOldData = false; + private ProductMappingExportInfo prodInfo = null; + + public static Dictionary luceneUrlDic = new Dictionary(); + public static int luceneUrlPropCount = 0; + /// + /// 获取转换完成的产品字符串 + /// + public string productStr + { + get + { + if (prodInfo == null) + return ""; + + var pIdStr = prodInfo.ProductId.ToString(); + if (prodInfo.From == "拼多多") + { + if (pIdStr.Length >= 2) + { + var idStrNew = pIdStr[pIdStr.Length - 1] + pIdStr.Substring(1, pIdStr.Length - 2) + pIdStr[0]; + pIdStr = idStrNew; + } + } + string text = "\"" + (prodInfo.From == "拼多多" ? "搜款网" : prodInfo.From) + (prodInfo.dataSoure == 1 ? "净化" : "") + "\"," + "\"" + pIdStr + "\"," + + "\"" + prodInfo.ProductTitle?.Trim('\'').Trim('"') + "\",\"0\",\"0\",\"" + prodInfo.CatId + "\"," + + "\"" + ConvertMappingFromTypeToId(prodInfo.FakeMappingFrom) + "\"," + "\"" + prodInfo.FakeMappingProductId + "\"," + + "\"" + this.addPercent + "%+" + this.addPrice + "\"," + + "\"" + prodInfo.FakeMappingProductMinPrice + ":" + prodInfo.FakeMappingProductMaxPrice + ":" + "0" + "\"," + "\"" + prodInfo.MappingQuery + "\""; + return text; + } + } + + public void GetFakeFrom(ProductMappingImportParam prod, Form form, bool _isUseProxyIp, ProductCollectBase _product = null, decimal _addPercent = 30, decimal _addPrice = 10) + { + GetFakeFromx(true, "", prod, form, _isUseProxyIp, _product, _addPercent, _addPrice); + } + public void GetFakeSearchFrom(string clientId, ProductMappingImportParam prod, Form form, bool _isUseProxyIp, ProductCollectBase _product = null, decimal _addPercent = 30, decimal _addPrice = 10) + { + GetFakeFromx(false, clientId, prod, form, _isUseProxyIp, _product, _addPercent, _addPrice); + } + public static bool ischeck = false; + /// + /// 获取虚拟上家 + /// + /// + /// + public void GetFakeFromx(bool cache, string clientId, ProductMappingImportParam prod, Form form, bool _isUseProxyIp, ProductCollectBase _product = null, decimal _addPercent = 30, decimal _addPrice = 10) + { + if (prod == null) + return; + //if (form == null) + // return; + string error_area = "0"; + this.isRun = true; + this.ParentFrom = form; + this.isUseProxyIP = _isUseProxyIp; + this.addPercent = _addPercent; + this.addPrice = _addPrice; + this.lstProductParam.Add(prod); + + m_cancellationTokenSource = new CancellationTokenSource(); + + try + { + error_area = "10001"; + + // 随机重连一次ADSL + //if (ChangeIPForm.sIpFormInstance != null && GlobalConfig.sADSLAccountParam.IsUseAdsl) + //{ + // if (Randomx.GetId(50) == 1 && !ChangeIPForm.IsConnecting) + // { + // var isChangeIpSuccess = ChangeIPForm.sIpFormInstance.workOnOnce(); + // } + //} + ProductCollectBase product = _product; + if (product == null && (prod.From == "搜款网" || prod.From == "拼多多")) + { + if (!isRun) + return; + try + { + TaobaoProductBase tp = new TaobaoProductBase(); + tp.FromId = Convert.ToInt64(prod.RealProductId); + if (prod.From == "搜款网") + tp.FromType = "拼多多"; + else + tp.FromType = prod.From; + tp.GoodsId = tp.FromId; + int updateIpTimes = 0; + + updateIpFinish: + PinduoduoProductCollect pinduoduoProductCollect = new PinduoduoProductCollect(Name, tp); + PinduoduoProductCollect.TempIds.Clear(); + //PinduoduoProductCollect.ConPddTokenList = GlobalConfig.PinDuoDuoTokenList; todo + pinduoduoProductCollect.IsUseProxyIP = this.isUseProxyIP; + pinduoduoProductCollect.IsResourcePack = IsResourcePack; + pinduoduoProductCollect.IsUsedForShuJuZhuanHuan = true; + pinduoduoProductCollect.IsSkipPreSale = IsSkipPreSale; + if (IsResourcePack) + { + //Func canContinue = PinDuoDuoHelperTemp.CanContinueCollectFunc((token) => { return token.ProductDetailStatus == TokenStatus.Valid; }, null, IsResourcePack, m_cancellationTokenSource); + //if (!canContinue()) + //{ + // prod.MappingResult = "转换失败,没有可以打码的Token"; + // ShowMappingResult(prod); + // isRun = false; + // return; + //} + } + bool isOverTime = true; + var t = Task.Run(() => + { + pinduoduoProductCollect.Get(); + isOverTime = false; + }); + t.Wait(90000); + product = pinduoduoProductCollect.pb; + if (isOverTime) + { + prod.MappingResult = "转换失败,获取商品超时"; + ShowMappingResult(prod); + return; + } + // 如果无法获取拼多多信息了,重连 + if (pinduoduoProductCollect.IsNeedLogin) + { + //if (ChangeIPForm.sIpFormInstance != null && GlobalConfig.sADSLAccountParam.IsUseAdsl && updateIpTimes < 2) + //{ + // updateIpTimes++; + // if (ChangeIPForm.IsConnecting) + // { + // while (ChangeIPForm.IsConnecting) + // { + // Thread.Sleep(100); + // } + // goto updateIpFinish; + // } + // MappingVDianBLL.IsChangeAdsl = true; + // var isChangeIpSuccess = ChangeIPForm.sIpFormInstance.workOnOnce(); + // MappingVDianBLL.IsChangeAdsl = false; + // if (isChangeIpSuccess) + // goto updateIpFinish; + //} + // prod.MappingResult = "转换失败,需要登录拼多多或登录Token!"; + //if (ChangeIPForm.sIpFormInstance != null && GlobalConfig.sADSLAccountParam.IsUseAdsl) + // prod.MappingResult = "转换失败,可能是商品不存在或拨号无法获取,请尝试使用Token"; + //ShowMappingResult(prod); + //return; + } + if (pinduoduoProductCollect.IsUseProxyIPGetProductFailure) + { + prod.MappingResult = "转换失败,通过代理获取当前商品失败"; + ShowMappingResult(prod); + return; + } + if (isUseProxyIP && pinduoduoProductCollect.IsProxyOverdue) + { + prod.MappingResult = "代理ip套餐已过期"; + ShowMappingResult(prod); + return; + } + if (pinduoduoProductCollect.IsNotExist) + { + prod.MappingResult = "转换失败,商品不存在"; + ShowMappingResult(prod); + if (!dicOffSaleProduct.Keys.Contains(prod.RealProductId + "|" + prod.From)) + dicOffSaleProduct.Add(prod.RealProductId + "|" + prod.From, prod.MappingResult); + return; + } + if (pinduoduoProductCollect.IsOnSale == false) + { + if (pinduoduoProductCollect.IsSaleOut) + { + prod.MappingResult = "转换失败,商品已售罄"; + } + else if (pinduoduoProductCollect.IsPresale) + { + prod.MappingResult = "转换失败,预售商品不能转换"; + } + else + { + prod.MappingResult = "转换失败,可能是商品下架或商品不存在"; + } + if (!dicOffSaleProduct.Keys.Contains(prod.RealProductId + "|" + prod.From)) + dicOffSaleProduct.Add(prod.RealProductId + "|" + prod.From, prod.MappingResult); + // 下架直接显示 + ShowMappingResult(prod); + return; + } + if (pinduoduoProductCollect.IsResultError) + { + prod.MappingResult = "转换失败,可能是商品不存在或服务器出错"; + if (!dicOffSaleProduct.Keys.Contains(prod.RealProductId + "|" + prod.From)) + dicOffSaleProduct.Add(prod.RealProductId + "|" + prod.From, prod.MappingResult); + ShowMappingResult(prod); + return; + } + } + catch + { + prod.MappingResult = "转换失败,该商品转换异常:获取拼多多商品异常"; + ShowMappingResult(prod); + return; + } + } + else if (product == null && prod.From == "淘宝") + { + if (!isRun) + return; + bool isOverTime = true; + try + { + ProductCollectBase proInfo = new ProductCollectBase + { + from_url = "https://item.taobao.com/item.htm?id=" + prod.RealProductId, + from_id = Convert.ToInt64(prod.RealProductId), + }; + TaobaoMobileCollect goodsFromTaobaoInfo = new TaobaoMobileCollect(proInfo); + //isOverTime = !t.Wait(180000); + Task.Run(() => + { + int times = 0; + while (isOverTime) + { + times++; + if (times == 30) + { + if (string.IsNullOrEmpty(prod.MappingResult)) + { + prod.MappingResult = "当前采集速度慢,请稍候..."; + ShowMappingResult(prod); + break; + } + } + Thread.Sleep(1000); + } + }); + goodsFromTaobaoInfo.Get(); + isOverTime = false; + prod.MappingResult = " "; + ShowMappingResult(prod); + + product = goodsFromTaobaoInfo.Product; + if (goodsFromTaobaoInfo.IsDown) + { + prod.MappingResult = "转换失败,可能是商品已下架或商品不存在"; + if (!dicOffSaleProduct.Keys.Contains(prod.RealProductId + "|" + prod.From)) + dicOffSaleProduct.Add(prod.RealProductId + "|" + prod.From, prod.MappingResult); + // 下架直接显示 + ShowMappingResult(prod); + return; + } + } + catch (Exception ex) + { + isOverTime = false; + prod.MappingResult = "转换失败,该商品转换异常:获取淘宝商品异常"; + ShowMappingResult(prod); + return; + } + } + else if (product == null && prod.From == "阿里巴巴") + { + if (!isRun) + return; + ProductCollectBase proInfo = new ProductCollectBase + { + from_url = "https://detail.1688.com/offer/" + prod.RealProductId + ".html", + from_id = Convert.ToInt64(prod.RealProductId), + }; + AlibabaProductGet goodsFrom1688Info = new AlibabaProductGet(proInfo); + bool isOverTime = true; + var t = Task.Run(() => + { + goodsFrom1688Info.Get(); + isOverTime = false; + }); + t.Wait(60000); + product = goodsFrom1688Info.Product; + product.from_title = product.from_title.Trim('\'').Trim('"'); + product.name = product.name.Trim('\'').Trim('"'); + if (isOverTime) + { + prod.MappingResult = "转换失败,获取商品超时"; + ShowMappingResult(prod); + return; + } + if (!goodsFrom1688Info.IsOnSale) + { + prod.MappingResult = "转换失败,商品不存在或不可展示"; + ShowMappingResult(prod); + return; + } + } + else if (product == null && prod.From == "京喜") + { + if (!isRun) + return; + AAA: + ProductCollectBase proInfo = new ProductCollectBase + { + from_url = "https://item.m.jd.com/product/" + prod.RealProductId + ".html", + from_id = Convert.ToInt64(prod.RealProductId), + }; + JingXiCollect tm = new JingXiCollect(proInfo); + bool isOverTime = true; + var t = Task.Run(() => + { + tm.Get(); + isOverTime = false; + }); + t.Wait(600000); + if (ParentFrom != null && JingXiCollect.VerifyCodeUrl.Length > 0 && JingXiCollect.VerifyCodeUrl.Contains("wqs.jd.com/item/spider_check.shtml")) + { + //ParentFrom.Invoke(new Action(() => + //{ + // CollectVerifyForm f = new CollectVerifyForm(); + // f.url = JingXiCollect.VerifyCodeUrl; + // f.ShowDialog(); + //})); + //if (JingXiCollect.VerifyCodeUrl == "") + //{ + // tm.IsVerify = false; + // goto AAA; + //} + //JingXiCollect.VerifyCodeUrl = ""; + } + product = tm.Product; + product.from_title = product.from_title.Trim('\'').Trim('"'); + product.name = product.name.Trim('\'').Trim('"'); + if (product.content == "") + { + } + if (isOverTime) + { + prod.MappingResult = "转换失败,获取商品超时"; + ShowMappingResult(prod); + return; + } + if (JingXiCollect.IsProxyOverdue) + { + prod.MappingResult = "请检查ip套餐是否过期"; + ShowMappingResult(prod); + this.StopMapping(); + return; + } + if (tm.IsVerify) + { + prod.MappingResult = "京喜商品采集受限,建议使用代理IP采集"; + ShowMappingResult(prod); + Thread.Sleep(8000); + //this.btnStopMapping_Click(null, null); + return; + } + if (!string.IsNullOrEmpty(JingXiCollect.VerifyCodeUrl)) + { + //IeForm ie = new IeForm(); + //ie.UrlString = JingXiCollect.VerifyCodeUrl; + ////ie.UrlString = "https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F"; // 登录京东后获取买手cookie查看受限商品详情 + //ie.Title = "京喜验证"; + //ie.ShowDialog(); + //JingXiCollect.VerifyCodeUrl = ""; + goto AAA; + // prod.MappingResult = "转换失败,商品采集需要验证"; + prod.MappingResult = "采集中断,请选择代理ip后继续"; + ShowMappingResult(prod); + this.StopMapping(); + // BaseMsgForm.ShowInfo("采集中断,请选择代理ip后继续"); + return; + } + if (!tm.IsOnSale) + { + prod.MappingResult = "转换失败,商品不存在或不可展示"; + ShowMappingResult(prod); + return; + } + } + + error_area = "10002"; + if (product != null && !string.IsNullOrEmpty(product.content) && (!string.IsNullOrEmpty(product.image) || product.Images.Count > 0)) + { + // 确定待转换商品图片 + prod.Image = !string.IsNullOrEmpty(product.image) ? product.image : product.Images[0]; + if (prod.Image.StartsWith("https:")) + prod.Image = prod.Image.Substring(6); + else if (prod.Image.StartsWith("http:")) + prod.Image = prod.Image.Substring(5); + // 确定待转换商品标题 + if (string.IsNullOrEmpty(prod.ProductTitle)) + prod.ProductTitle = product.name; + #region 标题过滤功能 + //如果标题过滤开启 + if (CollectFilterList.IsOpenTittleFilter) + { + error_area = "10003"; + if (CollectFilterList.TittleFilterList != null && CollectFilterList.TittleFilterList.Count > 0) + { + //标题有词包含在过滤集合中 则剔除 + //if (CollectFilterList.TittleFilterList.Where(p => product.name.Contains(p)).Any()) + foreach (string str in CollectFilterList.TittleFilterList) + { + if (prod != null && prod.ProductTitle.Contains(str)) + { + prod.MappingResult = "标题包含违规词\"" + str + "\",已成功过滤"; + ShowMappingResult(prod); + return; + } + } + } + } + #endregion + + // 由于多多进宝等类目输出错误,暂时强制修改拼多多来源商品类目 + if (prod.From == "搜款网" || prod.From == "拼多多") + { + error_area = "10004"; + prod.CatId = product.cat4 != 0 ? product.cat4.ToString() : product.cat3.ToString(); + if (string.IsNullOrEmpty(prod.MainCid)) + { + prod.MainCid = product.main_cid.ToString(); + } + } + // 获取商品类目 + if (string.IsNullOrEmpty(prod.CatId) || string.IsNullOrEmpty(prod.MainCid) || prod.CatId == "0" || prod.MainCid == "0") + { + error_area = "10005"; + if (prod.From == "搜款网" || prod.From == "拼多多") + GetCatId(prod); + else + GetCatId(prod, product.cat_id == 0 ? 1 : product.cat_id, "0"); + } + + //if (string.IsNullOrEmpty(prod.CatId) || string.IsNullOrEmpty(prod.MainCid) || prod.CatId == "0" || prod.MainCid == "0") + //{ + // prod.MappingResult = "转换失败,类目识别失败。"; + // return; + //} + + // 裂变商品商品类目赋值 + var prodParams = lstProductParam.Where(l => l.RealProductId == prod.RealProductId && l.From == prod.From); + foreach (var p in prodParams) + { + if (string.IsNullOrEmpty(p.CatId)) + p.CatId = prod.CatId; + if (string.IsNullOrEmpty(p.MainCid)) + p.MainCid = prod.MainCid; + } + + var maxPrice = 0M; + var minPrice = 999999M; + if (product.SkuMaps.Count > 0) + { + error_area = "10006"; + + foreach (var sku in product.SkuMaps) + { + if (maxPrice < sku.price) + maxPrice = sku.price; + if (minPrice > sku.price) + minPrice = sku.price; + } + } + else + { + minPrice = maxPrice = product.price; + } + prod.MinPrice = Convert.ToInt32(minPrice * 100); + prod.MaxPrice = Convert.ToInt32(maxPrice * 100); + // 计算上家理论价格,将邮费加到总价,加一角钱便于拼宝宝上货取整 + var minAfterPrice = (minPrice * (addPercent + 100M) / 100M + addPrice + 0.1M) * 100M * 0.93M + product.express_price * 100M; + var maxAfterPrice = (maxPrice * (addPercent + 100M) / 100M + addPrice + 0.1M) * 100M * 0.93M + product.express_price * 100M; + + error_area = "10007"; + // 搜索新的上家并显示出来 + if (cache) + GetFakeCacheFrom(prod, product, minAfterPrice, maxAfterPrice, ref error_area); + else + GetFakeSearchFrom(clientId, prod, product, minAfterPrice, maxAfterPrice, ref error_area); + error_area = "10009"; + } + else + { + error_area = "10008"; + + if (string.IsNullOrEmpty(product.image) && (product.Images == null || product.Images.Count == 0)) + { + prod.MappingResult = "转换失败,未找到商品主图或详情图"; + } + else if (string.IsNullOrEmpty(product.content) && !string.IsNullOrEmpty(product.name)) + { + prod.MappingResult = "转换失败,上家商品详情为空跳过"; + } + else if (string.IsNullOrEmpty(prod.MappingResult)) + { + if (prod.From == "拼多多" || prod.From == "搜款网") + prod.MappingResult = "转换失败,可能是不满足转换条件或Token失效"; + else + prod.MappingResult = "转换失败,可能是不满足转换条件"; + } + + ShowMappingResult(prod); + + error_area = "10010"; + return; + } + } + catch (Exception ex) + { + StackTrace st = new StackTrace(ex, true); + StackFrame[] frames = st.GetFrames(); + string Mssg = ""; + var frame = frames.LastOrDefault(); +#if DEBUG + if (frame != null) + { + //Console.WriteLine("{0}:{1}({2},{3})", frame.GetFileName(), frame.GetMethod().Name, frame.GetFileLineNumber(), frame.GetFileColumnNumber()); + var fileName = frame.GetFileName(); + fileName = fileName?.Split('\\').LastOrDefault()?.Split('.').FirstOrDefault(); + + Mssg = "" + fileName + " ----- "; + Mssg += frame.GetMethod().Name; + Mssg += "(" + frame.GetFileLineNumber() + ":"; + Mssg += frame.GetFileColumnNumber() + ")"; + } + prod.MappingResult = "转换失败,该商品转换异常:" + Mssg + " ----- code:" + error_area; +#else + prod.MappingResult = "转换失败,该商品转换异常:code:" + error_area; +#endif + ShowMappingResult(prod); + LogSave.Add("商品转换出现异常:" + ex.Message + "-" + ex.StackTrace); + } + } + + public void GetFakeFromIds(List> content, int type, bool cache, string clientId, ProductMappingImportParam prod, Form form, bool _isUseProxyIp, ProductCollectBase _product = null, decimal _addPercent = 30, decimal _addPrice = 10) + { + if (prod == null) + return; + //if (form == null) + // return; + string error_area = "0"; + this.isRun = true; + this.ParentFrom = form; + this.isUseProxyIP = _isUseProxyIp; + this.addPercent = _addPercent; + this.addPrice = _addPrice; + this.lstProductParam.Add(prod); + + m_cancellationTokenSource = new CancellationTokenSource(); + + try + { + error_area = "10001"; + + // 随机重连一次ADSL + //if (ChangeIPForm.sIpFormInstance != null && GlobalConfig.sADSLAccountParam.IsUseAdsl) + //{ + // if (Randomx.GetId(50) == 1 && !ChangeIPForm.IsConnecting) + // { + // var isChangeIpSuccess = ChangeIPForm.sIpFormInstance.workOnOnce(); + // } + //} + ProductCollectBase product = _product; + if (product == null && (prod.From == "搜款网" || prod.From == "拼多多")) + { + if (!isRun) + return; + try + { + TaobaoProductBase tp = new TaobaoProductBase(); + tp.FromId = Convert.ToInt64(prod.RealProductId); + if (prod.From == "搜款网") + tp.FromType = "拼多多"; + else + tp.FromType = prod.From; + tp.GoodsId = tp.FromId; + int updateIpTimes = 0; + + updateIpFinish: + PinduoduoProductCollect pinduoduoProductCollect = new PinduoduoProductCollect(Name, tp); + PinduoduoProductCollect.TempIds.Clear(); + //PinduoduoProductCollect.ConPddTokenList = GlobalConfig.PinDuoDuoTokenList; todo + pinduoduoProductCollect.IsUseProxyIP = this.isUseProxyIP; + pinduoduoProductCollect.IsResourcePack = IsResourcePack; + pinduoduoProductCollect.IsUsedForShuJuZhuanHuan = true; + pinduoduoProductCollect.IsSkipPreSale = IsSkipPreSale; + if (IsResourcePack) + { + //Func canContinue = PinDuoDuoHelperTemp.CanContinueCollectFunc((token) => { return token.ProductDetailStatus == TokenStatus.Valid; }, null, IsResourcePack, m_cancellationTokenSource); + //if (!canContinue()) + //{ + // prod.MappingResult = "转换失败,没有可以打码的Token"; + // ShowMappingResult(prod); + // isRun = false; + // return; + //} + } + bool isOverTime = true; + var t = Task.Run(() => + { + pinduoduoProductCollect.Get(); + isOverTime = false; + }); + t.Wait(90000); + product = pinduoduoProductCollect.pb; + if (isOverTime) + { + prod.MappingResult = "转换失败,获取商品超时"; + ShowMappingResult(prod); + return; + } + // 如果无法获取拼多多信息了,重连 + if (pinduoduoProductCollect.IsNeedLogin) + { + //if (ChangeIPForm.sIpFormInstance != null && GlobalConfig.sADSLAccountParam.IsUseAdsl && updateIpTimes < 2) + //{ + // updateIpTimes++; + // if (ChangeIPForm.IsConnecting) + // { + // while (ChangeIPForm.IsConnecting) + // { + // Thread.Sleep(100); + // } + // goto updateIpFinish; + // } + // MappingVDianBLL.IsChangeAdsl = true; + // var isChangeIpSuccess = ChangeIPForm.sIpFormInstance.workOnOnce(); + // MappingVDianBLL.IsChangeAdsl = false; + // if (isChangeIpSuccess) + // goto updateIpFinish; + //} + // prod.MappingResult = "转换失败,需要登录拼多多或登录Token!"; + //if (ChangeIPForm.sIpFormInstance != null && GlobalConfig.sADSLAccountParam.IsUseAdsl) + // prod.MappingResult = "转换失败,可能是商品不存在或拨号无法获取,请尝试使用Token"; + //ShowMappingResult(prod); + //return; + } + if (pinduoduoProductCollect.IsUseProxyIPGetProductFailure) + { + prod.MappingResult = "转换失败,通过代理获取当前商品失败"; + ShowMappingResult(prod); + return; + } + if (isUseProxyIP && pinduoduoProductCollect.IsProxyOverdue) + { + prod.MappingResult = "代理ip套餐已过期"; + ShowMappingResult(prod); + return; + } + if (pinduoduoProductCollect.IsNotExist) + { + prod.MappingResult = "转换失败,商品不存在"; + ShowMappingResult(prod); + if (!dicOffSaleProduct.Keys.Contains(prod.RealProductId + "|" + prod.From)) + dicOffSaleProduct.Add(prod.RealProductId + "|" + prod.From, prod.MappingResult); + return; + } + if (pinduoduoProductCollect.IsOnSale == false) + { + if (pinduoduoProductCollect.IsSaleOut) + { + prod.MappingResult = "转换失败,商品已售罄"; + } + else if (pinduoduoProductCollect.IsPresale) + { + prod.MappingResult = "转换失败,预售商品不能转换"; + } + else + { + prod.MappingResult = "转换失败,可能是商品下架或商品不存在"; + } + if (!dicOffSaleProduct.Keys.Contains(prod.RealProductId + "|" + prod.From)) + dicOffSaleProduct.Add(prod.RealProductId + "|" + prod.From, prod.MappingResult); + // 下架直接显示 + ShowMappingResult(prod); + return; + } + if (pinduoduoProductCollect.IsResultError) + { + prod.MappingResult = "转换失败,可能是商品不存在或服务器出错"; + if (!dicOffSaleProduct.Keys.Contains(prod.RealProductId + "|" + prod.From)) + dicOffSaleProduct.Add(prod.RealProductId + "|" + prod.From, prod.MappingResult); + ShowMappingResult(prod); + return; + } + } + catch + { + prod.MappingResult = "转换失败,该商品转换异常:获取拼多多商品异常"; + ShowMappingResult(prod); + return; + } + } + else if (product == null && prod.From == "淘宝") + { + if (!isRun) + return; + bool isOverTime = true; + try + { + ProductCollectBase proInfo = new ProductCollectBase + { + from_url = "https://item.taobao.com/item.htm?id=" + prod.RealProductId, + from_id = Convert.ToInt64(prod.RealProductId), + }; + TaobaoMobileCollect goodsFromTaobaoInfo = new TaobaoMobileCollect(proInfo); + //isOverTime = !t.Wait(180000); + Task.Run(() => + { + int times = 0; + while (isOverTime) + { + times++; + if (times == 30) + { + if (string.IsNullOrEmpty(prod.MappingResult)) + { + prod.MappingResult = "当前采集速度慢,请稍候..."; + ShowMappingResult(prod); + break; + } + } + Thread.Sleep(1000); + } + }); + goodsFromTaobaoInfo.Get(); + isOverTime = false; + prod.MappingResult = " "; + ShowMappingResult(prod); + + product = goodsFromTaobaoInfo.Product; + if (goodsFromTaobaoInfo.IsDown) + { + prod.MappingResult = "转换失败,可能是商品已下架或商品不存在"; + if (!dicOffSaleProduct.Keys.Contains(prod.RealProductId + "|" + prod.From)) + dicOffSaleProduct.Add(prod.RealProductId + "|" + prod.From, prod.MappingResult); + // 下架直接显示 + ShowMappingResult(prod); + return; + } + } + catch (Exception ex) + { + isOverTime = false; + prod.MappingResult = "转换失败,该商品转换异常:获取淘宝商品异常"; + ShowMappingResult(prod); + return; + } + } + else if (product == null && prod.From == "阿里巴巴") + { + if (!isRun) + return; + ProductCollectBase proInfo = new ProductCollectBase + { + from_url = "https://detail.1688.com/offer/" + prod.RealProductId + ".html", + from_id = Convert.ToInt64(prod.RealProductId), + }; + AlibabaProductGet goodsFrom1688Info = new AlibabaProductGet(proInfo); + bool isOverTime = true; + var t = Task.Run(() => + { + goodsFrom1688Info.Get(); + isOverTime = false; + }); + t.Wait(60000); + product = goodsFrom1688Info.Product; + product.from_title = product.from_title.Trim('\'').Trim('"'); + product.name = product.name.Trim('\'').Trim('"'); + if (isOverTime) + { + prod.MappingResult = "转换失败,获取商品超时"; + ShowMappingResult(prod); + return; + } + if (!goodsFrom1688Info.IsOnSale) + { + prod.MappingResult = "转换失败,商品不存在或不可展示"; + ShowMappingResult(prod); + return; + } + } + else if (product == null && prod.From == "京喜") + { + if (!isRun) + return; + AAA: + ProductCollectBase proInfo = new ProductCollectBase + { + from_url = "https://item.m.jd.com/product/" + prod.RealProductId + ".html", + from_id = Convert.ToInt64(prod.RealProductId), + }; + JingXiCollect tm = new JingXiCollect(proInfo); + bool isOverTime = true; + var t = Task.Run(() => + { + tm.Get(); + isOverTime = false; + }); + t.Wait(600000); + if (ParentFrom != null && JingXiCollect.VerifyCodeUrl.Length > 0 && JingXiCollect.VerifyCodeUrl.Contains("wqs.jd.com/item/spider_check.shtml")) + { + //ParentFrom.Invoke(new Action(() => + //{ + // CollectVerifyForm f = new CollectVerifyForm(); + // f.url = JingXiCollect.VerifyCodeUrl; + // f.ShowDialog(); + //})); + //if (JingXiCollect.VerifyCodeUrl == "") + //{ + // tm.IsVerify = false; + // goto AAA; + //} + //JingXiCollect.VerifyCodeUrl = ""; + } + product = tm.Product; + product.from_title = product.from_title.Trim('\'').Trim('"'); + product.name = product.name.Trim('\'').Trim('"'); + if (product.content == "") + { + } + if (isOverTime) + { + prod.MappingResult = "转换失败,获取商品超时"; + ShowMappingResult(prod); + return; + } + if (JingXiCollect.IsProxyOverdue) + { + prod.MappingResult = "请检查ip套餐是否过期"; + ShowMappingResult(prod); + this.StopMapping(); + return; + } + if (tm.IsVerify) + { + prod.MappingResult = "京喜商品采集受限,建议使用代理IP采集"; + ShowMappingResult(prod); + Thread.Sleep(8000); + //this.btnStopMapping_Click(null, null); + return; + } + if (!string.IsNullOrEmpty(JingXiCollect.VerifyCodeUrl)) + { + //IeForm ie = new IeForm(); + //ie.UrlString = JingXiCollect.VerifyCodeUrl; + ////ie.UrlString = "https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F"; // 登录京东后获取买手cookie查看受限商品详情 + //ie.Title = "京喜验证"; + //ie.ShowDialog(); + //JingXiCollect.VerifyCodeUrl = ""; + goto AAA; + // prod.MappingResult = "转换失败,商品采集需要验证"; + prod.MappingResult = "采集中断,请选择代理ip后继续"; + ShowMappingResult(prod); + this.StopMapping(); + // BaseMsgForm.ShowInfo("采集中断,请选择代理ip后继续"); + return; + } + if (!tm.IsOnSale) + { + prod.MappingResult = "转换失败,商品不存在或不可展示"; + ShowMappingResult(prod); + return; + } + } + + error_area = "10002"; + if (product != null && !string.IsNullOrEmpty(product.content) && (!string.IsNullOrEmpty(product.image) || product.Images.Count > 0)) + { + // 确定待转换商品图片 + prod.Image = !string.IsNullOrEmpty(product.image) ? product.image : product.Images[0]; + if (prod.Image.StartsWith("https:")) + prod.Image = prod.Image.Substring(6); + else if (prod.Image.StartsWith("http:")) + prod.Image = prod.Image.Substring(5); + // 确定待转换商品标题 + if (string.IsNullOrEmpty(prod.ProductTitle)) + prod.ProductTitle = product.name; + #region 标题过滤功能 + //如果标题过滤开启 + if (CollectFilterList.IsOpenTittleFilter) + { + error_area = "10003"; + if (CollectFilterList.TittleFilterList != null && CollectFilterList.TittleFilterList.Count > 0) + { + //标题有词包含在过滤集合中 则剔除 + //if (CollectFilterList.TittleFilterList.Where(p => product.name.Contains(p)).Any()) + foreach (string str in CollectFilterList.TittleFilterList) + { + if (prod != null && prod.ProductTitle.Contains(str)) + { + prod.MappingResult = "标题包含违规词\"" + str + "\",已成功过滤"; + ShowMappingResult(prod); + return; + } + } + } + } + #endregion + + // 由于多多进宝等类目输出错误,暂时强制修改拼多多来源商品类目 + if (prod.From == "搜款网" || prod.From == "拼多多") + { + error_area = "10004"; + prod.CatId = product.cat4 != 0 ? product.cat4.ToString() : product.cat3.ToString(); + if (string.IsNullOrEmpty(prod.MainCid)) + { + prod.MainCid = product.main_cid.ToString(); + } + } + // 获取商品类目 + if (string.IsNullOrEmpty(prod.CatId) || string.IsNullOrEmpty(prod.MainCid) || prod.CatId == "0" || prod.MainCid == "0") + { + error_area = "10005"; + if (prod.From == "搜款网" || prod.From == "拼多多") + GetCatId(prod); + else + GetCatId(prod, product.cat_id == 0 ? 1 : product.cat_id, "0"); + } + + //if (string.IsNullOrEmpty(prod.CatId) || string.IsNullOrEmpty(prod.MainCid) || prod.CatId == "0" || prod.MainCid == "0") + //{ + // prod.MappingResult = "转换失败,类目识别失败。"; + // return; + //} + + // 裂变商品商品类目赋值 + var prodParams = lstProductParam.Where(l => l.RealProductId == prod.RealProductId && l.From == prod.From); + foreach (var p in prodParams) + { + if (string.IsNullOrEmpty(p.CatId)) + p.CatId = prod.CatId; + if (string.IsNullOrEmpty(p.MainCid)) + p.MainCid = prod.MainCid; + } + + var maxPrice = 0M; + var minPrice = 999999M; + if (product.SkuMaps.Count > 0) + { + error_area = "10006"; + + foreach (var sku in product.SkuMaps) + { + if (maxPrice < sku.price) + maxPrice = sku.price; + if (minPrice > sku.price) + minPrice = sku.price; + } + } + else + { + minPrice = maxPrice = product.price; + } + prod.MinPrice = Convert.ToInt32(minPrice * 100); + prod.MaxPrice = Convert.ToInt32(maxPrice * 100); + // 计算上家理论价格,将邮费加到总价,加一角钱便于拼宝宝上货取整 + var minAfterPrice = (minPrice * (addPercent + 100M) / 100M + addPrice + 0.1M) * 100M * 0.93M + product.express_price * 100M; + var maxAfterPrice = (maxPrice * (addPercent + 100M) / 100M + addPrice + 0.1M) * 100M * 0.93M + product.express_price * 100M; + + error_area = "10007"; + // 搜索新的上家并显示出来 + if (type == 1) + GetFakeQueueIdCacheFrom(content, prod, product, minAfterPrice, maxAfterPrice, ref error_area); + else + GetFakeQueuetitleCacheFrom(content, prod, product, minAfterPrice, maxAfterPrice, ref error_area); + error_area = "10009"; + } + else + { + error_area = "10008"; + + if (string.IsNullOrEmpty(product.image) && (product.Images == null || product.Images.Count == 0)) + { + prod.MappingResult = "转换失败,未找到商品主图或详情图"; + } + else if (string.IsNullOrEmpty(product.content) && !string.IsNullOrEmpty(product.name)) + { + prod.MappingResult = "转换失败,上家商品详情为空跳过"; + } + else if (string.IsNullOrEmpty(prod.MappingResult)) + { + if (prod.From == "拼多多" || prod.From == "搜款网") + prod.MappingResult = "转换失败,可能是不满足转换条件或Token失效"; + else + prod.MappingResult = "转换失败,可能是不满足转换条件"; + } + + ShowMappingResult(prod); + + error_area = "10010"; + return; + } + } + catch (Exception ex) + { + StackTrace st = new StackTrace(ex, true); + StackFrame[] frames = st.GetFrames(); + string Mssg = ""; + var frame = frames.LastOrDefault(); +#if DEBUG + if (frame != null) + { + //Console.WriteLine("{0}:{1}({2},{3})", frame.GetFileName(), frame.GetMethod().Name, frame.GetFileLineNumber(), frame.GetFileColumnNumber()); + var fileName = frame.GetFileName(); + fileName = fileName?.Split('\\').LastOrDefault()?.Split('.').FirstOrDefault(); + + Mssg = "" + fileName + " ----- "; + Mssg += frame.GetMethod().Name; + Mssg += "(" + frame.GetFileLineNumber() + ":"; + Mssg += frame.GetFileColumnNumber() + ")"; + } + prod.MappingResult = "转换失败,该商品转换异常:" + Mssg + " ----- code:" + error_area; +#else + prod.MappingResult = "转换失败,该商品转换异常:code:" + error_area; +#endif + ShowMappingResult(prod); + LogSave.Add("商品转换出现异常:" + ex.Message + "-" + ex.StackTrace); + } + } + public static bool CompareTitle(string title, string name) + { + if ((name.Length < title.Length + 10) || name.Length <= 30) + { + return true; + } + return false; + } + public void GetFakeQueueIdsCacheFrom(List prods, string mappingFrom = "") + { + try + { + if (!isRun) + return; + //List> mappingResultWd = null; + #region Id缓存,按商品Id获取缓存 + GetFakeCacheIdsWd(prods, ref mappingFrom); + #endregion + } + catch + { + + } + } + public void GetFakeQueueTitlesCacheFrom(List prod, string mappingFrom = "") + { + try + { + if (!isRun) + return; + //List> mappingResultWdTitle = null; + #region Id缓存,按商品Id获取缓存 + MappingVDianCacheBLL.GetFakeCacheQueueVDianTitle(prod, ref mappingFrom); + #endregion + } + catch + { + } + } + + public void GetFakeQueuetitleCacheFrom(List> content, ProductMappingImportParam prod, ProductCollectBase product, decimal minAfterPrice, decimal maxAfterPrice, ref string error_area, + List> mappingResultCache = null, string mappingFrom = "") + { + if (!isRun) + return; + + if (!this.lstProductParam.Contains(prod)) + this.lstProductParam.Add(prod); + string mapping_query = ""; + List> mappingResultNonWd = null; + List> mappingResultWd = null; + List> mappingResultWdTitle = null; + var result = MappingTaoBaoBLL.FilterItems(mappingResultNonWd, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + if (result.Count == 0) + result = MappingTaoBaoBLL.FilterItems(mappingResultWd, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + bool isCheckOnSale = false; + #region 读取微店虚拟上家缓存 + #region 标题缓存,按商品标题MD5获取缓存 + if (result.Count == 0) + { + var title = TrimAndRemoveSpecialText(product?.name); + + mappingResultWdTitle = content; //MappingVDianCacheBLL.GetFakeCacheVDianTitle(title, ref mappingFrom); + result = MappingTaoBaoBLL.FilterItems(mappingResultWdTitle, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + if (mappingResultWdTitle != null && result.Count == 0 && Randomx.GetId(1) == 0) + { + var result2 = new List>(); + foreach (var r in mappingResultWdTitle) + { + result2.Add(new Tuple(r.Item1, r.Item2, (r.Item2 * maxAfterPrice / minAfterPrice).ParseToInt(), "")); + } + result = MappingTaoBaoBLL.FilterItems(result2, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + } + // 按一定比例查询确认商品id和图片缓存老数据对应商品是否已被删除,如果删除,则更新数据库(按较低的比例随机,以防调用过高导致微店响应出问题) + if (isCheckOnSale) + { + bool isUpdateDelete = false; + bool isResultCount = result != null && result.Count > 0; + bool isMappingResultWdTitle = mappingResultWdTitle != null && mappingResultWdTitle.Count > 0; + while (result.Count > 0) + { + Thread.Sleep(1000 + Randomx.GetId(2000)); + var item = result.First(f => f.Item3 == result.Min(s => s.Item3)); + + var itemResult = Work.GetPostTaobaoHtml.GetUrl("https://weidian.com/item.html?itemID=" + item.Item1, "", true, "", "_"); + // 商品被删除了的界面包含以下情况 + if (itemResult.Contains("登录") && !itemResult.Contains("限时折扣价格区域") && !itemResult.Contains("收藏")) + { + isUpdateDelete = true; + result.Remove(item); + //mappingResultWdTitle.Remove(item); + var item2 = mappingResultWdTitle.FirstOrDefault(r => r.Item1 == item.Item1); + if (item2 != null) + mappingResultWdTitle.Remove(item2); + } + else + { + break; + } + } + // 如果有合适的上家商品不用上传新商品了,直接更新缓存服务器 + if (isUpdateDelete && isResultCount && isMappingResultWdTitle) + { + MappingVDianCacheBLL.SaveFakeCacheVDianTitle(mappingResultWdTitle, title, mappingFrom, true); + //var testResult = MappingVDianCacheBLL.GetFakeCacheVDianTitle(title, ref mappingFrom); // 读缓存测试 + } + } + if (result.Count > 0) + { + bool hit = false; + var selectMinItem = MatchMeetTitleLength(title, result, mappingResultWdTitle, out hit); + var resultData = new List>(); + if (selectMinItem != null) + { + foreach (var r in mappingResultWdTitle) + { + if (r.Item1 == selectMinItem.Item1 && hit) + resultData.Add(new Tuple(r.Item1, r.Item2, r.Item3, DateTime.Now.ToString("yyyy-MM-dd"))); + else + resultData.Add(new Tuple(r.Item1, r.Item2, r.Item3, r.Item4)); + } + if (hit) + { + MappingVDianCacheBLL.SaveFakeCacheVDianTitle(resultData, title, mappingFrom); + } + mappingFrom = "微店"; + prod.MappingResourceType = "标题缓存"; + MappingVDianApiBLL.UpDateMappingResultToStatistics("1"); + mapping_query = "1"; + } + else + MappingVDianCacheBLL.SaveFakeCacheVDianTitle(mappingResultWdTitle, title, mappingFrom); + } + } + #endregion + + #endregion + + #region 转换结果显示 + if (result.Count > 0) + { + // 裂变数据 + var prodParams = lstProductParam.Where(l => l.RealProductId == prod.RealProductId && l.From == prod.From); + var selectMinItem = result.First(f => f.Item3 == result.Min(s => s.Item3)); + var tempTitle = ""; + foreach (var p in prodParams) + { + if (!string.IsNullOrEmpty(p.ProductTitle)) + { + tempTitle = ""; + } + + prodInfo = new ProductMappingExportInfo() + { + FakeMappingFrom = mappingFrom, + FakeMappingProductId = selectMinItem.Item1.Split('/')[0], + FakeMappingProductPrice = selectMinItem.Item2, + //ProductDataJson = AllBase.JsonHelper.SerializeObject(pinduoduoProductCollect.pb), + ProductId = p.ProductId, + ProductTitle = p.ProductTitle, + RealProductId = p.RealProductId, + MainCid = p.MainCid, + Image = p.Image, + CatId = p.CatId, + From = p.From, + FakeMappingProductMinPrice = (selectMinItem.Item2 / 100M).ToString("f2"), + FakeMappingProductMaxPrice = (selectMinItem.Item3 / 100M).ToString("f2"), + PostFee = "0", + MappingQuery = mapping_query, + dataSoure = p.dataSoure + }; + if (string.IsNullOrEmpty(prodInfo.ProductTitle)) + { + prodInfo.ProductTitle = tempTitle; + } + if (prodInfo.FakeMappingFrom == "苏宁") + { + prodInfo.FakeMappingVendorId = result.First().Item1.Split('/')[1]; + } + p.MappingResult = prodInfo.MappingResult = "转换成功"; + + if (!isDelOldData) + lstProductInfo.Add(prodInfo); + //lstProductInfoTemp.Add(prodInfo); + // 显示转换成功 + ShowMappingResult(p, prodInfo); + } + } + else + { + if (string.IsNullOrEmpty(prod.MappingResult)) + prod.MappingResult = "转换失败,没有找到合适的转换数据"; + else if (prod.MappingResult.Length > 2000) + prod.MappingResult = prod.MappingResult.Substring(2000); + ShowMappingResult(prod); + } + #endregion + } + + public void GetFakeQueueIdCacheFrom(List> content, ProductMappingImportParam prod, ProductCollectBase product, decimal minAfterPrice, decimal maxAfterPrice, ref string error_area, +List> mappingResultCache = null, string mappingFrom = "") + { + if (!isRun) + return; + if (!this.lstProductParam.Contains(prod)) + this.lstProductParam.Add(prod); + string mapping_query = ""; + List> mappingResultNonWd = null; + List> mappingResultWd = null; + List> mappingResultWdTitle = null; + var result = MappingTaoBaoBLL.FilterItems(mappingResultNonWd, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + if (result.Count == 0) + result = MappingTaoBaoBLL.FilterItems(mappingResultWd, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + #region Id缓存,按商品Id获取缓存 + // 按一定比例查询确认商品id和图片缓存老数据对应商品是否已被删除,如果删除,则更新数据库(按较低的比例随机,以防调用过高导致微店响应出问题) + bool isCheckOnSale = false;//(Randomx.GetId(8) == 8); + if (result.Count == 0) + { + Thread.Sleep(500); + var title = TrimAndRemoveSpecialText(product?.name); + mappingResultWd = content;// GetFakeCacheWd(prod, ref mappingFrom); + result = MappingTaoBaoBLL.FilterItems(mappingResultWd, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + // 按一定比例查询确认商品id和图片缓存老数据对应商品是否已被删除,如果删除,则更新数据库(按较低的比例随机,以防调用过高导致微店响应出问题) + if (isCheckOnSale) + { + bool isUpdateDelete = false; + bool isResultCount = result != null && result.Count > 0; + bool isMappingResultWd = mappingResultWd != null && mappingResultWd.Count > 0; + while (result.Count > 0) + { + Thread.Sleep(1000 + Randomx.GetId(2000)); + var item = result.First(f => f.Item3 == result.Min(s => s.Item3)); + + var itemResult = Work.GetPostTaobaoHtml.GetUrl("https://weidian.com/item.html?itemID=" + item.Item1, "", true, "", "_"); + // 商品被删除了的界面包含以下情况 + if (itemResult.Contains("登录") && !itemResult.Contains("限时折扣价格区域") && !itemResult.Contains("收藏")) + { + isUpdateDelete = true; + result.Remove(item); + mappingResultWd.Remove(item); + } + else + { + break; + } + } + // 如果有合适的上家商品不用上传新商品了,直接更新缓存服务器 + if (isUpdateDelete && isResultCount && isMappingResultWd) + { + SaveFakeCache(mappingResultWd, prod, mappingFrom, false, 0); + } + } + if (result.Count > 0) + { + bool hit = false; + var selectMinItem = MatchMeetTitleLength(title, result, mappingResultWd, out hit); + + var resultData = new List>(); + if (selectMinItem != null) + { + foreach (var r in mappingResultWd) + { + if (r.Item1 == selectMinItem.Item1 && hit) + resultData.Add(new Tuple(r.Item1, r.Item2, r.Item3, DateTime.Now.ToString("yyyy-MM-dd"))); + else + resultData.Add(new Tuple(r.Item1, r.Item2, r.Item3, r.Item4)); + } + if (hit) + { + SaveFakeCache(resultData, prod, mappingFrom, false, 0); + } + prod.MappingResourceType = "上货缓存"; + MappingVDianApiBLL.UpDateMappingResultToStatistics("0"); + mapping_query = "0"; + } + else + SaveFakeCache(mappingResultWd, prod, mappingFrom, false, 0); + } + } + #endregion + + #region 转换结果显示 + if (result.Count > 0) + { + // 裂变数据 + var prodParams = lstProductParam.Where(l => l.RealProductId == prod.RealProductId && l.From == prod.From); + var selectMinItem = result.First(f => f.Item3 == result.Min(s => s.Item3)); + var tempTitle = ""; + foreach (var p in prodParams) + { + if (!string.IsNullOrEmpty(p.ProductTitle)) + { + tempTitle = ""; + } + + prodInfo = new ProductMappingExportInfo() + { + FakeMappingFrom = mappingFrom, + FakeMappingProductId = selectMinItem.Item1.Split('/')[0], + FakeMappingProductPrice = selectMinItem.Item2, + //ProductDataJson = AllBase.JsonHelper.SerializeObject(pinduoduoProductCollect.pb), + ProductId = p.ProductId, + ProductTitle = p.ProductTitle, + RealProductId = p.RealProductId, + MainCid = p.MainCid, + Image = p.Image, + CatId = p.CatId, + From = p.From, + FakeMappingProductMinPrice = (selectMinItem.Item2 / 100M).ToString("f2"), + FakeMappingProductMaxPrice = (selectMinItem.Item3 / 100M).ToString("f2"), + PostFee = "0", + MappingQuery = mapping_query, + dataSoure = p.dataSoure + }; + if (string.IsNullOrEmpty(prodInfo.ProductTitle)) + { + prodInfo.ProductTitle = tempTitle; + } + if (prodInfo.FakeMappingFrom == "苏宁") + { + prodInfo.FakeMappingVendorId = result.First().Item1.Split('/')[1]; + } + p.MappingResult = prodInfo.MappingResult = "转换成功"; + + if (!isDelOldData) + lstProductInfo.Add(prodInfo); + //lstProductInfoTemp.Add(prodInfo); + // 显示转换成功 + ShowMappingResult(p, prodInfo); + } + } + else + { + if (string.IsNullOrEmpty(prod.MappingResult)) + prod.MappingResult = "转换失败,没有找到合适的转换数据"; + else if (prod.MappingResult.Length > 2000) + prod.MappingResult = prod.MappingResult.Substring(2000); + ShowMappingResult(prod); + } + #endregion + } + + + /// + /// 根据图片和标题搜索或微店上传符合拼多多价格条件的虚拟上家 + /// + /// 虚拟上家商品 + /// 原商品 + /// 加价后最低价格 + /// 加价后最高价格 + /// 预加载缓存,暂未使用 + /// 转换来源 + /// 是否是商品同步 + public void GetFakeCacheFrom(ProductMappingImportParam prod, ProductCollectBase product, decimal minAfterPrice, decimal maxAfterPrice, ref string error_area, + List> mappingResultCache = null, string mappingFrom = "", bool isSyncProduct = false) + { + if (!isRun) + return; + + if (!this.lstProductParam.Contains(prod)) + this.lstProductParam.Add(prod); + string mapping_query = ""; + List> mappingResultNonWd = null; + List> mappingResultWd = null; + List> mappingResultWdTitle = null; + var result = MappingTaoBaoBLL.FilterItems(mappingResultNonWd, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + if (result.Count == 0) + result = MappingTaoBaoBLL.FilterItems(mappingResultWd, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + + #region 读取微店虚拟上家缓存 + + #region Id缓存,按商品Id获取缓存 + // 按一定比例查询确认商品id和图片缓存老数据对应商品是否已被删除,如果删除,则更新数据库(按较低的比例随机,以防调用过高导致微店响应出问题) + bool isCheckOnSale = false;//(Randomx.GetId(8) == 8); + if (result.Count == 0 && (1 == 2 || isSyncProduct)) + { + Thread.Sleep(500); + var title = TrimAndRemoveSpecialText(product?.name); + if (string.IsNullOrEmpty(title)) + title = TrimAndRemoveSpecialText(prod?.ProductTitle); + mappingResultWd = GetFakeCacheWd(prod, ref mappingFrom); + result = MappingTaoBaoBLL.FilterItems(mappingResultWd, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + // 按一定比例查询确认商品id和图片缓存老数据对应商品是否已被删除,如果删除,则更新数据库(按较低的比例随机,以防调用过高导致微店响应出问题) + if (isCheckOnSale) + { + bool isUpdateDelete = false; + bool isResultCount = result != null && result.Count > 0; + bool isMappingResultWd = mappingResultWd != null && mappingResultWd.Count > 0; + while (result.Count > 0) + { + Thread.Sleep(1000 + Randomx.GetId(2000)); + var item = result.First(f => f.Item3 == result.Min(s => s.Item3)); + + var itemResult = Work.GetPostTaobaoHtml.GetUrl("https://weidian.com/item.html?itemID=" + item.Item1, "", true, "", "_"); + // 商品被删除了的界面包含以下情况 + if (itemResult.Contains("登录") && !itemResult.Contains("限时折扣价格区域") && !itemResult.Contains("收藏")) + { + isUpdateDelete = true; + result.Remove(item); + mappingResultWd.Remove(item); + } + else + { + break; + } + } + // 如果有合适的上家商品不用上传新商品了,直接更新缓存服务器 + if (isUpdateDelete && isResultCount && isMappingResultWd) + { + SaveFakeCache(mappingResultWd, prod, mappingFrom, false, 0); + } + } + if (result.Count > 0) + { + bool hit = false; + var selectMinItem = MatchMeetTitleLength(title, result, mappingResultWd, out hit); + + var resultData = new List>(); + if (selectMinItem != null) + { + foreach (var r in mappingResultWd) + { + if (r.Item1 == selectMinItem.Item1 && hit) + resultData.Add(new Tuple(r.Item1, r.Item2, r.Item3, DateTime.Now.ToString("yyyy-MM-dd"))); + else + resultData.Add(new Tuple(r.Item1, r.Item2, r.Item3, r.Item4)); + } + if (hit) + { + SaveFakeCache(resultData, prod, mappingFrom, false, 0); + } + prod.MappingResourceType = "上货缓存"; + MappingVDianApiBLL.UpDateMappingResultToStatistics("0"); + mapping_query = "0"; + } + else + SaveFakeCache(mappingResultWd, prod, mappingFrom, false, 0); + } + } + #endregion + + #region 图片缓存,按商品图片MD5获取缓存 + //if (result.Count == 0) + //{ + //var sameResultWd = GetFakeCacheSamePic(prod, product, ref mappingFrom); + //result = MappingTaoBaoBLL.FilterItems(sameResultWd, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + //if (result.Count > 0) + //{ + // prod.MappingResourceType = "上货缓存"; + // MappingVDianApiBLL.UpDateMappingResultToStatistics("0"); + //} + //} + #endregion + + #region 标题缓存,按商品标题MD5获取缓存 + if (result.Count == 0 && (1 == 2 || isSyncProduct)) + { + var title = TrimAndRemoveSpecialText(product?.name); + if (string.IsNullOrEmpty(title)) + title = TrimAndRemoveSpecialText(prod?.ProductTitle); + + mappingResultWdTitle = MappingVDianCacheBLL.GetFakeCacheVDianTitle(title, ref mappingFrom); + result = MappingTaoBaoBLL.FilterItems(mappingResultWdTitle, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + if (mappingResultWdTitle != null && result.Count == 0 && Randomx.GetId(1) == 0) + { + var result2 = new List>(); + foreach (var r in mappingResultWdTitle) + { + result2.Add(new Tuple(r.Item1, r.Item2, (r.Item2 * maxAfterPrice / minAfterPrice).ParseToInt(), "")); + } + result = MappingTaoBaoBLL.FilterItems(result2, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + } + // 按一定比例查询确认商品id和图片缓存老数据对应商品是否已被删除,如果删除,则更新数据库(按较低的比例随机,以防调用过高导致微店响应出问题) + if (isCheckOnSale) + { + bool isUpdateDelete = false; + bool isResultCount = result != null && result.Count > 0; + bool isMappingResultWdTitle = mappingResultWdTitle != null && mappingResultWdTitle.Count > 0; + while (result.Count > 0) + { + Thread.Sleep(1000 + Randomx.GetId(2000)); + var item = result.First(f => f.Item3 == result.Min(s => s.Item3)); + + var itemResult = Work.GetPostTaobaoHtml.GetUrl("https://weidian.com/item.html?itemID=" + item.Item1, "", true, "", "_"); + // 商品被删除了的界面包含以下情况 + if (itemResult.Contains("登录") && !itemResult.Contains("限时折扣价格区域") && !itemResult.Contains("收藏")) + { + isUpdateDelete = true; + result.Remove(item); + //mappingResultWdTitle.Remove(item); + var item2 = mappingResultWdTitle.FirstOrDefault(r => r.Item1 == item.Item1); + if (item2 != null) + mappingResultWdTitle.Remove(item2); + } + else + { + break; + } + } + // 如果有合适的上家商品不用上传新商品了,直接更新缓存服务器 + if (isUpdateDelete && isResultCount && isMappingResultWdTitle) + { + MappingVDianCacheBLL.SaveFakeCacheVDianTitle(mappingResultWdTitle, title, mappingFrom, true); + //var testResult = MappingVDianCacheBLL.GetFakeCacheVDianTitle(title, ref mappingFrom); // 读缓存测试 + } + } + if (result.Count > 0) + { + bool hit = false; + var selectMinItem = MatchMeetTitleLength(title, result, mappingResultWdTitle, out hit); + var resultData = new List>(); + if (selectMinItem != null) + { + foreach (var r in mappingResultWdTitle) + { + if (r.Item1 == selectMinItem.Item1 && hit) + resultData.Add(new Tuple(r.Item1, r.Item2, r.Item3, DateTime.Now.ToString("yyyy-MM-dd"))); + else + resultData.Add(new Tuple(r.Item1, r.Item2, r.Item3, r.Item4)); + } + if (hit) + { + MappingVDianCacheBLL.SaveFakeCacheVDianTitle(resultData, title, mappingFrom); + } + mappingFrom = "微店"; + prod.MappingResourceType = "标题缓存"; + MappingVDianApiBLL.UpDateMappingResultToStatistics("1"); + mapping_query = "1"; + } + else + MappingVDianCacheBLL.SaveFakeCacheVDianTitle(mappingResultWdTitle, title, mappingFrom); + } + } + #endregion + + #endregion + + #region 微店推荐商品缓存 按比例执行一部分 + //bool isUseRecommendTitleSearch = Randomx.GetId(10) > 8; + ////isUseRecommendTitleSearch = Randomx.GetId(1) > 0; + //List> mappingRecommendTitle = null; + //if (result.Count == 0 && isUseRecommendTitleSearch) + //{ + // var title = TrimAndRemoveSpecialText(product?.name); + + // mappingRecommendTitle = MappingVDianCacheBLL.GetFakeCacheVDianFissionTitle(title, ref mappingFrom); + // if (mappingRecommendTitle != null) + // { + // var result2 = new List>(); + // foreach (var r in mappingRecommendTitle) + // { + // result2.Add(new Tuple(r.Item1, r.Item2, (r.Item2 * maxAfterPrice / minAfterPrice).ParseToInt())); + // } + // result = MappingTaoBaoBLL.FilterItems(result2, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice), true); + // } + // if (result.Count > 0) + // { + // mappingFrom = "微店"; + // prod.MappingResourceType = "标题分词缓存"; + + // MappingVDianApiBLL.UpDateMappingResultToStatistics("7"); + // } + //} + #endregion + + #region 如果点击了停止,退出 + if (!isRun) + return; + #endregion + + #region 微店分词缓存 + bool isUseRecommendTitleSearch = Randomx.GetId(100) < 10; + if (result.Count == 0 && isUseRecommendTitleSearch && TrimAndRemoveSpecialText(product?.name).Length > 14) // && isUseFuzzyTitleSearch && 1 == 2 + { + LogSave.Add("分词搜索" + product.from_id); + try + { + var retryId = 0; + var title = TrimAndRemoveSpecialText(product?.name); + if (string.IsNullOrEmpty(title)) + title = TrimAndRemoveSpecialText(prod?.ProductTitle); + var fissionTitle = title.Substring(0, 14); + //retryId = 140; + retry: + Thread.Sleep(Randomx.GetId(200, 800)); + // 微店分段标题 + Stopwatch watch = new Stopwatch(); + watch.Start(); + //var mappingResultWdFissionTitle = MappingVDianCacheBLL.GetFakeCacheVDianFissionTitle(fissionTitle, ref mappingFrom); + Error("提交中A4...", product); + var mappingResultWdFissionTitle = MappingVDianCacheBLL.GetFakeCacheVDianFissionTitleList(title, ref mappingFrom); + watch.Stop(); + Console.WriteLine("微店标题分词mappingResultWdFissionTitle" + watch.ElapsedMilliseconds); + LogSave.Add("商品" + product.from_id + ",微店标题分词搜索结束"); + if (mappingResultWdFissionTitle != null) + { + var result2 = new List>(); + foreach (var r in mappingResultWdFissionTitle) + { + result2.Add(new Tuple(r.Item1, r.Item2, (r.Item2 * maxAfterPrice / minAfterPrice).ParseToInt(), "")); + } + result = MappingTaoBaoBLL.FilterItems(result2, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice), true); + } + if (result.Count == 0 && retryId == 140) + { + fissionTitle = title.Substring(0, 7); + retryId = 70; + goto retry; + } + if (result.Count == 0 && retryId == 70) + { + fissionTitle = title.Substring(7, 7); + retryId = 77; + goto retry; + } + //if (result.Count == 0 && retryId == 77) + //{ + // fissionTitle = title.Substring(0, 5); + // retryId = 50; + // goto retry; + //} + //if (result.Count == 0 && retryId == 50) + //{ + // fissionTitle = title.Substring(4, 5); + // retryId = 54; + // goto retry; + //} + //if (result.Count == 0 && retryId == 54) + //{ + // fissionTitle = title.Substring(8, 5); + // retryId = 58; + // goto retry; + //} + //if (result.Count == 0 && retryId == 58) + //{ + // fissionTitle = title.Substring(0, 3); + // retryId = 30; + // goto retry; + //} + ////if (result.Count == 0 && retryId == 30) + ////{ + //// fissionTitle = title.Substring(3, 3); + //// retryId = 33; + //// goto retry; + ////} + ////if (result.Count == 0 && retryId == 33) + ////{ + //// fissionTitle = title.Substring(6, 3); + //// retryId = 36; + //// goto retry; + ////} + ////if (result.Count == 0 && retryId == 36) + ////{ + //// fissionTitle = title.Substring(9, 3); + //// retryId = 39; + //// goto retry; + ////} + ////if (result.Count == 0 && retryId == 39) + ////{ + //// fissionTitle = title.Substring(12, 3); + //// retryId = 312; + //// goto retry; + ////} + + if (result.Count > 0) + { + Console.WriteLine("微店标题分词搜索找到商品"); + mappingFrom = "微店"; + prod.MappingResourceType = "标题分词缓存"; + mapping_query = "7"; + MappingVDianApiBLL.UpDateMappingResultToStatistics("7"); + } + } + catch (Exception ex) + { + } + } + #endregion + + #region 全文检索匹配搜索结果 + List> mappingLuceneTitle = null; + if (result.Count == 0) + { + var title = TrimAndRemoveSpecialText(product?.name); + if (string.IsNullOrEmpty(title)) + title = TrimAndRemoveSpecialText(prod?.ProductTitle); + List fissionArr = new List(); + //int port = new Random().Next(0, luceneUrlList.Count); + //string domain = luceneUrlList[port]; + long pid = new Random().Next(0, luceneUrlPropCount * 10); + string domain = ""; + int proportion = 0; + foreach (var kvp in luceneUrlDic) + { + if (pid <= (proportion + kvp.Value * 10)) + { + domain = kvp.Key; + break; + } + proportion += kvp.Value * 10; + } + var fissionResult = GetHtml.GetUrl(domain + "/api/ProductTitle?name=" + HttpUtility.UrlEncode(title, Encoding.UTF8) + "&type=1", 10);// //http://103.90.155.89:60123 + var fissionMatch = BaseRegex.GetMatchRegex(ref fissionResult, "\"data\":\\[([\\s\\S]+?)\"\\]"); + if (fissionMatch != null && fissionMatch.Count > 0) + { + fissionArr = fissionMatch[0].Groups[1].ToString().Split(new char[] { '"', ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); + } + else + { + fissionArr = title.ToCharArray().Select(c => c.ToString()).ToList(); + } + LuceneRetry: + if (fissionArr.Count > 6) + fissionArr.RemoveAt(fissionArr.Count - 1); + string sTit = string.Join("", fissionArr); + string luceneResult = ""; + for (int i = 0; i < 2 && fissionArr?.Count > 0; i++) + { + proportion = 0; + pid = new Random().Next(0, luceneUrlPropCount * 10); + foreach (var kvp in luceneUrlDic) + { + if (pid <= (proportion + kvp.Value * 10)) + { + domain = kvp.Key; + break; + } + proportion += kvp.Value * 10; + } + //port = new Random().Next(0, luceneUrlList.Count); + //domain = luceneUrlList[port]; + luceneResult = GetHtml.GetUrl(domain + "/api/ProductTitle?name=" + HttpUtility.UrlEncode(sTit, Encoding.UTF8) + "&pageSize=10", 7); + Thread.Sleep(100); + if (luceneResult != null && luceneResult.Contains("\"Tag\":1")) // Tag 1成功 2失败 + break; + fissionArr.RemoveAt(fissionArr.Count - 1); + sTit = string.Join("", fissionArr); + } + var ids = BaseRegex.GetMatchRegex(ref luceneResult, "\"Id\":\"([\\s\\S]+?)\""); + if (ids == null || ids.Count == 0) + { + if (luceneResult != null && luceneResult.Contains("\"Tag\":1")) + { + //if (fissionArr.Count > 6) + //{ + // goto LuceneRetry; + //} + } + if (luceneResult == null || !luceneResult.Contains("\"Tag\":1")) + { + prod.MappingResourceType = "全文检索失败"; + MappingVDianApiBLL.UpDateMappingResultToStatistics("13"); + mapping_query = "13"; + } + else + { + prod.MappingResourceType = "全文检索无满足条件"; + MappingVDianApiBLL.UpDateMappingResultToStatistics("12"); + mapping_query = "12"; + } + } + else + { + foreach (System.Text.RegularExpressions.Match m in ids) + { + var id = m.Groups[1].ToString(); + mappingLuceneTitle = MappingVDianCacheBLL.GetFakeCacheVDianTitle(title, ref mappingFrom, id); + + if (mappingLuceneTitle != null) + { + var result2 = new List>(); + foreach (var r in mappingLuceneTitle) + { + result2.Add(new Tuple(r.Item1, r.Item2, (r.Item2 * maxAfterPrice / minAfterPrice).ParseToInt(), "")); + } + result = MappingTaoBaoBLL.FilterItems(result2, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice), true); + if (result.Count > 0) + { + break; + } + } + } + if (result.Count > 0) + { + bool hit = false; + if (mappingResultWdTitle == null) + mappingResultWdTitle = new List>(); + if (UploadPinduoduoMain.goodCacheContent.ContainsKey(long.Parse(prod.ProductId)) && UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)] != null) + mappingResultWdTitle = UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)]; + var selectMinItem = MatchMeetTitleLength(title, result, mappingResultWdTitle, out hit); + var resultData = new List>(); + if (selectMinItem != null) + { + foreach (var r in mappingResultWdTitle) + { + if (r.Item1 == selectMinItem.Item1 && hit) + resultData.Add(new Tuple(r.Item1, r.Item2, r.Item3, DateTime.Now.ToString("yyyy-MM-dd"))); + else + resultData.Add(new Tuple(r.Item1, r.Item2, r.Item3, r.Item4)); + } + if (hit) + { + MappingVDianCacheBLL.SaveFakeCacheVDianTitle(resultData, title, mappingFrom); + } + mappingFrom = "微店"; + prod.MappingResourceType = "全文检索成功"; + MappingVDianApiBLL.UpDateMappingResultToStatistics("11"); + mapping_query = "11"; + } + else + MappingVDianCacheBLL.SaveFakeCacheVDianTitle(mappingResultWdTitle, title, mappingFrom); + } + else + { + prod.MappingResourceType = "全文检索无满足条件"; + MappingVDianApiBLL.UpDateMappingResultToStatistics("12"); + mapping_query = "12"; + } + } + } + #endregion + + #region 转换结果显示 + if (result.Count > 0) + { + // 裂变数据 + var prodParams = lstProductParam.Where(l => l.RealProductId == prod.RealProductId && l.From == prod.From); + var selectMinItem = result.First(f => f.Item3 == result.Min(s => s.Item3)); + var tempTitle = ""; + foreach (var p in prodParams) + { + if (!string.IsNullOrEmpty(p.ProductTitle)) + { + tempTitle = ""; + } + + prodInfo = new ProductMappingExportInfo() + { + FakeMappingFrom = mappingFrom, + FakeMappingProductId = selectMinItem.Item1.Split('/')[0], + FakeMappingProductPrice = selectMinItem.Item2, + //ProductDataJson = AllBase.JsonHelper.SerializeObject(pinduoduoProductCollect.pb), + ProductId = p.ProductId, + ProductTitle = p.ProductTitle, + RealProductId = p.RealProductId, + MainCid = p.MainCid, + Image = p.Image, + CatId = p.CatId, + From = p.From, + FakeMappingProductMinPrice = (selectMinItem.Item2 / 100M).ToString("f2"), + FakeMappingProductMaxPrice = (selectMinItem.Item3 / 100M).ToString("f2"), + PostFee = "0", + MappingQuery = mapping_query, + dataSoure = p.dataSoure + }; + if (string.IsNullOrEmpty(prodInfo.ProductTitle)) + { + prodInfo.ProductTitle = tempTitle; + } + if (prodInfo.FakeMappingFrom == "苏宁") + { + prodInfo.FakeMappingVendorId = result.First().Item1.Split('/')[1]; + } + p.MappingResult = prodInfo.MappingResult = "转换成功"; + + if (!isDelOldData) + lstProductInfo.Add(prodInfo); + //lstProductInfoTemp.Add(prodInfo); + // 显示转换成功 + ShowMappingResult(p, prodInfo); + } + } + else + { + if (string.IsNullOrEmpty(prod.MappingResult)) + prod.MappingResult = "转换失败,没有找到合适的转换数据"; + else if (prod.MappingResult.Length > 2000) + prod.MappingResult = prod.MappingResult.Substring(2000); + ShowMappingResult(prod); + } + #endregion + } + /// + /// 微店搜索 + /// + /// + /// + /// + /// + /// + /// + public bool SearchWdProduct(ProductMappingImportParam prod, ProductCollectBase product, decimal minAfterPrice, decimal maxAfterPrice, ref List> result, ref string mappingFrom) + { + try + { + List> mappingResultWdTitle = null; + var title = TrimAndRemoveSpecialText(product?.name); + Thread.Sleep(Randomx.GetId(500, 2000)); + Stopwatch watch = new Stopwatch(); + watch.Start(); + Error("提交中A1...", product); + var weidianGetTitleResult = WeiDianCollectBLL.SearchWdProductsByKeywords(title, (minAfterPrice / 100M).ParseToDouble(), (maxAfterPrice / 100M).ParseToDouble() * 3.5); + watch.Stop(); + LogSave.Add("商品" + product.from_id + "微店标题搜索结束,花费时间" + watch.ElapsedMilliseconds); + result = MappingVDianTitleSearchBLL.GetTupleListData(title, weidianGetTitleResult); + if (result.Count == 0) + { + LogSave.Add("标题搜索" + product.from_id + "失败"); + } + if (result.Count > 0) + { + if (!weidianGetTitleResult.Contains("没有找到相关商品")) // 搜索商品保存到缓存 + { + if (mappingResultWdTitle == null) + mappingResultWdTitle = new List>(); + if (UploadPinduoduoMain.goodCacheContent.ContainsKey(long.Parse(prod.ProductId)) && UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)] != null) + mappingResultWdTitle = UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)]; + var addList = result.Where(r => !mappingResultWdTitle.Any(m => m.Item1 == r.Item1)).ToList(); + mappingResultWdTitle.AddRange(addList); + while (mappingResultWdTitle.Count > 200) + mappingResultWdTitle.RemoveAt(0); + mappingFrom = "微店"; + MappingVDianCacheBLL.SaveFakeCacheVDianTitle(mappingResultWdTitle, title, mappingFrom, true); + + result = MappingTaoBaoBLL.FilterItems(result, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + if (result.Count > 0) + { + mappingFrom = "微店"; + prod.MappingResourceType = "标题搜索"; + MappingVDianApiBLL.UpDateMappingResultToStatistics("2"); + return true; + } + } + else + { + result.Clear(); + } + } + } + catch (Exception ex) + { + } + return false; + } + + /// + /// 京喜 + /// + /// + /// + /// + /// + /// + /// + /// + public bool SearchJdProduct(ProductMappingImportParam prod, ProductCollectBase product, decimal minAfterPrice, decimal maxAfterPrice, ref List> result, ref string mappingFrom) + { + try + { + List> mappingRecommendTitle = null; + var title = TrimAndRemoveSpecialText(product?.name); + Thread.Sleep(Randomx.GetId(500, 2000)); + Error("提交中A4...", product); + var jingxiGetTitleResult = JingXiCollect.SearchJdProductsByKeywords(title, (minAfterPrice / 100M).ParseToDouble(), (maxAfterPrice / 100M).ParseToDouble() * 3.5); + result = MappingVDianTitleSearchBLL.GetTuplejingxiListV2Data(title, jingxiGetTitleResult); + LogSave.Add("商品" + product.from_id + ",京喜商品标题搜索结束"); + if (result.Count == 0) + { + LogSave.Add("京喜标题搜索" + product.from_id + "失败"); + } + if (result.Count > 0) + { + if (mappingRecommendTitle == null) + mappingRecommendTitle = new List>(); + if (UploadPinduoduoMain.goodCacheContent.ContainsKey(long.Parse(prod.ProductId)) && UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)] != null) + mappingRecommendTitle = UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)]; + + var addList = result.Where(r => !mappingRecommendTitle.Any(m => m.Item1 == r.Item1)).ToList(); + mappingRecommendTitle.AddRange(addList); + + while (mappingRecommendTitle.Count > 200) + mappingRecommendTitle.RemoveAt(0); + + mappingFrom = "京喜"; + MappingVDianCacheBLL.SaveFakeCacheVDianTitle(mappingRecommendTitle, title, mappingFrom, true); + } + if (result.Count > 0) + { + result = MappingTaoBaoBLL.FilterItems(result, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + if (result.Count > 0) + { + mappingFrom = "京喜"; + prod.MappingResourceType = "标题搜索"; + MappingVDianApiBLL.UpDateMappingResultToStatistics("16"); + return true; + } + } + } + catch (Exception ex) + { + } + return false; + } + + /// + /// 淘宝搜索 + /// + /// + /// + /// + /// + /// + /// + public bool SearchTaobaoProduct(ProductMappingImportParam prod, ProductCollectBase product, decimal minAfterPrice, decimal maxAfterPrice, ref List> result, ref string mappingFrom) + { + try + { + List> mappingRecommendTitle = null; + var title = TrimAndRemoveSpecialText(product?.name); + Thread.Sleep(Randomx.GetId(500, 2000)); + Error("提交中A2...", product); + var taobaoGetTitleResult = TaobaoMobileCollect.SearchTaobaoProductsByKeywords_v2(title, (minAfterPrice / 100M).ParseToDouble(), (maxAfterPrice / 100M).ParseToDouble() * 3.5); + result = MappingVDianTitleSearchBLL.GetTupleTaoBaoListV2Data(title, taobaoGetTitleResult); + LogSave.Add("商品" + product.from_id + ",淘宝商品标题搜索结束"); + if (result.Count == 0) + { + LogSave.Add("淘宝标题搜索" + product.from_id + "失败"); + } + if (result.Count > 0) + { + if (mappingRecommendTitle == null) + mappingRecommendTitle = new List>(); + if (UploadPinduoduoMain.goodCacheContent.ContainsKey(long.Parse(prod.ProductId)) && UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)] != null) + mappingRecommendTitle = UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)]; + var addList = result.Where(r => !mappingRecommendTitle.Any(m => m.Item1 == r.Item1)).ToList(); + mappingRecommendTitle.AddRange(addList); + + while (mappingRecommendTitle.Count > 200) + mappingRecommendTitle.RemoveAt(0); + + mappingFrom = "淘宝"; + MappingVDianCacheBLL.SaveFakeCacheVDianTitle(mappingRecommendTitle, title, mappingFrom, true); + } + if (result.Count > 0) + { + result = MappingTaoBaoBLL.FilterItems(result, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + if (result.Count > 0) + { + mappingFrom = "淘宝"; + prod.MappingResourceType = "标题搜索"; + MappingVDianApiBLL.UpDateMappingResultToStatistics("14"); + return true; + } + } + } + catch (Exception ex) + { + } + return false; + } + + + /// + /// 1688 + /// + /// + /// + /// + /// + /// + /// + /// + public bool Search1688Product(ProductMappingImportParam prod, ProductCollectBase product, decimal minAfterPrice, decimal maxAfterPrice, ref List> result, ref string mappingFrom) + { + try + { + List> mappingRecommendTitle = null; + var title = TrimAndRemoveSpecialText(product?.name); + Thread.Sleep(Randomx.GetId(500, 2000)); + Error("提交中A3...", product); + if (product.from == "淘宝" || product.from == "阿里巴巴" || product.from == "1688") + { + var imgSearch = TaobaoMobileCollect.Request_s_1688_com_imageSearch(product.Images[0]); + result = MappingVDianTitleSearchBLL.GetTuple1688ListData(title, imgSearch); + } + else + { + var res = TaobaoMobileCollect.Request_h5api_m_1688_com_putimage(product.Images[0]); + var imageId = BaseRegex.GetDecimalJson(ref res, "imageId"); + var imgSearch = TaobaoMobileCollect.Request_s_1688_com_imageSearch(imageId.ToString()); + result = MappingVDianTitleSearchBLL.GetTuple1688ListData(title, imgSearch); + } + LogSave.Add("商品" + product.from_id + ",阿里图片搜索结束"); + if (result.Count == 0) + { + LogSave.Add("阿里图片搜索" + product.from_id + "失败"); + } + if (result.Count > 0) + { + if (mappingRecommendTitle == null) + mappingRecommendTitle = new List>(); + if (UploadPinduoduoMain.goodCacheContent.ContainsKey(long.Parse(prod.ProductId)) && UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)] != null) + mappingRecommendTitle = UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)]; + var addList = result.Where(r => !mappingRecommendTitle.Any(m => m.Item1 == r.Item1)).ToList(); + mappingRecommendTitle.AddRange(addList); + while (mappingRecommendTitle.Count > 200) + mappingRecommendTitle.RemoveAt(0); + mappingFrom = "阿里"; + MappingVDianCacheBLL.SaveFakeCacheVDianTitle(mappingRecommendTitle, title, mappingFrom, true); + } + if (result.Count > 0) + { + result = MappingTaoBaoBLL.FilterItems(result, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + if (result.Count > 0) + { + mappingFrom = "阿里"; + prod.MappingResourceType = "阿里图片搜索"; + MappingVDianApiBLL.UpDateMappingResultToStatistics("15"); + return true; + } + } + } + catch (Exception ex) + { + } + return false; + } + public string GetMappingQuery(string mappingFrom) + { + string mapping_query = ""; + switch (mappingFrom) + { + case "微店": + mapping_query = "2"; + break; + case "淘宝": + mapping_query = "14"; + break; + case "京喜": + mapping_query = "16"; + break; + case "阿里": + mapping_query = "15"; + break; + default: + break; + } + return mapping_query; + } + public static int iFuncNum = 4; + private int[] index; + /// + /// 乱序 + /// + /// + /// + private int[] DisruptorIndex(int iEnd, int id) + { + if (index == null) + { + index = new int[iEnd]; + for (int ii = 0; ii < iEnd; ii++) + { + index[ii] = ii; + } + } + if (id < 30) + { + index[0] = 0; + } + else if (id < 50) + { + index[0] = 1; + index[1] = 0; + } + else if (id < 80) + { + index[0] = 2; + index[2] = 0; + } + else if (id < 100) + { + index[0] = 3; + index[3] = 0; + } + for (int i = 1; i < iEnd; i++) + { + int j = Randomx.GetId(1, iEnd); + if (j == i) + continue; + index[i] = index[i] ^ index[j]; + index[j] = index[i] ^ index[j]; + index[i] = index[i] ^ index[j]; + } + return index; + } + delegate bool SearchGetProduct(ProductMappingImportParam prod, ProductCollectBase product, decimal minAfterPrice, decimal maxAfterPrice, ref List> result, ref string mappingFrom); + private static SearchGetProduct[] searchGetProducts = null; + private void GetFakeSearchFrom(string clientId, ProductMappingImportParam prod, ProductCollectBase product, decimal minAfterPrice, decimal maxAfterPrice, ref string error_area, + List> mappingResultCache = null, string mappingFrom = "") + { + if (!isRun) + return; + List> mappingResultNonWd = null; + List> mappingResultWd = null; + + + //List> mappingResultWdTitle = null; + string mapping_query = ""; + var result = MappingTaoBaoBLL.FilterItems(mappingResultNonWd, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + if (result.Count == 0) + result = MappingTaoBaoBLL.FilterItems(mappingResultWd, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + try + { + #region 搜索微店商品数据及标题分词缓存 + lock (_lockerMapping) + { + if (!isRun) + return; + //List> mappingRecommendTitle = null; + //bool isUseFuzzyTitleSearch = Randomx.GetId(300) > 0; + //isUseFuzzyTitleSearch = Randomx.GetId(1) > 0; + int id = new Random().Next(0, 100); + if (searchGetProducts == null) + { + searchGetProducts = new SearchGetProduct[iFuncNum]; + searchGetProducts[0] = SearchWdProduct; + searchGetProducts[1] = SearchJdProduct; + searchGetProducts[2] = SearchTaobaoProduct; + searchGetProducts[3] = Search1688Product; + } + int[] funcIndex = DisruptorIndex(iFuncNum, id); + if (searchGetProducts[funcIndex[0]](prod, product, minAfterPrice, maxAfterPrice, ref result, ref mappingFrom) + || searchGetProducts[funcIndex[1]](prod, product, minAfterPrice, maxAfterPrice, ref result, ref mappingFrom) + || searchGetProducts[funcIndex[2]](prod, product, minAfterPrice, maxAfterPrice, ref result, ref mappingFrom) + || searchGetProducts[funcIndex[3]](prod, product, minAfterPrice, maxAfterPrice, ref result, ref mappingFrom)) + { + LogSave.Add($"商品{ product.from_id}搜索成功"); + } + mapping_query = GetMappingQuery(mappingFrom); + + #region 注释代码 + //#region 搜索微店数据 + //if ((result.Count == 0 && id < 30)|| (result.Count == 0&&retrytimes ==1)) + //{ + // try + // { + // var title = TrimAndRemoveSpecialText(product?.name); + + // Thread.Sleep(Randomx.GetId(500, 2000)); + // Stopwatch watch = new Stopwatch(); + // watch.Start(); + // Error("提交中A1...", product); + // var weidianGetTitleResult = WeiDianCollectBLL.SearchWdProductsByKeywords(title, (minAfterPrice / 100M).ParseToDouble(), (maxAfterPrice / 100M).ParseToDouble() * 3.5); + // watch.Stop(); + // LogSave.Add("商品" + product.from_id + "微店标题搜索结束,花费时间" + watch.ElapsedMilliseconds); + // result = MappingVDianTitleSearchBLL.GetTupleListData(title, weidianGetTitleResult); + // if (result.Count == 0) + // { + // LogSave.Add("标题搜索" + product.from_id + "失败"); + // } + // if (result.Count > 0) + // { + // if (!weidianGetTitleResult.Contains("没有找到相关商品")) // 搜索商品保存到缓存 + // { + // if (mappingResultWdTitle == null) + // mappingResultWdTitle = new List>(); + + // var addList = result.Where(r => !mappingResultWdTitle.Any(m => m.Item1 == r.Item1)).ToList(); + // mappingResultWdTitle.AddRange(addList); + + // while (mappingResultWdTitle.Count > 200) + // mappingResultWdTitle.RemoveAt(0); + + // mappingFrom = "微店"; + // MappingVDianCacheBLL.SaveFakeCacheVDianTitle(mappingResultWdTitle, title, mappingFrom, true); + + // result = MappingTaoBaoBLL.FilterItems(result, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + // if (result.Count > 0) + // { + // mappingFrom = "微店"; + // prod.MappingResourceType = "标题搜索"; + // MappingVDianApiBLL.UpDateMappingResultToStatistics("2"); + // mapping_query = "2"; + // } + // //var testResult = MappingVDianCacheBLL.GetFakeCacheVDianTitle(title, ref mappingFrom); // 读缓存测试 + // } + // else + // { + // result.Clear(); + // } + // //else // 推荐商品保存到分词缓存 + // //{ + // // if (mappingRecommendTitle == null) + // // mappingRecommendTitle = new List>(); + + // // var addList = result.Where(r => !mappingRecommendTitle.Any(m => m.Item1 == r.Item1)).ToList(); + // // mappingRecommendTitle.AddRange(addList); + + // // while (mappingRecommendTitle.Count > 200) + // // mappingRecommendTitle.RemoveAt(0); + + // // mappingFrom = "微店"; + // // MappingVDianCacheBLL.SaveFakeCacheVDianFissionTitle(mappingRecommendTitle, title, mappingFrom, true); + + // // if (Randomx.GetId(10) > 8) + // // result.Clear(); + // //} + // //result = MappingTaoBaoBLL.FilterItems(result, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + // //if (result.Count == 0 && isUseFuzzyTitleSearch) + // //{ + // // result = MappingVDianTitleSearchBLL.GetTupleListData(weidianGetTitleResult); + // // var result2 = new List>(); + // // foreach (var r in result) + // // { + // // result2.Add(new Tuple(r.Item1, r.Item2, (r.Item2 * maxAfterPrice / minAfterPrice).ParseToInt())); + // // } + // // result = MappingTaoBaoBLL.FilterItems(result2, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice), true); + // //} + // //else + // //{ + // // //result.Clear(); + // //} + // //if (result.Count > 0) + // //{ + // // mappingFrom = "微店"; + // // prod.MappingResourceType = "标题搜索"; + // // MappingVDianApiBLL.UpDateMappingResultToStatistics("2"); + // //} + // } + + // } + // catch (Exception ex) + // { + // } + //} + //#endregion + //#endregion + + //#region 搜索淘宝商品数据 + ////if (result.Count == 0) + ////{ + //// try + //// { + //// var title = TrimAndRemoveSpecialText(product?.name); + //// Thread.Sleep(Randomx.GetId(500, 2000)); + //// Error("提交中A2...", product); + //// var weidianGetTitleResult = TaobaoMobileCollect.SearchTaobaoProductsByKeywords(title, (minAfterPrice / 100M).ParseToDouble(), (maxAfterPrice / 100M).ParseToDouble() * 3.5); + //// result = MappingVDianTitleSearchBLL.GetTupleTaoBaoListData(weidianGetTitleResult); + //// LogSave.Add("商品" + product.from_id + ",淘宝商品标题搜索结束"); + //// if (result.Count == 0) + //// { + //// LogSave.Add("淘宝标题搜索" + product.from_id + "失败"); + //// } + //// if (result.Count > 0) + //// { + //// if (!weidianGetTitleResult.Contains("FAIL_BIZ_EMPTY_RESULT::FAIL_BIZ_EMPTY_RESULT")) // 搜索商品保存到缓存 + //// { + //// if (mappingResultWdTitle == null) + //// mappingResultWdTitle = new List>(); + + //// var addList = result.Where(r => !mappingResultWdTitle.Any(m => m.Item1 == r.Item1)).ToList(); + //// mappingResultWdTitle.AddRange(addList); + //// if (mappingResultWdTitle.Count > 200) + //// mappingRecommendTitle.RemoveAt(0); + + //// //if (mappingResultWdTitle.Count > 200) + //// // mappingResultWdTitle = mappingResultWdTitle.OrderByDescending(m => m.Item2).Take(200).ToList(); + + //// mappingFrom = "淘宝"; + //// MappingVDianCacheBLL.SaveFakeCacheVDianTitle(mappingResultWdTitle, title, mappingFrom, true); + //// //var testResult = MappingVDianCacheBLL.GetFakeCacheVDianTitle(title, ref mappingFrom); // 读缓存测试 + //// } + //// result = MappingTaoBaoBLL.FilterItems(result, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + //// if (result.Count == 0 && isUseFuzzyTitleSearch) + //// { + //// result = MappingVDianTitleSearchBLL.GetTupleListData(weidianGetTitleResult); + //// var result2 = new List>(); + //// foreach (var r in result) + //// { + //// result2.Add(new Tuple(r.Item1, r.Item2, (r.Item2 * maxAfterPrice / minAfterPrice).ParseToInt())); + //// } + //// result = MappingTaoBaoBLL.FilterItems(result2, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice), true); + //// } + //// if (result.Count > 0) + //// { + //// mappingFrom = "淘宝"; + //// prod.MappingResourceType = "标题搜索"; + //// MappingVDianApiBLL.UpDateMappingResultToStatistics("14"); + //// } + //// } + //// } + //// catch (Exception ex) + //// { + //// } + ////} + //#endregion + + //#region 搜索京喜商品数据 //没有找到相关商品 + //if ((result.Count == 0 && id < 50)|| (result.Count == 0&&retrytimes == 1)) + //{ + // try + // { + // var title = TrimAndRemoveSpecialText(product?.name); + // Thread.Sleep(Randomx.GetId(500, 2000)); + // Error("提交中A4...", product); + // var jingxiGetTitleResult = JingXiCollect.SearchJdProductsByKeywords(title, (minAfterPrice / 100M).ParseToDouble(), (maxAfterPrice / 100M).ParseToDouble() * 3.5); + // result = MappingVDianTitleSearchBLL.GetTuplejingxiListV2Data(title, jingxiGetTitleResult); + // LogSave.Add("商品" + product.from_id + ",京喜商品标题搜索结束"); + // if (result.Count == 0) + // { + // LogSave.Add("京喜标题搜索" + product.from_id + "失败"); + // } + // if (result.Count > 0) + // { + // if (mappingRecommendTitle == null) + // mappingRecommendTitle = new List>(); + + // var addList = result.Where(r => !mappingRecommendTitle.Any(m => m.Item1 == r.Item1)).ToList(); + // mappingRecommendTitle.AddRange(addList); + + // while (mappingRecommendTitle.Count > 200) + // mappingRecommendTitle.RemoveAt(0); + + // mappingFrom = "京喜"; + // MappingVDianCacheBLL.SaveFakeCacheVDianTitle(mappingRecommendTitle, title, mappingFrom, true); + // } + // if (result.Count > 0) + // { + // result = MappingTaoBaoBLL.FilterItems(result, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + // if (result.Count > 0) + // { + // mappingFrom = "京喜"; + // prod.MappingResourceType = "标题搜索"; + // MappingVDianApiBLL.UpDateMappingResultToStatistics("16"); + // mapping_query = "16"; + // } + // } + // } + // catch (Exception ex) + // { + // } + //} + //#endregion + + //#region 搜索手机淘宝商品数据 //没有找到相关商品 + //if ((result.Count == 0 && id < 80)|| (result.Count == 0&&retrytimes == 1)) + //{ + // try + // { + // var title = TrimAndRemoveSpecialText(product?.name); + // Thread.Sleep(Randomx.GetId(500, 2000)); + // Error("提交中A2...", product); + // var taobaoGetTitleResult = TaobaoMobileCollect.SearchTaobaoProductsByKeywords_v2(title, (minAfterPrice / 100M).ParseToDouble(), (maxAfterPrice / 100M).ParseToDouble() * 3.5); + // result = MappingVDianTitleSearchBLL.GetTupleTaoBaoListV2Data(title, taobaoGetTitleResult); + // LogSave.Add("商品" + product.from_id + ",淘宝商品标题搜索结束"); + // if (result.Count == 0) + // { + // LogSave.Add("淘宝标题搜索" + product.from_id + "失败"); + // } + // if (result.Count > 0) + // { + // if (mappingRecommendTitle == null) + // mappingRecommendTitle = new List>(); + + // var addList = result.Where(r => !mappingRecommendTitle.Any(m => m.Item1 == r.Item1)).ToList(); + // mappingRecommendTitle.AddRange(addList); + + // while (mappingRecommendTitle.Count > 200) + // mappingRecommendTitle.RemoveAt(0); + + // mappingFrom = "淘宝"; + // //MappingVDianCacheBLL.SaveFakeCacheVDianTitle(mappingRecommendTitle, title, mappingFrom, true); + // } + // if (result.Count > 0) + // { + // result = MappingTaoBaoBLL.FilterItems(result, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + // if (result.Count > 0) + // { + // mappingFrom = "淘宝"; + // prod.MappingResourceType = "标题搜索"; + // MappingVDianApiBLL.UpDateMappingResultToStatistics("14"); + // mapping_query = "14"; + // } + // } + // } + // catch (Exception ex) + // { + // } + //} + //#endregion + + //#region 搜索以图搜图 1688商品数据 + //if ((result.Count == 0 && id < 100)|| (result.Count == 0&&retrytimes == 1)) + //{ + // try + // { + // var title = TrimAndRemoveSpecialText(product?.name); + // Thread.Sleep(Randomx.GetId(500, 2000)); + // Error("提交中A3...", product); + // if (product.from == "淘宝" || product.from == "阿里巴巴" || product.from == "1688") + // { + // var imgSearch = TaobaoMobileCollect.Request_s_1688_com_imageSearch(product.Images[0]); + // result = MappingVDianTitleSearchBLL.GetTuple1688ListData(title, imgSearch); + // } + // else + // { + // var res = TaobaoMobileCollect.Request_h5api_m_1688_com_putimage(product.Images[0]); + // var imageId = BaseRegex.GetDecimalJson(ref res, "imageId"); + // var imgSearch = TaobaoMobileCollect.Request_s_1688_com_imageSearch(imageId.ToString()); + // result = MappingVDianTitleSearchBLL.GetTuple1688ListData(title, imgSearch); + // } + // LogSave.Add("商品" + product.from_id + ",阿里图片搜索结束"); + // if (result.Count == 0) + // { + // LogSave.Add("阿里图片搜索" + product.from_id + "失败"); + // } + // if (result.Count > 0) + // { + // if (mappingRecommendTitle == null) + // mappingRecommendTitle = new List>(); + + // var addList = result.Where(r => !mappingRecommendTitle.Any(m => m.Item1 == r.Item1)).ToList(); + // mappingRecommendTitle.AddRange(addList); + + // while (mappingRecommendTitle.Count > 200) + // mappingRecommendTitle.RemoveAt(0); + + // mappingFrom = "阿里"; + // MappingVDianCacheBLL.SaveFakeCacheVDianTitle(mappingRecommendTitle, title, mappingFrom, true); + // } + // if (result.Count > 0) + // { + // result = MappingTaoBaoBLL.FilterItems(result, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice)); + // if (result.Count > 0) + // { + // mappingFrom = "阿里"; + // prod.MappingResourceType = "阿里图片搜索"; + // MappingVDianApiBLL.UpDateMappingResultToStatistics("15"); + // mapping_query = "15"; + // } + // } + // } + // catch (Exception ex) + // { + // } + //} + //#endregion + + + + //#endregion + #endregion + + #region 微店分词缓存 + bool isUseRecommendTitleSearch = Randomx.GetId(100) < 10|| UploadPinduoduoMain.isSpecialAuth; + if (result.Count == 0 && TrimAndRemoveSpecialText(product?.name).Length > 14 && isUseRecommendTitleSearch)//&& isUseFuzzyTitleSearch && 1 == 2 + { + LogSave.Add("分词搜索" + product.from_id); + try + { + var retryId = 0; + var title = TrimAndRemoveSpecialText(product?.name); + var fissionTitle = title.Substring(0, 14); + //retryId = 140; + retry: + Thread.Sleep(Randomx.GetId(200, 800)); + // 微店分段标题 + Stopwatch watch = new Stopwatch(); + watch.Start(); + //var mappingResultWdFissionTitle = MappingVDianCacheBLL.GetFakeCacheVDianFissionTitle(fissionTitle, ref mappingFrom); + Error("提交中A4...", product); + var mappingResultWdFissionTitle = MappingVDianCacheBLL.GetFakeCacheVDianFissionTitleList(title, ref mappingFrom); + watch.Stop(); + Console.WriteLine("微店标题分词mappingResultWdFissionTitle" + watch.ElapsedMilliseconds); + LogSave.Add("商品" + product.from_id + ",微店标题分词搜索结束"); + if (mappingResultWdFissionTitle != null) + { + var result2 = new List>(); + foreach (var r in mappingResultWdFissionTitle) + { + result2.Add(new Tuple(r.Item1, r.Item2, (r.Item2 * maxAfterPrice / minAfterPrice).ParseToInt(), "")); + } + result = MappingTaoBaoBLL.FilterItems(result2, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice), true); + } + if (result.Count == 0 && retryId == 140) + { + fissionTitle = title.Substring(0, 7); + retryId = 70; + goto retry; + } + if (result.Count == 0 && retryId == 70) + { + fissionTitle = title.Substring(7, 7); + retryId = 77; + goto retry; + } + //if (result.Count == 0 && retryId == 77) + //{ + // fissionTitle = title.Substring(0, 5); + // retryId = 50; + // goto retry; + //} + //if (result.Count == 0 && retryId == 50) + //{ + // fissionTitle = title.Substring(4, 5); + // retryId = 54; + // goto retry; + //} + //if (result.Count == 0 && retryId == 54) + //{ + // fissionTitle = title.Substring(8, 5); + // retryId = 58; + // goto retry; + //} + //if (result.Count == 0 && retryId == 58) + //{ + // fissionTitle = title.Substring(0, 3); + // retryId = 30; + // goto retry; + //} + ////if (result.Count == 0 && retryId == 30) + ////{ + //// fissionTitle = title.Substring(3, 3); + //// retryId = 33; + //// goto retry; + ////} + ////if (result.Count == 0 && retryId == 33) + ////{ + //// fissionTitle = title.Substring(6, 3); + //// retryId = 36; + //// goto retry; + ////} + ////if (result.Count == 0 && retryId == 36) + ////{ + //// fissionTitle = title.Substring(9, 3); + //// retryId = 39; + //// goto retry; + ////} + ////if (result.Count == 0 && retryId == 39) + ////{ + //// fissionTitle = title.Substring(12, 3); + //// retryId = 312; + //// goto retry; + ////} + + if (result.Count > 0) + { + Console.WriteLine("微店标题分词搜索找到商品"); + mappingFrom = "微店"; + prod.MappingResourceType = "标题分词缓存"; + mapping_query = "7"; + MappingVDianApiBLL.UpDateMappingResultToStatistics("7"); + } + } + catch (Exception ex) + { + } + } + #endregion + + #region 微店分词搜索 + if (result.Count == 0 && TrimAndRemoveSpecialText(product?.name).Length > 14&&1 == 2)//&& (clientId == "b1981defcd704a7d88c8a734358fb065"||clientId== "7feaefdf527d45129219ca398c922bb0") + { + LogSave.Add("分段标题搜索" + product.from_id); + try + { + var retryId = 0; + var title = TrimAndRemoveSpecialText(product?.name); + var fissionTitle = title.Substring(0, 14); + retryId = 140; + retry: + Thread.Sleep(Randomx.GetId(500, 1000)); + // 微店分段标题 + var mappingResultWdFissionTitle = new List>(); + + Stopwatch watch = new Stopwatch(); + watch.Start(); + Error("提交中A5...", product); + var fissionTitleResult = WeiDianCollectBLL.SearchWdProductsByKeywords(fissionTitle, (minAfterPrice / 100M).ParseToDouble(), (maxAfterPrice / 100M).ParseToDouble() * 3.5); + watch.Stop(); + Console.WriteLine("微店分段标题fissionTitleResult" + watch.ElapsedMilliseconds); + LogSave.Add("商品" + product.from_id + ",微店分段标题搜索结束"); + result = MappingVDianTitleSearchBLL.GetTupleListData(title, fissionTitleResult); + if (result.Count > 0 && fissionTitle.Length > 3) + { + if (mappingResultWdFissionTitle == null) + mappingResultWdFissionTitle = new List>(); + mappingResultWdFissionTitle.AddRange(result.Where(r => !mappingResultWdFissionTitle.Any(m => m.Item1 == r.Item1))); + while (mappingResultWdFissionTitle.Count > 200) + mappingResultWdFissionTitle.RemoveAt(0); + MappingVDianCacheBLL.SaveFakeCacheVDianFissionTitle(mappingResultWdFissionTitle, fissionTitle, mappingFrom); + //var testResult = MappingVDianCacheBLL.GetFakeCacheVDianFissionTitle(fissionTitle, ref mappingFrom); // 读缓存测试 + } + var result2 = new List>(); + foreach (var r in result) + { + result2.Add(new Tuple(r.Item1, r.Item2, (r.Item2 * maxAfterPrice / minAfterPrice).ParseToInt(), "")); + } + result = MappingTaoBaoBLL.FilterItems(result2, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice), true); + + if (result.Count == 0 && retryId == 0) + { + fissionTitle = title.Substring(0, 14); + retryId = 140; + goto retry; + } + if (result.Count == 0 && retryId == 140) + { + fissionTitle = title.Substring(0, 7); + retryId = 70; + goto retry; + } + if (result.Count == 0 && retryId == 70) + { + fissionTitle = title.Substring(7, 7); + retryId = 77; + goto retry; + } + //if (result.Count == 0 && retryId == 77) + //{ + // fissionTitle = title.Substring(0, 5); + // retryId = 50; + // goto retry; + //} + //if (result.Count == 0 && retryId == 50) + //{ + // fissionTitle = title.Substring(4, 5); + // retryId = 54; + // goto retry; + //} + //if (result.Count == 0 && retryId == 54) + //{ + // fissionTitle = title.Substring(8, 5); + // retryId = 58; + // goto retry; + //} + //if (result.Count == 0 && retryId == 58) + //{ + // fissionTitle = title.Substring(0, 3); + // retryId = 30; + // goto retry; + //} + //if (result.Count == 0 && retryId == 30) + //{ + // fissionTitle = title.Substring(3, 3); + // retryId = 33; + // goto retry; + //} + //if (result.Count == 0 && retryId == 33) + //{ + // fissionTitle = title.Substring(6, 3); + // retryId = 36; + // goto retry; + //} + //if (result.Count == 0 && retryId == 36) + //{ + // fissionTitle = title.Substring(9, 3); + // retryId = 39; + // goto retry; + //} + //if (result.Count == 0 && retryId == 39) + //{ + // fissionTitle = title.Substring(12, 3); + // retryId = 312; + // goto retry; + //} + if (result.Count > 0) + { + Console.WriteLine("微店分段标题搜索找到商品"); + mappingFrom = "微店"; + prod.MappingResourceType = "标题分词搜索"; + mapping_query = "8"; + MappingVDianApiBLL.UpDateMappingResultToStatistics("8"); + } + } + catch (Exception ex) + { + } + } + #endregion + } + #endregion + + #region 随机种子获取是否微店上传,一定概率故意失败(10%) + var isUseVDianRandom = true; + if (result.Count == 0) + { + isUseVDianRandom = Randomx.GetId(10) > 0; + } + #endregion + + #region 微店上传、缓存写入、上传失败返回错误文本的格式处理 + if (isUseVDianRandom && result.Count == 0) + { + if (prod.MappingResult != null && prod.MappingResult.Contains("error,")) + prod.MappingResult = prod.MappingResult.Replace("error,", ""); + } + #endregion + + #region 按类目搜索上传 + if (result.Count == 0 && Randomx.GetId(8) > -1 && 1 == 2) + { + var catId = prod.CatId.ParseToLong(); + var cName = PinDuoDuoCidName.CidName(catId); + if (cName != "其他") + { + if (cName == "其他电动工具") + cName = "工具"; + Error("提交中A5...", product); + var catResult = WeiDianCollectBLL.SearchWdProductsByKeywords(cName, (minAfterPrice / 100M).ParseToDouble(), (maxAfterPrice / 100M).ParseToDouble() * 3.5); + LogSave.Add("商品" + product.from_id + ",类目搜索结束"); + if (catResult.Contains("非常抱歉,没有找到相关结果")) + { + catId = prod.CatId2.ParseToLong(); + cName = PinDuoDuoCidName.CidName(catId); + if (cName != "其他") + catResult = WeiDianCollectBLL.SearchWdProductsByKeywords(cName, (minAfterPrice / 100M).ParseToDouble(), (maxAfterPrice / 100M).ParseToDouble() * 3.5); + } + if (catResult.Contains("非常抱歉,没有找到相关结果")) + { + catId = prod.CatId1.ParseToLong(); + cName = PinDuoDuoCidName.CidName(catId); + if (cName != "其他") + catResult = WeiDianCollectBLL.SearchWdProductsByKeywords(cName, (minAfterPrice / 100M).ParseToDouble(), (maxAfterPrice / 100M).ParseToDouble() * 3.5); + } + + result = MappingVDianTitleSearchBLL.GetTupleListData(cName, catResult); + var result2 = new List>(); + foreach (var r in result) + { + result2.Add(new Tuple(r.Item1, r.Item2, (r.Item2 * maxAfterPrice / minAfterPrice).ParseToInt(), "")); + } + result = MappingTaoBaoBLL.FilterItems(result2, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice), true, 25); + if (result.Count > 0) + { + mappingFrom = "微店"; + prod.MappingResourceType = "类目搜索"; + + MappingVDianApiBLL.UpDateMappingResultToStatistics("9"); + } + } + //if (result.Count == 0) + //{ + // LogSave.AddCrash("添加随机数据" + prod.ProductId); + // result.Add(new Tuple(Randomx.GetId(100000000, 999999999).ToString() + Randomx.GetId(0, 10).ToString(), + // (minAfterPrice * (1 + Randomx.GetId(0, 10) / 10M)).ParseToInt(), + // (maxAfterPrice * (1 + Randomx.GetId(0, 10) / 10M)).ParseToInt())); + + // result = MappingTaoBaoBLL.FilterItems(result, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice), true, 25); + // if (result.Count == 0) + // { + // LogSave.AddCrash("添加随机数据" + product.from_id + "失败"); + // } + // if (result.Count > 0) + // { + // mappingFrom = "微店"; + // prod.MappingResourceType = "随机数据"; + // MappingVDianApiBLL.UpDateMappingResultToStatistics("10"); + // LogSave.AddCrash("添加随机数据" + product.from_id + "成功"); + // } + //} + } + #endregion + + } + catch (Exception ex) + { + LogSave.Add("转换异常" + prod.ProductId); + + //result.Add(new Tuple(Randomx.GetId(100000000, 999999999).ToString() + Randomx.GetId(0, 10).ToString(), + // (minAfterPrice * (1 + Randomx.GetId(0, 10) / 10M)).ParseToInt(), + // (maxAfterPrice * (1 + Randomx.GetId(0, 10) / 10M)).ParseToInt())); + + //result = MappingTaoBaoBLL.FilterItems(result, Convert.ToInt32(minAfterPrice), Convert.ToInt32(maxAfterPrice), true, 25); + //if (result.Count == 0) + //{ + // LogSave.Add("catch添加随机数据" + product.from_id + "失败"); + //} + //if (result.Count > 0) + //{ + // mappingFrom = "微店"; + // prod.MappingResourceType = "随机数据"; + // MappingVDianApiBLL.UpDateMappingResultToStatistics("10"); + // LogSave.Add("catch添加随机数据" + product.from_id + "成功"); + //} + } + if (!isRun) + return; + Error("提交A结束...", product); + #region 转换结果显示 + if (result.Count > 0) + { + // 裂变数据 + var prodParams = lstProductParam.Where(l => l.RealProductId == prod.RealProductId && l.From == prod.From); + var selectMinItem = result.FirstOrDefault();// result.First(f => f.Item3 == result.Min(s => s.Item3)); + var tempTitle = ""; + foreach (var p in prodParams) + { + if (!string.IsNullOrEmpty(p.ProductTitle)) + { + tempTitle = ""; + } + + prodInfo = new ProductMappingExportInfo() + { + FakeMappingFrom = mappingFrom, + FakeMappingProductId = selectMinItem.Item1.Split('/')[0], + FakeMappingProductPrice = selectMinItem.Item2, + //ProductDataJson = AllBase.JsonHelper.SerializeObject(pinduoduoProductCollect.pb), + ProductId = p.ProductId, + ProductTitle = p.ProductTitle, + RealProductId = p.RealProductId, + MainCid = p.MainCid, + Image = p.Image, + CatId = p.CatId, + From = p.From, + FakeMappingProductMinPrice = (selectMinItem.Item2 / 100M).ToString("f2"), + FakeMappingProductMaxPrice = (selectMinItem.Item3 / 100M).ToString("f2"), + PostFee = "0", + MappingQuery = mapping_query, + dataSoure = p.dataSoure + }; + if (string.IsNullOrEmpty(prodInfo.ProductTitle)) + { + prodInfo.ProductTitle = tempTitle; + } + if (prodInfo.FakeMappingFrom == "苏宁") + { + prodInfo.FakeMappingVendorId = result.First().Item1.Split('/')[1]; + } + p.MappingResult = prodInfo.MappingResult = "转换成功"; + + if (!isDelOldData) + lstProductInfo.Add(prodInfo); + //lstProductInfoTemp.Add(prodInfo); + // 显示转换成功 + ShowMappingResult(p, prodInfo); + LogSave.Add("转换" + product.from_id + "成功"); + } + } + else + { + prodInfo = null; + LogSave.Add("转换失败" + prod.ProductId); + if (string.IsNullOrEmpty(prod.MappingResult)) + prod.MappingResult = "转换失败,没有找到合适的转换数据"; + else if (prod.MappingResult.Length > 2000) + prod.MappingResult = prod.MappingResult.Substring(2000); + ShowMappingResult(prod); + LogSave.Add("转换" + product.from_id + "失败"); + } + #endregion + } + + + + private Tuple MatchMeetTitleLength(string title, List> result, List> mappingResultWdTitle, out bool hit) + { + int retryCount = 0; + //暂过滤标题缓存中的淘宝商品 + //result = result.FindAll(r => !r.Item1.StartsWith("tb")); + Retry: + hit = false; + var selectMinItem = result.Find(f => f.Item3 == result.Min(s => s.Item3)); + //var title = TrimAndRemoveSpecialText(product?.name); + if (selectMinItem != null) + { + System.TimeSpan t = new TimeSpan(0); + if (!string.IsNullOrEmpty(selectMinItem.Item4)) + { + // 修复item4时间被错误赋值的数据 + if (selectMinItem.Item4 == selectMinItem.Item3.ToString()) + { + result.Remove(selectMinItem); + selectMinItem = new Tuple(selectMinItem.Item1, selectMinItem.Item2, selectMinItem.Item3, "2022-02-15"); + result.Add(selectMinItem); + } + t = DateTime.Now - selectMinItem.Item4.ParseToDateTime(); + } + //if (selectMinItem.Item1.StartsWith("tb-")) //兼容wd-xxxxxx格式的微店商品 + //{ + // //retryCount++; + // result.Remove(selectMinItem); + // goto Retry; + //} + if (t.Days > 30 || string.IsNullOrEmpty(selectMinItem.Item4)) + { + hit = true; + string item1 = selectMinItem.Item1; + int item2 = selectMinItem.Item2; + int item3 = selectMinItem.Item3; + + if (item1.StartsWith("wd-")) //兼容wd-xxxxxx格式的微店商品 + { + item1 = item1.RemovePrefix("wd-"); + } + //查找商品是否存在 + string searchTitle = WeiDianCollectBLL.GetProductTitleByHtml(item1); + if (string.IsNullOrEmpty(searchTitle)) + { + retryCount++; + result.Remove(selectMinItem); + mappingResultWdTitle.Remove(selectMinItem); + goto Retry; + } + //标题是否 满足要求 查询到的标题长度小于 上货标题+5 + bool compare = CompareTitle(title, searchTitle); + if (!compare) + { + //retryCount++; + mappingResultWdTitle.Remove(selectMinItem); + result.Remove(selectMinItem); + goto Retry; + } + } + } + return selectMinItem; + } + + private List> GetFakeCacheWd(ProductMappingImportParam prod, ref string mappingFrom) + { + return GetFakeCache(prod, ref mappingFrom, true); + } + private void GetFakeCacheIdsWd(List prods, ref string mappingFrom) + { + GetFakeCacheIds(prods, ref mappingFrom, true); + } + private List> GetFakeCacheNonWd(ProductMappingImportParam prod, ProductCollectBase product, ref string mappingFrom) + { + return GetFakeCache(prod, ref mappingFrom, false); + } + /// + /// 读取同款虚假上家列表缓存 + /// + /// + /// + /// + /// + private List> GetFakeCache(ProductMappingImportParam prod, ref string mappingFrom, bool isVDian = false) + { + var result = new List>(); + var tagStr = ""; + + if (isVDian) + { + tagStr = "vd"; + } + var fromStr = ""; + var html = ""; + if (prod == null) + return result; + + if (prod.From == "淘宝") + fromStr = "tb-"; + else if (prod.From == "阿里巴巴") + fromStr = "al-"; + else if (prod.From == "搜款网" || prod.From == "拼多多") + fromStr = "pd-"; + else if (prod.From == "京喜") + fromStr = "jx-"; + + mappingFrom = ""; + string url = BaseClass.BuildObjString("data_change&act=get"); + string data = ""; + // 根据商品id查找缓存 + if (string.IsNullOrEmpty(html) || html.ToLower().Contains("error")) + { + if (string.IsNullOrEmpty(prod.RealProductId)) + prod.RealProductId = prod.ProductId; + long insertGoodId = Convert.ToInt64(prod.RealProductId) % 1024; + data = "&product_id=" + fromStr + tagStr + prod.RealProductId + + "&img_id=" + + "&suffix=" + insertGoodId + + "&site_id=&" + UserLogin.GetSignaturex(); + + html = GetHtml.PostUtf8(url, data); + if (string.IsNullOrEmpty(html) || html.ToLower().Contains("error")) + html = GetHtml.PostUtf8(url, data); + } + //// 根据图片查找缓存 + //if (string.IsNullOrEmpty(html) || html.ToLower().Contains("error")) + //{ + // if (!string.IsNullOrEmpty(prod.Image)) + // { + // var imgId = Md5Base.GetMd5(prod.Image + tagStr).Substring(8, 16); + // var skuMod = Math.Abs(BaseClass.GetLong(imgId)); + // var insertImgId = skuMod % 1024; + // data = "&product_id=" + // + "&img_id=" + imgId + // + "&suffix=" + insertImgId + // + "&site_id=&" + UserLogin.GetSignaturex(); + + // html = GetHtml.PostUtf8(url, data); + // if (string.IsNullOrEmpty(html) || html.ToLower().Contains("error")) + // html = GetHtml.PostUtf8(url, data); + // } + //} + // 读取缓存成功 + if (!string.IsNullOrEmpty(html) && !html.ToLower().Contains("error")) + { + string siteId = BaseRegex.GetMatchRegexString(html, "\"site_id\":\"([\\s\\S]+?)\""); + if (siteId == "1") + mappingFrom = "淘宝"; + else if (siteId == "4") + mappingFrom = "京东"; + else if (siteId == "5") + mappingFrom = "苏宁"; + else if (siteId == "6") + mappingFrom = "微店"; + + string content = BaseRegex.GetMatchRegexString(html, "\"content\":\"([\\s\\S]+?)(])\""); + if (content != null) + { + content = content.Replace("\\", "") + "]"; + } + else + { + content = BaseRegex.GetMatchRegexString(html, "\"content\":\"([\\s\\S]+?)\""); + } + try + { + if (string.IsNullOrEmpty(prod.Image)) + prod.Image = BaseRegex.GetMatchRegexString(html, "\"img_url\":\"([\\s\\S]+?)\"").Replace("\\/", "/"); + } + catch (Exception ex) + { + } + + try + { + var tupleItems = content.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); + foreach (var tupleItem in tupleItems) + { + var items = tupleItem.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); + if (items.Length >= 2 && items[0].Length > 5) + { + try + { + var item1 = items[0]; + var item2 = items[1]; + var item3 = items.Length >= 3 ? items[2] : items[1]; + var item4 = items.Length >= 4 ? items[3] : ""; + result.Add(new Tuple(item1, Convert.ToInt32(item2), Convert.ToInt32(item3), item4)); + } + catch (Exception ex) + { + } + } + else if (items.Length == 1 && items[0].StartsWith("tit_")) + { + if (string.IsNullOrEmpty(prod.ProductTitle)) + { + prod.ProductTitle = items[0].Replace("tit_", ""); + prod.ProductTitle = GetHtml.Unicode2String(prod.ProductTitle).Replace("\\/", "/"); + } + } + } + } + catch (Exception ex) + { + } + return result; + } + return null; + } + + private void GetFakeCacheIds(List prods, ref string mappingFrom, bool isVDian = false) + { + + var tagStr = ""; + if (isVDian) + { + tagStr = "vd"; + } + var fromStr = ""; + var html = ""; + string temp = ""; + string url = BaseClass.BuildObjString("data_change&act=get_product_id_list"); + for (int i = 0; i < prods.Count; i++) + { + fromStr = ""; + var prod = prods[i]; + if (prod.From == "淘宝") + fromStr = "tb-"; + else if (prod.From == "阿里巴巴") + fromStr = "al-"; + else if (prod.From == "搜款网" || prod.From == "拼多多" || prod.From == "其他") + fromStr = "pd-"; + else if (prod.From == "京喜") + fromStr = "jx-"; + mappingFrom = ""; + // 根据商品id查找缓存 + if (string.IsNullOrEmpty(html) || html.ToLower().Contains("error")) + { + if (string.IsNullOrEmpty(prod.RealProductId)) + prod.RealProductId = prod.ProductId; + long insertGoodId = Convert.ToInt64(prod.RealProductId) % 1024; + if (temp != "") + temp += ";"; + temp += insertGoodId + "," + fromStr + tagStr + prod.RealProductId; + } + } + string data = "&product_ids=" + temp + "&" + UserLogin.GetSignaturex(); + html = GetHtml.PostUtf8(url, data); + if (string.IsNullOrEmpty(html) || html.ToLower().Contains("error")) + html = GetHtml.PostUtf8(url, data); + // 读取缓存成功 + if (!string.IsNullOrEmpty(html) && !html.ToLower().Contains("error")) + { + + var m = BaseRegex.GetMatchRegex(ref html, @"\{([^\]]+?)\}"); + for (int i = 0; i < m.Count; i++) + { + var result = new List>(); + var proStr = m[i].Groups[0].Value; + string siteId = BaseRegex.GetMatchRegexString(proStr, "\"site_id\":\"([\\s\\S]+?)\""); + if (siteId == "1") + mappingFrom = "淘宝"; + else if (siteId == "4") + mappingFrom = "京东"; + else if (siteId == "5") + mappingFrom = "苏宁"; + else if (siteId == "6") + mappingFrom = "微店"; + string pid = BaseRegex.GetStringJson(ref proStr, @"pid"); + var prod = prods.Find(s => pid.Contains(s.ProductId)); + + string content = BaseRegex.GetMatchRegexString(proStr, "\"content\":\"([\\s\\S]+?)\""); + if (content != null) + { + content = content.Replace("\\", "") + "]"; + } + else + { + content = BaseRegex.GetMatchRegexString(proStr, "\"content\":\"([\\s\\S]+?)\""); + } + try + { + if (string.IsNullOrEmpty(prod.Image)) + prod.Image = BaseRegex.GetMatchRegexString(proStr, "\"img_url\":\"([\\s\\S]+?)\"").Replace("\\/", "/"); + } + catch (Exception ex) + { + } + try + { + var tupleItems = content.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); + foreach (var tupleItem in tupleItems) + { + var items = tupleItem.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); + if (items.Length >= 2 && items[0].Length > 5) + { + try + { + var item1 = items[0]; + var item2 = items[1]; + var item3 = items.Length >= 3 ? items[2] : items[1]; + var item4 = items.Length >= 4 ? items[3] : ""; + result.Add(new Tuple(item1, Convert.ToInt32(item2), Convert.ToInt32(item3), item4)); + } + catch (Exception ex) + { + } + } + else if (items.Length == 1 && items[0].StartsWith("tit_")) + { + if (string.IsNullOrEmpty(prod.ProductTitle)) + { + prod.ProductTitle = items[0].Replace("tit_", ""); + prod.ProductTitle = GetHtml.Unicode2String(prod.ProductTitle).Replace("\\/", "/"); + } + } + } + } + catch (Exception ex) + { + } + UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)] = result; + } + } + for (int i = 0; i < prods.Count; i++) + { + var prod = prods[i]; + if (!UploadPinduoduoMain.goodCacheContent.ContainsKey(long.Parse(prod.ProductId))) + UploadPinduoduoMain.goodCacheContent.Add(long.Parse(prod.ProductId), null); + if (UploadPinduoduoMain.goodCacheContent.ContainsKey(long.Parse(prod.ProductId)) && UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)] != null && UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)].Count == 0) + UploadPinduoduoMain.goodCacheContent[long.Parse(prod.ProductId)] = null; + } + } + + public void ShowMappingResult(ProductMappingImportParam prod, ProductMappingExportInfo prodInfo = null) + { + } + + private void StopMapping() + { + isRun = false; + m_cancellationTokenSource.Cancel(); + } + + private void GetCatId(ProductMappingImportParam prod, long outerCatId = 1, string outerCatName = "全部商品") + { + } + + /// + /// 保存商品同款或微店数据缓存 + /// + /// + /// + /// + /// 添加还是更新(微店已有数据请使用更新) + /// + /// + private string SaveFakeCache(List> MappingResult, + ProductMappingImportParam prod, string mappingFrom, bool isAdd = true, int minResultCount = 10) + { + if (MappingResult.Count >= minResultCount) + { + // 写入缓存 + var content = ""; + foreach (var item in MappingResult) + { + content += item.Item1 + "," + item.Item2 + "," + item.Item3 + "," + item.Item4 + ";"; + } + content = content.Length > 0 ? content.Trim(';') + ";" : ""; + string url1 = BaseClass.BuildObjString("data_change&act=add_goods"); + string url2 = BaseClass.BuildObjString("data_change&act=add_imgs"); + //if (!isAdd) + // url = BaseClass.BuildObjString("data_change&act=update"); + string fromStr = ""; + if (prod.From == "淘宝") + fromStr = "tb-"; + else if (prod.From == "阿里巴巴") + fromStr = "al-"; + else if (prod.From == "拼多多" || prod.From == "搜款网") + fromStr = "pd-"; + else if (prod.From == "京喜") + fromStr = "jx-"; + + string tagStr = ""; + if (mappingFrom == "微店") + tagStr = "vd"; + + if (prod.Image.StartsWith("https:")) + prod.Image = prod.Image.Substring(6); + else if (prod.Image.StartsWith("http:")) + prod.Image = prod.Image.Substring(5); + var imgId = Md5Base.GetMd5(prod.Image + tagStr).Substring(8, 16); + string data = "&product_id=" + fromStr + tagStr + prod.RealProductId + + "&min_price=" + prod.MinPrice + + "&max_price=" + prod.MaxPrice + + "&img_url=" + prod.Image + + "&img_id=" + imgId + + "&site_id=" + ConvertMappingFromTypeToId(mappingFrom) + + "&content=" + content //+ ";tit_" + prod.ProductTitle + + "&" + UserLogin.GetSignaturex(); + long insertGoodId = Convert.ToInt64(prod.RealProductId) % 1024; + string html1 = GetHtml.PostUtf8(url1, data + "&suffix=" + insertGoodId); + var skuMod = Math.Abs(BaseClass.GetLong(imgId)); + var insertImgId = skuMod % 1024; + string html2 = GetHtml.PostUtf8(url2, data + "&suffix=" + insertImgId); + return html1 + ";" + html2; + } + return ""; + } + + /// + /// 读取同款虚假上家列表缓存,寻找商品主图或sku图相同的数据 + /// + /// + /// + /// + /// + private List> GetFakeCacheSamePic(ProductMappingImportParam prod, ProductCollectBase product, ref string mappingFrom, bool isVDian = false) + { + var result = new List>(); + var tagStr = ""; + + if (isVDian) + { + tagStr = "vd"; + } + var html = ""; + if (prod == null) + return result; + + mappingFrom = ""; + string url = BaseClass.BuildObjString("data_change&act=getImgList"); + string data = ""; + string imgIds = ""; + List picList = new List(); + List skuPicList = new List(); + if (product.Images != null && product.Images.Count > 0) + { + foreach (var img in product.Images) + { + if (!string.IsNullOrEmpty(img) && !picList.Contains(img)) + picList.Add(img); + } + } + if (product.SkuMaps != null && product.SkuMaps.Count > 0) + { + foreach (var sku in product.SkuMaps) + { + if (!string.IsNullOrEmpty(sku.prop_image) && !picList.Contains(sku.prop_image) && !skuPicList.Contains(sku.prop_image)) + skuPicList.Add(sku.prop_image); + if (skuPicList.Count >= 10) + break; + } + } + picList.AddRange(skuPicList); + foreach (var img in picList) + { + var image = img; + if (image.StartsWith("https:")) + image = image.Substring(6); + if (image.StartsWith("http:")) + image = image.Substring(5); + + var imgId = Md5Base.GetMd5(image + tagStr).Substring(8, 16); + var skuMod = Math.Abs(BaseClass.GetLong(imgId)); + var insertImgId = skuMod % 1024; + + imgIds += insertImgId + "," + imgId + ";"; + } + imgIds = imgIds.TrimEnd(';'); + data = "&product_id=" + + "&imgIds=" + imgIds + + "&suffix=" + Randomx.GetId(1024) + + "&" + UserLogin.GetSignaturex(); + html = GetHtml.PostUtf8(url, data); + if (string.IsNullOrEmpty(html) || html.ToLower().Contains("error")) + html = GetHtml.PostUtf8(url, data); + + // 读取缓存成功 + if (!string.IsNullOrEmpty(html) && !html.ToLower().Contains("error") || html.ToLower().Contains("null")) + { + var arr = html.Split(new string[] { "}", "{", "]", "[" }, StringSplitOptions.RemoveEmptyEntries); + foreach (var item in arr) + { + string siteId = BaseRegex.GetMatchRegexString(item, "\"site_id\":\"([\\s\\S]+?)\""); + if (siteId == "1") + mappingFrom = "淘宝"; + else if (siteId == "4") + mappingFrom = "京东"; + else if (siteId == "5") + mappingFrom = "苏宁"; + else if (siteId == "6") + mappingFrom = "微店"; + + string content = BaseRegex.GetMatchRegexString(item, "\"content\":\"([\\s\\S]+?)(])\""); + if (content != null) + { + content = content.Replace("\\", "") + "]"; + } + else + { + content = BaseRegex.GetMatchRegexString(item, "\"content\":\"([\\s\\S]+?)\""); + } + try + { + if (string.IsNullOrEmpty(prod.Image)) + prod.Image = BaseRegex.GetMatchRegexString(item, "\"img_url\":\"([\\s\\S]+?)\"").Replace("\\/", "/"); + } + catch (Exception ex) + { + } + + try + { + var tupleItems = content.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); + foreach (var tupleItem in tupleItems) + { + var items = tupleItem.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); + if (items.Length >= 2 && items[0].Length > 5) + { + try + { + var item1 = items[0]; + var item2 = items[1]; + var item3 = items.Length >= 3 ? items[2] : items[1]; + result.Add(new Tuple(item1, Convert.ToInt32(item2), Convert.ToInt32(item3))); + } + catch (Exception ex) + { + } + } + else if (items.Length == 1 && items[0].StartsWith("tit_")) + { + if (string.IsNullOrEmpty(prod.ProductTitle)) + { + prod.ProductTitle = items[0].Replace("tit_", ""); + prod.ProductTitle = GetHtml.Unicode2String(prod.ProductTitle).Replace("\\/", "/"); + } + } + } + } + catch (Exception ex) + { + } + } + return result; + } + return null; + } + + private string TrimAndRemoveSpecialText(string source, string keyWord = "@*.。~") + { + if (string.IsNullOrEmpty(source)) + return ""; + var title = source.Trim(keyWord.ToCharArray()); + while (title.Contains("【") && title.Contains("】")) + { + var t1 = title.IndexOf("【"); + var t2 = title.IndexOf("】"); + if (t1 < t2) + { + title = title.Substring(0, t1).TrimEnd('【') + title.Substring(t2).TrimStart('】'); + } + else + { + title = title.Substring(t2, t1 - t2); + title = title.TrimStart('】').TrimEnd('【'); + } + } + return title; + } + + /// + /// 上家对应关系 jd = 4; sn = 5; wd = 6 ; tb = 1; + /// + /// + /// + private int ConvertMappingFromTypeToId(string fromType) + { + if (fromType == "京东") + return 4; + else if (fromType == "苏宁") + return 5; + else if (fromType == "微店") + return 6; + else if (fromType == "淘宝") + return 1; + return 0; + } + public void Error(string message, ProductCollectBase pb) + { + var obj = UploadPinduoduoMain.ProductTemp.Find(p => p != null && p.guid == pb.out_id); + if (obj != null) + { + obj.Titlte = pb.name; + obj.Message = message; + } + } + } + + public class MappingVDianBLL + { + public static bool IsChangeAdsl { get; set; } = false; + } +} diff --git a/Work/Business/ProductMappingBLL/WeiDianCollectBLL.cs b/Work/Business/ProductMappingBLL/WeiDianCollectBLL.cs new file mode 100644 index 0000000..7eff429 --- /dev/null +++ b/Work/Business/ProductMappingBLL/WeiDianCollectBLL.cs @@ -0,0 +1,782 @@ +using AllBase; +using AllBase.Helper; +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Linq; +using System.Net; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; +using Work.Api; + +namespace Work.Business.ProductMappingBLL +{ + + public class WeiDianCollectBLL + { + /// + /// 微店采集是否进行 + /// + public static bool WdCollecting { get; set; } = false; + + //伪装成百度蜘蛛访问 + private static string sUserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"; + + /// + /// 微店采集进行中 + /// + internal static bool BWDCollecting; + + /// + /// 微店店铺ID + /// + private static long lWdShopId; + + /// + /// 同行店铺Ids + /// + private static List lstColleagueShopId = new List(); + + /// + /// 采集区号 + /// + private static int SectionNo; + + /// + /// 采集客户端的公网IP + /// + private static string PubIp; + + /// + /// 服务调用时间间隔基准(实际时间以此为基本随机上下浮动) + /// + private static int iTimeSpan; + + private static readonly object _locker = new object(); + + public static void StartWeiDianCollect() + { + //读取服务端的采集设置 1-功能开关; 2-请求间隔(s) + string sServerCfg = ArchiveWdCollectionConfigFromServer(); + if (string.IsNullOrEmpty(sServerCfg)) return; + string[] sConfig = sServerCfg.Split(','); + if (sConfig.Length != 2) return; + if (sConfig[0].Equals("0")) return; + iTimeSpan = int.Parse(sConfig[1]); + + //获取公网IP + PubIp = GetPublicIp(); + if (string.IsNullOrEmpty(PubIp)) return; + + //根据公网IP去服务端取采集区号(1-20亿,分2000段,每段100万笔采集量) + string sSecNoAndCollectCount = GetCollectSectionNoFromServer(); + if (string.IsNullOrEmpty(sSecNoAndCollectCount)) return; + string[] sRes = sSecNoAndCollectCount.Split(','); + SectionNo = int.Parse(sRes[0]); + //如果此公网IP采集状态为1-采集中 2-限制或已经采集完毕,则返回 + if (SectionNo < 0) + { + //MessageBox.Show(PubIp + " 不可进行采集!"); + return; + } + if (sRes.Length != 2) return; + WdCollecting = true; + int iCollectedCount = int.Parse(sRes[1]); + if (iCollectedCount >= 1000000) + { + return; + } + iTimeSpanMin = iTimeSpan; + iTimeSpanMax = iTimeSpan + 3; + Thread thread = new Thread(AutoUpdateCollectInfo) + { + IsBackground = true + }; + thread.Start(); + + Task.Factory.StartNew(() => + { + Random random = new Random(); + string sWdRes = string.Empty; + + //MessageBox.Show("已开启微店采集,将从" + (SectionNo * 1000000 + iCollectedCount + 1) + "开始"); + for (lWdShopId = SectionNo * 1000000 + iCollectedCount + 1; lWdShopId <= (SectionNo + 1) * 1000000 && WdCollecting; lWdShopId++) + { + int iRetryCnt = 0; + MakeReq: + Thread.Sleep(Randomx.GetId(iTimeSpanMin, iTimeSpanMax) * 100); + sWdRes = MakeRequestWd4GetColleagueShops(lWdShopId); + if (sWdRes.Length == 0) + { + //此IP被限制,更新服务端采集状态为2 + UpdateCollectStatusFromServer(2); + WdCollecting = false; + return; + } + if (!sWdRes.Contains("shopItems\"")) + { + if (sWdRes.Contains("请稍后重试")) + { + sUserAgent = GetHtml.UserAgent.Split('\n')[new Random(Guid.NewGuid().GetHashCode()).Next(GetHtml.UserAgent.Split('\n').Length)].Trim(); + } + iRetryCnt++; + if (iRetryCnt > 10) + { + //此IP被限制,更新服务端采集状态为2 + UpdateCollectStatusFromServer(2); + WdCollecting = false; + return; + } + Thread.Sleep(Randomx.GetId(iTimeSpanMin, iTimeSpanMax) * 100); + goto MakeReq; + } + if (!sWdRes.Contains("shopItems\":{\"items\":[{\"")) + { + continue; + } + + lock (_locker) + { + lstColleagueShopId.Add(lWdShopId.ToString()); + } + + } + WdCollecting = false; + UpdateCollectStatusFromServer(0); + }); + } + + + private static int iTimeSpanMin; + private static int iTimeSpanMax; + private static void AutoUpdateCollectInfo() + { + + while (true) + { + if (lstColleagueShopId.Count == 0 && !WdCollecting) + { + return; + } + if (lWdShopId > 0) + { + try + { + UpdateColleagueShopIdsAndCollectCountFromServer(); + lock (_locker) + { + lstColleagueShopId.Clear(); + } + } + catch (Exception ex) + { + + } + } + Thread.Sleep(Randomx.GetId(5, 10) * 1000); + } + } + + /// + /// 更新服务端的同行店铺Ids以及已采集数量 + /// + private static void UpdateColleagueShopIdsAndCollectCountFromServer() + { + string requestData = "shopIds=" + GetHtml.UrlEncodeUtf8(string.Join(",", lstColleagueShopId)) + "&collect_ip=" + PubIp + "&collect_number=" + (lWdShopId - SectionNo * 1000000); + string url = BaseClass.LoginApiUrl + "?obj=product/collect&act=add_collect_data"; + GoAheadSupportRetry(url, requestData); + } + + /// + /// 更新服务端的同行店铺Ids以及已采集数量 + /// + private static string ArchiveWdCollectionConfigFromServer() + { + string url = BaseClass.LoginApiUrl + "?obj=product/collect&act=get_collect_config"; + return GoAheadSupportRetry(url, ""); + } + + /// + /// 更新指定IP的采集状态 + /// + /// 公网IP + /// 采集状态 + public static void UpdateCollectStatusFromServer(int iStatus) + { + //调用php后台更新指定IP的采集状态 + string requestData = "collect_ip=" + PubIp + "&collect_status=" + iStatus; + string url = BaseClass.LoginApiUrl + "?obj=product/collect&act=update_collect"; + GoAheadSupportRetry(url, requestData); + } + + private static string GetCollectSectionNoFromServer() + { + //调用php后台获取指定IP的采集区号 + string requestData = "collect_ip=" + PubIp; + string url = BaseClass.LoginApiUrl + "?obj=product/collect&act=get_collect_code"; + return GoAheadSupportRetry(url, requestData); + } + + private static string GoAheadSupportRetry(string sUrl, string sReqData, int iRetryMax = 3) + { + int iRetryCnt = 0; + string result; + GoAhead: + result = GetHtml.PostUtf8(sUrl, sReqData); + if (string.IsNullOrEmpty(result) && iRetryCnt < iRetryMax) + { + iRetryCnt++; + Thread.Sleep(Randomx.GetId(50, 500)); + goto GoAhead; + } + return result; + } + + /// + /// 获取公网IP + /// + /// 公网IP地址 + private static string GetPublicIp() + { + HttpWebResponse response; + string sRes = string.Empty; + if (Request_2000019_ip138_com(out response)) + { + sRes = ReadResponse(response); + if (sRes.Length > 0) + { + Match mh = Regex.Match(sRes, "您的IP地址是:([\\w\\W]+?)"); + if (mh.Length > 0) + { + sRes = mh.Groups[1].Value; + } + else + { + sRes = string.Empty; + } + } + response.Close(); + } + return sRes; + } + + private static string ReadResponse(HttpWebResponse response) + { + using (Stream responseStream = response.GetResponseStream()) + { + Stream streamToRead = responseStream; + if (response.ContentEncoding.ToLower().Contains("gzip")) + { + streamToRead = new GZipStream(streamToRead, CompressionMode.Decompress); + } + else if (response.ContentEncoding.ToLower().Contains("deflate")) + { + streamToRead = new DeflateStream(streamToRead, CompressionMode.Decompress); + } + + using (StreamReader streamReader = new StreamReader(streamToRead, Encoding.UTF8)) + { + return streamReader.ReadToEnd(); + } + } + } + + private static bool Request_2000019_ip138_com(out HttpWebResponse response) + { + response = null; + + try + { + HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://2000019.ip138.com/"); + + request.KeepAlive = true; + request.Headers.Set(HttpRequestHeader.CacheControl, "max-age=0"); + request.Headers.Add("Upgrade-Insecure-Requests", @"1"); + request.UserAgent = sUserAgent; + request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"; + request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate"); + request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9,en;q=0.8"); + request.Headers.Set(HttpRequestHeader.Cookie, @"PHPSESSID=gouadr6cgch4h4st8pdi1gavp3; ASPSESSIONIDASBCSTBS=JOPDALEBHONGIBJHJPPJFPDJ"); + + response = (HttpWebResponse)request.GetResponse(); + } + catch (WebException e) + { + if (e.Status == WebExceptionStatus.ProtocolError) response = (HttpWebResponse)e.Response; + else return false; + } + catch (Exception) + { + if (response != null) response.Close(); + return false; + } + + return true; + } + + private static string MakeRequestWd4GetColleagueShops(long lShopId) + { + HttpWebResponse response; + var v = ""; + if (Request_weidian_com(lShopId, out response)) + { + try + { + using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) + { + v = sr.ReadToEnd(); + } + response.Close(); + } + catch (Exception ex) + { + + } + } + else + { + return ""; + } + return v; + } + + private static bool Request_weidian_com(long lShopId, out HttpWebResponse response) + { + response = null; + MakeRequestWd: + try + { + //获取店铺第1000+商品信息 + HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://thor.weidian.com/ares/shop.getItemsInShop/1.0?param={\"shopId\":\"" + lShopId + "\",\"page\":11,\"limit\":100}"); + request.KeepAlive = true; + request.Timeout = 15000; + request.Headers.Set(HttpRequestHeader.CacheControl, "max-age=0"); + request.Headers.Add("Upgrade-Insecure-Requests", @"1"); + request.UserAgent = sUserAgent; + request.Headers.Add("Sec-Fetch-User", @"?1"); + request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"; + request.Headers.Add("Sec-Fetch-Site", @"none"); + request.Headers.Add("Sec-Fetch-Mode", @"navigate"); + request.Headers.Set(HttpRequestHeader.AcceptEncoding, "deflate, br"); + request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9,en;q=0.8"); + //request.Headers.Set(HttpRequestHeader.Cookie, @"__spider__visitorid=99847ca38c8d6d84; vc_fpcookie=d09a621b-a4c6-d905-0177-9da2ce436be1; vc_device_id=d496a1adb4f8b88d65cb30de7264031a; login_token=_EwWqqVIQEOZk3K4Xlw_Jg9LlPshZBhdbAvfITT9_RjRD4NcDyFJyjJbYfnhizpflOAvHfG7PSMovzOj4ejBjwzfzrKMKMUcsDhgsUlZEVouSxvo1LW0VS9eKDZ828OLKQsajaJG78ddJmfGxxrUPHJEU84juJHaEPl_TuzFNJSLgN9_LqOI; is_login=true; login_type=LOGIN_USER_TYPE_MASTER; login_source=LOGIN_USER_SOURCE_MASTER; uid=316846450; sid=316846450; token=; isLogin=; loginUserType=; loginUserSource=; WD_b_wduss=; WD_s_wduss=; WD_b_id=; WD_s_id=; WD_b_country=; WD_b_tele=; WD_s_tele=; WD_seller=; vc_token_id=8903a2e4-00d2-220c-8967-a4acf4fbcce1-16f6563b2b8-3a46; WD_wfr=shop; unreadMsg=0; WD_guid=1577962261222_1977684674589264; v-components/cpn-coupon-dialog@iwdDefault=1; CartreferrerURl=shopid_212239496; __spider__sessionid=455f3f04f7aaf1bb; wdtoken=c511ac4f; is_follow_mp=0; cart_inner_item_count=0"); + + response = (HttpWebResponse)request.GetResponse(); + } + catch (WebException e) + { + if (e.Message.Contains("超时")) + { + Thread.Sleep(Randomx.GetId(1, 5) * 1000); + goto MakeRequestWd; + } + return false; + } + catch (Exception ex) + { + if (ex.Message.Contains("超时")) + { + Thread.Sleep(Randomx.GetId(1, 5) * 1000); + goto MakeRequestWd; + } + return false; + } + + return true; + } + + private static Random random = new Random(); + public static string[] arrSignSvrWeidian; + //private static string[] arrSignSvrWeidian = "26t606j345.zicp.vip:48932;2664638a6k.qicp.vip;2664638a6k.qicp.vip:12393".Split(';'); + + /// + /// WeiDian Context集合 + /// + private static string[] arrWeiDianContext = null; + /// + /// 微店app接口api版本 + /// + private static List thorVers = "2.4,2.6".Split(',').ToList(); + + /// + /// 通过关键词(或标题)搜索微店商品 + /// + /// 搜索关键词或标题 + /// 价格最低价,不限制传0 + /// 价格最高价,不限制传0 + /// 搜索页数,从1开始 + /// 是否调用加密接口 + /// 是否通过hook方式 + /// + public static string SearchWdProductsByKeywords(string sSearchKeyword, double dPriceMin = 0, double dPriceMax = 0, int iPage = 1, bool bEncryptResponse = false, bool bHookMode = false) + { + #region Random params Prevent being restricted + long lTimeStampMilli = BaseClass.ConvertDateTimeLong(); + string sSign = Md5Base.GetMd5(lTimeStampMilli / 1000 + "nbytht"); + int index = random.Next(0, arrSignSvrWeidian.Length); + string sSignSvrWeidian = arrSignSvrWeidian[index]; + //随机参数全部移至hook App端完成以节省传输带宽 + //string sAndroidId = BaseClass.GetRandomAlphanumeric(16).ToLower(); + //string sBrand = "Huawei,HONOR,Xiaomi,Meizu,samsung,Lenovo,zte,htc,nubia".Split(',')[random.Next(0, 9)]; + string sCuid = Guid.NewGuid().ToString().Replace("-", ""); + //string sImei = BaseClass.GetRandromNumeral(15); + //经纬度随机 + //string sLat = (random.NextDouble() * (53.550000 - 3.860000) + 3.860000).ToString("f6"); + //string sLon = (random.NextDouble() * (135.050000 - 73.660000) + 73.660000).ToString("f6"); + //string sMac = BaseClass.RandomMacAddress().ToUpper(); + //string sWmac = BaseClass.RandomMacAddress().ToLower(); + string sFootprintId = sCuid + "_" + lTimeStampMilli; + string sChoicePrices = string.Empty; + if (dPriceMax > 0 || dPriceMin > 0) + { + sChoicePrices = (dPriceMin > 0 ? dPriceMin.ToString() : " ") + "-" + (dPriceMax > 0 ? dPriceMax.ToString() : " "); + } + #endregion + + #region 构造PostData原文并通过hook得到PostData密文 + //先从后台获取WdContext集合 + if (arrWeiDianContext == null) + { + arrWeiDianContext = GetWdContextService(); + } + int iTryTimes = 0; + LbHookPostData: + index++; + if (index > 2) + index = 0; + sSignSvrWeidian = arrSignSvrWeidian[index]; + string sContext = arrWeiDianContext[Randomx.GetId(arrWeiDianContext.Length)]; + string sParam = @"{""area"":"""",""brands"":[],""chosePoints"":"""",""chosePrices"":""" + sChoicePrices + @""",""coreWord"":"""",""footprintId"":""" + sFootprintId + @""",""id"":""" + sSearchKeyword + @""",""increServices"":[],""keyword"":""" + sSearchKeyword + @""",""limit"":16,""order"":""desc"",""page"":" + iPage + @",""remind"":1,""search_wfr"":""search_input"",""sortKey"":""price"",""source"":""1"",""tab"":""all"",""tags"":[],""wdServices"":[]}"; + string sPostData = @"v=2.0×tamp=" + lTimeStampMilli + @"&appkey=06475281&context=" + HttpHelper.UrlEncode(sContext) + "¶m=" + HttpHelper.UrlEncode(sParam); + + //不走hook方式,走直调接口方式 + if (!bHookMode) + { + string platForm = new string[] { "ios", "android" }.ToList()[random.Next(2)]; + string thorVer = thorVers[random.Next(thorVers.Count)]; + string userAgent = $"{platForm.ToUpper()}/{random.Next(5, 8)}.{random.Next(0, 3)}.{random.Next(5)} WDAPP(WDBuyer/{random.Next(5, 8)}.{random.Next(0, 3)}.{random.Next(5)}) Thor/{thorVer}.6.6"; + return HttpHelper.Post(new AllBase.Helper.HttpParam() { Url = $"http://thor.weidian.com/faith/search.item/{thorVer}", Method = "POST", PostData = sPostData, Referer = $"https://{platForm}.weidian.com", UserAgent = userAgent }); + } + + //走hook方式 + AllBase.Helper.HttpParam httpParamRequest = new AllBase.Helper.HttpParam + { + Url = $"http://{sSignSvrWeidian}/sign/do.json?action=request&nb_timestamp={lTimeStampMilli / 1000}&nb_sign={sSign}&mode=0", + PostData = sPostData, + Timeout = 10, + ContentType = "application/x-www-form-urlencoded; charset=utf-8" + }; + string requestResult = string.Empty; + try + { + Thread.Sleep(random.Next(1, 3) * 1000); + requestResult = HttpHelper.Post(httpParamRequest); + if (string.IsNullOrEmpty(requestResult) ) + { + if (ProductMapping.ischeck) + UploadPinduoduoMain.CheckSearch = false; + LogSave.Add("标题搜索sign为空"+ sSignSvrWeidian); + } + } + catch (Exception ex) + { + LogSave.Add("微店标题搜索接口请求异常:" + ex.Message); + } + + if (!requestResult.Contains("data") && iTryTimes < 1) + { + Thread.Sleep(random.Next(2, 3) * 1000); + iTryTimes++; + goto LbHookPostData; + } + if (!requestResult.Contains("data")) return ""; + #endregion + + #region 发送PostData密文去请求微店接口 可得到ResponseData明文,也可得到ResponseData密文 + AllBase.Helper.HttpParam httpParamWeiDian = new AllBase.Helper.HttpParam + { + Url = "http://thor.weidian.com/faith/search.item/2.4", + UserAgent = "Android/6.0.1 WDAPP(WDBuyer/6.0.3) Thor/2.3.6.3", + Timeout = 6, + Referer = "https://android.weidian.com", + ContentType = "application/x-www-form-urlencoded; charset=utf-8", + Header = new Dictionary() + }; + httpParamWeiDian.Header.Add("accept-encoding", bEncryptResponse ? "GLZip" : "Deflate"); + httpParamWeiDian.Header.Add("x-origin", "thor"); + httpParamWeiDian.Header.Add("x-schema", "https"); + httpParamWeiDian.Header.Add("x-encrypt", bEncryptResponse ? "1" : "0"); + httpParamWeiDian.Header.Add("origin", "android.weidian.com"); + httpParamWeiDian.PostData = HtmlHelper.Resove(requestResult, "\"data\":\"", "\""); + if (!bEncryptResponse) + { + try + { + Thread.Sleep(random.Next(1, 6) * 1000); + requestResult = HttpHelper.Post(httpParamWeiDian); + if (string.IsNullOrEmpty(requestResult)) + { + if (ProductMapping.ischeck) + UploadPinduoduoMain.CheckSearch = false; + LogSave.Add("标题搜索返回数据为空"); + } + else + { + if (ProductMapping.ischeck) + UploadPinduoduoMain.CheckSearch = true; + } + } + catch (Exception ex) + { + LogSave.Add("微店标题搜索接口请求异常:" + ex.Message); + return ""; + } + return requestResult; + } + + var result = PostByte(httpParamWeiDian); + #endregion + + #region 将ResponseData密文通过hook得到ResponseData原文 + string base64 = Convert.ToBase64String(result); + AllBase.Helper.HttpParam httpParamResponse = new AllBase.Helper.HttpParam + { + Url = $"http://{sSignSvrWeidian}/sign/do.json?action=response&nb_timestamp={lTimeStampMilli / 1000}&nb_sign={sSign}", + PostData = "data=" + HttpHelper.UrlEncode(base64), + ContentType = "application/x-www-form-urlencoded; charset=utf-8" + }; + try + { + Thread.Sleep(random.Next(1, 3) * 1000); + requestResult = HttpHelper.Post(httpParamResponse); + if (string.IsNullOrEmpty(requestResult)) + LogSave.Add("标题搜索返回数据为空"); + } + catch (Exception ex) + { + LogSave.Add("微店标题搜索接口请求异常:" + ex.Message); + return ""; + } + return requestResult; + #endregion + + //微店不加密接口已失效 + //return HttpHelper.PostUtf8(new HttpParam() { Url = "http://thor.weidian.com/faith/search.item/2.6", Method = "POST", PostData = sPostData, Referer = "https://android.weidian.com", UserAgent = "Android/6.0.1 WDAPP(WDBuyer/6.0.6) Thor/2.3.6.6"}); + } + + /// + /// 获取WeiDian Context集合 + /// + private static string[] GetWdContextService() + { + string url = BaseClass.LoginApiUrl + "/?obj=api/config&act=wd_context_v2"; + string res = GetHtml.PostUtf8(url, UserLogin.GetSignaturex()); + if (!string.IsNullOrEmpty(res)) + { + return res.Split(';'); + } + else //默认值 + { + return "{\"appid\":\"wxbuyer\",\"platform\":\"windows\",\"token\":\"_EwWqqVIQEyZKqM2PZUQcHsBRwE4X41-sxHF1SqJBMKW2-Ep2_ZxzVdoS3mvrvYTCcedcJUxCdAZgIkypkz3F811inqWCXWSaHf0yZytHxQQPF0aHUeF769XwaWw9YTrae-VxRE3RW69O6yqFWrj5qamlgfD3SpACdiOJvjxUfdXWKNPP75I\",\"duid\":\"1315506113\",\"uss\":\"_EwWqqVIQEyZKqM2PZUQcHsBRwE4X41-sxHF1SqJBMKW2-Ep2_ZxzVdoS3mvrvYTCcedcJUxCdAZgIkypkz3F811inqWCXWSaHf0yZytHxQQPF0aHUeF769XwaWw9YTrae-VxRE3RW69O6yqFWrj5qamlgfD3SpACdiOJvjxUfdXWKNPP75I\",\"anonymousId\":\"0b40d738ec8016f5ef0e833bf66b8aa87099dfb6\",\"userID\":\"1315506113\",\"wduserID\":\"1315506113\",\"wxappid\":\"wx4b74228baa15489a\"};{\"appid\":\"wxbuyer\",\"platform\":\"windows\",\"token\":\"_EwWqqVIQImnSvEqukYADvVMSBDbMsIttEmXS8YwnHdmlBEG8kLxGxWInk0EXrYqljlRQ5lp2uJUhT0NPcSWsHqVVElpJmXUqiopvGs2HmBWjtr678V0yprAkS9OP3pVsdutyQgzbmYIUhl6PFs7VUEeFM0pNqHBYf_G7TYDljpjFRRG_Cbc\",\"duid\":\"1613253916\",\"uss\":\"_EwWqqVIQImnSvEqukYADvVMSBDbMsIttEmXS8YwnHdmlBEG8kLxGxWInk0EXrYqljlRQ5lp2uJUhT0NPcSWsHqVVElpJmXUqiopvGs2HmBWjtr678V0yprAkS9OP3pVsdutyQgzbmYIUhl6PFs7VUEeFM0pNqHBYf_G7TYDljpjFRRG_Cbc\",\"anonymousId\":\"1b28adc9e6113131422488e3a97f7d0f6df2c833\",\"userID\":\"1613253916\",\"wduserID\":\"1823050762\",\"wxappid\":\"wx4b74228baa15489a\"};{\"appid\":\"wxbuyer\",\"platform\":\"windows\",\"token\":\"_EwWqqVIQa4fD09LpoVv8vECPm18ebpjpxNzDXTBQV2dzCBTLwDU6B8KhNZFIsNJg2Mi5AZxMWSnQkfQvLaPodjEYfXVnXjwBIjKff_iD4TiuEQF6gObB1Dx12jkBLQ2Ztfuz_Wys_n9m0_gDsBfb_QLJp8f9jd8pbx_-6oxm4kMQkq9vaxs\",\"duid\":\"1590515991\",\"uss\":\"_EwWqqVIQa4fD09LpoVv8vECPm18ebpjpxNzDXTBQV2dzCBTLwDU6B8KhNZFIsNJg2Mi5AZxMWSnQkfQvLaPodjEYfXVnXjwBIjKff_iD4TiuEQF6gObB1Dx12jkBLQ2Ztfuz_Wys_n9m0_gDsBfb_QLJp8f9jd8pbx_-6oxm4kMQkq9vaxs\",\"anonymousId\":\"fe0168956c78bc160aa51cadeab4fbf0e841b88a\",\"userID\":\"1590515991\",\"wduserID\":\"1720909970\",\"wxappid\":\"wx4b74228baa15489a\"};{\"appid\":\"wxbuyer\",\"platform\":\"windows\",\"token\":\"_EwWqqVIQWKgZwEXoPyaPyTxVrRnpBvbA4ub2vlaYOIf3sQutH5kaxt5C-eV-srUxI-hDSV5WjqoZc_hAIy7v6KAWaCr1r0SGB91ysDkKLNdqNao-aP9j0P4IZ4m7kBrc4vr0TCOVUi8L_JpEZ32v-HH6ONT6oHd--aAfOqF6JmJAR3J-OZI\",\"duid\":\"1458041550\",\"uss\":\"_EwWqqVIQWKgZwEXoPyaPyTxVrRnpBvbA4ub2vlaYOIf3sQutH5kaxt5C-eV-srUxI-hDSV5WjqoZc_hAIy7v6KAWaCr1r0SGB91ysDkKLNdqNao-aP9j0P4IZ4m7kBrc4vr0TCOVUi8L_JpEZ32v-HH6ONT6oHd--aAfOqF6JmJAR3J-OZI\",\"anonymousId\":\"9740e2814bdda65f15fe00b6baaa20516a6b9ebb\",\"userID\":\"1458041550\",\"wduserID\":\"1775289160\",\"wxappid\":\"wx4b74228baa15489a\"};{\"appid\":\"wxbuyer\",\"platform\":\"windows\",\"token\":\"_EwWqqVIQAbBHv33Hb8h4BTk6D3xDuZ2xb3M_3Qx9BwNiUgBZD5YU_sN-Z5WxWqifRhJpnIBo02A4a0Gd9BhKGlQXVHrjhlqIzWU3t7gOvfAtTkF6zY7lV_hULG3jZ-XxkgmV8m9jKYQMdGw8jw_XqRvUuHZeTW3o1ZifXyPwEp0w1DIYBjo\",\"duid\":\"1457886926\",\"uss\":\"_EwWqqVIQAbBHv33Hb8h4BTk6D3xDuZ2xb3M_3Qx9BwNiUgBZD5YU_sN-Z5WxWqifRhJpnIBo02A4a0Gd9BhKGlQXVHrjhlqIzWU3t7gOvfAtTkF6zY7lV_hULG3jZ-XxkgmV8m9jKYQMdGw8jw_XqRvUuHZeTW3o1ZifXyPwEp0w1DIYBjo\",\"anonymousId\":\"c946abdbbf6d2b176c5dafc115ccfa4407cc9b96\",\"userID\":\"1457886926\",\"wduserID\":\"1728949064\",\"wxappid\":\"wx4b74228baa15489a\"};{\"appid\":\"wxbuyer\",\"platform\":\"windows\",\"token\":\"_EwWqqVIQW0SLhMjMF--dXY8z4sLNA3i5yMCTOiAPdb8FGVrzqA_AxJ5aE-DtSbMhMEDgz2Pp59KBt26jK9WkaJPGfGtc8kRu8s40RdEhBk2i4rIKIPBAXSl6-jS-4NH0PZe00q3ppBYuvjfFfoeZeBfCdiA4K4G5G4NvExeEm1RXBLeGz8c\",\"duid\":\"1457941037\",\"uss\":\"_EwWqqVIQW0SLhMjMF--dXY8z4sLNA3i5yMCTOiAPdb8FGVrzqA_AxJ5aE-DtSbMhMEDgz2Pp59KBt26jK9WkaJPGfGtc8kRu8s40RdEhBk2i4rIKIPBAXSl6-jS-4NH0PZe00q3ppBYuvjfFfoeZeBfCdiA4K4G5G4NvExeEm1RXBLeGz8c\",\"anonymousId\":\"ef346e978e0e576758509467fadbc4d7a8c3c7d0\",\"userID\":\"1457941037\",\"wduserID\":\"1746010952\",\"wxappid\":\"wx4b74228baa15489a\"};{\"appid\":\"wxbuyer\",\"platform\":\"windows\",\"token\":\"_EwWqqVIQfrm41rMjm-1cmkdyFH2WD0Rd8omOQkZMWyMXqTTIzXPGF_kh1kdAGULBIQn6IM_82tKHzxCpzQvpTpVpNPBY5xBrrc04ZmKq4lgi3f-hs16Nlay9KHB5x4AmHES3zNHL2NrHODzriqgnQrMN-tp1m0k-aU4SzIjjrIrWhvvKx48\",\"duid\":\"1457948637\",\"uss\":\"_EwWqqVIQfrm41rMjm-1cmkdyFH2WD0Rd8omOQkZMWyMXqTTIzXPGF_kh1kdAGULBIQn6IM_82tKHzxCpzQvpTpVpNPBY5xBrrc04ZmKq4lgi3f-hs16Nlay9KHB5x4AmHES3zNHL2NrHODzriqgnQrMN-tp1m0k-aU4SzIjjrIrWhvvKx48\",\"anonymousId\":\"d5e95317c5e65351a64b4cffd9af0d51b60f7102\",\"userID\":\"1457948637\",\"wduserID\":\"1716544328\",\"wxappid\":\"wx4b74228baa15489a\"};{\"appid\":\"wxbuyer\",\"platform\":\"windows\",\"token\":\"_EwWqqVIQIx4ntFzDm50GX5WS1aWQuasH1x-Epv5HAlG60iSG6OdlnxQ_FspOnIq4FFQXgCtMoOCDzuTPFLZ3l0oLQ2ewticmOLLd90KgCkt0cUNELEen2nrrT06kmvij2yjFAWGiHqZRp2aGXAVm_OTW40ktzSFEShdjZIvgM02mS00ZDlI\",\"duid\":\"1613513032\",\"uss\":\"_EwWqqVIQIx4ntFzDm50GX5WS1aWQuasH1x-Epv5HAlG60iSG6OdlnxQ_FspOnIq4FFQXgCtMoOCDzuTPFLZ3l0oLQ2ewticmOLLd90KgCkt0cUNELEen2nrrT06kmvij2yjFAWGiHqZRp2aGXAVm_OTW40ktzSFEShdjZIvgM02mS00ZDlI\",\"anonymousId\":\"f0cd1119c8cf0cecce0fa6af90531a7ffc258e6f\",\"userID\":\"1613513032\",\"wduserID\":\"1794619402\",\"wxappid\":\"wx4b74228baa15489a\"}".Split(';'); ; + } + } + + private static string userAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"; + + /// + /// 获取指定微店商品标题_商品网页获取模式(目前暂未遇到采集限制,故无法确切做限制过滤) + /// + /// 微店商品id + /// 最大重试次数 + /// 商品标题(为空则表示商品不存在) + public static string GetProductTitleByHtml(string itemId, int iMaxTryTimes = 1) + { + int iTryTimes = 0; + while(iTryTimes++ < iMaxTryTimes) + { + string wdToken = BaseClass.GetRandomAlphanumeric(8).ToLower(); //随机参数 wdtoken=f1565ee9 + AllBase.Helper.HttpParam httpParam = new AllBase.Helper.HttpParam + { + Url = $"https://weidian.com/item.html?itemID={itemId}", + Referer = $"https://weidian.com/item.html?itemID={itemId}&spider_token={BaseClass.GetRandomAlphanumeric(4).ToLower()}", + UserAgent = GetProxyHtml.UserAgentList?.Count > 0 + ? GetProxyHtml.UserAgentList[Randomx.GetId(GetProxyHtml.UserAgentList.Count)] + : userAgent, + Timeout = 10, + Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + Cookie = $"wdtoken={wdToken}; __spider__visitorid={BaseClass.GetRandomAlphanumeric(16).ToLower()}; visitor_id={BaseClass.GetRandomAlphanumeric(8).ToLower()}-{BaseClass.GetRandomAlphanumeric(4).ToLower()}-{BaseClass.GetRandomAlphanumeric(4).ToLower()}-{BaseClass.GetRandomAlphanumeric(4).ToLower()}-{BaseClass.GetRandomAlphanumeric(12).ToLower()}" + }; + string res = HttpHelper.Get(httpParam); + string itemTitle = BaseRegex.GetMatchMaxRegexString(ref res, "([\\w\\W]+?)"); + if(!string.IsNullOrEmpty(itemTitle)) + { + return itemTitle; + } + } + return null; + } + + /// + /// 获取指定微店商品标题_商品Api获取模式(目前暂未遇到采集限制,故无法确切做限制过滤) + /// + /// 微店商品id + /// 商品详情数据 + public static string GetProductDetailByApi(string itemId) + { + string wdToken = BaseClass.GetRandomAlphanumeric(8).ToLower(); //随机参数 wdtoken=f1565ee9 + AllBase.Helper.HttpParam httpParam = new AllBase.Helper.HttpParam + { + Url = $"https://thor.weidian.com/detail/getItemSkuInfo/1.0?param=%7B%22itemId%22%3A%22{itemId}%22%7D&wdtoken={wdToken}&_={BaseClass.ConvertDateTimeLong()}", + Referer = $"https://weidian.com/item.html?itemID={itemId}&spider_token=9d2e", + UserAgent = GetProxyHtml.UserAgentList?.Count > 0 + ? GetProxyHtml.UserAgentList[Randomx.GetId(GetProxyHtml.UserAgentList.Count)] + : userAgent, + Timeout = 10, + Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + Cookie = $"wdtoken={wdToken}; __spider__visitorid={BaseClass.GetRandomAlphanumeric(16).ToLower()}; visitor_id={BaseClass.GetRandomAlphanumeric(8).ToLower()}-{BaseClass.GetRandomAlphanumeric(4).ToLower()}-{BaseClass.GetRandomAlphanumeric(4).ToLower()}-{BaseClass.GetRandomAlphanumeric(4).ToLower()}-{BaseClass.GetRandomAlphanumeric(12).ToLower()}" + }; + return HttpHelper.Get(httpParam); + } + + public static byte[] PostByte(AllBase.Helper.HttpParam httpParam, bool throwException = false) + { + if (string.IsNullOrEmpty(httpParam.Url)) + { + return default(byte[]); + } + try + { + HttpWebRequest request = GetHttpWebRequest(httpParam); + request.Method = "Post"; + SetPostData(request, httpParam.PostData); + return ReadResponseByte(request); + } + catch (Exception ex) + { + LogHelper.WriteWithTime(ex); + if (!ex.Message.Contains("404")) + { + LogHelper.WriteWithTime(ex); + if (httpParam.TryTimes > 0 && httpParam.ActualTryTimes < httpParam.TryTimes) + { + httpParam.ActualTryTimes++; + PostByte(httpParam, throwException); + } + if (throwException) + { + throw ex; + } + } + } + return default(byte[]); + } + + public static void SetPostData(HttpWebRequest request, string postData) + { + request.ServicePoint.Expect100Continue = false; + byte[] postDataByte = Encoding.UTF8.GetBytes(postData); + request.ContentLength = postDataByte.Length; + request.AllowAutoRedirect = false; + using (Stream requestStream = request.GetRequestStream()) + { + requestStream.Write(postDataByte, 0, postDataByte.Length); + } + } + + public static byte[] ReadResponseByte(HttpWebRequest request) + { + using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) + { + using (BinaryReader binaryReader = new BinaryReader(response.GetResponseStream())) + { + using (MemoryStream ms = new MemoryStream()) + { + byte[] buffer = binaryReader.ReadBytes(1024); + while (buffer.Length > 0) + { + ms.Write(buffer, 0, buffer.Length); + buffer = binaryReader.ReadBytes(1024); + } + byte[] fileByte = new byte[ms.Length]; + ms.Position = 0; + ms.Read(fileByte, 0, fileByte.Length); + return fileByte; + } + } + } + } + + public static HttpWebRequest GetHttpWebRequest(AllBase.Helper.HttpParam param) + { + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(param.Url); + if (param.Proxy != null) + { + request.Proxy = param.Proxy; + } + else + { + request.Proxy = NaiBaGlobalConfig.GetDevelopProxy(); + } + if (!string.IsNullOrEmpty(param.UserAgent)) + { + request.UserAgent = param.UserAgent; + } + else + { + request.UserAgent = ""; + } + if (!string.IsNullOrEmpty(param.Accept)) + { + request.Accept = param.Accept; + } + else + { + request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; + } + if (string.IsNullOrEmpty(param.AcceptLanguage)) + { + request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8"); + } + else + { + request.Headers.Add("Accept-Language", param.AcceptLanguage); + } + if (!string.IsNullOrEmpty(param.ContentType)) + { + request.ContentType = param.ContentType; + } + else + { + request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8"; + } + if (!string.IsNullOrEmpty(param.Referer)) + { + request.Referer = param.Referer; + } + request.Headers.Remove("Cookie"); + if (!string.IsNullOrEmpty(param.Cookie)) + { + request.Headers.Add("Cookie", param.Cookie); + } + if (param.Header != null) + { + foreach (KeyValuePair header in param.Header) + { + request.Headers.Add(header.Key, header.Value); + } + } + if (param.Timeout > 0) + { + request.Timeout = param.Timeout * 1000; + } + else + { + request.Timeout = 60 * 1000; + } + return request; + } + } +} diff --git a/Work/CollectClass/JingXiCollect.cs b/Work/CollectClass/JingXiCollect.cs index cd5ba72..da5f95e 100644 --- a/Work/CollectClass/JingXiCollect.cs +++ b/Work/CollectClass/JingXiCollect.cs @@ -2,7 +2,6 @@ using AllBase.Helper; using NaiBa.Util; using NaiBa.Util.Extension; -using NaiBa.Util.Helper; using System; using System.Collections.Generic; using System.IO; @@ -28,6 +27,7 @@ namespace Work.CollectClass */ public class JingXiCollect { + public static bool IsProxyOverdue = false; /// /// 已经下架的商品集合 /// diff --git a/Work/CollectClass/PinduoduoProductCollect.cs b/Work/CollectClass/PinduoduoProductCollect.cs index e1fd437..669c82f 100644 --- a/Work/CollectClass/PinduoduoProductCollect.cs +++ b/Work/CollectClass/PinduoduoProductCollect.cs @@ -26,12 +26,18 @@ namespace Work.CollectClass public static List Mobiles = new List(); public string Name, TempHtml = ""; public bool NoAdd = false, Cloud = false, OnSale = true; + public bool IsOnSale { get { return OnSale; } set { OnSale = value; } } public int MainCatId = 0; public string message = ""; public static Dictionary dic = new Dictionary(); public static List PinDuoDuoTokenList = new List(); public static bool isProxyAvailable = true; + /// + /// 是否用资源包 + /// + public bool IsResourcePack = false; public bool IsUseProxy = true; + public bool IsUseProxyIP { get { return IsUseProxy; } set { IsUseProxy = value; } } public static string proxymessage = ""; public bool isUseCache = true; private static int count = 0; @@ -39,6 +45,23 @@ namespace Work.CollectClass public bool isSearchUp = false; public bool IsNoToken = false; public bool IsAdvance = false; + /// + /// 是否预售(小奶牛) + /// + public bool IsPresale { get { return IsAdvance; } set { IsAdvance = value; } } + /// + /// 是否售罄 + /// + public bool IsSaleOut = false; + /// + /// 商品是否不存在 + /// + public bool IsNotExist = false; + public bool IsProxyOverdue = false; + /// + /// 通过代理获取商品是否失败 + /// + public bool IsUseProxyIPGetProductFailure = false; private static Dictionary DicApiUid = new Dictionary(); public PinduoduoProductCollect(string name, TaobaoProductBase product) {