From 573c491b4a1ba60e12a5678a01c1546c0077c1ee Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 30 七月 2019 09:07:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsServiceImpl.java | 127 +++++++++++++++++++++++++++++++----------- 1 files changed, 93 insertions(+), 34 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsServiceImpl.java index d5361c6..aa7ef9b 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsServiceImpl.java @@ -1,61 +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.dto.dataoke.DaTaoKeApiResult; 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.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 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 void startSyncGoods() { - // 鍒ゆ柇鏄惁鏈夋鍦ㄨ繘琛岀殑鏇存柊 - String key1 = "dataoke-updating"; - if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key1))) - return; - - 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; - } - } - - // 寮�濮嬫洿鏂� - 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; - } - } - - // - - + 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(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() { + // 缂撳瓨 + 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); + } + } -- Gitblit v1.8.0