From d28bed1a1275131a5ca37f7da37961e2b518ac07 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 26 八月 2019 13:44:00 +0800 Subject: [PATCH] 淘礼金创建异常处理 --- fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java | 198 ++++++++++++++++++++++++++++++++++--------------- 1 files changed, 138 insertions(+), 60 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java index e17efea..d5df5b2 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java @@ -1,10 +1,13 @@ package com.yeshi.fanli.service.impl.dynamic; +import java.lang.reflect.InvocationTargetException; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.UUID; import javax.annotation.Resource; @@ -414,7 +417,12 @@ public void insertTimeHotSale() { Long classId = 1L; try { - saveHotSale(classId, 0L); + for (int i = 0; i < 3; i++) { + boolean addSuccess = saveHotSale(classId, 0L); + if (addSuccess) { + break; + } + } } catch (Exception e) { try { LogHelper.errorDetailInfo(e); @@ -427,7 +435,12 @@ List<GoodsClass> list = DaTaoKeUtil.goodsClasses; for (GoodsClass goodsClass : list) { try { - saveHotSale(classId, goodsClass.getId()); + for (int i = 0; i < 3; i++) { + boolean addSuccess = saveHotSale(classId, goodsClass.getId()); + if (addSuccess) { + break; + } + } } catch (Exception e) { try { LogHelper.errorDetailInfo(e); @@ -445,7 +458,8 @@ * @param subclassId * @throws TaobaoGoodsDownException */ - public void saveHotSale(Long classId, Long subclassId) throws TaobaoGoodsDownException { + public boolean saveHotSale(Long classId, Long subclassId) throws TaobaoGoodsDownException { + boolean addSuccess = false; List<Long> listId = null; List<DynamicInfo> listInfo = dynamicInfoDao.query(classId, subclassId); if (listInfo != null && listInfo.size() > 0) { @@ -459,48 +473,37 @@ } // 澶ф窐瀹㈡暟鎹� DaTaoKeDetail daTaoKe = daTaoKeGoodsService.getGoodsNotInList(subclassId, listId, 1).get(0); + if (daTaoKe == null) { + return addSuccess; + } try { daTaoKe = DaTaoKeUtil.filterDaTaoKe(TaoKeApiUtil.searchGoodsDetail(daTaoKe.getGoodsId()), daTaoKe); } catch (Exception e) { } - - // 杩囨护涓虹┖鐨� - if (daTaoKe == null) { - return; + + TaoBaoGoodsBrief taoBaoGoodsBrief = TaoBaoUtil.convert(daTaoKe); + BigDecimal proportion = hongBaoManageService.getFanLiRate(); + TaoBaoGoodsBriefExtra goodsExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), + null); + + if (!goodsExtra.isCoupon() || (goodsExtra.getState() != null && goodsExtra.getState() == 1)) { + return addSuccess; // 宸蹭笅鏋� 銆佹棤鍒� 涓嶅姞鍏� } List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>(); - TaoBaoGoodsBrief taoBaoGoodsBrief = TaoBaoUtil.convert(daTaoKe); listGoods.add(taoBaoGoodsBrief); - BigDecimal proportion = hongBaoManageService.getFanLiRate(); - TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, - proportion.toString(), null); - - // 鍟嗗搧鍥剧墖 + goodsExtra.setTkRate(taoBaoGoodsBrief.getTkRate()); + goodsExtra.setUpdatetime(new Date()); + goodsExtra.setCouponInfo(null); + GoodsPicture goodsPicture = getGoodsPicture(daTaoKe); - if (!taoBaoGoodsBriefExtra.isCoupon()) { - taoBaoGoodsBriefExtra.setState(1); - goodsPicture.setGoodState(1); - } - taoBaoGoodsBriefExtra.setTkRate(taoBaoGoodsBrief.getTkRate()); - taoBaoGoodsBriefExtra.setUpdatetime(new Date()); - taoBaoGoodsBriefExtra.setCouponInfo(null); - goodsPicture.setGoods(taoBaoGoodsBriefExtra); - + goodsPicture.setGoods(goodsExtra); // 鍟嗗搧鍒楄〃 List<GoodsPicture> listPicture = new ArrayList<GoodsPicture>(); listPicture.add(goodsPicture); - - // 鍒嗕韩濂栭噾 - BigDecimal shareMoney = taoBaoGoodsBriefService.getShareGoodsUserHongBao(taoBaoGoodsBrief); - ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO(); - shareMoneyDesc.setColor("#FFFFFF"); - shareMoneyDesc.setBottomColor("#E8AE48"); - shareMoneyDesc.setContent("棰勪及鍒嗕韩濂栭噾锛毬�" + shareMoney); - // 鑾峰彇鍟嗗搧鍒楄〃鍥剧墖 TaoBaoGoodsBrief taoBaoGoodsBrief2 = TaoKeApiUtil.getSimpleGoodsInfo(daTaoKe.getGoodsId()); @@ -526,8 +529,14 @@ listPicture.add(picture); } } + goodsExtra.setImgList(imgList); - taoBaoGoodsBriefExtra.setImgList(imgList); + // 鍒嗕韩濂栭噾 + BigDecimal shareMoney = taoBaoGoodsBriefService.getShareGoodsUserHongBao(taoBaoGoodsBrief); + ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO(); + shareMoneyDesc.setColor("#FFFFFF"); + shareMoneyDesc.setBottomColor("#E8AE48"); + shareMoneyDesc.setContent("棰勪及鍒嗕韩濂栭噾锛毬�" + shareMoney); // 缁勭粐鍔ㄦ�佷俊鎭� DynamicInfo dynamicInfo = getDynamicInfo(daTaoKe, classId, subclassId); @@ -550,6 +559,9 @@ // 淇濆瓨淇℃伅 dynamicInfoDao.insert(dynamicInfo); + + addSuccess = true; + return addSuccess; } /** @@ -906,17 +918,52 @@ return list; } - - + + private Map<Long, TaoBaoGoodsBrief> getFilterGoodsMap(List<DynamicInfo> list) { + // 鎻愬彇杩囨护鍟嗗搧 + List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); + for (DynamicInfo dynamicInfo : list) { + List<GoodsPicture> gpList = dynamicInfo.getImgs(); + if (gpList != null) + for (GoodsPicture gp : gpList) { + if (gp != null && gp.getGoods() != null) { + TaoBaoGoodsBriefExtra newGoods = new TaoBaoGoodsBriefExtra(); + try { + PropertyUtils.copyProperties(newGoods, gp.getGoods()); + goodsList.add(newGoods); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + + } + } + } + goodsList = taoBaoGoodsUpdateService.filterImportantTaoBaoGoods(goodsList); + Map<Long, TaoBaoGoodsBrief> map = new HashMap<>(); + if (goodsList != null) + for (TaoBaoGoodsBrief goods : goodsList) + map.put(goods.getAuctionId(), goods); + return map; + } + @Override -// @Cacheable(value = "dynamicCache", key = "'queryV2-'+#platform+'-'+#version+'-'+#start+'-'+#count+'-'+#cid+'-'+#subId") + @Cacheable(value = "dynamicCache", key = "'queryV2-'+#platform+'-'+#version+'-'+#start+'-'+#count+'-'+#cid+'-'+#subId") public List<DynamicInfo> queryV2(int platform, int version, int start, int count, Long cid, Long subId) { List<DynamicInfo> listNew = new ArrayList<DynamicInfo>(); List<DynamicInfo> list = dynamicInfoDao.query(start, count, cid, subId); + // 闇�瑕佹洿鏂扮殑鍟嗗搧 + List<TaoBaoGoodsBrief> taoBaoGoodsUpdateList = new ArrayList<>(); if (list != null && list.size() > 0) { + // 鎻愬彇鍟嗗搧 + Map<Long, TaoBaoGoodsBrief> goodsMap = getFilterGoodsMap(list); + BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); BigDecimal shareRate = hongBaoManageService.getShareRate(); - for (DynamicInfo dynamicInfo: list) { + for (DynamicInfo dynamicInfo : list) { DynamicInfo dynamicNew = new DynamicInfo(); try { PropertyUtils.copyProperties(dynamicNew, dynamicInfo); @@ -924,45 +971,75 @@ e.printStackTrace(); continue; } - + + // 搴楅摵淇℃伅 TaoBaoShop shop = dynamicNew.getShop(); if (shop != null) { - Integer userType = shop.getUserType(); - if (userType == null || userType == 0) { - shop.setUserType(10); - } else { - shop.setUserType(11); + TaoBaoShop shopNew = new TaoBaoShop(); + try { + PropertyUtils.copyProperties(shopNew, shop); + } catch (Exception e) { + e.printStackTrace(); + continue; } - dynamicNew.setShop(shop); + Integer userType = shopNew.getUserType(); + if (userType == null || userType == 0) { + shopNew.setUserType(10); + } else { + shopNew.setUserType(11); + } + dynamicNew.setShop(shopNew); } - - + + List<GoodsPicture> imgsNew = new ArrayList<GoodsPicture>(); List<GoodsPicture> imgs = dynamicNew.getImgs(); if (imgs != null && imgs.size() > 0) { - for (GoodsPicture goodsPicture: imgs) { + for (GoodsPicture goodsPicture : imgs) { TaoBaoGoodsBriefExtra goods = goodsPicture.getGoods(); if (goods == null) { + imgsNew.add(goodsPicture); continue; } - GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBaoGoodsBriefExtra(goods, fanLiRate, shareRate); - goodsPicture.setGoodsVO(detailVO); - goodsPicture.setGoods(null); - - JumpDetailV2 jumpDetail = goodsPicture.getJumpDetail(); + + taoBaoGoodsUpdateList.add(goods); + + GoodsPicture goodsNew = new GoodsPicture(); + try { + PropertyUtils.copyProperties(goodsNew, goodsPicture); + } catch (Exception e) { + e.printStackTrace(); + continue; + } + + // 杩囨护鍒镐俊鎭笌璧勯噾淇℃伅 + goods.setCouponAmount(goodsMap.get(goods.getAuctionId()).getCouponAmount()); + goods.setZkPrice(goodsMap.get(goods.getAuctionId()).getZkPrice()); + goods.setCouponStartFee(goodsMap.get(goods.getAuctionId()).getCouponStartFee()); + goods.setTkRate(goodsMap.get(goods.getAuctionId()).getTkRate()); + + GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBaoGoodsBriefExtra(goods, fanLiRate, + shareRate); + + goodsNew.setGoodsVO(detailVO); + goodsNew.setGoods(null); + + JumpDetailV2 jumpDetail = goodsNew.getJumpDetail(); if (jumpDetail != null) { - JumpDetailV2 jumpDetailV2 = jumpDetailV2Service.getByTypeCache(jumpDetail.getType(), platform, version); + JumpDetailV2 jumpDetailV2 = jumpDetailV2Service.getByTypeCache(jumpDetail.getType(), + platform, version); if (jumpDetailV2 != null) { - goodsPicture.setJumpDetail(jumpDetailV2); + goodsNew.setJumpDetail(jumpDetailV2); } } + + imgsNew.add(goodsNew); } + dynamicNew.setImgs(imgsNew); } - dynamicNew.setImgs(imgs); listNew.add(dynamicNew); } } - - + // 鏇存柊鍟嗗搧淇℃伅 executor.execute(new Runnable() { @Override @@ -970,9 +1047,10 @@ updateGoodInfo(list); } }); + + taoBaoGoodsUpdateService.addUpdateQueueAsync(taoBaoGoodsUpdateList); return listNew; } - /** * 鏇存柊鍟嗗搧淇℃伅 @@ -985,7 +1063,7 @@ if (list == null || list.size() == 0) { return; } - + try { BigDecimal proportion = hongBaoManageService.getFanLiRate(); for (DynamicInfo dynamicInfo : list) { @@ -1082,16 +1160,16 @@ dynamicInfo.setDesc(shareMoneyDesc); } } - + // 闇�瑕佹洿鏂颁俊鎭紱 needUpdate = true; } - + // 鏃犳晥鏇存柊淇℃伅 if (!needUpdate) { continue; } - + // 鏇存柊鍟嗗搧淇℃伅 dynamicInfo.setImgs(listPicture); -- Gitblit v1.8.0