From 28cf328a098334b51a3e9d2d56f983fb8c862211 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期六, 23 五月 2020 09:54:38 +0800
Subject: [PATCH] 足迹、收藏订单兼容新需求

---
 fanli/src/main/java/com/yeshi/fanli/service/manger/ClipboardAnalysisManager.java |  335 ++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 229 insertions(+), 106 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/manger/ClipboardAnalysisManager.java b/fanli/src/main/java/com/yeshi/fanli/service/manger/ClipboardAnalysisManager.java
index 949d64c..47c4f3b 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/manger/ClipboardAnalysisManager.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/manger/ClipboardAnalysisManager.java
@@ -1,6 +1,7 @@
 package com.yeshi.fanli.service.manger;
 
-import java.util.Arrays;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -20,11 +21,14 @@
 import com.yeshi.fanli.entity.jd.JDGoods;
 import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
 import com.yeshi.fanli.exception.taobao.TaoBaoTokenParseException;
+import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
 import com.yeshi.fanli.exception.user.TokenRecordException;
 import com.yeshi.fanli.service.inter.user.TokenRecordService;
 import com.yeshi.fanli.service.manger.goods.jd.JDGoodsLinkParseManager;
 import com.yeshi.fanli.service.manger.goods.tb.TaoBaoTokenAuctionIdMapManager;
+import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.DouYinUtil;
+import com.yeshi.fanli.util.RedisManager;
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.TokenUtil;
 import com.yeshi.fanli.util.Utils;
@@ -35,7 +39,6 @@
 import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
 import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
 import com.yeshi.fanli.util.taobao.TaoBaoUtil;
-import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
 import com.yeshi.fanli.vo.msg.TokenVO;
 import com.yeshi.fanli.vo.search.GoodsDocParseResultVO;
 
@@ -58,6 +61,9 @@
 
 	@Resource
 	private TaoBaoTokenAuctionIdMapManager taoBaoTokenAuctionIdMapManager;
