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