From 51a4ff5d777028d52a19c314a99f796334cb7b51 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 23 十一月 2019 18:30:01 +0800 Subject: [PATCH] 配置文件修改 --- fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsUpdateServiceImpl.java | 239 ++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 210 insertions(+), 29 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 599c960..cf4f8f2 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,46 +3,63 @@ 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; import com.google.gson.Gson; import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoGoodsBriefMapper; +import com.yeshi.fanli.dao.taobao.TaoBaoGoodsUpdateDao; import com.yeshi.fanli.entity.goods.CommonGoods; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.exception.goods.CommonGoodsException; import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; import com.yeshi.fanli.exception.taobao.TaobaoGoodsUpdateException; -import com.yeshi.fanli.service.inter.activity.ActivityService; +import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.inter.activity.ActivityGoodsUpdateService; import com.yeshi.fanli.service.inter.goods.CommonGoodsService; -import com.yeshi.fanli.service.inter.goods.RecommendSectionGoodsService; -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.TLJBuyGoodsUpdateService; import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService; -import com.yeshi.fanli.util.BeanUtil; +import com.yeshi.fanli.util.CMQManager; import com.yeshi.fanli.util.StringUtil; +import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil; import com.yeshi.fanli.util.factory.CommonGoodsFactory; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; @Service public class TaoBaoGoodsUpdateServiceImpl implements TaoBaoGoodsUpdateService { - @Resource - private RecommendSectionGoodsService recommendSectionGoodsService; @Resource - private ActivityService activityService; + private ActivityGoodsUpdateService activityGoodsUpdateService; @Resource - private QualityFactoryService qualityFactoryService; + private QualityFactoryGoodsUpdateService qualityFactoryGoodsUpdateService; @Resource private TaoBaoGoodsBriefMapper taoBaoGoodsBriefMapper; @Resource private CommonGoodsService commonGoodsService; + + @Resource + private ShareHotGoodsService shareHotGoodsService; + + @Resource + private TLJBuyGoodsUpdateService tljBuyGoodsUpdateService; + + @Resource + private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil; + + @Resource + private TaoBaoGoodsUpdateDao taoBaoGoodsUpdateDao; @Override public void startUpdate() { @@ -71,11 +88,8 @@ @Transactional @Override public void deleteTaoBaoGoods(Long auctionId) { - // 鍒犻櫎棣栭〉鎺ㄨ崘鏁版嵁 - recommendSectionGoodsService.deleteRecommendSectionGoodsByTbAuctionId(auctionId); - // 鍒犻櫎绮鹃�夊簱鐩稿叧鐨勬暟鎹� - qualityFactoryService.deleteByTbAuctionId(auctionId); + qualityFactoryGoodsUpdateService.deleteByTaoBaoGoodsId(auctionId); // 鍒犻櫎鍟嗗搧鏈韩鏁版嵁 taoBaoGoodsBriefMapper.deleteByAuctionId(auctionId); @@ -84,19 +98,20 @@ @Transactional @Override public void offlineTaoBaoGoods(Long auctionId) { - // 鍒犻櫎棣栭〉鎺ㄨ崘鏁版嵁 - recommendSectionGoodsService.deleteRecommendSectionGoodsByTbAuctionId(auctionId); // 鏇存柊鍔ㄦ�佹暟鎹� - activityService.downTaoBaoGoods(auctionId); + activityGoodsUpdateService.downTaoBaoGoods(auctionId); // 鍒犻櫎绮鹃�夊簱鐩稿叧鐨勬暟鎹� - qualityFactoryService.deleteByTbAuctionId(auctionId); + qualityFactoryGoodsUpdateService.deleteByTaoBaoGoodsId(auctionId); // 鍒犻櫎鍟嗗搧鏈韩鏁版嵁 taoBaoGoodsBriefMapper.deleteByAuctionId(auctionId); // 鏇存柊绠�鐗堝晢鍝佺姸鎬佷负涓嬫灦 commonGoodsService.offlineCommonGoods(auctionId, CommonGoods.GOODS_TYPE_TB); + + // 鍒嗕韩鐖嗘鏁版嵁鍒犻櫎 + shareHotGoodsService.deleteByGoodsId(auctionId); } @Transactional @@ -108,6 +123,8 @@ if (goods.getAuctionId() == null || goods.getAuctionId() == 0) throw new TaobaoGoodsUpdateException(2, "鍟嗗搧ID涓虹┖"); + // 璁剧疆鍟嗗搧姝e父涓婄嚎 + goods.setState(0); // 鏇存柊鏀惰棌淇℃伅 try { commonGoodsService.updateCommonGoods(CommonGoodsFactory.create(goods)); @@ -115,23 +132,29 @@ e.printStackTrace(); } - List<TaoBaoGoodsBrief> goodsList = taoBaoGoodsBriefMapper.queryByAuctionId(goods.getAuctionId()); - if (goodsList != null) - for (TaoBaoGoodsBrief tb : goodsList) { - goods.setId(tb.getId()); - TaoBaoGoodsBrief updateGoods = getUpdateTaoBaoGoodsBrief(goods); - System.out.println("鏇寸粏淇℃伅:" + new Gson().toJson(updateGoods)); - taoBaoGoodsBriefMapper.updateByPrimaryKeySelective(updateGoods); - - } + TaoBaoGoodsBrief tb = taoBaoGoodsBriefMapper.selectByPrimaryKey(goods.getAuctionId()); + if (tb != null) { + goods.setId(tb.getId()); + TaoBaoGoodsBrief updateGoods = getUpdateTaoBaoGoodsBrief(goods); + System.out.println("鏇寸粏淇℃伅:" + new Gson().toJson(updateGoods)); + taoBaoGoodsBriefMapper.updateByPrimaryKeySelective(updateGoods); + } // 鏇存柊鍔ㄦ�佸晢鍝� - activityService.updateRecommendActivityGoods(goods); + activityGoodsUpdateService.updateRecommendActivityGoods(goods); + + // 鏇存柊鍒嗕韩搴撶殑鍟嗗搧 + shareHotGoodsService.updateShareGoods(goods); + + // 鏇存柊鑷喘绔嬪噺搴撳晢鍝� + tljBuyGoodsUpdateService.updateGoods(goods); + + // 鎬昏鍟嗗搧鏇存柊 + updateImplTBGoods(goods); } @Override public void deleteOutOfDate() { - TaoBaoGoodsBriefMapper taoBaoGoodsBriefMapper = BeanUtil.getBean(TaoBaoGoodsBriefMapper.class); List<Long> list = taoBaoGoodsBriefMapper .queryCanDeleteGoods(new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 2), 0, 2000); for (Long auctionId : list) { @@ -190,6 +213,7 @@ updateGoods.setRootCategoryName(goods.getRootCategoryName()); updateGoods.setLeafCatId(goods.getLeafCatId()); updateGoods.setLeafName(goods.getLeafName()); + updateGoods.setMaterialLibType(goods.getMaterialLibType()); return updateGoods; } @@ -202,18 +226,175 @@ List<TaoBaoGoodsBrief> updateList = new ArrayList<>(); for (TaoBaoGoodsBrief goods : goodsList) { - if (goods.getId() == null || goods.getId() == 0L) { throw new TaobaoGoodsUpdateException(1, "鍟嗗搧涓婚敭ID涓虹┖"); } + // 闇�瑕佹洿鏂扮殑淇℃伅 TaoBaoGoodsBrief updateGoods = getUpdateTaoBaoGoodsBrief(goods); updateGoods.setCreatetime(goods.getCreatetime()); - updateList.add(updateGoods); } taoBaoGoodsBriefMapper.updateBatchSelective(updateList); } + @Override + public List<Long> listNeedUpdateGoodsId(long start, int count, int hour) { + return taoBaoGoodsBriefMapper.listNeedUpdateGoodsId(start, count, hour); + } + + @Override + public void updateByTaoKeGoodsDetail(Long id) { + try { + TaoBaoGoodsBrief oldGoods = taoBaoGoodsBriefMapper.selectByPrimaryKey(id); + if (oldGoods == null) { + return; + } + + TaoBaoGoodsBrief newGoods = TaoKeApiUtil.searchGoodsDetail(id); + if (newGoods == null) { + return; + } + + // 鏇存柊绮鹃�夊晢鍝� + newGoods.setId(id); + TaoBaoGoodsBrief updateGoods = getUpdateTaoBaoGoodsBrief(newGoods); + taoBaoGoodsBriefMapper.updateByPrimaryKeySelective(updateGoods); + + // 鏇存柊鍔ㄦ�佸晢鍝� + activityGoodsUpdateService.updateRecommendActivityGoods(newGoods); + + // 鏇存柊鏀惰棌淇℃伅 + try { + commonGoodsService.updateCommonGoods(CommonGoodsFactory.create(newGoods)); + } catch (CommonGoodsException e) { + e.printStackTrace(); + } + + } catch (TaobaoGoodsDownException e) { + offlineTaoBaoGoods(id); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + + /** + * 鏇存柊閲嶈鐨勬窐瀹濇暟鎹� + * + * @param goods + */ + public void updateImplTBGoods(TaoBaoGoodsBrief goods) { + if (goods == null) + return; + if (!taoBaoGoodsCacheUtil.needUpdate(goods.getAuctionId())) { + return; + } + goods.setUpdatetime(new Date()); + taoBaoGoodsUpdateDao.save(goods); + taoBaoGoodsCacheUtil.addUpdateHistory(goods.getAuctionId()); + } + + @Async + @Override + 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> filterImportantTaoBaoGoods(List<TaoBaoGoodsBrief> goodsList) { + + // 鍟嗗搧杩囨护涓嶅厑璁稿嚭閿� + try { + 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) { + if (goods.getUpdatetime().getTime() > System.currentTimeMillis() - 1000 * 60 * 60 * 24L)// 鍦�1澶╁唴鏇存柊鐨勬暟鎹墠鍙備笌杩囨护 + finalMap.put(goods.getAuctionId(), goods); + } + + List<TaoBaoGoodsBrief> finalList = new ArrayList<>(); + for (TaoBaoGoodsBrief goods : goodsList) { + TaoBaoGoodsBrief newGoods = finalMap.get(goods.getAuctionId()); + // 杩囨护浠锋牸锛岃繑鍒╂瘮渚嬶紝鍒镐俊鎭� + goods.setZkPrice(newGoods.getZkPrice()); + goods.setTkRate(newGoods.getTkRate()); + goods.setCouponAmount(newGoods.getCouponAmount()); + goods.setCouponActivityId(newGoods.getCouponActivityId()); + goods.setCouponEffectiveEndTime(newGoods.getCouponEffectiveEndTime()); + goods.setCouponEffectiveStartTime(newGoods.getCouponEffectiveStartTime()); + goods.setCouponStartFee(newGoods.getCouponStartFee()); + goods.setCouponTotalCount(newGoods.getCouponTotalCount()); + goods.setCouponLeftCount(newGoods.getCouponLeftCount()); + + finalList.add(goods); + } + return finalList; + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + return goodsList; + } + + @Override + public int listAndRemoveByMaxUpdateTime(Date maxTime, int page, int pageSize) { + return taoBaoGoodsUpdateDao.listAndRemoveByMaxUpdateTime(maxTime, (page - 1) * pageSize, pageSize); + } + + @Override + public long countByMaxUpdateTime(Date maxTime) { + return taoBaoGoodsUpdateDao.countByMaxUpdateTime(maxTime); + + } + } -- Gitblit v1.8.0