From c54fb6a88876be994906d57d2d18e844686964d0 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 01 七月 2020 14:16:13 +0800 Subject: [PATCH] rcoketmq集中管理 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java | 148 +++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 119 insertions(+), 29 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java index fb1737f..cb1a78c 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java @@ -73,6 +73,7 @@ import com.yeshi.fanli.service.inter.user.cloud.UserCloudService; import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; import com.yeshi.fanli.service.manger.goods.ConvertLinkManager; +import com.yeshi.fanli.service.manger.msg.RocketMQManager; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.ImageToBase64; import com.yeshi.fanli.util.MoneyBigDecimalUtil; @@ -161,8 +162,8 @@ @Resource private UserCloudManageService userCloudManageService; - @Resource(name = "producer") - private Producer producer; + @Resource + private RocketMQManager rocketMQManager; @Resource private UserOtherMsgNotificationService userOtherMsgNotificationService; @@ -354,7 +355,7 @@ if (robotId == null) throw new UserCloudException(1, "浜戝彂鍗曟満鍣ㄤ汉涓嶅瓨鍦�"); - List<String> list = AitaokerApiUtil.getContract(12793); + List<String> list = AitaokerApiUtil.getContract(robotId); if (list == null || list.size() == 0) throw new UserCloudException(1, "鏈绱㈠埌瀵瑰簲缇�"); @@ -364,7 +365,7 @@ String result = redisManager.getCommonString(key); if (!StringUtil.isNullOrEmpty(result)) { String groupName = null; - WeiXinGroupDTO groupDetail = AitaokerApiUtil.getGroupDetail(12793, roomId); + WeiXinGroupDTO groupDetail = AitaokerApiUtil.getGroupDetail(robotId, roomId); if (groupDetail != null) { groupName = groupDetail.getGroupName(); } @@ -407,6 +408,7 @@ } private void sendCircleByDynamic(Long uid, String id, int way) throws UserCloudException { + long time1= java.lang.System.currentTimeMillis(); UserInfo user = userInfoService.getUserByIdWithMybatis(uid); if (user == null) throw new UserCloudException(1, "鐢ㄦ埛淇℃伅涓嶅瓨鍦�"); @@ -427,7 +429,11 @@ if (StringUtil.isNullOrEmpty(relationId)) throw new UserCloudException(2, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿"); + + long time2= java.lang.System.currentTimeMillis(); + LogHelper.test("sendCircleByDynamic淇濋獙璇佺敤鎴风姸鎬侊細" + (time2 - time1)); + // 楠岃瘉鏄惁寮�閫� UserCloud userCloud = userCloudMapper.getValidByUid(uid); if (userCloud == null) @@ -441,6 +447,10 @@ if (StringUtil.isNullOrEmpty(wxId)) throw new UserCloudException(1003, "寰俊鍙蜂笉瀛樺湪锛岃鍏堝井淇$櫥褰�"); + long time3= java.lang.System.currentTimeMillis(); + LogHelper.test("sendCircleByDynamic楠岃瘉鏄惁婊¤冻寮�閫氾細" + (time3 - time2)); + + // 楠岃瘉寮�鍚姸鎬� List<UserCloudGroup> listGroup = userCloudGroupService.listByUid(uid); if (listGroup == null || listGroup.size() == 0) @@ -455,6 +465,9 @@ if (listOpen.size() == 0) throw new UserCloudException(1005, "璇峰厛寮�鍚簯鍙戝崟缇ゅ姛鑳�"); + long time4= java.lang.System.currentTimeMillis(); + LogHelper.test("sendCircleByDynamic楠岃瘉鏄惁寮�鍚細" + (time4 - time3)); + // 楠岃瘉鍙戝湀鏄惁鍙 GoodsEvaluate evaluate = goodsEvaluateService.getById(id); if (evaluate == null || evaluate.getState() == 0) @@ -468,6 +481,9 @@ if (comments == null || comments.size() == 0) throw new UserCloudException(1, "璇ュ唴瀹逛笉鑳借浆閾�"); + long time5= java.lang.System.currentTimeMillis(); + LogHelper.test("sendCircleByDynamic楠岃瘉鍙戝湀鍐呭鏄惁婊¤冻锛�" + (time5 - time4)); + // 妫�娴嬪井淇℃槸鍚︾櫥褰曠姸鎬� if (!AitaokerApiUtil.onlineCheck(robotId)) { // 閫氱煡鐧诲綍寰俊 @@ -476,6 +492,9 @@ throw new UserCloudException(1003, "寰俊宸叉帀绾匡紝闇�瑕侀噸鏂版壂鎻忎簩缁寸爜鐧诲綍"); } + long time6= java.lang.System.currentTimeMillis(); + LogHelper.test("sendCircleByDynamic楠岃瘉鍙戞槸鍚︾櫥褰曪細" + (time6 - time5)); + boolean hasToken = false; List<String> listComment = new ArrayList<>(); for (CommentInfo commentInfo : comments) { @@ -513,7 +532,18 @@ if (!hasToken) throw new UserCloudException(1, "璇ュ唴瀹瑰寘鍚彲杞摼鍙d护鎴栭摼鎺�"); + + // 寮傛鎵ц鍙戦�� + executor.execute(new Runnable() { + @Override + public void run() { + sendEvaluate(uid, evaluate, way, userCloud, listOpen, listComment); + } + }); + } + private void sendEvaluate(Long uid, GoodsEvaluate evaluate, int way, UserCloud userCloud, + List<UserCloudGroup> listOpen, List<String> listComment) { ImgInfo imgVideo = null; List<String> listImg = new ArrayList<>(); @@ -527,11 +557,13 @@ listImg.add(imgInfo.getUrl()); } } - + + String wxId = userCloud.getWxId(); + Integer robotId = userCloud.getRobotId(); // 淇濆瓨鍙戦�佽褰� UserCloudSendRecord sendRecord = new UserCloudSendRecord(); sendRecord.setUid(uid); - sendRecord.setSendId(id); + sendRecord.setSendId(evaluate.getId()); sendRecord.setSendWay(way); sendRecord.setWxId(wxId); sendRecord.setRobotId(robotId); @@ -540,6 +572,7 @@ UserCloudSendRecord result = userCloudSendRecordService.save(sendRecord); String pid = result.getId(); + for (UserCloudGroup cloudGroup : listOpen) { String title = evaluate.getTitle(); @@ -632,7 +665,9 @@ userCloudSendContentService.save(sendContent); } } - + + + @Override @Transactional(rollbackFor = Exception.class) public void sendCustomGoods(Long uid, Long goodsId, Integer goodsType, Long sellerId) throws UserCloudException { @@ -672,6 +707,8 @@ private void sendCircleByGoods(Long uid, Long goodsId, Integer goodsType, Long storeId, Long sellerId, int way) throws UserCloudException { + long begainTime = java.lang.System.currentTimeMillis(); + // 楠岃瘉鏄惁鎺堟潈 UserInfo user = userInfoService.getUserByIdWithMybatis(uid); if (user == null) @@ -694,11 +731,19 @@ if (StringUtil.isNullOrEmpty(relationId)) throw new UserCloudException(2, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿"); + long time2 = java.lang.System.currentTimeMillis(); + LogHelper.test("sendCircleByGoods楠岃瘉鐢ㄦ埛鑰楁椂锛�" + (time2 - begainTime)); + + // 楠岃瘉鏄惁寮�閫� UserCloud userCloud = userCloudMapper.getValidByUid(uid); if (userCloud == null) throw new UserCloudException(1001, "浜戝彂鍗曞凡杩囨湡"); - + + long time3= java.lang.System.currentTimeMillis(); + LogHelper.test("sendCircleByGoods楠岃瘉鏄惁寮�閫氾細" + (time3 - time2)); + + long time4 = time3; // 鍔犲叆鎴戠殑澶囬�夊簱 if (storeId == null) { try { @@ -710,6 +755,8 @@ + "]鍘熷洜锛�" + e.getMsg()); throw new UserCloudException(1, "鍔犲叆浜戝彂鍗曞閫夊簱澶辫触"); } + time4= java.lang.System.currentTimeMillis(); + LogHelper.test("sendCircleByGoods鍔犲叆澶囬�夊簱锛�" + (time4 - time3)); } // 鑷�夊簱鍟嗗搧鏄惁鎵撳紑 @@ -736,6 +783,9 @@ if (listGroup == null || listGroup.size() == 0) throw new UserCloudException(1003, "璇峰厛鐧诲綍寰俊"); + long time5= java.lang.System.currentTimeMillis(); + LogHelper.test("sendCircleByGoods楠岃瘉鏄惁缁戝畾寰俊锛�" + (time5 - time4)); + List<UserCloudGroup> listOpen = new ArrayList<>(); for (UserCloudGroup cloudGrou : listGroup) { if (cloudGrou.getState()) { @@ -754,6 +804,9 @@ throw new UserCloudException(1003, "寰俊宸叉帀绾匡紝闇�瑕侀噸鏂版壂鎻忎簩缁寸爜鐧诲綍"); } + long time6= java.lang.System.currentTimeMillis(); + LogHelper.test("sendCircleByGoods楠岃瘉鏄惁鐧诲綍寰俊锛�" + (time6 - time5)); + // 淇濆瓨鍙戦�佽褰� UserCloudSendRecord sendRecord = new UserCloudSendRecord(); sendRecord.setUid(uid); @@ -770,6 +823,9 @@ sendRecord.setSendWay(UserCloudSendRecord.SEND_WAY_MANUAL); } UserCloudSendRecord result = userCloudSendRecordService.save(sendRecord); + + long time7= java.lang.System.currentTimeMillis(); + LogHelper.test("sendCircleByGoods淇濆瓨鍙戦�佽褰曪細" + (time7 - time6)); try { if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { @@ -792,7 +848,8 @@ record.setUpdateTime(new Date()); userCloudGoodsService.updateByPrimaryKeySelective(record); } - + long time8= java.lang.System.currentTimeMillis(); + LogHelper.test("sendCircleByGoods鎵ц鍙戦�侊細" + (time8 - time7)); } catch (UserCloudException e) { LogHelper.cloudInfo("autoSendCustomGoods - [uid:" + uid + " 搴搃d:" + storeId + "]鍘熷洜锛�" + e.getMsg()); // 鏇存柊鍙戝崟璁板綍 @@ -855,8 +912,13 @@ String commentText = shareGoodsTextTemplateService.getCommentTextByTaoToken(coupon, taoBaoLink.getTaoToken(), goods.getZkPrice().toString(), quanPrice); - // 浜戝彂鍗� - sendGoods(robotId, wxId, listOpen, recommendText, commentText, goods.getImgList(), user.getId(), pid); + // 寮傛鎵ц鍙戦�� + executor.execute(new Runnable() { + @Override + public void run() { + sendGoods(robotId, wxId, listOpen, recommendText, commentText, goods.getImgList(), user.getId(), pid); + } + }); } /** @@ -913,8 +975,14 @@ String commentText = shareGoodsTextTemplateService.getCommentTextByLink(coupon, jumpLink, zkPrice, quanPrice, ConfigKeyEnum.quickShareJDCommentText); - // 浜戝彂鍗� - sendGoods(robotId, wxId, listOpen, recommendText, commentText, jdGoods.getImageList(), user.getId(), pid); + // 寮傛鎵ц鍙戦�� + executor.execute(new Runnable() { + @Override + public void run() { + sendGoods(robotId, wxId, listOpen, recommendText, commentText, jdGoods.getImageList(), user.getId(), pid); + } + }); + } /** @@ -970,8 +1038,16 @@ if (goodsGalleryUrls != null && goodsGalleryUrls.length > 0) { list = Arrays.asList(goodsGalleryUrls); } - // 浜戝彂鍗� - sendGoods(robotId, wxId, listOpen, recommendText, commentText, list, user.getId(), pid); + + List<String> list2 = list; + // 寮傛鎵ц鍙戦�� + executor.execute(new Runnable() { + @Override + public void run() { + sendGoods(robotId, wxId, listOpen, recommendText, commentText, list2, user.getId(), pid); + } + }); + } /** @@ -1006,9 +1082,14 @@ String commentText = shareGoodsTextTemplateService.getCommentTextByLink(coupon, jumpLink, goods.getMarketPrice(), quanPrice, ConfigKeyEnum.quickShareVIPCommentText); - // 浜戝彂鍗� - sendGoods(robotId, wxId, listOpen, recommendText, commentText, goods.getGoodsDetailPictures(), user.getId(), - pid); + // 寮傛鎵ц鍙戦�� + executor.execute(new Runnable() { + @Override + public void run() { + sendGoods(robotId, wxId, listOpen, recommendText, commentText, goods.getGoodsDetailPictures(), user.getId(), + pid); + } + }); } /** @@ -1052,9 +1133,14 @@ for (SuningGoodsImg img : goods.getCommodityInfo().getPictureUrl()) { imgList.add(img.getPicUrl()); } - - // 浜戝彂鍗� - sendGoods(robotId, wxId, listOpen, recommendText, commentText, imgList, user.getId(), pid); + + executor.execute(new Runnable() { + @Override + public void run() { + // 浜戝彂鍗� + sendGoods(robotId, wxId, listOpen, recommendText, commentText, imgList, user.getId(), pid); + } + }); } /** @@ -1147,7 +1233,7 @@ } @Override - public void fixedTimeSend(List<GoodsEvaluate> listActivity, List<GoodsEvaluate> listGoods) { + public void fixedTimeSend(List<GoodsEvaluate> listActivity, List<GoodsEvaluate> listGoods, boolean timeLimit) { if (listGoods == null && listActivity == null) return; // 涓�涓皬鏃朵箣鍓� @@ -1166,11 +1252,15 @@ if (cloudManage == null || cloudManage.getOfficial() == null || !cloudManage.getOfficial()) { continue; } - // 鏄惁鍦ㄤ竴涓皬鏃跺唴宸插彂閫佽繃 - UserCloudSendRecord last = userCloudSendRecordService.getLastByUid(uid, lastTime); - if (last != null) - continue; - + + // 鏃堕棿闂撮殧锛氭槸鍚﹀湪涓�涓皬鏃跺唴宸插彂閫佽繃 + if (timeLimit) { + UserCloudSendRecord last = userCloudSendRecordService.getLastByUid(uid, lastTime); + if (last != null) + continue; + } + + String evaluateId = null; // 娲诲姩 if (listActivity != null && listActivity.size() > 0) { @@ -1201,7 +1291,7 @@ UserCloudMQMsg msg = new UserCloudMQMsg(uid, evaluateId, UserCloudMQMsg.TYPE_EVALUATE); Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userCloud, msg); - producer.send(message); + rocketMQManager.sendNormalMsg(message, null); } } catch (Exception e) { LogHelper.errorDetailInfo(e); @@ -1235,7 +1325,7 @@ UserCloudMQMsg msg = new UserCloudMQMsg(uid, UserCloudMQMsg.TYPE_PUSH); Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userCloud, msg); message.setStartDeliverTime(java.lang.System.currentTimeMillis() + 1000 * 60 * 10); - producer.send(message); + rocketMQManager.sendNormalMsg(message, null); } // 鏇存柊宸叉彁閱� -- Gitblit v1.8.0