|
@@ -568,7 +568,6 @@ public class QwSopLogsServiceImpl implements IQwSopLogsService
|
|
|
public List<QwSopLogs> selectQwSopLogsListVO(SopMsgParam param) {
|
|
|
return qwSopLogsMapper.selectQwSopLogsListVO(param);
|
|
|
}
|
|
|
-
|
|
|
@Override
|
|
|
public SendSopParamDetailsC getQwSopLogsByJsApi(GetQwSopLogsByJsApiParam param) {
|
|
|
//写入企业微信 在线状态 10分钟 通过订阅方式,如果10分钟没有请求此接口,调用一个LOGIN方法
|
|
@@ -579,35 +578,10 @@ public class QwSopLogsServiceImpl implements IQwSopLogsService
|
|
|
SendSopParamDetailsC sopParamDetailsC = new SendSopParamDetailsC();
|
|
|
// 使用线程安全的集合
|
|
|
List<QwSopLogsDoSendListTVO> sendJsApiList = Collections.synchronizedList(new ArrayList<>());
|
|
|
- List<QwSopLogsDoSendListTVO> sendJsApiListOver = Collections.synchronizedList(new ArrayList<>());
|
|
|
-
|
|
|
- // 创建一个自定义的线程池,根据实际需求调整线程数
|
|
|
- //ExecutorService executor = Executors.newFixedThreadPool(4);
|
|
|
try {
|
|
|
|
|
|
- // 查询当前客户的完课消息
|
|
|
- List<QwSopLogsDoSendListTVO> logsByJsApiOver = qwSopLogsMapper.getQwSopLogsByJsApiOver(param);
|
|
|
- for (QwSopLogsDoSendListTVO log : logsByJsApiOver) {
|
|
|
- try {
|
|
|
- // 使用现代的日期时间 API
|
|
|
- LocalDateTime sendTime = log.getSendTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
|
|
- LocalDateTime expiryDateTime = sendTime.plusHours(12);
|
|
|
- LocalDateTime now = LocalDateTime.now();
|
|
|
+ List<QwSopLogsDoSendListTVO> logsByJsApi = qwSopLogsMapper.getQwSopLogsByJsApiAll(param);
|
|
|
|
|
|
- // 判断是否过期
|
|
|
- if (now.isAfter(expiryDateTime)) {
|
|
|
- // 作废消息
|
|
|
- qwSopLogsService.updateQwSopLogsByWatchLogType(log.getId(), "已过期,不发送");
|
|
|
- } else {
|
|
|
- sendJsApiListOver.add(log);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- // 记录错误日志
|
|
|
- logger.error("Error processing log in logsByJsApiOver: {}", log.getId()+":"+e);
|
|
|
- }
|
|
|
- }
|
|
|
- // 查询当前客户的待发送记录
|
|
|
- List<QwSopLogsDoSendListTVO> logsByJsApi = qwSopLogsMapper.getQwSopLogsByJsApi(param);
|
|
|
|
|
|
// 查询员工信息的id
|
|
|
QwUser qwUser = qwExternalContactService.getQwUserByRedis(param.getCorpId().trim(),param.getQwUserId().trim());
|
|
@@ -622,91 +596,116 @@ public class QwSopLogsServiceImpl implements IQwSopLogsService
|
|
|
contactHParam.setExternalUserId(param.getExternalUserId().trim());
|
|
|
contactHParam.setCorpId(param.getCorpId().trim());
|
|
|
Long qwExternalContactId = qwExternalContactMapper.getQwExternalContactId(contactHParam);
|
|
|
+
|
|
|
for (QwSopLogsDoSendListTVO log : logsByJsApi) {
|
|
|
|
|
|
try {
|
|
|
- QwSopTempSetting.Content content = JSON.parseObject(log.getContentJson(), QwSopTempSetting.Content.class);
|
|
|
- List<QwSopTempSetting.Content.Setting> setting = content.getSetting().stream().filter(e -> "9".equals(e.getContentType())).collect(Collectors.toList());
|
|
|
|
|
|
- //有app的异步推送消息
|
|
|
- if (!setting.isEmpty()) {
|
|
|
- asyncSopTestService.asyncSendMsgBySopAppLinkNormal(setting, param.getExternalId());
|
|
|
- }
|
|
|
+ if (log.getSendType()==3){
|
|
|
+ try {
|
|
|
+ // 使用现代的日期时间 API
|
|
|
+ LocalDateTime sendTime = log.getSendTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
|
|
+ LocalDateTime expiryDateTime = sendTime.plusHours(12);
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+
|
|
|
+ // 判断是否过期
|
|
|
+ if (now.isAfter(expiryDateTime)) {
|
|
|
+ // 作废消息
|
|
|
+ qwSopLogsService.updateQwSopLogsByWatchLogType(log.getId(), "已过期,不发送");
|
|
|
+ } else {
|
|
|
+ sendJsApiList.add(log);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ // 记录错误日志
|
|
|
+ logger.error("Error processing log in logsByJsApiOver: {}", log.getId()+":"+e);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
|
|
|
- if (log.getExpiryTime() == null) {
|
|
|
- // 作废消息
|
|
|
- qwSopLogsService.updateQwSopLogsByWatchLogType(log.getId(), "SOP任务被删除");
|
|
|
- } else {
|
|
|
- Integer expiryTime = log.getExpiryTime();
|
|
|
- LocalDateTime sendTime = log.getSendTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
|
|
- LocalDateTime expiryDateTime = sendTime.plusHours(expiryTime);
|
|
|
- LocalDateTime now = LocalDateTime.now();
|
|
|
+ QwSopTempSetting.Content content = JSON.parseObject(log.getContentJson(), QwSopTempSetting.Content.class);
|
|
|
+ List<QwSopTempSetting.Content.Setting> setting = content.getSetting().stream().filter(e -> "9".equals(e.getContentType())).collect(Collectors.toList());
|
|
|
|
|
|
- // 判断是否过期
|
|
|
- if (now.isAfter(expiryDateTime)) {
|
|
|
+ //有app的异步推送消息
|
|
|
+ if (!setting.isEmpty()) {
|
|
|
+ asyncSopTestService.asyncSendMsgBySopAppLinkNormal(setting, param.getExternalId());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (log.getExpiryTime() == null) {
|
|
|
// 作废消息
|
|
|
- qwSopLogsService.updateQwSopLogsByWatchLogType(log.getId(), "已过期,不发送");
|
|
|
+ qwSopLogsService.updateQwSopLogsByWatchLogType(log.getId(), "SOP任务被删除");
|
|
|
} else {
|
|
|
- switch (content.getType()) {
|
|
|
- case 1:
|
|
|
- // 普通消息,不做判断,加入发送列表
|
|
|
- sendJsApiList.add(log);
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- // 课程消息,进行复杂的条件判断
|
|
|
- FsCourseWatchLog watchLog = watchLogService.getWatchCourseLogVideoBySop(
|
|
|
- Long.valueOf(content.getVideoId()),
|
|
|
- String.valueOf(qwId),
|
|
|
- qwExternalContactId
|
|
|
- );
|
|
|
-
|
|
|
- Integer courseType = content.getCourseType();
|
|
|
- String logId = log.getId();
|
|
|
-
|
|
|
- if (content.getCourseType()==null){
|
|
|
- qwSopLogsService.updateQwSopLogsByWatchLogType(logId, "模板未选消息类型,不发送");
|
|
|
- }
|
|
|
- if (watchLog != null) {
|
|
|
-
|
|
|
- //新逻辑
|
|
|
- if (isCourseTypeValid(courseType, watchLog.getLogType())) {
|
|
|
- // 加入到发送列表中
|
|
|
- sendJsApiList.add(log);
|
|
|
- } else {
|
|
|
- // 作废消息
|
|
|
- qwSopLogsService.updateQwSopLogsByWatchLogType(logId, "看课状态未满足,不发送");
|
|
|
+ Integer expiryTime = log.getExpiryTime();
|
|
|
+ LocalDateTime sendTime = log.getSendTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
|
|
+ LocalDateTime expiryDateTime = sendTime.plusHours(expiryTime);
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+
|
|
|
+ // 判断是否过期
|
|
|
+ if (now.isAfter(expiryDateTime)) {
|
|
|
+ // 作废消息
|
|
|
+ qwSopLogsService.updateQwSopLogsByWatchLogType(log.getId(), "已过期,不发送");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ switch (content.getType()) {
|
|
|
+ case 1:
|
|
|
+ // 普通消息,不做判断,加入发送列表
|
|
|
+ sendJsApiList.add(log);
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ // 课程消息,进行复杂的条件判断
|
|
|
+ FsCourseWatchLog watchLog = watchLogService.getWatchCourseLogVideoBySop(
|
|
|
+ Long.valueOf(content.getVideoId()),
|
|
|
+ String.valueOf(qwId),
|
|
|
+ qwExternalContactId
|
|
|
+ );
|
|
|
+
|
|
|
+ Integer courseType = content.getCourseType();
|
|
|
+ String logId = log.getId();
|
|
|
+
|
|
|
+ if (content.getCourseType()==null){
|
|
|
+ qwSopLogsService.updateQwSopLogsByWatchLogType(logId, "模板未选消息类型,不发送");
|
|
|
}
|
|
|
+ if (watchLog != null) {
|
|
|
+
|
|
|
+ //新逻辑
|
|
|
+ if (isCourseTypeValid(courseType, watchLog.getLogType())) {
|
|
|
+ // 加入到发送列表中
|
|
|
+ sendJsApiList.add(log);
|
|
|
+ } else {
|
|
|
+ // 作废消息
|
|
|
+ qwSopLogsService.updateQwSopLogsByWatchLogType(logId, "看课状态未满足,不发送");
|
|
|
+ }
|
|
|
|
|
|
|
|
|
- } else {
|
|
|
- // 没有观看记录,只发普通消息
|
|
|
- if (courseType == 0) {
|
|
|
- sendJsApiList.add(log);
|
|
|
} else {
|
|
|
- qwSopLogsService.updateQwSopLogsByWatchLogType(logId, "无观看记录,不发送");
|
|
|
+ // 没有观看记录,只发普通消息
|
|
|
+ if (courseType == 0) {
|
|
|
+ sendJsApiList.add(log);
|
|
|
+ } else {
|
|
|
+ qwSopLogsService.updateQwSopLogsByWatchLogType(logId, "无观看记录,不发送");
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- // 订单消息,不做判断,加入发送列表
|
|
|
- sendJsApiList.add(log);
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- // Ai消息,不加入序列单独处理
|
|
|
- try {
|
|
|
- logger.info("Ai触达消息 : {}", log.getId());
|
|
|
- // fastGptChatSessionService.sendAiTouch(log,param.getCorpId().trim());
|
|
|
- }catch (Exception e){
|
|
|
- logger.error("Ai消息 : {}", content.getType());
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- // 未知类型,记录警告
|
|
|
- logger.error("Unknown content type logsByJsApi: {}", content.getType());
|
|
|
- break;
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ // 订单消息,不做判断,加入发送列表
|
|
|
+ sendJsApiList.add(log);
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ // Ai消息,不加入序列单独处理
|
|
|
+ try {
|
|
|
+ logger.info("Ai触达消息 : {}", log.getId());
|
|
|
+ // fastGptChatSessionService.sendAiTouch(log,param.getCorpId().trim());
|
|
|
+ }catch (Exception e){
|
|
|
+ logger.error("Ai消息 : {}", content.getType());
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ // 未知类型,记录警告
|
|
|
+ logger.error("Unknown content type logsByJsApi: {}", content.getType());
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
} catch (Exception e) {
|
|
|
// 记录错误日志
|
|
|
logger.error("Error processing log in logsByJsApi: {}", log.getId()+" : " + e);
|
|
@@ -752,45 +751,236 @@ public class QwSopLogsServiceImpl implements IQwSopLogsService
|
|
|
sopParamDetailsC.setNextExternalId(qwSopLogsByJsApiNext.getExternalId());
|
|
|
}
|
|
|
|
|
|
- //获取不为空的联系人
|
|
|
-
|
|
|
-// try {
|
|
|
-// qwSopLogsByJsApiNext = getQwSopLogsByJsApiNext(param);
|
|
|
-// }catch (Exception e){
|
|
|
-// logger.info("/n 获取下一个需要发送联系人出错:"+e.getMessage());
|
|
|
-//
|
|
|
-// }
|
|
|
-
|
|
|
- // Step 3: 构建发送列表
|
|
|
+ sopParamDetailsC.setSendList(new ArrayList<>(sendJsApiList));
|
|
|
|
|
|
-
|
|
|
- if (sendJsApiList.size() > 2) {
|
|
|
- List<QwSopLogsDoSendListTVO> list = new ArrayList<>(sendJsApiList.subList(0, 2));
|
|
|
- if (!sendJsApiListOver.isEmpty()) {
|
|
|
- list.add(sendJsApiListOver.get(0));
|
|
|
- }
|
|
|
- sopParamDetailsC.setSendList(list);
|
|
|
- } else {
|
|
|
- if (!sendJsApiListOver.isEmpty()) {
|
|
|
- sendJsApiList.add(sendJsApiListOver.get(0));
|
|
|
- }
|
|
|
- sopParamDetailsC.setSendList(new ArrayList<>(sendJsApiList));
|
|
|
- }
|
|
|
-
|
|
|
- //并发太多,积压了,先注释了
|
|
|
-// // Step 4: 批量更新推送记录状态
|
|
|
-// if (!sendJsApiList.isEmpty()) {
|
|
|
-// processAndInsertQwSopLogsByTakeRecordsList(sopParamDetailsC.getSendList());
|
|
|
-// }
|
|
|
}catch (Exception e){
|
|
|
logger.error("主动获取发送信息失败:-"+e);
|
|
|
- }finally {
|
|
|
- // 关闭线程池
|
|
|
- //executor.shutdown();
|
|
|
}
|
|
|
|
|
|
return sopParamDetailsC;
|
|
|
}
|
|
|
+// @Override
|
|
|
+// public SendSopParamDetailsC getQwSopLogsByJsApi(GetQwSopLogsByJsApiParam param) {
|
|
|
+// //写入企业微信 在线状态 10分钟 通过订阅方式,如果10分钟没有请求此接口,调用一个LOGIN方法
|
|
|
+//// redisCache.setCacheObject("qwActive:"+param.getCorpId()+":"+param.getQwUserId(),1,10 ,TimeUnit.MINUTES);
|
|
|
+// logger.info("主动获取发送信息:"+param);
|
|
|
+//
|
|
|
+// // 封装消息体
|
|
|
+// SendSopParamDetailsC sopParamDetailsC = new SendSopParamDetailsC();
|
|
|
+// // 使用线程安全的集合
|
|
|
+// List<QwSopLogsDoSendListTVO> sendJsApiList = Collections.synchronizedList(new ArrayList<>());
|
|
|
+// List<QwSopLogsDoSendListTVO> sendJsApiListOver = Collections.synchronizedList(new ArrayList<>());
|
|
|
+//
|
|
|
+// // 创建一个自定义的线程池,根据实际需求调整线程数
|
|
|
+// //ExecutorService executor = Executors.newFixedThreadPool(4);
|
|
|
+// try {
|
|
|
+//
|
|
|
+// // 查询当前客户的完课消息
|
|
|
+// List<QwSopLogsDoSendListTVO> logsByJsApiOver = qwSopLogsMapper.getQwSopLogsByJsApiOver(param);
|
|
|
+// for (QwSopLogsDoSendListTVO log : logsByJsApiOver) {
|
|
|
+// try {
|
|
|
+// // 使用现代的日期时间 API
|
|
|
+// LocalDateTime sendTime = log.getSendTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
|
|
+// LocalDateTime expiryDateTime = sendTime.plusHours(12);
|
|
|
+// LocalDateTime now = LocalDateTime.now();
|
|
|
+//
|
|
|
+// // 判断是否过期
|
|
|
+// if (now.isAfter(expiryDateTime)) {
|
|
|
+// // 作废消息
|
|
|
+// qwSopLogsService.updateQwSopLogsByWatchLogType(log.getId(), "已过期,不发送");
|
|
|
+// } else {
|
|
|
+// sendJsApiListOver.add(log);
|
|
|
+// }
|
|
|
+// } catch (Exception e) {
|
|
|
+// // 记录错误日志
|
|
|
+// logger.error("Error processing log in logsByJsApiOver: {}", log.getId()+":"+e);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// // 查询当前客户的待发送记录
|
|
|
+// List<QwSopLogsDoSendListTVO> logsByJsApi = qwSopLogsMapper.getQwSopLogsByJsApi(param);
|
|
|
+//
|
|
|
+// // 查询员工信息的id
|
|
|
+// QwUser qwUser = qwExternalContactService.getQwUserByRedis(param.getCorpId().trim(),param.getQwUserId().trim());
|
|
|
+//
|
|
|
+// Long qwId=qwUser.getId();
|
|
|
+//
|
|
|
+// sopParamDetailsC.setAppKey(qwUser.getAppKey());
|
|
|
+//
|
|
|
+// // 客户的信息
|
|
|
+// QwExternalContactHParam contactHParam = new QwExternalContactHParam();
|
|
|
+// contactHParam.setUserId(param.getQwUserId().trim());
|
|
|
+// contactHParam.setExternalUserId(param.getExternalUserId().trim());
|
|
|
+// contactHParam.setCorpId(param.getCorpId().trim());
|
|
|
+// Long qwExternalContactId = qwExternalContactMapper.getQwExternalContactId(contactHParam);
|
|
|
+// for (QwSopLogsDoSendListTVO log : logsByJsApi) {
|
|
|
+//
|
|
|
+// try {
|
|
|
+// QwSopTempSetting.Content content = JSON.parseObject(log.getContentJson(), QwSopTempSetting.Content.class);
|
|
|
+// List<QwSopTempSetting.Content.Setting> setting = content.getSetting().stream().filter(e -> "9".equals(e.getContentType())).collect(Collectors.toList());
|
|
|
+//
|
|
|
+// //有app的异步推送消息
|
|
|
+// if (!setting.isEmpty()) {
|
|
|
+// asyncSopTestService.asyncSendMsgBySopAppLinkNormal(setting, param.getExternalId());
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (log.getExpiryTime() == null) {
|
|
|
+// // 作废消息
|
|
|
+// qwSopLogsService.updateQwSopLogsByWatchLogType(log.getId(), "SOP任务被删除");
|
|
|
+// } else {
|
|
|
+// Integer expiryTime = log.getExpiryTime();
|
|
|
+// LocalDateTime sendTime = log.getSendTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
|
|
+// LocalDateTime expiryDateTime = sendTime.plusHours(expiryTime);
|
|
|
+// LocalDateTime now = LocalDateTime.now();
|
|
|
+//
|
|
|
+// // 判断是否过期
|
|
|
+// if (now.isAfter(expiryDateTime)) {
|
|
|
+// // 作废消息
|
|
|
+// qwSopLogsService.updateQwSopLogsByWatchLogType(log.getId(), "已过期,不发送");
|
|
|
+// } else {
|
|
|
+// switch (content.getType()) {
|
|
|
+// case 1:
|
|
|
+// // 普通消息,不做判断,加入发送列表
|
|
|
+// sendJsApiList.add(log);
|
|
|
+// break;
|
|
|
+// case 2:
|
|
|
+// // 课程消息,进行复杂的条件判断
|
|
|
+// FsCourseWatchLog watchLog = watchLogService.getWatchCourseLogVideoBySop(
|
|
|
+// Long.valueOf(content.getVideoId()),
|
|
|
+// String.valueOf(qwId),
|
|
|
+// qwExternalContactId
|
|
|
+// );
|
|
|
+//
|
|
|
+// Integer courseType = content.getCourseType();
|
|
|
+// String logId = log.getId();
|
|
|
+//
|
|
|
+// if (content.getCourseType()==null){
|
|
|
+// qwSopLogsService.updateQwSopLogsByWatchLogType(logId, "模板未选消息类型,不发送");
|
|
|
+// }
|
|
|
+// if (watchLog != null) {
|
|
|
+//
|
|
|
+// //新逻辑
|
|
|
+// if (isCourseTypeValid(courseType, watchLog.getLogType())) {
|
|
|
+// // 加入到发送列表中
|
|
|
+// sendJsApiList.add(log);
|
|
|
+// } else {
|
|
|
+// // 作废消息
|
|
|
+// qwSopLogsService.updateQwSopLogsByWatchLogType(logId, "看课状态未满足,不发送");
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// } else {
|
|
|
+// // 没有观看记录,只发普通消息
|
|
|
+// if (courseType == 0) {
|
|
|
+// sendJsApiList.add(log);
|
|
|
+// } else {
|
|
|
+// qwSopLogsService.updateQwSopLogsByWatchLogType(logId, "无观看记录,不发送");
|
|
|
+// }
|
|
|
+// }
|
|
|
+// break;
|
|
|
+// case 3:
|
|
|
+// // 订单消息,不做判断,加入发送列表
|
|
|
+// sendJsApiList.add(log);
|
|
|
+// break;
|
|
|
+// case 4:
|
|
|
+// // Ai消息,不加入序列单独处理
|
|
|
+// try {
|
|
|
+// logger.info("Ai触达消息 : {}", log.getId());
|
|
|
+// // fastGptChatSessionService.sendAiTouch(log,param.getCorpId().trim());
|
|
|
+// }catch (Exception e){
|
|
|
+// logger.error("Ai消息 : {}", content.getType());
|
|
|
+// }
|
|
|
+// break;
|
|
|
+// default:
|
|
|
+// // 未知类型,记录警告
|
|
|
+// logger.error("Unknown content type logsByJsApi: {}", content.getType());
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// } catch (Exception e) {
|
|
|
+// // 记录错误日志
|
|
|
+// logger.error("Error processing log in logsByJsApi: {}", log.getId()+" : " + e);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// //获取外部联系人
|
|
|
+// QwSopLogs qwSopLogsByJsApiNext = qwSopLogsMapper.getQwSopLogsByJsApiNext(param);
|
|
|
+//
|
|
|
+// if (qwSopLogsByJsApiNext!=null && !StringUtil.strIsNullOrEmpty(qwSopLogsByJsApiNext.getExternalUserId()) ){
|
|
|
+// //过滤非外部联系人
|
|
|
+// try{
|
|
|
+// List<String> exIds=redisCache.getCacheObject("qwUserExtIds:"+param.getCorpId()+":"+param.getQwUserId());
|
|
|
+// if(StringUtils.isNotEmpty(exIds)&&exIds.size()>0){
|
|
|
+// //查询外部联系人是否存在,如果不存在,返回下一个外部联系人
|
|
|
+// if(!exIds.contains(qwSopLogsByJsApiNext.getExternalUserId())){
|
|
|
+// //更新此外部联系人所有待发记录为作废
|
|
|
+// param.setExternalUserId(qwSopLogsByJsApiNext.getExternalUserId());
|
|
|
+// qwSopLogsMapper.updateQwSopLogsByDeleted(param);
|
|
|
+// //获取下一个外部联系人 最大重试10次
|
|
|
+// for(int i=0;i<10;i++){
|
|
|
+// qwSopLogsByJsApiNext = qwSopLogsMapper.getQwSopLogsByJsApiNext(param);
|
|
|
+// if(qwSopLogsByJsApiNext!=null&&StringUtils.isNotEmpty(qwSopLogsByJsApiNext.getExternalUserId())){
|
|
|
+// //判断非外部联系人
|
|
|
+// if(!exIds.contains(qwSopLogsByJsApiNext.getExternalUserId())){
|
|
|
+// param.setExternalUserId(qwSopLogsByJsApiNext.getExternalUserId());
|
|
|
+// qwSopLogsMapper.updateQwSopLogsByDeleted(param);
|
|
|
+// }
|
|
|
+// else{
|
|
|
+// break;
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+// else {
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// catch (Exception e){
|
|
|
+// }
|
|
|
+// sopParamDetailsC.setNextExternalUserId(qwSopLogsByJsApiNext.getExternalUserId().trim());
|
|
|
+// sopParamDetailsC.setNextExternalId(qwSopLogsByJsApiNext.getExternalId());
|
|
|
+// }
|
|
|
+//
|
|
|
+// //获取不为空的联系人
|
|
|
+//
|
|
|
+//// try {
|
|
|
+//// qwSopLogsByJsApiNext = getQwSopLogsByJsApiNext(param);
|
|
|
+//// }catch (Exception e){
|
|
|
+//// logger.info("/n 获取下一个需要发送联系人出错:"+e.getMessage());
|
|
|
+////
|
|
|
+//// }
|
|
|
+//
|
|
|
+// // Step 3: 构建发送列表
|
|
|
+//
|
|
|
+//
|
|
|
+// if (sendJsApiList.size() > 2) {
|
|
|
+// List<QwSopLogsDoSendListTVO> list = new ArrayList<>(sendJsApiList.subList(0, 2));
|
|
|
+// if (!sendJsApiListOver.isEmpty()) {
|
|
|
+// list.add(sendJsApiListOver.get(0));
|
|
|
+// }
|
|
|
+// sopParamDetailsC.setSendList(list);
|
|
|
+// } else {
|
|
|
+// if (!sendJsApiListOver.isEmpty()) {
|
|
|
+// sendJsApiList.add(sendJsApiListOver.get(0));
|
|
|
+// }
|
|
|
+// sopParamDetailsC.setSendList(new ArrayList<>(sendJsApiList));
|
|
|
+// }
|
|
|
+//
|
|
|
+// //并发太多,积压了,先注释了
|
|
|
+//// // Step 4: 批量更新推送记录状态
|
|
|
+//// if (!sendJsApiList.isEmpty()) {
|
|
|
+//// processAndInsertQwSopLogsByTakeRecordsList(sopParamDetailsC.getSendList());
|
|
|
+//// }
|
|
|
+// }catch (Exception e){
|
|
|
+// logger.error("主动获取发送信息失败:-"+e);
|
|
|
+// }finally {
|
|
|
+// // 关闭线程池
|
|
|
+// //executor.shutdown();
|
|
|
+// }
|
|
|
+//
|
|
|
+// return sopParamDetailsC;
|
|
|
+// }
|
|
|
|
|
|
// 逻辑封装方法
|
|
|
private boolean isCourseTypeValid(int courseType, Integer logType) {
|