From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 25 二月 2025 16:41:22 +0800 Subject: [PATCH] 淘宝转链接口更新 --- fanli/src/main/java/com/yeshi/fanli/service/manger/goods/ConvertLinkManager.java | 707 +++++++++++++++++++++++++++++++++------------------------- 1 files changed, 399 insertions(+), 308 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 4460c17..effefd9 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,308 +1,399 @@ -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.goods.facade.entity.taobao.TaoBaoGoodsBrief; -import com.yeshi.common.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; -import com.yeshi.fanli.util.RedisKeyEnum; -import com.yeshi.fanli.util.RedisManager; -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.HaoDanKuApiUtil; -import com.yeshi.fanli.util.taobao.TaoBaoUtil; -import com.yeshi.fanli.util.taobao.TaoKeApiUtil; - -/** - * 杞摼缁勪欢 - * - * @author Administrator - * - */ -@Component -public class ConvertLinkManager { - - @Resource - private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; - - @Resource - private TaoBaoBuyRelationMapService taoBaoBuyRelationMapService; - - @Resource - private RedisManager redisManager; - - @Resource - private TaoBaoTokenAuctionIdMapManager taoBaoTokenAuctionIdMapManager; - - /** - * - * @Title: convertJDLinkFromText @Description:杞摼鏂囨湰涓殑浜笢鐭摼 @param text @param - * uid @param share @return @throws Exception String 杩斿洖绫诲瀷 @throws - */ - - public String convertJDLinkFromText(String text, Long uid, boolean share) throws Exception { - - StringBuilder builder = new StringBuilder(text); - String newText = builder.toString(); - // 浜笢杞摼 - // 鎻愬彇浜笢鎵�鏈夌殑閾炬帴 - List<String> jdShortLink = JDUtil.getJDShortLinksFromText(text); - Set<String> linkSet = new HashSet<>(); - Map<String, String> linkMap = new HashMap<>(); - if (jdShortLink != null && jdShortLink.size() > 0) { - linkSet.addAll(jdShortLink); - for (String shortLink : linkSet) { - String link = null; - if (share) - link = JDApiUtil.convertLinkWithSubUnionId(shortLink, null, JDApiUtil.POSITION_SHARE + "", - uid + ""); - else - link = JDApiUtil.convertLinkWithSubUnionId(shortLink, null, JDApiUtil.POSITION_FANLI + "", - uid + ""); - if (!StringUtil.isNullOrEmpty(link)) { - linkMap.put(shortLink, link); - } - } - } - - for (String link : linkSet) { - if (linkMap.get(link) == null) - throw new Exception("浜笢杞摼澶辫触"); - newText = newText.replace(link, linkMap.get(link)); - } - - 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 - * uid @param share @return @throws Exception String 杩斿洖绫诲瀷 @throws - */ - private String convertTBLinkFromText(String text, Long uid, boolean share) throws Exception { - - StringBuilder builder = new StringBuilder(text); - String newText = builder.toString(); - - // 瑙f瀽娣樺彛浠� - List<String> tokenList = TaoBaoUtil.getTokenListFromTextWithKuoHao(newText); - if (tokenList != null && tokenList.size() > 0) { - - String relationId = null; - if (share) { - relationId = userExtraTaoBaoInfoService.getRelationIdByUid(uid); - if (StringUtil.isNullOrEmpty(relationId)) - throw new Exception("娣樺疂鏈巿鏉�"); - } - - Set<String> tokenSet = new HashSet<>(); - tokenSet.addAll(tokenList); - Map<String, String> tokenMap = new HashMap<>(); - for (String token : tokenSet) { - Long auctionId = taoBaoTokenAuctionIdMapManager.getAuctionIdByToken(token); - if (auctionId == null) - throw new Exception("浠庢窐鍙d护鑾峰彇鍟嗗搧澶辫触"); - TaoBaoGoodsBrief simpleGoods = TaoKeApiUtil.getSimpleGoodsInfo(auctionId); - if (simpleGoods == null) - throw new Exception("鍟嗗搧淇℃伅鑾峰彇澶辫触"); - String link = null; - if (share) { - //鏆傛椂璋冪敤濂藉崟搴揂PI - link=HaoDanKuApiUtil.getInstance().convertLink(auctionId, TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT, null,null,relationId); -// TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCoupon(auctionId, -// new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET, -// TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT)); -// if (goods == null) -// throw new Exception("鍟嗗搧杞摼澶辫触"); -// -// link = goods.getCouponLink(); -// if (StringUtil.isNullOrEmpty(link)) { -// link = goods.getAuctionUrl(); -// } - if (StringUtil.isNullOrEmpty(link)) - throw new Exception("鍟嗗搧杞摼澶辫触"); - link += "&relationId=" + relationId; - } else { - String specialId=userExtraTaoBaoInfoService.getSpecialIdByUid(uid); - - - if (simpleGoods.getMaterialLibType() != null && simpleGoods.getMaterialLibType() == 1) { - TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCoupon(auctionId, - new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, - TaoBaoConstant.TAOBAO_AUTH_APPSECRET, - TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT),specialId,null); - if (goods == null) - throw new Exception("鍟嗗搧杞摼澶辫触"); - - link = goods.getCouponLink(); - if (StringUtil.isNullOrEmpty(link)) { - link = goods.getAuctionUrl(); - } - } else { - String sRelationId = taoBaoBuyRelationMapService.getRelationId(uid); - - TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCoupon(auctionId, - new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, - TaoBaoConstant.TAOBAO_AUTH_APPSECRET, - TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID),specialId,null); - if (goods == null) - throw new Exception("鍟嗗搧杞摼澶辫触"); - - link = goods.getCouponLink(); - if (StringUtil.isNullOrEmpty(link)) { - link = goods.getAuctionUrl(); - } - if (StringUtil.isNullOrEmpty(link)) - throw new Exception("鍟嗗搧杞摼澶辫触"); - link += "&relationId=" + sRelationId; - } - } - - if (StringUtil.isNullOrEmpty(link)) { - throw new Exception("鍟嗗搧杞摼澶辫触"); - } - - String newToken = TaoKeApiUtil.getTKToken(simpleGoods.getPictUrl(), simpleGoods.getTitle(), link); - if (StringUtil.isNullOrEmpty(newToken)) { - throw new Exception("鍙d护杞摼澶辫触"); - } - tokenMap.put(token, TaoBaoUtil.filterTaoToken(newToken)); - } - - for (String token : tokenSet) { - if (tokenMap.get(token) == null) - throw new Exception("娣樺疂閮ㄥ垎杞摼澶辫触"); - 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; - } - - /** - * - * @Title: convertLinkFromText @Description: 浠庢枃鏈浆閾� @param text @return - * String 杩斿洖绫诲瀷 @throws - */ - 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; - } - - /** - * 鍒涘缓鍙d护 @Title: createTaoBaoToken @Description: @param uid 鐢ㄦ埛ID @param - * picturl @param title @param link @return String 杩斿洖绫诲瀷 @throws - */ - public String createTaoBaoToken(Long uid, String picturl, String title, String link) { - - String token = TaoKeApiUtil.getTKToken(picturl, title, link); - if (!StringUtil.isNullOrEmpty(token)) { - // 缂撳瓨30鍒嗛挓 - redisManager.cacheCommonString( - RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoUserTKToken, uid + "-" + StringUtil.Md5(token)), "1", - 60 * 30); - } - return token; - } - -} +package com.yeshi.fanli.service.manger.goods; + +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.annotation.Resource; + +import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; +import com.yeshi.fanli.entity.SystemEnum; +import com.yeshi.fanli.entity.SystemFunction; +import com.yeshi.fanli.entity.SystemPIDInfo; +import com.yeshi.fanli.service.inter.pdd.PDDAuthService; +import com.yeshi.fanli.service.inter.user.UserFunctionsLimitService; +import com.yeshi.fanli.service.manger.PIDManager; +import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.vo.pdd.PDDConvertLinkResultVO; +import org.springframework.stereotype.Component; +import org.yeshi.utils.StringUtil; + +import com.yeshi.fanli.dto.taobao.api.TaoKeOfficialActivityConvertResultDTO; +import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; +import com.yeshi.common.entity.taobao.TaoKeAppInfo; +import com.yeshi.fanli.exception.goods.ConvertLinkException; +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; +import com.yeshi.fanli.util.RedisKeyEnum; +import com.yeshi.fanli.util.RedisManager; +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.goods.facade.utils.taobao.HaoDanKuApiUtil; +import com.yeshi.fanli.util.taobao.TaoBaoUtil; +import com.yeshi.fanli.util.taobao.TaoKeApiUtil; +import org.yeshi.utils.UrlUtils; + +/** + * 杞摼缁勪欢 + * + * @author Administrator + */ +@Component +public class ConvertLinkManager { + + @Resource + private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; + + @Resource + private TaoBaoBuyRelationMapService taoBaoBuyRelationMapService; + + @Resource + private RedisManager redisManager; + + @Resource + private TaoBaoTokenAuctionIdMapManager taoBaoTokenAuctionIdMapManager; + + @Resource + private PDDAuthService pddAuthService; + + @Resource + private PIDManager pidManager; + + /** + * @Title: convertJDLinkFromText @Description:杞摼鏂囨湰涓殑浜笢鐭摼 @param text @param + * uid @param share @return @throws Exception String 杩斿洖绫诲瀷 @throws + */ + + public String convertJDLinkFromText(SystemEnum system, String text, Long uid, boolean share, boolean simpleTKToken) throws Exception { + + StringBuilder builder = new StringBuilder(text); + String newText = builder.toString(); + // 浜笢杞摼 + // 鎻愬彇浜笢鎵�鏈夌殑閾炬帴 + List<String> jdShortLink = JDUtil.getJDShortLinksFromText(text); + Set<String> linkSet = new HashSet<>(); + Map<String, String> linkMap = new HashMap<>(); + if (jdShortLink != null && jdShortLink.size() > 0) { + linkSet.addAll(jdShortLink); + for (String shortLink : linkSet) { + String link = null; + if (share) + link = JDApiUtil.convertLinkWithSubUnionId(shortLink, null, null, pidManager.getPidCache(system, Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.share), + uid + ""); + else + link = JDApiUtil.convertLinkWithSubUnionId(shortLink, null, null, pidManager.getPidCache(system, Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.fanli), + uid + ""); + if (!StringUtil.isNullOrEmpty(link)) { + linkMap.put(shortLink, link); + } + } + } + + for (String link : linkSet) { + if (linkMap.get(link) == null) + throw new Exception("浜笢杞摼澶辫触"); + newText = newText.replace(link, linkMap.get(link)); + } + + return newText; + } + + public String convertPDDLinkFromText(SystemEnum system, 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)) { + PDDGoodsDetail goodsDetail = PinDuoDuoApiUtil.getGoodsDetail(goodsId); + if (goodsDetail == null) + throw new Exception("鎷煎澶氳浆閾惧け璐�"); + PDDConvertLinkResultVO pddUrl = PinDuoDuoApiUtil.convert(goodsDetail.getGoodsSign(), + share ? pidManager.getPidCache(system, Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.share) : pidManager.getPidCache(system, Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.fanli), pddAuthService.getFanliCustomParams(uid), false); + if (pddUrl != null) { + linkMap.put(shortLink, pddUrl.getShort_url()); + } + } + + } + } + + 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 + * uid @param share @return @throws Exception String 杩斿洖绫诲瀷 @throws + */ + /** + * @param text + * @param uid + * @param share + * @param simpleToken -鏄惁閲囩敤绠�鐗堟窐鍙d护 + * @return + * @throws Exception + */ + private String convertTBLinkFromText(SystemEnum system, String text, Long uid, boolean share, boolean simpleToken) throws Exception { + + + String specialPid = pidManager.getPid(system, Constant.SOURCE_TYPE_TAOBAO, SystemPIDInfo.PidType.fanli); + String relationPid = pidManager.getPid(system, Constant.SOURCE_TYPE_TAOBAO, SystemPIDInfo.PidType.share); + String specialRelationPid = pidManager.getPid(system, Constant.SOURCE_TYPE_TAOBAO, SystemPIDInfo.PidType.fanliChannel); + + StringBuilder builder = new StringBuilder(text); + String newText = builder.toString(); + + // 瑙f瀽娣樺彛浠� + List<String> tokenList = TaoBaoUtil.getTokenListFromTextWithKuoHao(newText); + if (tokenList != null && tokenList.size() > 0) { + + String relationId = null; + if (share) { + relationId = userExtraTaoBaoInfoService.getRelationIdByUid(uid); + if (StringUtil.isNullOrEmpty(relationId)) + throw new Exception("娣樺疂鏈巿鏉�"); + } + + Set<String> tokenSet = new HashSet<>(); + tokenSet.addAll(tokenList); + Map<String, String> tokenMap = new HashMap<>(); + for (String token : tokenSet) { + String auctionId = taoBaoTokenAuctionIdMapManager.getAuctionIdByToken(token); + if (auctionId == null) + throw new Exception("浠庢窐鍙d护鑾峰彇鍟嗗搧澶辫触"); + TaoBaoGoodsBrief simpleGoods = TaoKeApiUtil.getSimpleGoodsInfo(auctionId); + if (simpleGoods == null) + throw new Exception("鍟嗗搧淇℃伅鑾峰彇澶辫触"); + String link = null; + if (share) { + //鏆傛椂璋冪敤濂藉崟搴揂PI + link = HaoDanKuApiUtil.getInstance().convertLink(auctionId, relationPid, null, null, relationId); +// TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCoupon(auctionId, +// new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET, +// TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT)); +// if (goods == null) +// throw new Exception("鍟嗗搧杞摼澶辫触"); +// +// link = goods.getCouponLink(); +// if (StringUtil.isNullOrEmpty(link)) { +// link = goods.getAuctionUrl(); +// } + if (StringUtil.isNullOrEmpty(link)) + throw new Exception("鍟嗗搧杞摼澶辫触"); + link += "&relationId=" + relationId; + } else { + String specialId = userExtraTaoBaoInfoService.getSpecialIdByUid(uid); + + + if (simpleGoods.getMaterialLibType() != null && simpleGoods.getMaterialLibType() == 1) { + TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCouponV2(auctionId, + new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, + TaoBaoConstant.TAOBAO_AUTH_APPSECRET, + specialPid), specialId, null); + if (goods == null) + throw new Exception("鍟嗗搧杞摼澶辫触"); + + link = goods.getCouponLink(); + if (StringUtil.isNullOrEmpty(link)) { + link = goods.getAuctionUrl(); + } + } else { + String sRelationId = taoBaoBuyRelationMapService.getRelationId(uid); + + TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCouponV2(auctionId, + new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, + TaoBaoConstant.TAOBAO_AUTH_APPSECRET, + specialRelationPid), specialId, null); + if (goods == null) + throw new Exception("鍟嗗搧杞摼澶辫触"); + + link = goods.getCouponLink(); + if (StringUtil.isNullOrEmpty(link)) { + link = goods.getAuctionUrl(); + } + if (StringUtil.isNullOrEmpty(link)) + throw new Exception("鍟嗗搧杞摼澶辫触"); + link += "&relationId=" + sRelationId; + } + } + + if (StringUtil.isNullOrEmpty(link)) { + throw new Exception("鍟嗗搧杞摼澶辫触"); + } + + String newToken = TaoKeApiUtil.getTKToken(simpleGoods.getPictUrl(), simpleGoods.getTitle(), link, simpleToken); + if (StringUtil.isNullOrEmpty(newToken)) { + throw new Exception("鍙d护杞摼澶辫触"); + } + tokenMap.put(token, TaoBaoUtil.filterTaoToken(newToken)); + } + + for (String token : tokenSet) { + if (tokenMap.get(token) == null) + throw new Exception("娣樺疂閮ㄥ垎杞摼澶辫触"); + 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 = relationPid.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, simpleToken); + newText = newText.replace(st, TaoBaoUtil.filterTaoToken(token)); + } + } + } + + return newText; + } + + /** + * @Title: convertLinkFromText @Description: 浠庢枃鏈浆閾� @param text @return + * String 杩斿洖绫诲瀷 @throws + */ + public String convertLinkFromText(SystemEnum system, String text, Long uid, boolean share, boolean simpleToken) + throws ConvertLinkException, Exception { + String newText = convertJDLinkFromText(system, text, uid, share, simpleToken); + newText = convertPDDLinkFromText(system, newText, uid, share); + newText = convertTBLinkFromText(system, newText, uid, share, simpleToken); + + List<String> urls = UrlUtils.parseUrlsFromText(text); + if (urls != null) + for (String url : urls) { + if (url.contains("{relationId}")) { + String relationId = userExtraTaoBaoInfoService.getRelationIdByUid(uid); + if (StringUtil.isNullOrEmpty(relationId)) { + throw new Exception("娣樺疂鏈巿鏉�"); + } + newText = newText.replace(url, url.replace("{relationId}", relationId)); + } + } + if (text.equalsIgnoreCase(newText)) + throw new ConvertLinkException(ConvertLinkException.CODE_NONE, "涓嶅寘鍚彲杞摼鐨勫彛浠や笌閾炬帴"); + return newText; + } + + /** + * 鍒涘缓鍙d护 @Title: createTaoBaoToken @Description: @param uid 鐢ㄦ埛ID @param + * picturl @param title @param link @return String 杩斿洖绫诲瀷 @throws + */ + public String createTaoBaoToken(Long uid, String picturl, String title, String link, boolean simpleToken) { + String token = TaoKeApiUtil.getTKToken(picturl, title, link, simpleToken); + if (!StringUtil.isNullOrEmpty(token)) { + // 缂撳瓨30鍒嗛挓 + redisManager.cacheCommonString( + RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoUserTKToken, uid + "-" + StringUtil.Md5(token)), "1", + 60 * 30); + } + return token; + } + + @Resource + private UserFunctionsLimitService userFunctionsLimitService; + + + //娣樺疂瀹樻柟娲诲姩杞摼 + public TaoKeOfficialActivityConvertResultDTO taobaoOfficialActivityConvert(Long uid, String pid, String promotionSceneId, String relationId, boolean share) throws ConvertLinkException { + // 鐢ㄦ埛ID涓嶄负绌烘椂瑕侀獙璇佺浉鍏崇殑鑳藉姏 + if (uid != null) { + //鑷喘 + if (!share) { + if (userFunctionsLimitService.isLimit(uid, SystemFunction.fanli, new Date())) { + throw new ConvertLinkException(ConvertLinkException.CODE_FUNCTION_LIMIT, "璇ュ姛鑳借闄愬埗"); + } + } else { + //鍒嗕韩 + if (userFunctionsLimitService.isLimit(uid, SystemFunction.share, new Date())) { + throw new ConvertLinkException(ConvertLinkException.CODE_FUNCTION_LIMIT, "璇ュ姛鑳借闄愬埗"); + } + } + + } + + TaoKeOfficialActivityConvertResultDTO dto = TaoKeApiUtil.officialActivityConvert( + pid.split("_")[3], promotionSceneId, relationId); + return dto; + } + + + public static void main(String[] args){ + + String newText = "銆愬ぉ鐚�戝弻11-棰勫敭鐜╂硶浼氬満锛佸仛浠诲姟锛岃耽鏈�楂�16鍏冪孩鍖咃紒\n" + + "寰╄=鏈潯{娣樺疂娲诲姩:20150318020016625}锛岃繘鍏ャ�怲a0瀹濄�戠珛鍗虫姠璐紒"; + // 瑙f瀽娣樺疂瀹樻柟娲诲姩ID + List<String> list = new ConvertLinkManager(). getTaoBaoOfficialActivityId(newText); + if (list.size() > 0) { + String relationId = null; + for (String st : list) { + String activityid = st.replace("{娣樺疂娲诲姩:", "").replace("}", ""); + if (!StringUtil.isNullOrEmpty(activityid)) { + String adzoneId = "mm_124933865_56750082_89555600043".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, true); + newText = newText.replace(st, TaoBaoUtil.filterTaoToken(token)); + } + } + } + + } + + +} -- Gitblit v1.8.0