yujian
2019-08-27 d8359ddb48dab5cc797a9d552e11fde571f4920c
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java
@@ -13,16 +13,18 @@
import javax.annotation.Resource;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.yeshi.fanli.dao.goods.taobao.dataoke.DaTaoKeGoodsDetailV2Dao;
import com.yeshi.fanli.dto.dataoke.DaTaoKeGoodsResult;
import com.yeshi.fanli.dto.dataoke.DingDongQiangDTO;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
@@ -212,9 +214,10 @@
   }
   @Override
   public List<DaTaoKeDetailV2> listPreShareHotGoods(int page) {
   public List<DaTaoKeDetailV2> listPreShareHotGoods(int page, BigDecimal minCommission) {
      Map<Long, DaTaoKeDetailV2> map = new HashMap<>();
      List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Dao.listPreShareHotGoods((page - 1) * 100, 100, "monthSales");
      List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Dao.listPreShareHotGoods((page - 1) * 100, 100, "hotPush",
            minCommission);
      System.out.println(list);
      for (DaTaoKeDetailV2 v2 : list) {
         map.put(v2.getId(), v2);
@@ -304,4 +307,72 @@
      daTaoKeGoodsDetailV2Dao.listAndRemoveByMinUpdateTime(minTime, 0, 3000);
   }
   @Override
   public long countByMinUpdateTime(Date minTime) {
      return daTaoKeGoodsDetailV2Dao.countByMinUpdateTime(minTime);
   }
   @Cacheable(value = "daTaoKeGoodsCache", key = "'getDingDongQiangData'")
   @Override
   public List<DingDongQiangDTO> getDingDongQiangData() {
      List<DingDongQiangDTO> list = null;
      int count = 0;
      while ((list == null || list.size() == 0) && count < 3) {
         count++;
         list = DaTaoKeUtil.getDingDongQiang();
      }
      if (list == null)
         return null;
      return list;
   }
   @Async
   private void updateGoods(Long id) {
      DaTaoKeDetailV2 v2 = DaTaoKeApiUtil.getGoodsDetail(id);
      if (v2 != null)
         daTaoKeGoodsDetailV2Dao.save(v2);
   }
   @Cacheable(value = "daTaoKeGoodsCache", key = "'getDingDongQiangData-'+#time")
   @Override
   public List<DaTaoKeDetailV2> getDingDongQiangData(String time) {
      List<DingDongQiangDTO> list = getDingDongQiangData();
      if (list == null)
         return null;
      Map<String, DingDongQiangDTO> map = new HashMap<>();
      for (DingDongQiangDTO dto : list)
         map.put(dto.getTime(), dto);
      DingDongQiangDTO dto = map.get(time);
      if (dto != null) {
         List<Long> idList = new ArrayList<>();
         for (DaTaoKeDetailV2 td : dto.getGoodsList())
            idList.add(td.getId());
         List<DaTaoKeDetailV2> finalList = listByIds(idList);
         if (finalList.size() != idList.size()) {
            for (Long id : idList)
               updateGoods(id);
            finalList = listByIds(idList);
         }
         for (DaTaoKeDetailV2 detail : finalList) {
            detail.setCouponReceiveNum(detail.getCouponTotalNum() - (int) (200 + Math.random() * 1000));
            if (detail.getCouponTotalNum() - detail.getCouponReceiveNum() <= 0)
               detail.setCouponReceiveNum(detail.getCouponTotalNum());
         }
         return finalList;
      }
      return null;
   }
   @Override
   public List<String> getDingDongQiangTime() {
      List<DingDongQiangDTO> list = getDingDongQiangData();
      List<String> dateList = new ArrayList<>();
      for (DingDongQiangDTO dto : list) {
         dateList.add(dto.getTime());
      }
      return dateList;
   }
}