admin
2020-02-28 b7bdc8f55aa7e5c3646084eb2c2a8801eeec6c5b
缓存根据淘口令获取商品ID
5个文件已修改
1个文件已添加
91 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/DynamicRecommendController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/manger/ClipboardAnalysisManager.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/manger/goods/ConvertLinkManager.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/manger/goods/tb/TaoBaoTokenAuctionIdMapManager.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/RedisKeyEnum.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/cache/TaoBaoGoodsCacheUtil.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
}