From f4548a3ee46afe45da4ee2a42dc169c575deee9f Mon Sep 17 00:00:00 2001 From: yujian <yujian@123.com> Date: 星期三, 31 七月 2019 11:57:36 +0800 Subject: [PATCH] 动态v2兼容 --- fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailServiceImpl.java | 112 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 88 insertions(+), 24 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailServiceImpl.java index ac246eb..914f5f6 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailServiceImpl.java @@ -9,16 +9,17 @@ import javax.annotation.Resource; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.yeshi.fanli.dao.mybatis.taobao.dataoke.DaTaoKeDetailMapper; import com.yeshi.fanli.dto.dataoke.DaTaoKeApiResult; +import com.yeshi.fanli.dto.dataoke.DingDongQiangDTO; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; 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.util.MoneyBigDecimalUtil; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil; import com.yeshi.fanli.util.taobao.DaTaoKeUtil; @@ -33,27 +34,23 @@ @Override public void startSyncGoods() { - + LogHelper.test("澶ф窐瀹㈠悓姝ュ紑濮�"); // 鍒ゆ柇鏄惁鏈夋鍦ㄨ繘琛岀殑鏇存柊 - String key1 = "dataoke-updating"; - // if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(key1))) - // return; - - // 寮�濮嬫洿鏂� - redisManager.cacheCommonString(key1, "1", 60 * 20); long firstTime = System.currentTimeMillis() - 1000 * 60 * 5L; int totalCount = 0; for (int p = 1; p <= 2000; p++) {// 10W鏁版嵁 - DaTaoKeApiResult result = DaTaoKeApiUtil.goodsList(p); - if (result.getDetailList().size() < 50)// 鏇存柊瀹屾垚 - { - redisManager.removeCommonString(key1); - break; + try { + DaTaoKeApiResult result = DaTaoKeApiUtil.goodsList(p); + if (result.getDetailList().size() < 50)// 鏇存柊瀹屾垚 + { + break; + } + addGoodsList(result.getDetailList()); + totalCount += result.getDetailList().size(); + } catch (Exception e) { + e.printStackTrace(); } - addGoodsList(result.getDetailList()); - totalCount += result.getDetailList().size(); } - LogHelper.test("澶ф窐瀹㈡�诲叡鏇存柊鏁版嵁鏁伴噺:" + totalCount); // 娓呴櫎杩囨湡鏁版嵁 if (totalCount > 50000)// 淇濊瘉鏈�5w鏁版嵁鍐嶆竻闄よ繃鏈� @@ -93,8 +90,9 @@ List<DaTaoKeDetail> dtList = listByGoodsIds(goodsIdList); Map<Long, DaTaoKeDetail> map = new HashMap<>(); - for (DaTaoKeDetail goods : dtList) - map.put(goods.getGoodsId(), goods); + if (dtList != null) + for (DaTaoKeDetail goods : dtList) + map.put(goods.getGoodsId(), goods); for (TaoBaoGoodsBrief goods : goodsList) { DaTaoKeDetail detail = map.get(goods.getAuctionId()); goods = DaTaoKeUtil.filterTaoBaoGoods(goods, detail); @@ -121,8 +119,7 @@ public List<DaTaoKeDetail> listByIds(List<Long> idList) { return daTaoKeDetailMapper.listByIds(idList); } - - + @Override public List<DaTaoKeDetail> listByDtitle(String dtitle) { @@ -140,10 +137,77 @@ return daTaoKeDetailMapper.countSearchByTitleWithCid(title, (cid == null || cid == 0 ? null : cid)); } - @Override - public List<DaTaoKeDetail> getGoodsNotInList(Long cid, List<Long> listId,int count) { - return daTaoKeDetailMapper.getGoodsNotInList(cid, listId,count); + public List<DaTaoKeDetail> getGoodsNotInList(Long cid, List<Long> listId, int count) { + return daTaoKeDetailMapper.getGoodsNotInList(cid, listId, count); } - + + @Override + public List<DaTaoKeDetail> listByCidAndMaxPrice(Integer cid, BigDecimal maxPrice, int page, int pageSize) { + return daTaoKeDetailMapper.listByCidAndMaxMinPrice(cid, maxPrice, null, (page - 1) * pageSize, pageSize); + } + + @Override + public Long countByCidAndMaxPrice(Integer cid, BigDecimal maxPrice) { + + return daTaoKeDetailMapper.countByCidAndMaxMinPrice(cid, maxPrice, null); + } + + @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; + } + + private void updateGoods(Long id) { + DaTaoKeDetail detail = daTaoKeDetailMapper.selectByPrimaryKey(id); + if (detail != null) + return; + detail = DaTaoKeApiUtil.getGoodsDetailV1(id); + if (detail != null) { + List<DaTaoKeDetail> list = new ArrayList<>(); + list.add(detail); + addGoodsList(list); + } + } + + @Cacheable(value = "daTaoKeGoodsCache", key = "'getDingDongQiangData-'+#time") + @Override + public List<DaTaoKeDetail> 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 (DaTaoKeDetail td : dto.getGoodsList()) + idList.add(td.getId()); + List<DaTaoKeDetail> finalList = listByIds(idList); + if (finalList.size() != idList.size()) { + for (Long id : idList) + updateGoods(id); + finalList = listByIds(idList); + } + + for (DaTaoKeDetail detail : finalList) { + detail.setQuanReceive( + detail.getQuanSurplus() + detail.getQuanReceive() - (int) (200 + Math.random() * 1000)); + } + return finalList; + } + return null; + } + } -- Gitblit v1.8.0