+
+	@Resource
+	private RedisManager redisManager;
 
 	/**
 	 * @Title: parseContentType @Description: 瑙f瀽鏂囨湰鐨勭被鍨� @param text @return Set
@@ -139,6 +145,25 @@
 				// 瑙f瀽鍟嗗搧
 				CommonGoods goods = parseLink(text);
 				if (goods == null) {
+					// 鍒ゆ柇閾炬帴涔嬩腑鏄惁鍖呭惈鍙d护
+					try {
+						String newText = URLDecoder.decode(text, "UTF-8");
+						List<String> tokenList = TaoBaoUtil.getTokenListFromTextWithKuoHao(newText);
+						if (tokenList != null && tokenList.size() > 0) {
+							try {
+								goods = parseTaoBaoToken(tokenList.get(0));
+							} catch (TaoBaoTokenParseException e) {
+							}
+							if (goods != null && goods.getGoodsId() != null) {
+								resultListener.onResult(goods);
+								return;
+							}
+						}
+
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+
 					resultListener.none();
 				} else {
 					resultListener.onResult(goods);
@@ -191,7 +216,15 @@
 			if (!StringUtil.isNullOrEmpty(link)) {
 				CommonGoods goods = parseLink(urlList.get(0));
 				if (goods == null || goods.getGoodsId() == null) {
-					resultListener.onResult(new GoodsDocParseResultVO(text, urlList.get(0)));
+					if (urlList.size() > 1)
+						resultListener.onResult(new GoodsDocParseResultVO(text, urlList.get(0)));
+					else {// 鍗曢摼鎺�
+							// 鍒ゆ柇鏄惁鍖呭惈鍙浆閾剧殑閾炬帴
+						if (!isContainsLinkConvert(link))
+							resultListener.none();
+						else
+							resultListener.onResult(new GoodsDocParseResultVO(text, link));
+					}
 				} else {
 					if (VersionUtil.greaterThan_2_0_7(platform, version)) {
 						if (urlList.size() == 1)// 鍗曢摼鎺�+鏂囨湰
@@ -211,15 +244,23 @@
 					return;
 				}
 				if (goods != null && goods.getGoodsId() != null) {
-					resultListener.onResult(new GoodsDocParseResultVO(text, goods));
+					if (tokenList.size() == 1) {// 鍗曚釜鍙d护
+						resultListener.onResult(goods);
+					} else
+						resultListener.onResult(new GoodsDocParseResultVO(text, goods));
 				} else {
 					resultListener.onResult(new GoodsDocParseResultVO(text));
 				}
-
 			}
 
 		} else if (typeSet.size() == 3) {// 鍙d护+閾炬帴+鏂囨湰
-			List<String> tokenList = TaoBaoUtil.getTokenListFromText(text);
+			// 娣樺彛浠�
+			List<String> tokenList = null;
+			if (VersionUtil.greaterThan_2_0_7(platform, version))
+				tokenList = TaoBaoUtil.getTokenListFromTextWithKuoHao(text);
+			else
+				tokenList = TaoBaoUtil.getTokenListFromText(text);
+
 			List<String> urlList = HttpUtil.getUrlListFromText(text);
 			if (text.contains("銆�") && tokenList != null && tokenList.size() == 1 && urlList != null
 					&& urlList.size() == 1) {// Android娣樺疂閾炬帴澶嶅埗
@@ -246,32 +287,31 @@
 
 			} else {// 鏂囨
 
-				String link = null;
 				String token = null;
+				token = tokenList.get(0);
 
-				if (text.indexOf(urlList.get(0)) < text.indexOf(tokenList.get(0)))// 绗竴涓摼鎺ュ湪绗竴涓彛浠ゅ墠闈�
-					link = urlList.get(0);
-				else// 绗竴涓彛浠ゅ湪绗竴涓摼鎺ュ墠闈�
-					token = tokenList.get(0);
-
-				if (!StringUtil.isNullOrEmpty(link)) {
-					CommonGoods goods = parseLink(urlList.get(0));
-					if (goods == null || goods.getGoodsId() == null) {
-						resultListener.onResult(new GoodsDocParseResultVO(text, urlList.get(0)));
-					} else {
-						resultListener.onResult(new GoodsDocParseResultVO(text, goods));
-					}
-				} else {
+				if (!StringUtil.isNullOrEmpty(token)) {
 					CommonGoods goods = null;
 					try {
 						goods = parseTaoBaoToken(token);
 						if (goods != null && goods.getGoodsId() != null) {
-							resultListener.onResult(new GoodsDocParseResultVO(text, goods));
+							// 濡�:http://rd.wechat.com/qrcode/confirm?block_type=101&content=%E3%80%90%E5%8E%9F%E4%BB%B7%E3%80%9120%E5%85%83%0A%E3%80%90%E5%88%B8%E5%90%8E%E4%BB%B7%E3%80%9120%E5%85%83%0A-----------------%0A%E5%BE%A9%E8%A3%BD%E8%BF%99%E6%9D%A1%EF%BC%8C(psNX1UPRJNe)%EF%BC%8C%E8%BF%9B%E5%85%A5%E3%80%90Tao%E5%AE%9D%E3%80%91%E5%8D%B3%E5%8F%AF%E6%8A%A2%E8%B4%AD&lang=zh_CN&scene=37
+							if (text.contains("//rd.wechat.com/qrcode/")) {// 寰俊澶嶅埗杩囨潵鐨�
+								resultListener.onResult(goods);
+							} else
+								resultListener.onResult(new GoodsDocParseResultVO(text, goods));
 						} else {
 							resultListener.onResult(new GoodsDocParseResultVO(text));
 						}
 					} catch (TaoBaoTokenParseException e) {
 						resultListener.onResult(new GoodsDocParseResultVO(text));
+					}
+				} else {
+					CommonGoods goods = parseLink(urlList.get(0));
+					if (goods == null || goods.getGoodsId() == null) {
+						resultListener.onResult(new GoodsDocParseResultVO(text, urlList.get(0)));
+					} else {
+						resultListener.onResult(new GoodsDocParseResultVO(text, goods));
 					}
 				}
 			}
@@ -286,12 +326,131 @@
 	 */
 	public CommonGoods parseLink(String link) {
 
+		SimpleCommonGoods simpleGoods = parseGoodsIdFromLink(link);
+		if (simpleGoods == null) {
+			return null;
+		}
+
+		CommonGoods commonGoods = null;
+		if (simpleGoods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
+			TaoBaoGoodsBrief goods = null;
+			try {
+				goods = redisManager.getTaoBaoGoodsBrief(Long.parseLong(simpleGoods.getGoodsId()));
+			} catch (NumberFormatException e) {
+				e.printStackTrace();
+			} catch (TaobaoGoodsDownException e) {
+				e.printStackTrace();
+			}
+
+			if (goods != null) {
+				commonGoods = CommonGoodsFactory.create(goods);
+			} else {
+				goods = TaoBaoUtil.getTmallGoodsInfo(simpleGoods.getGoodsId());
+				if (goods != null) {
+					commonGoods = new CommonGoods();
+					commonGoods.setTitle(goods.getTitle());
+					commonGoods.setPicture(goods.getPictUrl());
+				} else {
+					// TODO 鏍规嵁娣樺疂鍟嗗搧ID瑙f瀽鏍囬涓庡浘鐗�
+				}
+			}
+
+		} else if (simpleGoods.getGoodsType() == Constant.SOURCE_TYPE_JD) {
+			// 浼樺厛閲囩敤楂樼骇鎺ュ彛璇锋眰鏁版嵁
+			JDGoods jdGoods = null;
+			try {
+				// 闃叉楂樼骇鎺ュ彛琚敹鍥�
+				jdGoods = JDApiUtil.queryGoodsDetail(Long.parseLong(simpleGoods.getGoodsId()));
+			} catch (Exception e) {
+			}
+			if (jdGoods == null) {
+				jdGoods = JDApiUtil.getGoodsDetail(Long.parseLong(simpleGoods.getGoodsId()));
+			}
+			if (jdGoods != null) {
+				commonGoods = CommonGoodsFactory.create(jdGoods);
+			} else {// 鍟嗗搧骞舵湭鍙備笌鎺ㄥ箍
+				jdGoods = JDUtil.getSimpleGoodsInfo(simpleGoods.getGoodsId());
+				if (jdGoods != null) {
+					commonGoods = new CommonGoods();
+					commonGoods.setTitle(jdGoods.getSkuName());
+					commonGoods.setPicture(jdGoods.getPicUrl());
+				}
+			}
+		} else if (simpleGoods.getGoodsType() == Constant.SOURCE_TYPE_PDD) {
+			PDDGoodsDetail goods = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(simpleGoods.getGoodsId()));
+			if (goods != null) {
+				commonGoods = CommonGoodsFactory.create(goods);
+			} else {
+				goods = PinDuoDuoUtil.getPDDGoodsInfo(simpleGoods.getGoodsId());
+				if (goods != null) {
+					commonGoods = new CommonGoods();
+					commonGoods.setTitle(goods.getGoodsName());
+					commonGoods.setPicture(goods.getGoodsThumbnailUrl());
+				}
+			}
+		}
+
+		return commonGoods;
+	}
+
+	/**
+	 * 浠庨摼鎺ヤ腑瑙f瀽鍟嗗搧ID
+	 * 
+	 * @return
+	 */
+	public SimpleCommonGoods parseGoodsIdFromLink(String link) {
+
+		String jdId = parseJDSkuIdFromLink(link);
+
+		if (!StringUtil.isNullOrEmpty(jdId)) {
+			return new SimpleCommonGoods(jdId, Constant.SOURCE_TYPE_JD);
+		}
+
+		// 瑙f瀽鎷煎澶�
+		String pddId = PinDuoDuoUtil.getPDDGoodsId(link);
+		if (!StringUtil.isNullOrEmpty(pddId)) {
+			return new SimpleCommonGoods(pddId, Constant.SOURCE_TYPE_PDD);
+		}
+		// 瑙f瀽娣樺疂
+		String auctionId = parseTBAuctionIdFromLink(link);
+		if (!StringUtil.isNullOrEmpty(auctionId)) {
+			return new SimpleCommonGoods(auctionId, Constant.SOURCE_TYPE_TAOBAO);
+		}
+
+		return null;
+	}
+
+	/**
+	 * 浠庨摼鎺ヤ腑瑙f瀽浜笢鍟嗗搧鐨凷KUID
+	 * 
+	 * @param link
+	 * @return
+	 */
+	public String parseJDSkuIdFromLink(String link) {
+		// 瑙f瀽鍏朵粬鍟嗗搧
+		String jdId = JDUtil.getJDGoodsId(link);
+
+		// 寰俊閾炬帴
+		if (StringUtil.isNullOrEmpty(jdId)) {
+			jdId = JDUtil.getJDGoodsIdByWeiXin(link);
+		}
+
+		// 棰嗗埜鐭繛鎺�
+		if (StringUtil.isNullOrEmpty(jdId) && link.contains("u.jd.com")) {
+			jdId = jdGoodsLinkParseManager.parseGoodsIdByJDShortUrl(link);
+		}
+
+		return jdId;
+	}
+
+	public String parseTBAuctionIdFromLink(String link) {
 		TaoBaoGoodsBrief tb = null;
+		String auctionId = null;
 		if (link.startsWith("https://a.m.taobao.com/i"))// 娣樺疂璐﹀彿鏈櫥褰曠姸鎬�
 		{
 			link = link.substring("https://a.m.taobao.com/i".length(), link.indexOf(".htm"));
 			if (NumberUtil.isNumeric(link)) {
-				tb = TaoBaoUtil.isAlimama(link);
+				auctionId = link + "";
 			}
 		} else if (link.contains("ju.taobao.com") || link.contains(".juhuasuan.com")) {// 鑱氬垝绠�
 			int index = link.indexOf("item_id");
@@ -304,108 +463,36 @@
 				else {
 					id = link.substring(link.indexOf("=" + 1));
 				}
-				tb = TaoBaoUtil.isAlimama(id);
-				if (tb == null) {
-					tb = new TaoBaoGoodsBrief(Long.parseLong(id));
-				}
+				auctionId = id;
 			}
 		} else if (link.contains("http://zmnxbc.com")) { // 鎵嬫満绔ぉ鐚獳PP鍒嗕韩
 			tb = TaoBaoUtil.parsePhoneShareUrlByTM(link);
-		} else if (link.contains("h5.m.taobao") || link.contains("detail.m.tmall") || link.contains("item.taobao")
+			if (tb != null)
+				auctionId = tb.getAuctionId() + "";
+		} else if (link.contains("h5.m.taobao") || link.contains("detail.m.tmall")|| link.contains("item.taobao")
 				|| link.contains("detail.tmall")) { // 鎵嬫満椤甸潰鍜岀數鑴戦〉闈�
 			Map<String, String> map = Utils.parseURL(link);
 			String id = "";
 			id = map.get("id").replace("}", "");
-			tb = TaoBaoUtil.isAlimama(id);
-			if (tb == null) {
-				tb = new TaoBaoGoodsBrief(Long.parseLong(id));
-			}
+			auctionId = id;
 		} else if (link.contains("v.douyin.com")) { // 鎶栭煶
 			tb = analysisDouYin(link);
 			if (tb != null) {
 				if (!StringUtil.isNullOrEmpty(tb.getAuctionUrl())) {// 鎶栭煶瑙f瀽鍒版窐瀹濆晢鍝侀摼鎺�
-					return parseLink(tb.getAuctionUrl());
+					CommonGoods goods = parseLink(tb.getAuctionUrl());
+					if (goods != null) {
+						auctionId = goods.getGoodsId() + "";
+					}
 				}
 			}
 		} else {
 			tb = TaoBaoUtil.parsePhoneShareUrlByTB(link);
+			if (tb != null)
+				auctionId = tb.getAuctionId() + "";
 		}
 
