From 3fc84b5d4b36ce9ab5cea84ee1b54942c8e04ef9 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 08 八月 2019 16:55:52 +0800 Subject: [PATCH] 拼多多短链修改 --- fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsUpdateServiceImpl.java | 100 +++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 83 insertions(+), 17 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsUpdateServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsUpdateServiceImpl.java index fdb8ae5..b538a55 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsUpdateServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsUpdateServiceImpl.java @@ -3,10 +3,13 @@ import java.math.BigDecimal; 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.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,11 +22,12 @@ import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; import com.yeshi.fanli.exception.taobao.TaobaoGoodsUpdateException; import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.inter.activity.ActivityGoodsUpdateService; import com.yeshi.fanli.service.inter.activity.ActivityService; import com.yeshi.fanli.service.inter.goods.CommonGoodsService; -import com.yeshi.fanli.service.inter.lable.QualityFactoryService; +import com.yeshi.fanli.service.inter.lable.QualityFactoryGoodsUpdateService; import com.yeshi.fanli.service.inter.taobao.ShareHotGoodsService; -import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsService; +import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsUpdateService; import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService; import com.yeshi.fanli.util.CMQManager; import com.yeshi.fanli.util.StringUtil; @@ -35,10 +39,10 @@ public class TaoBaoGoodsUpdateServiceImpl implements TaoBaoGoodsUpdateService { @Resource - private ActivityService activityService; + private ActivityGoodsUpdateService activityGoodsUpdateService; @Resource - private QualityFactoryService qualityFactoryService; + private QualityFactoryGoodsUpdateService qualityFactoryGoodsUpdateService; @Resource private TaoBaoGoodsBriefMapper taoBaoGoodsBriefMapper; @@ -50,7 +54,7 @@ private ShareHotGoodsService shareHotGoodsService; @Resource - private TLJBuyGoodsService tljBuyGoodsService; + private TLJBuyGoodsUpdateService tljBuyGoodsUpdateService; @Resource private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil; @@ -86,7 +90,7 @@ @Override public void deleteTaoBaoGoods(Long auctionId) { // 鍒犻櫎绮鹃�夊簱鐩稿叧鐨勬暟鎹� - qualityFactoryService.deleteByTaoBaoGoodsId(auctionId); + qualityFactoryGoodsUpdateService.deleteByTaoBaoGoodsId(auctionId); // 鍒犻櫎鍟嗗搧鏈韩鏁版嵁 taoBaoGoodsBriefMapper.deleteByAuctionId(auctionId); @@ -96,10 +100,10 @@ @Override public void offlineTaoBaoGoods(Long auctionId) { // 鏇存柊鍔ㄦ�佹暟鎹� - activityService.downTaoBaoGoods(auctionId); + activityGoodsUpdateService.downTaoBaoGoods(auctionId); // 鍒犻櫎绮鹃�夊簱鐩稿叧鐨勬暟鎹� - qualityFactoryService.deleteByTaoBaoGoodsId(auctionId); + qualityFactoryGoodsUpdateService.deleteByTaoBaoGoodsId(auctionId); // 鍒犻櫎鍟嗗搧鏈韩鏁版嵁 taoBaoGoodsBriefMapper.deleteByAuctionId(auctionId); @@ -138,16 +142,16 @@ } // 鏇存柊鍔ㄦ�佸晢鍝� - activityService.updateRecommendActivityGoods(goods); + activityGoodsUpdateService.updateRecommendActivityGoods(goods); // 鏇存柊鍒嗕韩搴撶殑鍟嗗搧 shareHotGoodsService.updateShareGoods(goods); // 鏇存柊鑷喘绔嬪噺搴撳晢鍝� - tljBuyGoodsService.updateGoods(goods); + tljBuyGoodsUpdateService.updateGoods(goods); // 鎬昏鍟嗗搧鏇存柊 -// updateImplTBGoods(goods); + updateImplTBGoods(goods); } @Override @@ -260,7 +264,7 @@ taoBaoGoodsBriefMapper.updateByPrimaryKeySelective(updateGoods); // 鏇存柊鍔ㄦ�佸晢鍝� - activityService.updateRecommendActivityGoods(newGoods); + activityGoodsUpdateService.updateRecommendActivityGoods(newGoods); // 鏇存柊鏀惰棌淇℃伅 try { @@ -292,12 +296,74 @@ taoBaoGoodsCacheUtil.addUpdateHistory(goods.getAuctionId()); } + @Async @Override - public void addUpdateQueue(Long auctionId) { - if (taoBaoGoodsCacheUtil.canAddToUpdateQueue(auctionId)) { - // 娣诲姞鍒版洿鏂伴槦鍒� - CMQManager.getInstance().addTBImpGoodsUpdate(auctionId); - taoBaoGoodsCacheUtil.addAddToQueueHistory(auctionId); + public void addUpdateQueueAsync(Long auctionId) { + addUpdateQueueSync(auctionId); + } + + /** + * 鍚屾鍔犲叆 + * + * @param auctionId + */ + private void addUpdateQueueSync(Long auctionId) { + try { + if (taoBaoGoodsCacheUtil.canAddToUpdateQueue(auctionId)) { + // 娣诲姞鍒版洿鏂伴槦鍒� + CMQManager.getInstance().addTBImpGoodsUpdate(auctionId); + taoBaoGoodsCacheUtil.addAddToQueueHistory(auctionId); + } + } catch (Exception e) { + LogHelper.errorDetailInfo(e); } } + + @Async + @Override + public void addUpdateQueueAsync(List<TaoBaoGoodsBrief> goodsList) { + if (goodsList != null) + for (TaoBaoGoodsBrief goods : goodsList) { + if (goods != null && goods.getAuctionId() != null) + addUpdateQueueSync(goods.getAuctionId()); + } + } + + @Override + public List<TaoBaoGoodsBrief> filterTaoBaoGoods(List<TaoBaoGoodsBrief> goodsList) { + Map<Long, TaoBaoGoodsBrief> finalMap = new HashMap<>(); + // 鍘熷鏁版嵁鍏ㄨ鐩� + for (TaoBaoGoodsBrief goods : goodsList) { + finalMap.put(goods.getAuctionId(), goods); + } + + List<TaoBaoGoodsBrief> tempGoodsList = new ArrayList<>(); + tempGoodsList.addAll(goodsList); + // 鍏堜粠redis閲岄潰鍙栬鐩� + for (int i = 0; i < tempGoodsList.size(); i++) { + TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(tempGoodsList.get(i).getAuctionId()); + if (goods != null) { + finalMap.put(goods.getAuctionId(), goods); + tempGoodsList.remove(i--); + } + } + + // 鍐嶄粠mongodb涓彇瑕嗙洊 + List<Long> auctionIds = new ArrayList<>(); + for (TaoBaoGoodsBrief goods : tempGoodsList) { + auctionIds.add(goods.getAuctionId()); + } + List<TaoBaoGoodsBrief> mList = taoBaoGoodsUpdateDao.listByAuctionIds(auctionIds); + if (mList != null) + for (TaoBaoGoodsBrief goods : mList) { + finalMap.put(goods.getAuctionId(), goods); + } + + List<TaoBaoGoodsBrief> finalList = new ArrayList<>(); + for (TaoBaoGoodsBrief goods : goodsList) + finalList.add(finalMap.get(goods.getAuctionId())); + + return finalList; + } + } -- Gitblit v1.8.0