yujian
2019-05-08 d36a73eb2aaf9383d0cc1f40c65b21138c75c741
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsServiceImpl.java
@@ -8,54 +8,53 @@
import org.springframework.stereotype.Service;
import com.yeshi.fanli.dao.mybatis.taobao.dataoke.DaTaoKeDetailMapper;
import com.yeshi.fanli.dto.dataoke.DaTaoKeApiResult;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsService;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil;
import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
@Service
public class DaTaoKeGoodsServiceImpl implements DaTaoKeGoodsService {
   @Resource
   private DaTaoKeDetailMapper daTaoKeDetailMapper;
   @Resource
   private RedisManager redisManager;
   private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
   private List<DaTaoKeDetail> reSearchDetails(List<DaTaoKeDetail> list) {
      List<Long> idList = new ArrayList<>();
      if (list != null) {
         for (DaTaoKeDetail detail : list) {
            idList.add(detail.getId());
         }
         List<DaTaoKeDetail> detailList = daTaoKeGoodsDetailService.listByIds(idList);
         return detailList;
      } else
         return null;
   }
   @Override
   public void startSyncGoods() {
      // 判断是否有正在进行的更新
      String key1 = "dataoke-updating";
      if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key1)))
         return;
   public List<DaTaoKeDetail> getCurrentSalesRankGoodsList(Long cid) {
      List<DaTaoKeDetail> list = DaTaoKeUtil.getCurrentSalesRank(cid);
      return reSearchDetails(list);
   }
      String key2 = "dataoke-update-time";
      String updateTime = redisManager.getCommonString(key2);
      if (!StringUtil.isNullOrEmpty(updateTime)) {
         DaTaoKeApiResult result = DaTaoKeApiUtil.goodsList(1);
         if (result.getUpdateTime().equalsIgnoreCase(updateTime)) {// 和上次更新在同一时间
            return;
         }
      }
   @Override
   public List<DaTaoKeDetail> getCurrentDaySalesRankGoodsList(Long cid) {
      List<DaTaoKeDetail> list = DaTaoKeUtil.getCurrentDaySalesRank(cid);
      return reSearchDetails(list);
   }
      // 开始更新
      redisManager.cacheCommonString(key1, "1");
      List<DaTaoKeDetail> goodsList = new ArrayList<>();
      for (int p = 1; p < 2000; p++) {
         DaTaoKeApiResult result = DaTaoKeApiUtil.goodsList(p);
         goodsList.addAll(result.getDetailList());
         if (result.getDetailList().size() < 50)// 更新完成
         {
            redisManager.removeCommonString(key1);
            break;
         }
      }
      //
   @Override
   public List<DaTaoKeDetail> getCurrentHotSalesRankGoodsList() {
      List<DaTaoKeDetail> list = DaTaoKeUtil.getCurrentHotSalesRank();
      return reSearchDetails(list);
   }
   @Override
   public List<DaTaoKeDetail> getGoodsNotInList(Long cid, List<Long> listId,int count) {
      return daTaoKeDetailMapper.getGoodsNotInList(cid, listId,count);
   }
}