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/controller/client/v2/DynamicControllerV2.java | 283 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 223 insertions(+), 60 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java index b5cac21..27a49bf 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java @@ -1,46 +1,12 @@ package com.yeshi.fanli.controller.client.v2; -import java.io.IOException; -import java.io.InputStream; -import java.io.PrintWriter; -import java.lang.reflect.Type; -import java.math.BigDecimal; -import java.net.MalformedURLException; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import javax.annotation.Resource; - +import com.google.gson.*; +import com.yeshi.common.vo.ClientTextStyleVO; +import com.yeshi.fanli.dto.jd.JDCouponInfo; 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.exception.taobao.TaoBaoConvertLinkException; -import com.yeshi.fanli.service.manger.PIDManager; -import com.yeshi.fanli.service.manger.goods.TaoBaoLinkManager; -import com.yeshi.fanli.util.*; -import com.yeshi.fanli.util.StringUtil; -import org.apache.commons.beanutils.PropertyUtils; -import org.springframework.core.task.TaskExecutor; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.yeshi.utils.*; -import org.yeshi.utils.entity.FileUploadResult; -import org.yeshi.utils.tencentcloud.COSManager; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonElement; -import com.google.gson.JsonPrimitive; -import com.google.gson.JsonSerializationContext; -import com.google.gson.JsonSerializer; -import com.yeshi.fanli.dto.jd.JDCouponInfo; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.clazz.GoodsClass; import com.yeshi.fanli.entity.bus.homemodule.CommonShareInfo; @@ -60,7 +26,10 @@ import com.yeshi.fanli.entity.jd.JDGoods; import com.yeshi.fanli.entity.system.ConfigKeyEnum; import com.yeshi.fanli.entity.taobao.TaoBaoLink; -import com.yeshi.fanli.exception.goods.ConvertLinkExceptionException; +import com.yeshi.fanli.exception.goods.ConvertLinkException; +import com.yeshi.fanli.exception.pdd.PDDAuthException; +import com.yeshi.fanli.exception.pdd.PDDGoodsException; +import com.yeshi.fanli.exception.taobao.TaoBaoConvertLinkException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; import com.yeshi.fanli.service.inter.config.ConfigService; @@ -68,31 +37,61 @@ import com.yeshi.fanli.service.inter.dynamic.ArticleOfficialService; import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService; import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService; -import com.yeshi.fanli.service.inter.goods.ShareGoodsService; import com.yeshi.fanli.service.inter.homemodule.CommonShareInfoService; import com.yeshi.fanli.service.inter.homemodule.SpecialService; import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService; +import com.yeshi.fanli.service.inter.pdd.PDDAuthService; import com.yeshi.fanli.service.inter.user.QrCodeService; +import com.yeshi.fanli.service.inter.user.UserFunctionsLimitService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.service.inter.user.UserInfoService; -import com.yeshi.fanli.service.inter.user.cloud.UserCloudService; import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; +import com.yeshi.fanli.service.manger.PIDManager; import com.yeshi.fanli.service.manger.goods.ConvertLinkManager; +import com.yeshi.fanli.service.manger.goods.TaoBaoLinkManager; +import com.yeshi.fanli.service.manger.goods.jd.JDConvertLinkManager; +import com.yeshi.fanli.service.manger.goods.pdd.PDDConvertLinkManager; +import com.yeshi.fanli.service.manger.goods.tb.TBConvertLinkManager; +import com.yeshi.fanli.util.*; +import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; +import com.yeshi.fanli.util.exception.ExceptionConstant; +import com.yeshi.fanli.util.goods.GoodsJumpUtil; +import com.yeshi.fanli.util.goods.GoodsTextUtil; 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.DaTaoKeUtil; import com.yeshi.fanli.util.taobao.TaoBaoUtil; +import com.yeshi.fanli.util.taobao.TaoKeApiUtil; import com.yeshi.fanli.vo.dynamic.ArticleVO; +import com.yeshi.fanli.vo.goods.ConvertLinkJumpVO; import com.yeshi.fanli.vo.goods.GoodsDetailVO; import com.yeshi.fanli.vo.homemodule.BannerVO; import com.yeshi.fanli.vo.homemodule.SpecialVO; -import com.yeshi.common.vo.ClientTextStyleVO; - +import com.yeshi.fanli.vo.pdd.PDDConvertLinkResultVO; import net.sf.json.JSONArray; import net.sf.json.JSONObject; +import org.apache.commons.beanutils.PropertyUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.task.TaskExecutor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.yeshi.utils.*; +import org.yeshi.utils.entity.FileUploadResult; +import org.yeshi.utils.tencentcloud.COSManager; + +import javax.annotation.Resource; +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintWriter; +import java.lang.reflect.Type; +import java.math.BigDecimal; +import java.net.MalformedURLException; +import java.util.*; /** * 鍔ㄦ�� @@ -102,6 +101,8 @@ @Controller @RequestMapping("api/v2/dynamic") public class DynamicControllerV2 { + + private Logger logger= LoggerFactory.getLogger(DynamicControllerV2.class); @Resource private TaoBaoLinkManager taoBaoLinkManager; @@ -145,10 +146,25 @@ private ConvertLinkManager convertLinkManager; @Resource + private TBConvertLinkManager tbConvertLinkManager; + + @Resource + private JDConvertLinkManager jdConvertLinkManager; + + @Resource + private PDDConvertLinkManager pddConvertLinkManager; + + @Resource private DailyCountMomentsService dailyCountMomentsService; @Resource private CommonShareInfoService commonShareInfoService; + + @Resource + private PDDAuthService pddAuthService; + + @Resource + private UserFunctionsLimitService userFunctionsLimitService; @Resource @@ -271,7 +287,8 @@ list.add(map.get(TYPE_FAQUAN)); list.add(map.get(TYPE_HUODONG)); // list.add(map.get(TYPE_XUEYUAN)); - list.add(map.get(TYPE_SUCAI)); + // 涓嶈繑鍥炵礌鏉愪簡 + // list.add(map.get(TYPE_SUCAI)); } else { list.add(map.get(TYPE_FAQUAN)); } @@ -643,6 +660,9 @@ } for (GoodsEvaluate goodsEvaluate : list) { + if (goodsEvaluate.getGoods() != null) { + goodsEvaluate.getGoods().setCreatetime(null); + } GoodsEvaluate evaluateNew = new GoodsEvaluate(); try { PropertyUtils.copyProperties(evaluateNew, goodsEvaluate); @@ -678,7 +698,7 @@ for (ImgInfo imgInfo : goodsEvaluate.getImgList()) { - if (acceptData.getSystem() == SystemEnum.yhqjx) { + if (acceptData.getSystem() == SystemEnum.yhqjx || acceptData.getSystem() == SystemEnum.hsb) { imgInfo.setGoods(null); imgInfo.setGoodsVO(null); } @@ -822,6 +842,121 @@ } + + /** + * 杞摼 + * + * @param acceptData + * @param uid + * @param link + * @param out + */ + @RequestMapping(value = "convertLink", method = RequestMethod.POST) + public void convertLink(AcceptData acceptData, Long uid, String link, PrintWriter out) { + if (StringUtil.isNullOrEmpty(link)) { + out.print(JsonUtil.loadFalseResult("閾炬帴涓虹┖")); + return; + } + + ConvertLinkJumpVO convertLinkJumpVO = null; + //鍒ゆ柇result鏄惁涓烘窐鍙d护 + List<String> urlList = UrlUtils.parseUrlsFromText(link); + if (urlList.size() > 0) { + //鍙鐞嗕含涓�/鎷煎澶氶摼鎺� + String url = urlList.get(0); + if (JDUtil.isJDLink(url)) { + try { + url = jdConvertLinkManager.convertShortUrl(url, uid, acceptData.getSystem(), uid == null ? SystemPIDInfo.PidType.coupon : SystemPIDInfo.PidType.fanli); + } catch (Exception e) { + logger.warn(String.format("浜笢杞摼鍑洪敊锛歮aterialId-%s",url), e); + } + convertLinkJumpVO = new ConvertLinkJumpVO(GoodsJumpUtil.getJDJumpInfo(url), Constant.SOURCE_TYPE_JD); + outPrintConvertResult(convertLinkJumpVO, out); + return; + } + + if (PinDuoDuoUtil.isPDDLink(url)) { + String pddGoodsId = PinDuoDuoUtil.getPDDGoodsId(url); + String customParams = pddAuthService.getFanliCustomParams(uid); + PDDConvertLinkResultVO convertLinkResult = null; + try { + convertLinkResult = pddConvertLinkManager.convertGoods(pddGoodsId, acceptData.getSystem(), customParams, uid == null ? SystemPIDInfo.PidType.coupon : SystemPIDInfo.PidType.fanli); + convertLinkJumpVO = new ConvertLinkJumpVO(GoodsJumpUtil.getPDDJumpInfo(convertLinkResult), Constant.SOURCE_TYPE_PDD); + outPrintConvertResult(convertLinkJumpVO, out); + return; + } catch (PDDGoodsException e) { + e.printStackTrace(); + //鍟嗗搧涓嬬嚎 + out.print(JsonUtil.loadFalseResult(ExceptionConstant.CODE_GOODS_OFFLINE, "鍟嗗搧宸蹭笅绾�")); + return; + } catch (PDDAuthException e) { + e.printStackTrace(); + //鎷煎澶氭湭鎺堟潈 + out.print(JsonUtil.loadFalseResult(ExceptionConstant.CODE_AUTH_PDD_NO_AUTH, "鎷煎澶氬皻鏈巿鏉冿紝璇锋巿鏉�")); + return; + } + } + + + return; + } + + List<String> tokenList = TaoBaoUtil.getTokenListFromTextWithKuoHao(link); + if (tokenList.size() > 0) { + //杩樺師鍙d护 + try { + TaoKeApiUtil.TokenConvertResult convertResult = TaoKeApiUtil.tokenConvert(tokenList.get(0)); + if (convertResult != null) { + String originUrl = convertResult.getOrigin_url(); + String goodsId = convertResult.getNum_iid(); + TaoBaoLink taoBaoLink = tbConvertLinkManager.convertGoods(goodsId, uid, acceptData.getSystem(), uid == null ? SystemPIDInfo.PidType.coupon : SystemPIDInfo.PidType.fanli); + convertLinkJumpVO = new ConvertLinkJumpVO(GoodsJumpUtil.getTBJumpInfo(taoBaoLink), Constant.SOURCE_TYPE_TAOBAO); + outPrintConvertResult(convertLinkJumpVO, out); + return; + } else { + throw new Exception("杞摼澶辫触"); + } + } catch (Exception e) { + e.printStackTrace(); + //杈撳嚭鍘熸潵鐨勬窐鍙d护 + JSONObject root = new JSONObject(); + root.put("data", new Gson().toJson(new ConvertLinkJumpVO(null, Constant.SOURCE_TYPE_TAOBAO))); + root.put("code", ExceptionConstant.CODE_JUMP_NO_SUPPORT); + out.print(root.toString()); + return; + } + + } + out.print(JsonUtil.loadFalseResult("涓嶆敮鎸佺殑绫诲瀷")); + } + + + private void outPrintConvertResult(ConvertLinkJumpVO vo, PrintWriter out) { + out.print(JsonUtil.loadTrueResult(new Gson().toJson(vo))); + } + + + /** + * 澶嶅埗鎺ㄨ崘璇� + * + * @param acceptData + * @param uid + * @param id + * @param out + */ + @RequestMapping(value = "evaluateCopyRecommend", method = RequestMethod.POST) + public void evaluateCopyRecommend(AcceptData acceptData, Long uid, String id, PrintWriter out) { + GoodsEvaluate goodsEvaluate = goodsEvaluateService.getById(id); + if (goodsEvaluate == null) { + out.print(JsonUtil.loadFalseResult("璇ュ唴瀹瑰凡涓嶅瓨鍦�")); + return; + } + JSONObject data = new JSONObject(); + String result = GoodsTextUtil.decodeAppHtmlText(goodsEvaluate.getTitle()); + data.put("content", result); + out.print(JsonUtil.loadTrueResult(data)); + } + /** * @param acceptData * @param uid @@ -866,6 +1001,13 @@ out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC)); return; } + + + if (userFunctionsLimitService.isLimit(uid, SystemFunction.share, new Date())) { + out.print(JsonUtil.loadFalseResult(1, "璇ュ姛鑳介檺鍒朵娇鐢�")); + return; + } + UserExtraTaoBaoInfo taoBaoInfo = userExtraTaoBaoInfoService.getByUid(uid); String relationId = null; @@ -1006,7 +1148,7 @@ if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { TaoBaoLink taoBaoLink = null; try { - taoBaoLink = taoBaoLinkManager.getTaoBaoLinkForShare(system, user.getId(), Long.parseLong(goodsVO.getGoodsId()), + taoBaoLink = taoBaoLinkManager.getTaoBaoLinkForShare(system, user.getId(),goodsVO.getGoodsId(), relationId, null); } catch (TaoBaoConvertLinkException e) { e.printStackTrace(); @@ -1015,7 +1157,7 @@ configService.getValue(ConfigKeyEnum.taobaoShareQrcodeText.getKey(), system), taoBaoLink.getGoods(), TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); } else if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_JD) { - JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong(goodsVO.getGoodsId())); + JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsVO.getGoodsId()); if (jdGoods == null) { return null; } @@ -1026,10 +1168,14 @@ couponUrl = couponInfo.getLink(); } String materialId = "https://item.jd.com/" + goodsVO.getGoodsId() + ".html"; - jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, pidManager.getPidCache(system, Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.share), - user.getId() + ""); + try { + jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, pidManager.getPidCache(system, Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.share), + user.getId() + ""); + } catch (Exception e) { + logger.warn(String.format("浜笢杞摼鍑洪敊锛歮aterialId-%s couponUrl-%s",materialId,couponUrl), e); + } } else if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_PDD) { - PDDGoodsDetail pddGoodsDetail = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(goodsVO.getGoodsId())); + PDDGoodsDetail pddGoodsDetail = PinDuoDuoApiUtil.getGoodsDetail(goodsVO.getGoodsId()); if (pddGoodsDetail == null) { return null; } @@ -1077,6 +1223,11 @@ return; } + if (userFunctionsLimitService.isLimit(uid, SystemFunction.share, new Date())) { + out.print(JsonUtil.loadFalseResult(1, "璇ュ姛鑳介檺鍒朵娇鐢�")); + return; + } + UserExtraTaoBaoInfo taoBaoInfo = userExtraTaoBaoInfoService.getByUid(uid); String relationId = null; if (taoBaoInfo != null && taoBaoInfo.getRelationId() != null && taoBaoInfo.getRelationValid() != null @@ -1102,11 +1253,23 @@ } String newText = text; // 闈為�氱敤鍒搁渶瑕侀獙璇� + + //鐗逛环鍙渶瑕佸鍒舵枃瀛楋紝涓嶉渶瑕佽浆閾� + if (acceptData.getSystem() == SystemEnum.yhqjx || acceptData.getSystem() == SystemEnum.hsb) { + newText = GoodsTextUtil.decodeAppHtmlText(newText); + //鍙鍒舵枃瀛� + JSONObject data = new JSONObject(); + data.put("text", newText); + out.print(JsonUtil.loadTrueResult(data)); + return; + } + + if (comment != null && (comment.getNeedSpin() == null || comment.getNeedSpin())) { try { newText = convertLinkManager.convertLinkFromText(acceptData.getSystem(), text, uid, true, true); - } catch (ConvertLinkExceptionException e) { - if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) { + } catch (ConvertLinkException e) { + if (e.getCode() != ConvertLinkException.CODE_NONE) { out.print(JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触")); return; } @@ -1189,8 +1352,8 @@ if (shareInfo.getNeedSpin() != null && shareInfo.getNeedSpin()) { try { newText = convertLinkManager.convertLinkFromText(acceptData.getSystem(), text, uid, true, true); - } catch (ConvertLinkExceptionException e) { - if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) { + } catch (ConvertLinkException e) { + if (e.getCode() != ConvertLinkException.CODE_NONE) { out.print(JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触")); return; } @@ -1258,7 +1421,7 @@ int platformCode = Constant.getPlatformCode(acceptData.getPlatform()); jumpDetail = jumpDetailV2Service.getByTypeCache("web", platformCode, - Integer.parseInt(acceptData.getVersion())); + Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()); JSONObject inner = new JSONObject(); inner.put("url", jumpLink); params = inner.toString(); @@ -1384,8 +1547,8 @@ if (shareInfo.getNeedSpin() != null && shareInfo.getNeedSpin()) { try { newText = convertLinkManager.convertLinkFromText(acceptData.getSystem(), text, uid, true, true); - } catch (ConvertLinkExceptionException e) { - if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) { + } catch (ConvertLinkException e) { + if (e.getCode() != ConvertLinkException.CODE_NONE) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触")); return; } @@ -1536,8 +1699,8 @@ } imgUrl = createActivityShareImg(type, id, erCodeContent); - } catch (ConvertLinkExceptionException e) { - if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) { + } catch (ConvertLinkException e) { + if (e.getCode() != ConvertLinkException.CODE_NONE) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触")); return; } @@ -1613,8 +1776,8 @@ if (comment != null && (comment.getNeedSpin() == null || comment.getNeedSpin())) { try { newText = convertLinkManager.convertLinkFromText(acceptData.getSystem(), text, uid, true, true); - } catch (ConvertLinkExceptionException e) { - if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) { + } catch (ConvertLinkException e) { + if (e.getCode() != ConvertLinkException.CODE_NONE) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇勮鐢熸垚澶辫触")); return; } -- Gitblit v1.8.0