fanli/src/main/java/com/yeshi/fanli/controller/client/v1/DynamicRecommendController.java
@@ -28,6 +28,7 @@ import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service; import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.service.manger.goods.tb.TaoBaoTokenAuctionIdMapManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.Utils; import com.yeshi.fanli.util.taobao.TaoBaoUtil; @@ -53,6 +54,9 @@ @Resource private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service; @Resource private TaoBaoTokenAuctionIdMapManager taoBaoTokenAuctionIdMapManager; /** * 获取商品信息 @@ -274,12 +278,7 @@ List<String> tokenList = TaoBaoUtil.getTokenListFromText(text); if (tokenList != null && tokenList.size() > 0) { String token = tokenList.get(0); Long auctionId = null; try { auctionId = TaoKeApiUtil.tokenConvertAuctionId(token); } catch (TaoBaoTokenParseException e1) { e1.printStackTrace(); } Long auctionId = taoBaoTokenAuctionIdMapManager.getAuctionIdByToken(token); if (auctionId != null) { TaoBaoGoodsBrief tb = null; try { fanli/src/main/java/com/yeshi/fanli/service/manger/ClipboardAnalysisManager.java
@@ -23,6 +23,7 @@ import com.yeshi.fanli.exception.user.TokenRecordException; import com.yeshi.fanli.service.inter.user.TokenRecordService; import com.yeshi.fanli.service.manger.goods.jd.JDGoodsLinkParseManager; import com.yeshi.fanli.service.manger.goods.tb.TaoBaoTokenAuctionIdMapManager; import com.yeshi.fanli.util.DouYinUtil; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TokenUtil; @@ -54,6 +55,9 @@ @Resource private TokenRecordService tokenRecordService; @Resource private TaoBaoTokenAuctionIdMapManager taoBaoTokenAuctionIdMapManager; /** * @Title: parseContentType @Description: 解析文本的类型 @param text @return Set @@ -405,8 +409,7 @@ } private CommonGoods parseTaoBaoToken(String token) throws TaoBaoTokenParseException { Long auctionId = TaoKeApiUtil.tokenConvertAuctionId(token); Long auctionId = taoBaoTokenAuctionIdMapManager.getAuctionIdByToken(token); if (auctionId != null) {// TaoBaoGoodsBrief goods = TaoBaoUtil.isAlimama(auctionId + ""); if (goods == null) { fanli/src/main/java/com/yeshi/fanli/service/manger/goods/ConvertLinkManager.java
@@ -15,6 +15,7 @@ import com.yeshi.fanli.entity.taobao.TaoKeAppInfo; 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; @@ -41,10 +42,13 @@ @Resource private RedisManager redisManager; @Resource private TaoBaoTokenAuctionIdMapManager taoBaoTokenAuctionIdMapManager; /** * * @Title: convertJDLinkFromText @Description:转链文本中的京东短链 @param text @param * uid @param share @return @throws Exception String 返回类型 @throws * uid @param share @return @throws Exception String 返回类型 @throws */ public String convertJDLinkFromText(String text, Long uid, boolean share) throws Exception { @@ -84,7 +88,7 @@ /** * * @Title: convertTBLinkFromText @Description: 转链文本中的淘口令 @param text @param * uid @param share @return @throws Exception String 返回类型 @throws * uid @param share @return @throws Exception String 返回类型 @throws */ private String convertTBLinkFromText(String text, Long uid, boolean share) throws Exception { @@ -103,7 +107,7 @@ tokenSet.addAll(tokenList); Map<String, String> tokenMap = new HashMap<>(); for (String token : tokenSet) { Long auctionId = TaoKeApiUtil.tokenConvertAuctionId(token); Long auctionId = taoBaoTokenAuctionIdMapManager.getAuctionIdByToken(token); if (auctionId == null) throw new Exception("从淘口令获取商品失败"); TaoBaoGoodsBrief simpleGoods = TaoKeApiUtil.getSimpleGoodsInfo(auctionId); @@ -180,7 +184,7 @@ /** * * @Title: convertLinkFromText @Description: 从文本转链 @param text @return * String 返回类型 @throws * String 返回类型 @throws */ public String convertLinkFromText(String text, Long uid, boolean share) throws Exception { String newText = convertJDLinkFromText(text, uid, share); fanli/src/main/java/com/yeshi/fanli/service/manger/goods/tb/TaoBaoTokenAuctionIdMapManager.java
New file @@ -0,0 +1,35 @@ package com.yeshi.fanli.service.manger.goods.tb; import javax.annotation.Resource; import org.springframework.stereotype.Component; import com.yeshi.fanli.exception.taobao.TaoBaoTokenParseException; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; @Component public class TaoBaoTokenAuctionIdMapManager { @Resource private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil; public Long getAuctionIdByToken(String token) { if (StringUtil.isNullOrEmpty(token)) return null; Long auctionId = taoBaoGoodsCacheUtil.getGoodsIdByToken(token); if (auctionId != null) return auctionId; try { auctionId = TaoKeApiUtil.tokenConvertAuctionId(token); } catch (TaoBaoTokenParseException e) { e.printStackTrace(); } if (auctionId != null) { taoBaoGoodsCacheUtil.saveTokenGoodsIdMap(token, auctionId); } return auctionId; } } fanli/src/main/java/com/yeshi/fanli/util/RedisKeyEnum.java
@@ -26,6 +26,7 @@ taobaoUpdate("tb-u-", "淘宝商品更新"), taobaoQueue("tb-u-q-", "淘宝商品队列"), taobaoCode("taobao-code-", "淘宝code"), taobaoTokenGoodsMap("tb-t-g_m-","淘宝口令对应商品的映射关系保存"), JDGoods("JD-goods-", "京东商品"), JDShortUrl("jd-link-to-goods-", "京东短链"), jingDongGoods("jingdong-goods-", "京东商品"), fanli/src/main/java/com/yeshi/fanli/util/cache/TaoBaoGoodsCacheUtil.java
@@ -101,4 +101,29 @@ // TODO 凌晨删除缓存记录 } /** * 保存口令对应的商品ID * * @param token * @param auctionId */ public void saveTokenGoodsIdMap(String token, Long auctionId) { String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoTokenGoodsMap, StringUtil.Md5(token)); redisManager.cacheCommonString(key, "1", 60 * 30);// 有效期30分钟 } /** * 通过口令获取商品ID * * @param token * @return */ public Long getGoodsIdByToken(String token) { String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.taobaoTokenGoodsMap, StringUtil.Md5(token)); String goodsId = redisManager.getCommonString(key); if (StringUtil.isNullOrEmpty(goodsId)) return null; return Long.parseLong(goodsId); } }