admin
2019-11-23 51a4ff5d777028d52a19c314a99f796334cb7b51
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailServiceImpl.java
@@ -9,16 +9,17 @@
import javax.annotation.Resource;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.yeshi.fanli.dao.mybatis.taobao.dataoke.DaTaoKeDetailMapper;
import com.yeshi.fanli.dto.dataoke.DaTaoKeApiResult;
import com.yeshi.fanli.dto.dataoke.DingDongQiangDTO;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil;
import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
@@ -33,14 +34,8 @@
   @Override
   public void startSyncGoods() {
      LogHelper.test("大淘客同步开始");
      // 判断是否有正在进行的更新
      String key1 = "dataoke-updating";
      // if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key1)))
      // return;
      // 开始更新
      redisManager.cacheCommonString(key1, "1", 60 * 20);
      long firstTime = System.currentTimeMillis() - 1000 * 60 * 5L;
      int totalCount = 0;
      for (int p = 1; p <= 2000; p++) {// 10W数据
@@ -48,15 +43,14 @@
            DaTaoKeApiResult result = DaTaoKeApiUtil.goodsList(p);
            if (result.getDetailList().size() < 50)// 更新完成
            {
               redisManager.removeCommonString(key1);
               break;
            }
            addGoodsList(result.getDetailList());
            totalCount += result.getDetailList().size();
         } catch (Exception e) {
            e.printStackTrace();
         }
      }
      LogHelper.test("大淘客总共更新数据数量:" + totalCount);
      // 清除过期数据
      if (totalCount > 50000)// 保证有5w数据再清除过期
@@ -96,8 +90,9 @@
      List<DaTaoKeDetail> dtList = listByGoodsIds(goodsIdList);
      Map<Long, DaTaoKeDetail> map = new HashMap<>();
      for (DaTaoKeDetail goods : dtList)
         map.put(goods.getGoodsId(), goods);
      if (dtList != null)
         for (DaTaoKeDetail goods : dtList)
            map.put(goods.getGoodsId(), goods);
      for (TaoBaoGoodsBrief goods : goodsList) {
         DaTaoKeDetail detail = map.get(goods.getAuctionId());
         goods = DaTaoKeUtil.filterTaoBaoGoods(goods, detail);
@@ -147,4 +142,28 @@
      return daTaoKeDetailMapper.getGoodsNotInList(cid, listId, count);
   }
   @Override
   public List<DaTaoKeDetail> listByCidAndMaxPrice(Integer cid, BigDecimal maxPrice, int page, int pageSize) {
      return daTaoKeDetailMapper.listByCidAndMaxMinPrice(cid, maxPrice, null, (page - 1) * pageSize, pageSize);
   }
   @Override
   public Long countByCidAndMaxPrice(Integer cid, BigDecimal maxPrice) {
      return daTaoKeDetailMapper.countByCidAndMaxMinPrice(cid, maxPrice, null);
   }
   private void updateGoods(Long id) {
      DaTaoKeDetail detail = daTaoKeDetailMapper.selectByPrimaryKey(id);
      if (detail != null)
         return;
      detail = DaTaoKeApiUtil.getGoodsDetailV1(id);
      if (detail != null) {
         List<DaTaoKeDetail> list = new ArrayList<>();
         list.add(detail);
         addGoodsList(list);
      }
   }
}