From f4a0f2acc63d7785eab108419a4e16f5f688cb95 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期六, 18 一月 2020 12:06:27 +0800
Subject: [PATCH] 用户注册信息

---
 fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java |  132 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 132 insertions(+), 0 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java
index 4140021..da4e698 100644
--- a/fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java
+++ b/fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java
@@ -6,13 +6,17 @@
 import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
+import java.net.URLDecoder;
 import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import javax.script.Invocable;
 import javax.script.ScriptEngine;
@@ -27,6 +31,7 @@
 import org.jsoup.select.Elements;
 import org.yeshi.utils.BigDecimalUtil;
 import org.yeshi.utils.HttpUtil;
+import org.yeshi.utils.NumberUtil;
 
 import com.yeshi.fanli.dto.GoodsClassDTO;
 import com.yeshi.fanli.dto.jd.JDCommissionInfo;
@@ -36,6 +41,7 @@
 import com.yeshi.fanli.dto.jd.JDSearchResult;
 import com.yeshi.fanli.dto.jd.JDShopInfo;
 import com.yeshi.fanli.entity.jd.JDGoods;
+import com.yeshi.fanli.log.LogHelper;
 import com.yeshi.fanli.tag.PageEntity;
 import com.yeshi.fanli.util.MoneyBigDecimalUtil;
 import com.yeshi.fanli.util.StringUtil;
@@ -626,6 +632,121 @@
 	}
 
 	/**
+	 * 閫氳繃閾炬帴id
+	 * 
+	 * @param url
+	 * @return
+	 */
+	public static String getJDGoodsIdByWeiXin(String url) {
+		if (StringUtil.isNullOrEmpty(url))
+			return null;
+
+		try {
+			String id = null;
+			int indexOf = url.indexOf("?");
+			url = url.substring(indexOf + 1, url.length() - 1);
+			String[] temp = url.split("&");
+			for (int i = 0; i < temp.length; i++) {
+				String content = temp[i];
+				if (content.startsWith("sku")) {
+					id = content.split("=")[content.split("=").length - 1];
+					break;
+				}
+			}
+			return id;
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	/**
+	 * 鏍规嵁 u.jd鐭繛鎺ヨ幏鍙栫湡瀹炵殑鍟嗗搧id
+	 * 
+	 * @param url
+	 * @return
+	 */
+	public static String getJDGoodsIdByUJD(String url) {
+		try {
+			String body = HttpUtil.get(url);
+			Document doc = Jsoup.parse(body);
+			Elements els = doc.getElementsByTag("script");
+			for (int i = 0; i < els.size(); i++) {
+				String content = els.get(i).html();
+				if (content.indexOf("var hrl") > -1) {
+					ScriptEngineManager manager = new ScriptEngineManager();
+					ScriptEngine engine = manager.getEngineByName("javascript");
+
+					int indexOf = content.indexOf("var hrl");
+					content = content.substring(indexOf, content.length());
+
+					int indexOf2 = content.indexOf(";");
+					content = content.substring(0, indexOf2 + 1);
+
+					String js = "function getData(){return  JSON.stringify(hrl);}" + content;
+
+					engine.eval(js);
+					if (engine instanceof Invocable) {
+						Invocable in = (Invocable) engine;
+						String data = in.invokeFunction("getData").toString();
+						String link = data.substring(1, data.length() - 1);
+						// 灏嗛摼鎺ヤ腑鏈猠ncode鐨勫弬鏁癳ncode
+						String param = link.split("\\?")[1];
+						String host = link.split("\\?")[0];
+						String[] params = param.split("&");
+						String paramStr = "";
+						for (String p : params) {
+							String value = p.substring(p.indexOf("=") + 1);
+							String key = p.substring(0, p.indexOf("="));
+							if (URLDecoder.decode(value, "UTF-8").equalsIgnoreCase(value)) {
+								value = URLEncoder.encode(value, "UTF-8");
+							}
+							paramStr += key + "=" + value + "&";
+						}
+						link = host + "?" + paramStr;
+						String realLink = HttpUtil.getLocation(link);
+						Map<String, String> paramsMap = new HashMap<>();
+
+						param = realLink.split("\\?")[1];
+						params = param.split("&");
+						for (String p : params) {
+							String value = p.substring(p.indexOf("=") + 1);
+							String key = p.substring(0, p.indexOf("="));
+							paramsMap.put(key, value);
+						}
+						if (!StringUtil.isNullOrEmpty(paramsMap.get("sku"))) {
+							return paramsMap.get("sku");
+						}
+
+						if (!StringUtil.isNullOrEmpty(paramsMap.get("wareId"))) {
+							return paramsMap.get("wareId");
+						}
+
+						// 鍒ゆ柇绾暟瀛楀ぇ浜�4浣嶇殑杩斿洖
+						for (Iterator<String> its = paramsMap.keySet().iterator(); its.hasNext();) {
+							String key = its.next();
+							String value = paramsMap.get(key);
+							if (NumberUtil.isNumeric(value) && value.length() >= 4) {
+								return value;
+							}
+						}
+						String id = JDUtil.getJDGoodsId(realLink);
+						if (!StringUtil.isNullOrEmpty(id)) {
+							return id;
+						}
+						LogHelper.error("浜笢鐭帴瑙f瀽澶辫触:" + url);
+						return null;
+					}
+				}
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+			LogHelper.errorDetailInfo(e, "浜笢鐭摼鑾峰彇鍟嗗搧ID澶辫触:", url);
+		}
+		return null;
+	}
+
+	/**
 	 * 鏌ヨ澶╃尗鍟嗗搧鍥剧墖銆佹爣棰�
 	 * 
 	 * @param auctionId
@@ -815,4 +936,15 @@
 		return getShowCouponInfo(goods.getCouponInfoList(), price);
 	}
 
+	public static List<String> getJDShortLinksFromText(String text) {
+		String regex = "(https://u\\.jd\\.com/)[0-9A-Za-z]{1,20}";
+		Pattern pattern = Pattern.compile(regex);
+		Matcher m = pattern.matcher(text);
+		List<String> urlList = new ArrayList<>();
+		while (m.find()) {
+			urlList.add(m.group());
+		}
+		return urlList;
+	}
+
 }

--
Gitblit v1.8.0