三七 vor 1 Tag
Ursprung
Commit
d4f75beedf

+ 4 - 0
fs-ipad-task/src/main/java/com/fs/app/service/IpadSendServer.java

@@ -719,6 +719,10 @@ public class IpadSendServer {
                     // 发送直播短链
                     sendLiveShortLink(vo, content, miniMap);
                     break;
+                case "21":
+                    content.setSendStatus(0);
+                    content.setSendRemarks("短信待发送");
+                    break;
                 case "99":
                     // 群发
                     sendTxtAtMsg(vo);

+ 1 - 1
fs-ipad-task/src/main/java/com/fs/app/task/SendMsg.java

@@ -208,7 +208,7 @@ public class SendMsg {
                 }
             }
             else{
-                // 判断消息状态是否满足发送条件
+                // 判断消息状态是否满足发isSendLogs送条件
                 if (!sendServer.isSendLogs(qwSopLogs, setting, user)) {
                     log.info("销售:{}, 消息发送条件未满足:{}", user.getQwUserName(), qwSopLogs.getId());
                     continue;

+ 45 - 88
fs-ipad-task/src/main/java/com/fs/app/task/SendSmsMsg.java

@@ -16,6 +16,7 @@ import com.fs.his.service.IFsUserService;
 import com.fs.his.utils.PhoneUtil;
 import com.fs.qw.domain.QwIpadServer;
 import com.fs.qw.domain.QwSopSmsLogs;
+import com.fs.qw.domain.QwUser;
 import com.fs.qw.mapper.QwIpadServerMapper;
 import com.fs.qw.service.IQwSopSmsLogsService;
 import com.fs.qw.vo.QwSopCourseFinishTempSetting;
@@ -260,9 +261,9 @@ public class SendSmsMsg {
                 continue;
             }
             QwSopLogs qwSopLogs = sopLogsMap.get(logRecord.getSopLogId());
-            QwSopCourseFinishTempSetting setting = JSON.parseObject(qwSopLogs.getContentJson(), QwSopCourseFinishTempSetting.class);
+
             // 判断消息状态是否满足发送条件
-            SendResultDetailDTO checkDto= isSendLogs(qwSopLogs, setting,logRecord);
+            SendResultDetailDTO checkDto= isSendLogs(qwSopLogs,logRecord);
             if (!checkDto.isSuccess()) {
                 log.info("销售:{}, 消息发送条件未满足:{}", qwSopLogs.getQwUserKey(), qwSopLogs.getId());
                 failReasonsList.add(checkDto);
@@ -385,34 +386,51 @@ public class SendSmsMsg {
             try {
                 qwSopSmsLogsService.updateStatusByIds(failedIds, "3"); // 失败状态
                 if (!failReasonsList.isEmpty()) {
+
                     //组装数据
                     List<QwSopLogs> updateList = failReasonsList.stream().map(f -> {
-                        QwSopLogs update = new QwSopLogs();
-                        update.setSmsLogsId(f.getSopLogId());
-                        update.setRemark(f.getFailReason());
-                        //同步json发送状态
-                        if (sopLogsMap != null && sopLogsMap.containsKey(f.getSopLogId())) {
-                            try {
-                                String contentJson = sopLogsMap.get(f.getSopLogId()).getContentJson();
-                                JSONObject jsonObject = JSONObject.parseObject(contentJson);
-                                JSONArray settingArray = jsonObject.getJSONArray("setting");
-                                if (settingArray != null && !settingArray.isEmpty()) {
-                                    for (int i = 0; i < settingArray.size(); i++) {
-                                        JSONObject item = settingArray.getJSONObject(i);
-                                        item.put("sendStatus", "0");
+
+                                QwSopLogs qwSopLogs = sopLogsMap.get(f.getSopLogId());
+
+                                if (qwSopLogs == null) {
+                                    return null;
+                                }
+
+                                //已经标记过的  节约资源不再走update
+                                if (qwSopLogs.getSendStatus()==5 || qwSopLogs.getReceivingStatus()==4){
+                                    return null;
+                                }
+
+                                QwSopLogs update = new QwSopLogs();
+                                update.setSmsLogsId(f.getSopLogId());
+                                update.setRemark(f.getFailReason());
+                                //同步json发送状态
+                                if (sopLogsMap.containsKey(f.getSopLogId())) {
+                                    try {
+                                        String contentJson = sopLogsMap.get(f.getSopLogId()).getContentJson();
+                                        JSONObject jsonObject = JSONObject.parseObject(contentJson);
+                                        JSONArray settingArray = jsonObject.getJSONArray("setting");
+                                        if (settingArray != null && !settingArray.isEmpty()) {
+                                            for (int i = 0; i < settingArray.size(); i++) {
+                                                JSONObject item = settingArray.getJSONObject(i);
+                                                item.put("sendStatus", "0");
+                                            }
+                                            update.setContentJson(jsonObject.toJSONString());
+                                        }
+                                    } catch (Exception e) {
+                                        log.warn("解析ContentJson失败,sopLogId:{}", f.getSopLogId(), e);
+                                        update.setContentJson(sopLogsMap.get(f.getSopLogId()).getContentJson());
                                     }
-                                    update.setContentJson(jsonObject.toJSONString());
                                 }
-                            } catch (Exception e) {
-                                log.warn("解析ContentJson失败,sopLogId:{}", f.getSopLogId(), e);
-                                update.setContentJson(sopLogsMap.get(f.getSopLogId()).getContentJson());
-                            }
-                        }
-                        return update;
-                    }).collect(Collectors.toList());
+                                return update;
+                            })
+                            .filter(Objects::nonNull)
+                            .collect(Collectors.toList());
 
                     //批量同步执行记录表
-                    qwSopLogsMapper.batchUpdateQwSopLogsBySmsLogsId(updateList);
+                    if (!updateList.isEmpty()) {
+                        qwSopLogsMapper.batchUpdateQwSopLogsBySmsLogsId(updateList);
+                    }
                 }
                 log.debug("批量更新失败状态完成,条数:{}", failedIds.size());
             } catch (Exception e) {
@@ -468,74 +486,13 @@ public class SendSmsMsg {
 
 
 
-    public SendResultDetailDTO isSendLogs(QwSopLogs qwSopLogs, QwSopCourseFinishTempSetting setting,QwSopSmsLogs logRecord) {
-        Long qwUserId = qwSopLogs.getQwUserKey();
-        if(qwSopLogs.getSendStatus() != 3){
-            log.info("状态异常不发送:{}, LOGID: {}", qwSopLogs.getQwUserKey(), qwSopLogs.getId());
-            return new SendResultDetailDTO(false, "状态异常不发送", logRecord.getSopLogId());
-        }
+    public SendResultDetailDTO isSendLogs(QwSopLogs qwSopLogs,QwSopSmsLogs logRecord) {
 
-        boolean noSop = qwSopLogs.getSendType() != 3 && qwSopLogs.getSendType() != 7;
+        if (qwSopLogs.getSendStatus()==5 || qwSopLogs.getReceivingStatus()==4) {
 
-        if (qwSopLogs.getExpiryTime() == null && noSop) {
-            // 作废消息
-            log.info("SOP_LOG_ID:{}, SOP任务被删除", qwSopLogs.getId());
-            return new SendResultDetailDTO(false, "SOP任务被删除", logRecord.getSopLogId());
+            return new SendResultDetailDTO(false, qwSopLogs.getRemark(), logRecord.getSopLogId());
         }
 
-        LocalDateTime sendTime = DateUtil.stringToLocalDateTime(qwSopLogs.getSendTime());
-        LocalDateTime expiryDateTime;
-
-        // 判断是否过期
-        if(qwSopLogs.getSendType() == 3 || qwSopLogs.getSendType() == 7){
-            expiryDateTime = sendTime.plusHours(12);
-        }else{
-            expiryDateTime = sendTime.plusHours(qwSopLogs.getExpiryTime());
-        }
-
-        if (LocalDateTime.now().isAfter(expiryDateTime)  ) {
-            // 作废消息
-            log.info("SOP_LOG_ID:{}, 已过期,不发送", qwSopLogs.getId());
-            return new SendResultDetailDTO(false, "已过期,不发送", logRecord.getSopLogId());
-        }
-
-        if (setting.getCourseType() == null && noSop && setting.getType() == 2) {
-            log.info("SOP_LOG_ID:{}, 模板未选消息类型,不发送", qwSopLogs.getId());
-            return new SendResultDetailDTO(false, "模板未选消息类型,不发送", logRecord.getSopLogId());
-        }
-        Integer cacheValue = redisCache.getCacheObject("sopCourse:video:isPause:" + setting.getVideoId());
-        int isPause = (cacheValue != null) ? cacheValue : 0;
-        log.info("SOP_LOG_ID:{},判断课程({})当前状态:{}", qwSopLogs.getId(), setting.getVideoId(), isPause);
-        if (isPause == 1){
-            log.info("SOP_LOG_ID:{}, 课程暂停,不发送", qwSopLogs.getId());
-            return new SendResultDetailDTO(false, "课程暂停,AI不发送", logRecord.getSopLogId());
-        }
-
-        if (qwSopLogs.getSendType() != 12 && noSop) {
-            // 客户的信息
-            Integer courseType = setting.getCourseType();
-            if (setting.getType() == 2 && courseType != 0) {// 课程消息,进行复杂的条件判断
-                FsCourseWatchLog watchLog = watchLogService.getWatchCourseLogVideoBySop(
-                        setting.getVideoId().longValue(),
-                        String.valueOf(qwUserId),
-                        qwSopLogs.getExternalId()
-                );
-                log.debug("ID:{}-看课记录参数:videoID:{}, qwUserID:{}, extID:{}", qwSopLogs.getId(), setting.getVideoId().longValue(), qwUserId, qwSopLogs.getExternalId());
-                log.debug("ID:{}-看课记录:{}", qwSopLogs.getId(), watchLog);
-                String logId = qwSopLogs.getId();
-                if (watchLog != null) {
-                    //新逻辑
-                    if (!QwSopLogsServiceImpl.isCourseTypeValid(courseType, watchLog.getLogType())) {
-                        // 作废消息
-                        log.info("SOP_LOG_ID:{}, 看课状态未满足,不发送", qwSopLogs.getId());
-                        return new SendResultDetailDTO(false, "看课状态未满足,不发送", logRecord.getSopLogId());
-                    }
-                } else {
-                    log.info("SOP_LOG_ID:{}, 无观看记录,不发送", qwSopLogs.getId());
-                    return new SendResultDetailDTO(false, "无观看记录,不发送", logRecord.getSopLogId());
-                }
-            }
-        }
         return new SendResultDetailDTO(true, "检测通过", logRecord.getSopLogId());
     }