From 81da61b828e29b7745e1382dfbbaeb685dc083ef Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 23 一月 2024 17:17:55 +0800
Subject: [PATCH] 抖音转链修改
---
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsUpdateServiceImpl.java | 853 ++++++++++++++++++++++++++++++++------------------------
1 files changed, 484 insertions(+), 369 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 b538a55..4724b9a 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
@@ -1,369 +1,484 @@
-package com.yeshi.fanli.service.impl.taobao;
-
-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.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.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.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 ActivityGoodsUpdateService activityGoodsUpdateService;
-
- @Resource
- 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() {
- // 鏇存柊鏃堕棿瓒呰繃6涓皬鏃剁殑鍋氭洿鏂�
- List<TaoBaoGoodsBrief> list = taoBaoGoodsBriefMapper
- .queryGoodsByMaxUpdateTime(new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 6L), 0, 5000);
- for (TaoBaoGoodsBrief goods : list) {
- try {
- TaoBaoGoodsBrief newGoods = TaoKeApiUtil.searchGoodsDetail(goods.getAuctionId());
- if (newGoods != null) {
- try {
- updateTaoBaoGoods(newGoods);
- } catch (TaobaoGoodsUpdateException e) {
- e.printStackTrace();
- }
- }
-
- } catch (TaobaoGoodsDownException e) {
- offlineTaoBaoGoods(goods.getAuctionId());
- } catch (Exception e) {
-
- }
- }
- }
-
- @Transactional
- @Override
- public void deleteTaoBaoGoods(Long auctionId) {
- // 鍒犻櫎绮鹃�夊簱鐩稿叧鐨勬暟鎹�
- qualityFactoryGoodsUpdateService.deleteByTaoBaoGoodsId(auctionId);
-
- // 鍒犻櫎鍟嗗搧鏈韩鏁版嵁
- taoBaoGoodsBriefMapper.deleteByAuctionId(auctionId);
- }
-
- @Transactional
- @Override
- public void offlineTaoBaoGoods(Long auctionId) {
- // 鏇存柊鍔ㄦ�佹暟鎹�
- activityGoodsUpdateService.downTaoBaoGoods(auctionId);
-
- // 鍒犻櫎绮鹃�夊簱鐩稿叧鐨勬暟鎹�
- qualityFactoryGoodsUpdateService.deleteByTaoBaoGoodsId(auctionId);
-
- // 鍒犻櫎鍟嗗搧鏈韩鏁版嵁
- taoBaoGoodsBriefMapper.deleteByAuctionId(auctionId);
-
- // 鏇存柊绠�鐗堝晢鍝佺姸鎬佷负涓嬫灦
- commonGoodsService.offlineCommonGoods(auctionId, CommonGoods.GOODS_TYPE_TB);
-
- // 鍒嗕韩鐖嗘鏁版嵁鍒犻櫎
- shareHotGoodsService.deleteByGoodsId(auctionId);
- }
-
- @Transactional
- @Override
- public void updateTaoBaoGoods(TaoBaoGoodsBrief goods) throws TaobaoGoodsUpdateException {
- if (goods == null)
- throw new TaobaoGoodsUpdateException(1, "鍟嗗搧涓虹┖");
-
- if (goods.getAuctionId() == null || goods.getAuctionId() == 0)
- throw new TaobaoGoodsUpdateException(2, "鍟嗗搧ID涓虹┖");
-
- // 璁剧疆鍟嗗搧姝e父涓婄嚎
- goods.setState(0);
- // 鏇存柊鏀惰棌淇℃伅
- try {
- commonGoodsService.updateCommonGoods(CommonGoodsFactory.create(goods));
- } catch (CommonGoodsException e) {
- e.printStackTrace();
- }
-
- 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);
- }
-
- // 鏇存柊鍔ㄦ�佸晢鍝�
- activityGoodsUpdateService.updateRecommendActivityGoods(goods);
-
- // 鏇存柊鍒嗕韩搴撶殑鍟嗗搧
- shareHotGoodsService.updateShareGoods(goods);
-
- // 鏇存柊鑷喘绔嬪噺搴撳晢鍝�
- tljBuyGoodsUpdateService.updateGoods(goods);
-
- // 鎬昏鍟嗗搧鏇存柊
- updateImplTBGoods(goods);
- }
-
- @Override
- public void deleteOutOfDate() {
- List<Long> list = taoBaoGoodsBriefMapper
- .queryCanDeleteGoods(new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 2), 0, 2000);
- for (Long auctionId : list) {
- deleteTaoBaoGoods(auctionId);
- }
- }
-
- @Override
- public TaoBaoGoodsBrief getUpdateTaoBaoGoodsBrief(TaoBaoGoodsBrief goods) {
- String auctionUrl = "https://item.taobao.com/item.htm?id=" + goods.getAuctionId();
- String couponLink = "";
- TaoBaoGoodsBrief updateGoods = new TaoBaoGoodsBrief(goods.getId());
- updateGoods.setUpdatetime(new Date());
- updateGoods.setState(0);
- // 闃叉鏄浆閾剧殑閾炬帴锛屾暟鎹繃闀�
- updateGoods.setAuctionUrl(auctionUrl);
- updateGoods.setCouponLink(couponLink);
- // 鏇存柊鏍囬锛屽晢鍝佸浘鐗囷紝閿�閲忥紝浠锋牸锛屽埜淇℃伅锛岃繑鍒╀俊鎭紝搴楅摵淇℃伅锛屽垎绫讳俊鎭�
- updateGoods.setTitle(goods.getTitle());
- updateGoods.setPictUrl(goods.getPictUrl());
- updateGoods.setPictUrlWhite(goods.getPictUrlWhite());
- updateGoods.setImgList(goods.getImgList());
- updateGoods.setBiz30day(goods.getBiz30day());
- updateGoods.setZkPrice(goods.getZkPrice());
- updateGoods.setReservePrice(goods.getReservePrice());
- updateGoods.setTkRate(goods.getTkRate());
- // 鍒镐俊鎭�
- if (StringUtil.isNullOrEmpty(goods.getCouponInfo()) && StringUtil.isNullOrEmpty(goods.getCouponActivityId())) {
- updateGoods.setCouponActivityId("");
- updateGoods.setCouponAmount(new BigDecimal(0));
- updateGoods.setCouponEffectiveEndTime("");
- updateGoods.setCouponEffectiveStartTime("");
- updateGoods.setCouponInfo("");
- updateGoods.setCouponLeftCount(0);
- updateGoods.setCouponLink("");
- updateGoods.setCouponStartFee(new BigDecimal(0));
- updateGoods.setCouponTotalCount(0); // 娌℃湁鍒镐簡
- } else {// 杩樻湁鍒�
- updateGoods.setCouponActivityId(goods.getCouponActivityId());
- updateGoods.setCouponAmount(goods.getCouponAmount());
- updateGoods.setCouponEffectiveEndTime(goods.getCouponEffectiveEndTime());
- updateGoods.setCouponEffectiveStartTime(goods.getCouponEffectiveStartTime());
- updateGoods.setCouponInfo(goods.getCouponInfo());
- updateGoods.setCouponLeftCount(goods.getCouponLeftCount());
- updateGoods.setCouponLink("");
- updateGoods.setCouponStartFee(goods.getCouponStartFee());
- updateGoods.setCouponTotalCount(goods.getCouponTotalCount());
- }
-
- // 搴楅摵淇℃伅
- updateGoods.setShopTitle(goods.getShopTitle());
- updateGoods.setSellerId(goods.getSellerId());
-
- // 鍒嗙被淇℃伅
- updateGoods.setRootCatId(goods.getRootCatId());
- updateGoods.setRootCategoryName(goods.getRootCategoryName());
- updateGoods.setLeafCatId(goods.getLeafCatId());
- updateGoods.setLeafName(goods.getLeafName());
- updateGoods.setMaterialLibType(goods.getMaterialLibType());
-
- return updateGoods;
- }
-
- @Override
- public void updateTaoBaoGoods(List<TaoBaoGoodsBrief> goodsList) throws TaobaoGoodsUpdateException {
- if (goodsList == null || goodsList.size() == 0)
- throw new TaobaoGoodsUpdateException(1, "鍟嗗搧鍒楄〃涓虹┖");
-
- 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> 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;
- }
-
-}
+package com.yeshi.fanli.service.impl.taobao;
+
+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.context.annotation.Lazy;
+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.goods.facade.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.log.LogHelper;
+import com.yeshi.fanli.service.inter.activity.ActivityGoodsUpdateService;
+import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService;
+import com.yeshi.fanli.service.inter.goods.CommonGoodsService;
+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.TLJFreeBuyGoodsUpdateService;
+import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
+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 ActivityGoodsUpdateService activityGoodsUpdateService;
+
+ @Resource
+ private QualityFactoryGoodsUpdateService qualityFactoryGoodsUpdateService;
+
+ @Resource
+ private TaoBaoGoodsBriefMapper taoBaoGoodsBriefMapper;
+
+ @Resource
+ private CommonGoodsService commonGoodsService;
+
+ @Lazy
+ @Resource
+ private ShareHotGoodsService shareHotGoodsService;
+
+ @Lazy
+ @Resource
+ private TLJBuyGoodsUpdateService tljBuyGoodsUpdateService;
+
+ @Resource
+ private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
+
+ @Resource
+ private TaoBaoGoodsUpdateDao taoBaoGoodsUpdateDao;
+
+ @Lazy
+ @Resource
+ private TLJFreeBuyGoodsUpdateService tljFreeBuyGoodsUpdateService;
+ @Lazy
+ @Resource
+ private GoodsEvaluateService goodsEvaluateService;
+
+ @Override
+ public void startUpdate() {
+ // 鏇存柊鏃堕棿瓒呰繃6涓皬鏃剁殑鍋氭洿鏂�
+ List<TaoBaoGoodsBrief> list = taoBaoGoodsBriefMapper
+ .queryGoodsByMaxUpdateTime(new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 6L), 0, 5000);
+ for (TaoBaoGoodsBrief goods : list) {
+ try {
+ TaoBaoGoodsBrief newGoods = TaoKeApiUtil.searchGoodsDetail(goods.getAuctionId());
+ if (newGoods != null) {
+ try {
+ updateTaoBaoGoods(newGoods);
+ } catch (TaobaoGoodsUpdateException e) {
+ e.printStackTrace();
+ }
+ }
+
+ } catch (TaobaoGoodsDownException e) {
+ offlineTaoBaoGoods(goods.getAuctionId());
+ } catch (Exception e) {
+
+ }
+ }
+ }
+
+ @Transactional
+ @Override
+ public void deleteTaoBaoGoods(String auctionId) {
+ // 鍒犻櫎绮鹃�夊簱鐩稿叧鐨勬暟鎹�
+ qualityFactoryGoodsUpdateService.deleteByTaoBaoGoodsId(auctionId);
+
+ // 鍒犻櫎鍟嗗搧鏈韩鏁版嵁
+ taoBaoGoodsBriefMapper.deleteByAuctionId(auctionId);
+ }
+
+ @Transactional
+ @Override
+ public void offlineTaoBaoGoods(String auctionId) {
+ // 鏇存柊鍔ㄦ�佹暟鎹�
+ activityGoodsUpdateService.downTaoBaoGoods(auctionId);
+
+ // 鍒犻櫎绮鹃�夊簱鐩稿叧鐨勬暟鎹�
+ qualityFactoryGoodsUpdateService.deleteByTaoBaoGoodsId(auctionId);
+
+ // 鍒犻櫎鍟嗗搧鏈韩鏁版嵁
+ taoBaoGoodsBriefMapper.deleteByAuctionId(auctionId);
+
+ // 鏇存柊绠�鐗堝晢鍝佺姸鎬佷负涓嬫灦
+ commonGoodsService.offlineCommonGoods(auctionId, CommonGoods.GOODS_TYPE_TB);
+
+ // 鍒嗕韩鐖嗘鏁版嵁鍒犻櫎
+ shareHotGoodsService.deleteByGoodsId(auctionId);
+
+ goodsEvaluateService.offlineTaoBaoGoods(auctionId + "");
+ }
+
+ @Transactional(rollbackFor = Exception.class)
+ @Override
+ public void updateTaoBaoGoods(TaoBaoGoodsBrief goods) throws TaobaoGoodsUpdateException {
+ if (goods == null)
+ throw new TaobaoGoodsUpdateException(1, "鍟嗗搧涓虹┖");
+
+ if (StringUtil.isNullOrEmpty( goods.getAuctionId()))
+ throw new TaobaoGoodsUpdateException(2, "鍟嗗搧ID涓虹┖");
+
+ // 璁剧疆鍟嗗搧姝e父涓婄嚎
+ goods.setState(0);
+ // 鏇存柊鏀惰棌淇℃伅
+ try {
+ commonGoodsService.updateCommonGoods(CommonGoodsFactory.create(goods));
+ } catch (CommonGoodsException e) {
+ e.printStackTrace();
+ }
+
+ TaoBaoGoodsBrief tb = taoBaoGoodsBriefMapper.selectOneByAuctionId(goods.getAuctionId());
+ if (tb != null) {
+ goods.setId(tb.getId());
+ TaoBaoGoodsBrief updateGoods = getUpdateTaoBaoGoodsBrief(goods);
+ System.out.println("鏇寸粏淇℃伅:" + new Gson().toJson(updateGoods));
+ taoBaoGoodsBriefMapper.updateByPrimaryKeySelective(updateGoods);
+ }
+
+ // 鏇存柊鍔ㄦ�佸晢鍝�
+ activityGoodsUpdateService.updateRecommendActivityGoods(goods);
+
+ // 鏇存柊鍒嗕韩搴撶殑鍟嗗搧
+ shareHotGoodsService.updateShareGoods(goods);
+
+ // 鏇存柊鑷喘绔嬪噺搴撳晢鍝�
+ tljBuyGoodsUpdateService.updateGoods(goods);
+
+ // 鏇存柊鏂颁汉鍏嶅崟搴撳晢鍝�
+ tljFreeBuyGoodsUpdateService.updateGoods(goods);
+
+ goodsEvaluateService.updateTaoBaoGoods(goods);
+
+ // 鎬昏鍟嗗搧鏇存柊
+ updateImplTBGoods(goods);
+ }
+
+ @Override
+ public void deleteOutOfDate() {
+ List<String> list = taoBaoGoodsBriefMapper
+ .queryCanDeleteGoods(new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 2), 0, 2000);
+ for (String auctionId : list) {
+ deleteTaoBaoGoods(auctionId);
+ }
+ }
+
+ @Override
+ public TaoBaoGoodsBrief getUpdateTaoBaoGoodsBrief(TaoBaoGoodsBrief goods) {
+ String auctionUrl = "https://item.taobao.com/item.htm?id=" + goods.getAuctionId();
+ String couponLink = "";
+ TaoBaoGoodsBrief updateGoods = new TaoBaoGoodsBrief(goods.getId());
+ updateGoods.setUpdatetime(new Date());
+ updateGoods.setState(0);
+ // 闃叉鏄浆閾剧殑閾炬帴锛屾暟鎹繃闀�
+ updateGoods.setAuctionUrl(auctionUrl);
+ updateGoods.setCouponLink(couponLink);
+ // 鏇存柊鏍囬锛屽晢鍝佸浘鐗囷紝閿�閲忥紝浠锋牸锛屽埜淇℃伅锛岃繑鍒╀俊鎭紝搴楅摵淇℃伅锛屽垎绫讳俊鎭�
+ updateGoods.setTitle(goods.getTitle());
+ updateGoods.setPictUrl(goods.getPictUrl());
+ updateGoods.setPictUrlWhite(goods.getPictUrlWhite());
+ updateGoods.setImgList(goods.getImgList());
+ updateGoods.setBiz30day(goods.getBiz30day());
+ updateGoods.setZkPrice(goods.getZkPrice());
+ updateGoods.setReservePrice(goods.getReservePrice());
+ updateGoods.setTkRate(goods.getTkRate());
+ // 鍒镐俊鎭�
+ if (StringUtil.isNullOrEmpty(goods.getCouponInfo()) && StringUtil.isNullOrEmpty(goods.getCouponActivityId())) {
+ updateGoods.setCouponActivityId("");
+ updateGoods.setCouponAmount(new BigDecimal(0));
+ updateGoods.setCouponEffectiveEndTime("");
+ updateGoods.setCouponEffectiveStartTime("");
+ updateGoods.setCouponInfo("");
+ updateGoods.setCouponLeftCount(0);
+ updateGoods.setCouponLink("");
+ updateGoods.setCouponStartFee(new BigDecimal(0));
+ updateGoods.setCouponTotalCount(0); // 娌℃湁鍒镐簡
+ } else {// 杩樻湁鍒�
+ updateGoods.setCouponActivityId(goods.getCouponActivityId());
+ updateGoods.setCouponAmount(goods.getCouponAmount());
+ updateGoods.setCouponEffectiveEndTime(goods.getCouponEffectiveEndTime());
+ updateGoods.setCouponEffectiveStartTime(goods.getCouponEffectiveStartTime());
+ updateGoods.setCouponInfo(goods.getCouponInfo());
+ updateGoods.setCouponLeftCount(goods.getCouponLeftCount());
+ updateGoods.setCouponLink("");
+ updateGoods.setCouponStartFee(goods.getCouponStartFee());
+ updateGoods.setCouponTotalCount(goods.getCouponTotalCount());
+ }
+
+ // 搴楅摵淇℃伅
+ updateGoods.setShopTitle(goods.getShopTitle());
+ updateGoods.setSellerId(goods.getSellerId());
+
+ // 鍒嗙被淇℃伅
+ updateGoods.setRootCatId(goods.getRootCatId());
+ updateGoods.setRootCategoryName(goods.getRootCategoryName());
+ updateGoods.setLeafCatId(goods.getLeafCatId());
+ updateGoods.setLeafName(goods.getLeafName());
+ updateGoods.setMaterialLibType(goods.getMaterialLibType());
+
+ return updateGoods;
+ }
+
+ @Override
+ public void updateTaoBaoGoods(List<TaoBaoGoodsBrief> goodsList) throws TaobaoGoodsUpdateException {
+ if (goodsList == null || goodsList.size() == 0)
+ throw new TaobaoGoodsUpdateException(1, "鍟嗗搧鍒楄〃涓虹┖");
+
+ 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<String> listNeedUpdateGoodsId(long start, int count, int hour) {
+ return taoBaoGoodsBriefMapper.listNeedUpdateGoodsId(start, count, hour);
+ }
+
+ @Override
+ public void updateByTaoKeGoodsDetail(String goodsId) {
+ try {
+ TaoBaoGoodsBrief oldGoods = taoBaoGoodsBriefMapper.selectOneByAuctionId(goodsId);
+ if (oldGoods == null) {
+ return;
+ }
+
+ TaoBaoGoodsBrief newGoods = TaoKeApiUtil.searchGoodsDetail(oldGoods.getAuctionId());
+ if (newGoods == null) {
+ return;
+ }
+
+ // 鏇存柊绮鹃�夊晢鍝�
+ newGoods.setId(oldGoods.getId());
+ 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(goodsId);
+ } catch (Exception e) {
+ LogHelper.errorDetailInfo(e);
+ }
+ }
+
+ /**
+ * 鏇存柊閲嶈鐨勬窐瀹濇暟鎹�
+ *
+ * @param goods
+ */
+ public void updateImplTBGoods(TaoBaoGoodsBrief goods) {
+ if (goods == null || goods.getAuctionId() == null)
+ return;
+ if (!taoBaoGoodsCacheUtil.needUpdate(goods.getAuctionId())) {
+ return;
+ }
+ goods.setUpdatetime(new Date());
+ goods.setMid(goods.getAuctionId());
+ taoBaoGoodsUpdateDao.save(goods);
+ taoBaoGoodsCacheUtil.addUpdateHistory(goods.getAuctionId());
+ }
+
+ @Async
+ @Override
+ public void addUpdateQueueAsync(String auctionId) {
+ addUpdateQueueSync(auctionId);
+ }
+
+ /**
+ * 鍚屾鍔犲叆
+ *
+ * @param auctionId
+ */
+ private void addUpdateQueueSync(String 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<String, 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<String> auctionIds = new ArrayList<>();
+ for (TaoBaoGoodsBrief goods : tempGoodsList) {
+ auctionIds.add(goods.getAuctionId());
+ }
+ List<TaoBaoGoodsBrief> mList =null;
+ try {
+ mList = taoBaoGoodsUpdateDao.listByAuctionIds(auctionIds);
+ }catch(Exception e){
+ }
+ 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 List<CommonGoods> filterImportantTaoBaoGoodsWithCommonGoods(List<CommonGoods> goodsList) {
+
+ // 鍟嗗搧杩囨护涓嶅厑璁稿嚭閿�
+ try {
+ Map<String, CommonGoods> finalMap = new HashMap<>();
+ // 鍘熷鏁版嵁鍏ㄨ鐩�
+ List<CommonGoods> tempGoodsList = new ArrayList<>();
+ for (CommonGoods goods : goodsList) {
+ if (goods.getGoodsType() == CommonGoods.SHOP_TYPE_TB) {
+ finalMap.put(goods.getGoodsId(), goods);
+ tempGoodsList.add(goods);
+ }
+ }
+
+ // 鍏堜粠redis閲岄潰鍙栬鐩�
+ for (int i = 0; i < tempGoodsList.size(); i++) {
+ TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil
+ .getCommonTaoBaoGoodsInfo(tempGoodsList.get(i).getGoodsId());
+ if (goods != null) {
+ finalMap.put(goods.getAuctionId(), CommonGoodsFactory.create(goods));
+ tempGoodsList.remove(i--);
+ }
+ }
+
+ // 鍐嶄粠mongodb涓彇瑕嗙洊
+ List<String> auctionIds = new ArrayList<>();
+ for (CommonGoods goods : tempGoodsList) {
+ auctionIds.add(goods.getGoodsId());
+ }
+ 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(), CommonGoodsFactory.create(goods));
+ }
+
+ List<CommonGoods> finalList = new ArrayList<>();
+ for (CommonGoods goods : goodsList) {
+ if (goods.getGoodsType() == CommonGoods.GOODS_TYPE_TB) {
+ CommonGoods newGoods = finalMap.get(goods.getGoodsId());
+ // 杩囨护浠锋牸锛岃繑鍒╂瘮渚嬶紝鍒镐俊鎭�
+ goods.setPrice(newGoods.getPrice());
+ goods.setRate(newGoods.getRate());
+ goods.setCouponAmount(newGoods.getCouponAmount());
+ goods.setCouponInfo(newGoods.getCouponInfo());
+ goods.setCouponLeftCount(newGoods.getCouponLeftCount());
+ goods.setCouponStartPrice(newGoods.getCouponStartPrice());
+ goods.setCouponTotalCount(newGoods.getCouponTotalCount());
+ }
+
+ 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