admin
2024-04-26 5e7b0ed4a154ad067cbcf4aa1a1c7cce32f9864c
fanli/src/main/java/com/yeshi/fanli/service/manger/goods/ConvertLinkManager.java
@@ -1,11 +1,6 @@
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;
@@ -13,19 +8,20 @@
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;
@@ -197,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("从淘口令获取商品失败");
                TaoBaoGoodsBrief simpleGoods = TaoKeApiUtil.getSimpleGoodsInfo(auctionId);
@@ -308,7 +304,7 @@
     * String 返回类型 @throws
     */
    public String convertLinkFromText(SystemEnum system, String text, Long uid, boolean share, boolean simpleToken)
            throws ConvertLinkExceptionException, Exception {
            throws ConvertLinkException, Exception {
        String newText = convertJDLinkFromText(system, text, uid, share, simpleToken);
        newText = convertPDDLinkFromText(system, newText, uid, share);
        newText = convertTBLinkFromText(system, newText, uid, share, simpleToken);
@@ -325,7 +321,7 @@
                }
            }
        if (text.equalsIgnoreCase(newText))
            throw new ConvertLinkExceptionException(ConvertLinkExceptionException.CODE_NONE, "不包含可转链的口令与链接");
            throw new ConvertLinkException(ConvertLinkException.CODE_NONE, "不包含可转链的口令与链接");
        return newText;
    }
@@ -344,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},进入【Ta0宝】立即抢购!";
        // 解析淘宝官方活动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));
                }
            }
        }
    }
}