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/goods/ConvertLinkManager.java | 92 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 91 insertions(+), 1 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/manger/goods/ConvertLinkManager.java b/fanli/src/main/java/com/yeshi/fanli/service/manger/goods/ConvertLinkManager.java index 7c13677..8e0274c 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/manger/goods/ConvertLinkManager.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/manger/goods/ConvertLinkManager.java @@ -1,18 +1,24 @@ package com.yeshi.fanli.service.manger.goods; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.annotation.Resource; import org.springframework.stereotype.Component; import org.yeshi.utils.StringUtil; +import com.yeshi.fanli.dto.pdd.PDDPromotionUrl; +import com.yeshi.fanli.dto.taobao.api.TaoKeOfficialActivityConvertResultDTO; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.entity.taobao.TaoKeAppInfo; +import com.yeshi.fanli.exception.goods.ConvertLinkExceptionException; import com.yeshi.fanli.service.inter.taobao.TaoBaoBuyRelationMapService; import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; import com.yeshi.fanli.service.manger.goods.tb.TaoBaoTokenAuctionIdMapManager; @@ -21,6 +27,8 @@ import com.yeshi.fanli.util.TaoBaoConstant; import com.yeshi.fanli.util.jd.JDApiUtil; import com.yeshi.fanli.util.jd.JDUtil; +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; @@ -85,6 +93,55 @@ return newText; } + public String convertPDDLinkFromText(String text, Long uid, boolean share) throws Exception { + + StringBuilder builder = new StringBuilder(text); + String newText = builder.toString(); + // 浜笢杞摼 + // 鎻愬彇浜笢鎵�鏈夌殑閾炬帴 + List<String> pddShortLink = PinDuoDuoUtil.getPDDShortLinksFromText(text); + Set<String> linkSet = new HashSet<>(); + Map<String, String> linkMap = new HashMap<>(); + if (pddShortLink != null && pddShortLink.size() > 0) { + linkSet.addAll(pddShortLink); + for (String shortLink : linkSet) { + String goodsId = PinDuoDuoUtil.getPDDGoodsId(shortLink); + if (!StringUtil.isNullOrEmpty(goodsId)) { + PDDPromotionUrl pddUrl = PinDuoDuoApiUtil.convert(Long.parseLong(goodsId), + share ? PinDuoDuoApiUtil.PID_SHARE : PinDuoDuoApiUtil.PID_FANLI, uid + ""); + if (pddUrl != null) { + linkMap.put(shortLink, pddUrl.getShortUrl()); + } + } + + } + } + + for (String link : linkSet) { + if (linkMap.get(link) == null) + throw new Exception("鎷煎澶氳浆閾惧け璐�"); + newText = newText.replace(link, linkMap.get(link)); + } + + return newText; + } + + // 鑾峰彇娣樺疂瀹樻柟娲诲姩ID鍐呭 + public List<String> getTaoBaoOfficialActivityId(String text) { + + // {娣樺疂娲诲姩:13123123} + String regex = "(\\{\u6dd8\u5b9d\u6d3b\u52a8\\:){1}+[0-9]{5,20}\\}{1}"; + Pattern pattern = Pattern.compile(regex); + Matcher m = pattern.matcher(text); + List<String> urlList = new ArrayList<>(); + while (m.find()) { + urlList.add(m.group()); + } + + return urlList; + + } + /** * * @Title: convertTBLinkFromText @Description: 杞摼鏂囨湰涓殑娣樺彛浠� @param text @param @@ -94,6 +151,8 @@ StringBuilder builder = new StringBuilder(text); String newText = builder.toString(); + + // 瑙f瀽娣樺彛浠� List<String> tokenList = TaoBaoUtil.getTokenListFromTextWithKuoHao(newText); if (tokenList != null && tokenList.size() > 0) { @@ -178,6 +237,33 @@ newText = newText.replace(token, tokenMap.get(token)); } } + + // 瑙f瀽娣樺疂瀹樻柟娲诲姩ID + List<String> list = getTaoBaoOfficialActivityId(newText); + if (list.size() > 0) { + String relationId = null; + if (share) { + relationId = userExtraTaoBaoInfoService.getRelationIdByUid(uid); + if (StringUtil.isNullOrEmpty(relationId)) + throw new Exception("娣樺疂鏈巿鏉�"); + } + for (String st : list) { + String activityid = st.replace("{娣樺疂娲诲姩:", "").replace("}", ""); + if (!StringUtil.isNullOrEmpty(activityid)) { + String adzoneId = TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT.split("_")[3]; + TaoKeOfficialActivityConvertResultDTO dto = TaoKeApiUtil.officialActivityConvert(adzoneId, + activityid, relationId); + String link = dto.getShort_click_url(); + if (StringUtil.isNullOrEmpty(link)) { + link = dto.getClick_url(); + } + + String token = TaoKeApiUtil.getTKToken("http://", "娣樺疂瀹樻柟娲诲姩", link); + newText = newText.replace(st, TaoBaoUtil.filterTaoToken(token)); + } + } + } + return newText; } @@ -186,9 +272,13 @@ * @Title: convertLinkFromText @Description: 浠庢枃鏈浆閾� @param text @return * String 杩斿洖绫诲瀷 @throws */ - public String convertLinkFromText(String text, Long uid, boolean share) throws Exception { + public String convertLinkFromText(String text, Long uid, boolean share) + throws ConvertLinkExceptionException, Exception { String newText = convertJDLinkFromText(text, uid, share); + newText = convertPDDLinkFromText(newText, uid, share); newText = convertTBLinkFromText(newText, uid, share); + if (text.equalsIgnoreCase(newText)) + throw new ConvertLinkExceptionException(ConvertLinkExceptionException.CODE_NONE, "涓嶅寘鍚彲杞摼鐨勫彛浠や笌閾炬帴"); return newText; } -- Gitblit v1.8.0