提交 d7b53cb7 作者: 沈振路

发送客服消息每一条使用try catch捕获异常

上级 0d88aedd
...@@ -232,58 +232,62 @@ public class CustomerGraphicsServiceImpl extends ServiceImpl<CustomerGraphicsMap ...@@ -232,58 +232,62 @@ public class CustomerGraphicsServiceImpl extends ServiceImpl<CustomerGraphicsMap
for (CustomerGraphics customerGraphics : customerGraphicsList) { for (CustomerGraphics customerGraphics : customerGraphicsList) {
LOCAL_LOG.info("{} start sendCustomerMessage:{}",customerGraphics.getId(),System.currentTimeMillis()); try {
//人群包id LOCAL_LOG.info("{} start sendCustomerMessage:{}",customerGraphics.getId(),System.currentTimeMillis());
Long packId = customerGraphics.getPackId(); //人群包id
Long packId = customerGraphics.getPackId();
CrowdPackage crowdPackage = crowdPackageMap.get(packId);
if (crowdPackage == null) { CrowdPackage crowdPackage = crowdPackageMap.get(packId);
LOCAL_LOG.warn("crowd package id {} not exist", packId); if (crowdPackage == null) {
continue; LOCAL_LOG.warn("crowd package id {} not exist", packId);
continue;
}
//活跃时间限制窗口
Long activeTimeMax = crowdPackage.getActiveTimeMax();
Long activeTimeMin = crowdPackage.getActiveTimeMin();
Integer followTimeMin = crowdPackage.getFollowTimeMin();
Integer followTimeMax = crowdPackage.getFollowTimeMax();
//根据人群包找人,并按appId分组
List<CrowdPackageUserVO> userList = registerUserEntityService.getCurrentInPackUserList(packId, false);
//1.活跃时间判断,2.用户去重
Map<String, List<CrowdPackageUserVO>> appidUserMap = userList.stream()
.filter(a -> a.getLastActive() != null &&
(activeTimeMin == null || ((currentTimestamp - a.getLastActive().getTime()) >= activeTimeMin)) &&
(activeTimeMax == null || ((currentTimestamp - a.getLastActive().getTime()) < activeTimeMax)) &&
(followTimeMin == null || (a.getDateDiff() >= followTimeMin))&&
(followTimeMax == null || (a.getDateDiff() <= followTimeMax)))
.collect(Collectors.groupingBy(CrowdPackageUserVO::getAppId, Collectors.collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(CrowdPackageUserVO::getOpenId))), ArrayList::new)));
//根据客服id找不同公众号的链接,并按appId分组
List<ReferralEntityVo> referralList = referralEntityService.findReferralByCustomerGraphicsId(customerGraphics.getId());
Map<String, List<ReferralEntityVo>> referralMap = referralList.stream().filter(a->StringUtils.isNotBlank(a.getReferral())).collect(Collectors.groupingBy(ReferralEntityVo::getAppid));
//循环该人群包下的所有素材
int singleUserCount = 0;
for (Map.Entry<String, List<CrowdPackageUserVO>> usersEntry : appidUserMap.entrySet()) {
String appid = usersEntry.getKey();
try { //获取该号的链接实体
List<ReferralEntityVo> referralEntityVo = referralMap.get(appid);
//获取该号的openid
List<CrowdPackageUserVO> packageUserVo = usersEntry.getValue();
singleUserCount += packageUserVo.size();
weChatService.sendCustomerMessage(appid,customerGraphics,packageUserVo,referralEntityVo);
}catch (Exception e){
LOCAL_LOG.error("{} send CustomerMessage failed for {}",appid,e.getStackTrace()[0]);
}
}
LOCAL_LOG.info("id {} has user list size {}", customerGraphics.getId(), singleUserCount);
//客服状态修改
customerGraphics.setSendStatus(CustomerCommonConstant.SEND_STATUS_FINISHED);
LOCAL_LOG.info("{} finished:{}",customerGraphics.getId(),System.currentTimeMillis());
} catch (Exception e) {
LOCAL_LOG.error("send CustomerMessage failed for {}", customerGraphics.getId(), e);
} }
//活跃时间限制窗口
Long activeTimeMax = crowdPackage.getActiveTimeMax();
Long activeTimeMin = crowdPackage.getActiveTimeMin();
Integer followTimeMin = crowdPackage.getFollowTimeMin();
Integer followTimeMax = crowdPackage.getFollowTimeMax();
//根据人群包找人,并按appId分组
List<CrowdPackageUserVO> userList = registerUserEntityService.getCurrentInPackUserList(packId, false);
//1.活跃时间判断,2.用户去重
Map<String, List<CrowdPackageUserVO>> appidUserMap = userList.stream()
.filter(a -> a.getLastActive() != null &&
(activeTimeMin == null || ((currentTimestamp - a.getLastActive().getTime()) >= activeTimeMin)) &&
(activeTimeMax == null || ((currentTimestamp - a.getLastActive().getTime()) < activeTimeMax)) &&
(followTimeMin == null || (a.getDateDiff() >= followTimeMin))&&
(followTimeMax == null || (a.getDateDiff() <= followTimeMax)))
.collect(Collectors.groupingBy(CrowdPackageUserVO::getAppId, Collectors.collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(CrowdPackageUserVO::getOpenId))), ArrayList::new)));
//根据客服id找不同公众号的链接,并按appId分组
List<ReferralEntityVo> referralList = referralEntityService.findReferralByCustomerGraphicsId(customerGraphics.getId());
Map<String, List<ReferralEntityVo>> referralMap = referralList.stream().filter(a->StringUtils.isNotBlank(a.getReferral())).collect(Collectors.groupingBy(ReferralEntityVo::getAppid));
//循环该人群包下的所有素材
int singleUserCount = 0;
for (Map.Entry<String, List<CrowdPackageUserVO>> usersEntry : appidUserMap.entrySet()) {
String appid = usersEntry.getKey();
try { //获取该号的链接实体
List<ReferralEntityVo> referralEntityVo = referralMap.get(appid);
//获取该号的openid
List<CrowdPackageUserVO> packageUserVo = usersEntry.getValue();
singleUserCount += packageUserVo.size();
weChatService.sendCustomerMessage(appid,customerGraphics,packageUserVo,referralEntityVo);
}catch (Exception e){
LOCAL_LOG.error("{} send CustomerMessage failed for {}",appid,e.getStackTrace()[0]);
}
}
LOCAL_LOG.info("id {} has user list size {}", customerGraphics.getId(), singleUserCount);
//客服状态修改
customerGraphics.setSendStatus(CustomerCommonConstant.SEND_STATUS_FINISHED);
LOCAL_LOG.info("{} finished:{}",customerGraphics.getId(),System.currentTimeMillis());
} }
updateBatchById(customerGraphicsList); updateBatchById(customerGraphicsList);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论