From e068c9acf06cff7673fadfca686128f6d6d66e20 Mon Sep 17 00:00:00 2001
From: yujian <yujian@123.com>
Date: 星期一, 12 八月 2019 11:12:57 +0800
Subject: [PATCH] Merge branch 'div' of ssh://193.112.35.168:29418/fanli-server into div

---
 fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java |   54 ++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 38 insertions(+), 16 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 ff47881..ea2b1cc 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
@@ -1,6 +1,9 @@
 package com.yeshi.fanli.util.jd;
 
+import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.net.URLEncoder;
@@ -524,26 +527,45 @@
 
 		return null;
 	}
-	
+
+	public static String getJDGoodsJS() {
+		InputStream input = JDUtil.class.getClassLoader().getResourceAsStream("jdGoods.js");
+		StringBuilder sb = new StringBuilder();
+		String line;
+		BufferedReader br = new BufferedReader(new InputStreamReader(input));
+		try {
+			while ((line = br.readLine()) != null) {
+				sb.append(line);
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return sb.toString();
+	}
+
+	static String jdGoodsJs = null;
+	static ScriptEngine engine = null;
+	static {
+		if (jdGoodsJs == null)
+			jdGoodsJs = getJDGoodsJS();
+		ScriptEngineManager manager = new ScriptEngineManager();
+		engine = manager.getEngineByName("javascript");
+		try {
+			engine.eval(jdGoodsJs);
+		} catch (Exception e) {
+		}
+	}
+
 	public static String getJDGoodsId(String url) {
 		try {
-			if (url.startsWith("https://item.m.jd.com/product/") || url.startsWith("http://item.m.jd.com/product/")
-					|| url.startsWith("https://item.jd.com/") || url.startsWith("http://item.jd.com/")) {
-				String preUrl = url.split("\\?")[0];
-				String index = preUrl.split("/")[preUrl.split("/").length - 1];
-				index = index.split("\\.")[0];
-				return index.trim();
-			} else if (url.startsWith("https://item.m.jd.com/ware/view.action?")) {
-				String preUrl = url.substring(url.indexOf("?") + 1, url.length());
-				String[] sts = preUrl.split("&");
-				for (String st : sts) {
-					if (st.startsWith("wareId=")) {
-						return st.split("=")[1].trim();
-					}
-				}
+			if (engine instanceof Invocable) {
+				Invocable in = (Invocable) engine;
+				String goodsId = in.invokeFunction("getGoodsId", url).toString();
+				if (!StringUtil.isNullOrEmpty(goodsId))
+					return goodsId.trim();
 			}
-
 		} catch (Exception e) {
+			e.printStackTrace();
 		}
 		return null;
 	}

--
Gitblit v1.8.0