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 | 120 ++++++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 92 insertions(+), 28 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 719850d..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,27 +1,27 @@ 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.*; 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.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.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; @@ -60,12 +60,15 @@ @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(String text, Long uid, boolean share, boolean simpleTKToken) throws Exception { + public String convertJDLinkFromText(SystemEnum system, String text, Long uid, boolean share, boolean simpleTKToken) throws Exception { StringBuilder builder = new StringBuilder(text); String newText = builder.toString(); @@ -79,10 +82,10 @@ for (String shortLink : linkSet) { String link = null; if (share) - link = JDApiUtil.convertLinkWithSubUnionId(shortLink, null, null, JDApiUtil.POSITION_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, JDApiUtil.POSITION_FANLI + "", + 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); @@ -99,7 +102,7 @@ return newText; } - public String convertPDDLinkFromText(String text, Long uid, boolean share) throws Exception { + public String convertPDDLinkFromText(SystemEnum system, String text, Long uid, boolean share) throws Exception { StringBuilder builder = new StringBuilder(text); String newText = builder.toString(); @@ -114,11 +117,11 @@ for (String shortLink : linkSet) { String goodsId = PinDuoDuoUtil.getPDDGoodsId(shortLink); if (!StringUtil.isNullOrEmpty(goodsId)) { - PDDGoodsDetail goodsDetail = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(goodsId)); + PDDGoodsDetail goodsDetail = PinDuoDuoApiUtil.getGoodsDetail(goodsId); if (goodsDetail == null) throw new Exception("鎷煎澶氳浆閾惧け璐�"); PDDConvertLinkResultVO pddUrl = PinDuoDuoApiUtil.convert(goodsDetail.getGoodsSign(), - share ? PinDuoDuoApiUtil.PID_SHARE : PinDuoDuoApiUtil.PID_FANLI, pddAuthService.getFanliCustomParams(uid), false); + 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()); } @@ -165,7 +168,12 @@ * @return * @throws Exception */ - private String convertTBLinkFromText(String text, Long uid, boolean share, boolean simpleToken) 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(); @@ -185,7 +193,7 @@ tokenSet.addAll(tokenList); Map<String, String> tokenMap = new HashMap<>(); for (String token : tokenSet) { - Long auctionId = taoBaoTokenAuctionIdMapManager.getAuctionIdByToken(token); + String auctionId = taoBaoTokenAuctionIdMapManager.getAuctionIdByToken(token); if (auctionId == null) throw new Exception("浠庢窐鍙d护鑾峰彇鍟嗗搧澶辫触"); TaoBaoGoodsBrief simpleGoods = TaoKeApiUtil.getSimpleGoodsInfo(auctionId); @@ -194,7 +202,7 @@ String link = null; if (share) { //鏆傛椂璋冪敤濂藉崟搴揂PI - link = HaoDanKuApiUtil.getInstance().convertLink(auctionId, TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT, null, null, relationId); + 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)); @@ -213,10 +221,10 @@ if (simpleGoods.getMaterialLibType() != null && simpleGoods.getMaterialLibType() == 1) { - TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCoupon(auctionId, + TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCouponV2(auctionId, new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET, - TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT), specialId, null); + specialPid), specialId, null); if (goods == null) throw new Exception("鍟嗗搧杞摼澶辫触"); @@ -227,10 +235,10 @@ } else { String sRelationId = taoBaoBuyRelationMapService.getRelationId(uid); - TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCoupon(auctionId, + TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCouponV2(auctionId, new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET, - TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID), specialId, null); + specialRelationPid), specialId, null); if (goods == null) throw new Exception("鍟嗗搧杞摼澶辫触"); @@ -274,7 +282,7 @@ for (String st : list) { String activityid = st.replace("{娣樺疂娲诲姩:", "").replace("}", ""); if (!StringUtil.isNullOrEmpty(activityid)) { - String adzoneId = TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT.split("_")[3]; + String adzoneId = relationPid.split("_")[3]; TaoKeOfficialActivityConvertResultDTO dto = TaoKeApiUtil.officialActivityConvert(adzoneId, activityid, relationId); String link = dto.getShort_click_url(); @@ -295,11 +303,11 @@ * @Title: convertLinkFromText @Description: 浠庢枃鏈浆閾� @param text @return * String 杩斿洖绫诲瀷 @throws */ - public String convertLinkFromText(String text, Long uid, boolean share, boolean simpleToken) - throws ConvertLinkExceptionException, Exception { - String newText = convertJDLinkFromText(text, uid, share, simpleToken); - newText = convertPDDLinkFromText(newText, uid, share); - newText = convertTBLinkFromText(newText, uid, share, simpleToken); + 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) @@ -313,7 +321,7 @@ } } if (text.equalsIgnoreCase(newText)) - throw new ConvertLinkExceptionException(ConvertLinkExceptionException.CODE_NONE, "涓嶅寘鍚彲杞摼鐨勫彛浠や笌閾炬帴"); + throw new ConvertLinkException(ConvertLinkException.CODE_NONE, "涓嶅寘鍚彲杞摼鐨勫彛浠や笌閾炬帴"); return newText; } @@ -332,4 +340,60 @@ 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