-		// 娌¤В鏋愬埌娣樺疂鐩稿叧鍟嗗搧
-		if (tb == null) {
-			String goodsId = TaoBaoUtil.getGoodsIdByPhoneShareUrl(link);
-			if (!StringUtil.isNullOrEmpty(goodsId)) {
-				tb = TaoBaoUtil.isAlimama(goodsId);
-				if (tb == null) {
-					tb = new TaoBaoGoodsBrief(Long.parseLong(goodsId));
-				}
-			}
-		}
+		return auctionId;
 
-		CommonGoods commonGoods = null;
-
-		// 娣樺疂鍟嗗搧瑙f瀽缁撴潫
-		if (tb != null) {
-			if (StringUtil.isNullOrEmpty(tb.getTitle())) {
-				tb = TaoBaoUtil.getTaoBaoGoodsBriefNotInPub(tb.getId());
-				if (tb != null) {
-					commonGoods = new CommonGoods();
-					commonGoods.setPicture(tb.getPictUrl());
-					commonGoods.setTitle(tb.getTitle());
-				}
-			} else {
-				commonGoods = CommonGoodsFactory.create(tb);
-			}
-		} else {
-			// 瑙f瀽鍏朵粬鍟嗗搧
-			String jdId = JDUtil.getJDGoodsId(link);
-
-			// 寰俊閾炬帴
-			if (StringUtil.isNullOrEmpty(jdId)) {
-				jdId = JDUtil.getJDGoodsIdByWeiXin(link);
-			}
-
-			// 棰嗗埜鐭繛鎺�
-			if (StringUtil.isNullOrEmpty(jdId) && link.contains("u.jd.com")) {
-				jdId = jdGoodsLinkParseManager.parseGoodsIdByJDShortUrl(link);
-			}
-
-			if (!StringUtil.isNullOrEmpty(jdId)) {
-				JDGoods goods = JDApiUtil.getGoodsDetail(Long.parseLong(jdId));
-				if (goods != null) {
-					// 楂樼骇鎺ュ彛 -- 淇℃伅鏇村畬鏁�
-					JDGoods jdGoods = JDApiUtil.queryGoodsDetail(Long.parseLong(jdId));
-					if (jdGoods != null) {
-						commonGoods = CommonGoodsFactory.create(jdGoods);
-					} else {
-						commonGoods = CommonGoodsFactory.create(goods);
-					}
-				} else {
-					goods = JDUtil.getSimpleGoodsInfo(jdId);
-					if (goods != null) {
-						commonGoods = new CommonGoods();
-						commonGoods.setTitle(goods.getSkuName());
-						commonGoods.setPicture(goods.getPicUrl());
-					}
-				}
-			} else {
-				String pddId = PinDuoDuoUtil.getPDDGoodsId(link);
-				if (!StringUtil.isNullOrEmpty(pddId)) {
-					PDDGoodsDetail goods = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(pddId));
-					if (goods != null) {
-						commonGoods = CommonGoodsFactory.create(goods);
-					} else {
-						goods = PinDuoDuoUtil.getPDDGoodsInfo(pddId);
-						if (goods != null) {
-							commonGoods = new CommonGoods();
-							commonGoods.setTitle(goods.getGoodsName());
-							commonGoods.setPicture(goods.getGoodsThumbnailUrl());
-						}
-					}
-				}
-			}
-		}
-		return commonGoods;
 	}
 
 	private CommonGoods parseTaoBaoToken(String token) throws TaoBaoTokenParseException {
@@ -454,6 +541,42 @@
 		}
 		return null;
 	}
+
+	private boolean isContainsLinkConvert(String link) {
+		if (link.contains(".jd.com"))
+			return true;
+		else if (link.contains(".taobao.com") || link.contains(".tmall"))
+			return true;
+		else if (link.contains(".pinduoduo.com") || link.contains(".yangkeduo.com"))
+			return true;
+		return false;
+	}
+
+	class SimpleCommonGoods {
+		private String goodsId;
+		private int goodsType;
+
+		public SimpleCommonGoods(String goodsId, int goodsType) {
+			this.goodsId = goodsId;
+			this.goodsType = goodsType;
+		}
+
+		public String getGoodsId() {
+			return goodsId;
+		}
+
+		public void setGoodsId(String goodsId) {
+			this.goodsId = goodsId;
+		}
+
+		public int getGoodsType() {
+			return goodsType;
+		}
+
+		public void setGoodsType(int goodsType) {
+			this.goodsType = goodsType;
+		}
+	}
 }
 
 /**

--
Gitblit v1.8.0