admin
2019-07-11 3824cbcaec6e6c67418d5280a53e9c2fedeef6f9
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java
@@ -1,8 +1,12 @@
package com.yeshi.fanli.service.impl.taobao.dataoke;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -17,6 +21,9 @@
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.BeanUtil;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
@@ -35,11 +42,11 @@
   public void startSyncGoods() {
      LogHelper.test("大淘客同步开始");
      DaTaoKeGoodsResult result = DaTaoKeApiUtil.listAll("1");
      int page=0;
      int page = 0;
      while (result.getGoodsList() != null && result.getGoodsList().size() > 0) {
         System.out.println(page++);
         for (DaTaoKeDetailV2 v2 : result.getGoodsList())
            daTaoKeGoodsDetailV2Dao.save(v2);
            daTaoKeGoodsDetailV2Dao.saveWithCommision(v2);
         result = DaTaoKeApiUtil.listAll(result.getPageId());
         try {
            Thread.sleep(10);
@@ -91,13 +98,13 @@
      String startTime = null;
      DaTaoKeDetailV2 latest = daTaoKeGoodsDetailV2Dao.selectLatest();
      if (latest != null) {
         startTime = TimeUtil.getGernalTime(latest.getCreateTime().getTime(), "yyyy-MM-dd HH:mm:ss");
         startTime = latest.getCreateTime();
      }
      DaTaoKeGoodsResult result = DaTaoKeApiUtil.getNewGoodsList(null, startTime, null);
      while (!StringUtil.isNullOrEmpty(result.getPageId())) {
         for (DaTaoKeDetailV2 v2 : result.getGoodsList()) {
            v2.setUpdateTime(new Date());
            daTaoKeGoodsDetailV2Dao.save(v2);
            daTaoKeGoodsDetailV2Dao.saveWithCommision(v2);
         }
         result = DaTaoKeApiUtil.getNewGoodsList(result.getPageId(), startTime, null);
         try {
@@ -112,7 +119,7 @@
   private void addGoodsList(List<DaTaoKeDetailV2> goodsList) {
      for (DaTaoKeDetailV2 goods : goodsList) {
         goods.setUpdateTime(new Date());
         daTaoKeGoodsDetailV2Dao.save(goods);
         daTaoKeGoodsDetailV2Dao.saveWithCommision(goods);
      }
   }
@@ -184,4 +191,51 @@
      return daTaoKeGoodsDetailV2Dao.getGoodsNotInList(cid, listId, count);
   }
   @Override
   public List<DaTaoKeDetailV2> listPreShareHotGoods(int page) {
      Map<Long, DaTaoKeDetailV2> map = new HashMap<>();
      List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Dao.listPreShareHotGoods((page - 1) * Constant.PAGE_SIZE,
            Constant.PAGE_SIZE, "monthSales");
      System.out.println(list);
      for (DaTaoKeDetailV2 v2 : list) {
         map.put(v2.getId(), v2);
      }
      List<DaTaoKeDetailV2> finalList = new ArrayList<>();
      for (Iterator<Long> its = map.keySet().iterator(); its.hasNext();) {
         DaTaoKeDetailV2 v2 = map.get(its.next());
         Date time = new Date(TimeUtil.convertToTimeTemp(v2.getCouponEndTime(), "yyyy-MM-dd HH:mm:ss"));
         Date targetTime = new Date(TimeUtil.convertToTimeTemp(
               TimeUtil.getGernalTime(System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 2L, "yyyy-MM-dd"),
               "yyyy-MM-dd") - 1000L);
         if (time.getTime() >= targetTime.getTime())
            finalList.add(v2);
      }
      Comparator<DaTaoKeDetailV2> cm = new Comparator<DaTaoKeDetailV2>() {
         @Override
         public int compare(DaTaoKeDetailV2 o1, DaTaoKeDetailV2 o2) {
            return o1.getActualPrice().compareTo(o2.getActualPrice());
         }
      };
      Collections.sort(finalList, cm);
      return finalList;
   }
   @Override
   public List<DaTaoKeDetailV2> listPreTLJBuyGoods(int page) {
      if (page == 1) {
         DaTaoKeGoodsResult result = DaTaoKeApiUtil.getRankingList(DaTaoKeApiUtil.RANK_TYPE_DAY, null);
         List<DaTaoKeDetailV2> goodsList = new ArrayList<>();
         for (DaTaoKeDetailV2 v2 : result.getGoodsList()) {
            BigDecimal commision = MoneyBigDecimalUtil
                  .div(MoneyBigDecimalUtil.mul(v2.getActualPrice(), v2.getCommissionRate()), new BigDecimal(100));
            if (commision.multiply(new BigDecimal("0.7")).compareTo(new BigDecimal("1.01")) >= 0)
               goodsList.add(v2);
         }
         return goodsList;
      } else
         return new ArrayList<>();
   }
}