admin
2019-07-30 573c491b4a1ba60e12a5678a01c1546c0077c1ee
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsServiceImpl.java
@@ -1,51 +1,120 @@
package com.yeshi.fanli.service.impl.taobao.dataoke;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.yeshi.fanli.dao.mybatis.taobao.dataoke.DaTaoKeDetailMapper;
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.service.inter.taobao.dataoke.DaTaoKeGoodsService;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
@Service
public class DaTaoKeGoodsServiceImpl implements DaTaoKeGoodsService {
   @Resource
   private DaTaoKeDetailMapper daTaoKeDetailMapper;
   @Resource
   private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
   @Resource
   private RedisManager redisManager;
   private List<DaTaoKeDetail> reSearchDetails(List<DaTaoKeDetail> list) {
      Map<Long, DaTaoKeDetail> map = new HashMap<>();
      List<Long> idList = new ArrayList<>();
      if (list != null) {
         for (DaTaoKeDetail detail : list) {
            idList.add(detail.getId());
            map.put(detail.getId(), detail);
         }
         List<DaTaoKeDetail> detailList = daTaoKeGoodsDetailService.listByIds(idList);
         if (detailList != null)
            for (DaTaoKeDetail dk : detailList) {
               dk.setUpdateTime(new Date());// 增加更新时间
               dk.setSalesNum(map.get(dk.getId()).getSalesNum());// 更改销量);
            }
         return detailList;
      } else
         return null;
   }
   @Override
   public List<DaTaoKeDetail> getCurrentSalesRankGoodsList(Long cid) {
      List<DaTaoKeDetail> list = DaTaoKeUtil.getCurrentSalesRank(cid);
      return reSearchDetails(list);
   public List<DaTaoKeDetail> getCurrentSalesRankGoodsList(Integer cid) {
      // 缓存
      String key = "dataoke-goods-shishirexiao-" + cid;
      List<DaTaoKeDetail> list = redisManager.getObjList(DaTaoKeDetail.class, key);
      if ((list != null && list.size() > 0
            && System.currentTimeMillis() - list.get(0).getUpdateTime().getTime() > 1000 * 60 * 20) || list == null
            || list.size() == 0)// 超过20分钟未更新
      {
         list = DaTaoKeUtil.getCurrentSalesRank(cid);
         list = reSearchDetails(list);
         if (list != null && list.size() > 0)
            redisManager.saveObjList(list, key, null);// 长期缓存
         return list;
      } else
         return list;
   }
   @Override
   public List<DaTaoKeDetail> getCurrentDaySalesRankGoodsList(Long cid) {
      List<DaTaoKeDetail> list = DaTaoKeUtil.getCurrentDaySalesRank(cid);
      return reSearchDetails(list);
   public List<DaTaoKeDetail> getCurrentDaySalesRankGoodsList(Integer cid) {
      // 缓存
      String key = "dataoke-goods-jinrirexiao-" + cid;
      List<DaTaoKeDetail> list = redisManager.getObjList(DaTaoKeDetail.class, key);
      if ((list != null && list.size() > 0
            && System.currentTimeMillis() - list.get(0).getUpdateTime().getTime() > 1000 * 60 * 20) || list == null
            || list.size() == 0)// 超过20分钟未更新
      {
         list = DaTaoKeUtil.getCurrentDaySalesRank(cid);
         list = reSearchDetails(list);
         if (list != null && list.size() > 0)
            redisManager.saveObjList(list, key, null);// 长期缓存
         return list;
      } else
         return list;
   }
   @Override
   public List<DaTaoKeDetail> getCurrentHotSalesRankGoodsList() {
      List<DaTaoKeDetail> list = DaTaoKeUtil.getCurrentHotSalesRank();
      return reSearchDetails(list);
      // 缓存
      String key = "dataoke-goods-rexiao";
      List<DaTaoKeDetail> list = redisManager.getObjList(DaTaoKeDetail.class, key);
      if ((list != null && list.size() > 0
            && System.currentTimeMillis() - list.get(0).getUpdateTime().getTime() > 1000 * 60 * 20) || list == null
            || list.size() == 0)// 超过20分钟未更新
      {
         list = DaTaoKeUtil.getCurrentHotSalesRank();
         LogHelper.test("热销数量:" + list.size());
         list = reSearchDetails(list);
         if (list != null && list.size() > 0)
            redisManager.saveObjList(list, key, null);// 长期缓存
         return list;
      } else
         return list;
   }
   @Override
   public List<DaTaoKeDetail> getGoodsNotInList(Long cid, List<Long> listId, int count) {
      return daTaoKeDetailMapper.getGoodsNotInList(cid, listId, count);
   }
   @Override
   public List<DaTaoKeDetail> listBySellerId(long start, int count, Long sellerId){
      return daTaoKeDetailMapper.listBySellerId(start, count, sellerId);
   }
}