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