admin
2019-11-23 51a4ff5d777028d52a19c314a99f796334cb7b51
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/recommend/HomeRecommendGoodsServiceImpl.java
@@ -4,6 +4,8 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import javax.annotation.Resource;
@@ -13,14 +15,18 @@
import org.springframework.stereotype.Service;
import com.yeshi.fanli.dto.dataoke.DaTaoKeGoodsResult;
import com.yeshi.fanli.entity.taobao.TLJBuyGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
import com.yeshi.fanli.service.inter.goods.recommend.HomeRecommendGoodsService;
import com.yeshi.fanli.service.inter.goods.recommend.RecommendGoodsDeleteHistoryService;
import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
@@ -36,6 +42,12 @@
   @Resource
   private EhCacheCacheManager ehCacheCacheManager;
   @Resource
   private TLJBuyGoodsService tljBuyGoodsService;
   @Resource
   private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService;
   @Override
   public List<TaoBaoGoodsBrief> listGoodsByPage(Long uid, String device, String imei, String idfa, int page) {
@@ -162,7 +174,16 @@
      if (fList != null && fList.size() > 0)
         return fList;
      DaTaoKeGoodsResult result = DaTaoKeApiUtil.getRankingList(type);
      DaTaoKeGoodsResult result = null;
      int count = 0;
      while (result == null && count < 4) {
         count++;
         try {
            result = DaTaoKeApiUtil.getRankingList(type, null);
         } catch (Exception e) {
         }
      }
      List<DaTaoKeDetailV2> list = result.getGoodsList();
      List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
      if (list != null)
@@ -175,6 +196,8 @@
      if (goodsList != null && goodsList.size() > 0)
         saveObjList(goodsList, name, key);
      // 商品信息过滤
      goodsList = taoBaoGoodsUpdateService.filterImportantTaoBaoGoods(goodsList);
      return goodsList;
   }
@@ -191,7 +214,8 @@
      if (list != null && list.size() > 0)
         return list;
      TaoBaoSearchResult result = TaoKeApiUtil.getMaterialByMaterialId(3756, page, Constant.PAGE_SIZE);
      // 爆款商品库
      TaoBaoSearchResult result = TaoKeApiUtil.getMaterialByMaterialId(14624, page, Constant.PAGE_SIZE);
      if (result != null) {
         list = daTaoKeGoodsDetailService.filterTaoBaoGoods(result.getTaoBaoGoodsBriefs());
         saveObjList(list, name, key);
@@ -220,4 +244,53 @@
      return null;
   }
   @Override
   public List<TLJBuyGoods> getZiGouLiJianHotGoods(String device) {
      String name = "recommendUserCache";
      String key = "getZiGouLiJianHotGoods-" + StringUtil.Md5(device);
      List<TLJBuyGoods> fList = getCacheObjList(name, key, TLJBuyGoods.class);
      if (fList != null && fList.size() > 0)
         return fList;
      List<TLJBuyGoods> list = tljBuyGoodsService
            .listByDay(TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd"));
      if (list.size() > 20)
         list = list.subList(0, 20);
      List<TaoBaoGoodsBrief> finalList = new ArrayList<>();
      Map<Long, TLJBuyGoods> map = new ConcurrentHashMap<>();
      if (list != null)
         for (TLJBuyGoods goods : list) {
            try {
               if (goods.getGoods().getAuctionId() == null) {
                  goods.getGoods().setAuctionId(goods.getGoods().getId());
               }
               map.put(goods.getGoods().getAuctionId(), goods);
               finalList.add(goods.getGoods());
            } catch (Exception e) {
               e.printStackTrace();
            }
         }
      finalList = recommendGoodsDeleteHistoryService.filterGoods(device, finalList);
      if (finalList != null && finalList.size() > 0) {
         Collections.shuffle(finalList);
         if (finalList.size() >= 10)
            finalList = finalList.subList(0, 10);
         list = new ArrayList<>();
         for (TaoBaoGoodsBrief goods : finalList) {
            list.add(map.get(goods.getAuctionId()));
         }
         // 缓存
         if (list.size() > 0) {
            saveObjList(list, name, key);
         }
         return list;
      }
      return null;
   }
}