Kaynağa Gözat

Merge remote-tracking branch 'origin/master'

xdd 1 hafta önce
ebeveyn
işleme
d11e0f16d1

+ 1 - 1
fs-admin/src/main/java/com/fs/qw/controller/QwSopTempController.java

@@ -128,7 +128,7 @@ public class QwSopTempController extends BaseController
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         qwSopTemp.setCreateBy(loginUser.getUser().getUserId().toString());
         int i = qwSopTempService.addNew(qwSopTemp);
-        if(qwSopTemp.getSendType() == 5){
+        if(qwSopTemp.getSendType() == 11){
             new Thread(() -> qwSopTempService.createSopTempRules(qwSopTemp)).start();
         }
         return toAjax(i);

+ 8 - 1
fs-company/src/main/java/com/fs/company/controller/qw/QwSopTempController.java

@@ -135,11 +135,12 @@ public class QwSopTempController extends BaseController
         qwSopTemp.setCompanyId(loginUser.getCompany().getCompanyId());
         qwSopTemp.setCreateBy(loginUser.getUser().getUserId().toString());
         int i = qwSopTempService.addNew(qwSopTemp);
-        if(qwSopTemp.getSendType() == 5){
+        if(qwSopTemp.getSendType() == 11){
             new Thread(() -> qwSopTempService.createSopTempRules(qwSopTemp)).start();
         }
         return toAjax(i);
     }
+
     @PreAuthorize("@ss.hasPermi('qw:sopTemp:edit')")
     @Log(title = "sop模板update", businessType = BusinessType.UPDATE)
     @PostMapping("/update")
@@ -147,12 +148,14 @@ public class QwSopTempController extends BaseController
         int update = qwSopTempService.update(qwSopTemp);
         return toAjax(update);
     }
+
     @PreAuthorize("@ss.hasPermi('qw:sopTemp:edit')")
     @Log(title = "addOrUpdateSop模板规则", businessType = BusinessType.UPDATE)
     @PostMapping("/addOrUpdateSetting")
     public AjaxResult addOrUpdateSetting(@RequestBody QwSopTempDay day){
         return AjaxResult.success(qwSopTempService.addOrUpdateSetting(day));
     }
+
     @PreAuthorize("@ss.hasPermi('qw:sopTemp:edit')")
     @Log(title = "sop模板规则delRules", businessType = BusinessType.DELETE)
     @GetMapping("/delRules")
@@ -165,18 +168,21 @@ public class QwSopTempController extends BaseController
     public AjaxResult selectRulesInfo(Long id){
         return AjaxResult.success(qwSopTempService.selectRulesInfo(id));
     }
+
     @PreAuthorize("@ss.hasPermi('qw:sopTemp:edit')")
     @PostMapping("/copyTemplate")
     public AjaxResult copyTemplate(@RequestBody QwSopTemp qwSopTemp){
         qwSopTempService.copyTemplate(qwSopTemp);
         return toAjax(1);
     }
+
     @PreAuthorize("@ss.hasPermi('qw:sopTemp:edit')")
     @PostMapping("/sortDay")
     public AjaxResult sortDay(@RequestBody List<SortDayVo> list){
         qwSopTempService.sortDay(list);
         return toAjax(1);
     }
+
     @PreAuthorize("@ss.hasPermi('qw:sopTemp:edit')")
     @GetMapping("/dayList")
     public AjaxResult dayList(String id){
@@ -187,6 +193,7 @@ public class QwSopTempController extends BaseController
     public AjaxResult redList(String id){
         return AjaxResult.success(qwSopTempService.redList(id));
     }
+
     @PostMapping("/updateRedPackage")
     public AjaxResult updateRedPackage(@RequestBody UpdateRedVo data){
         qwSopTempService.updateRedPackage(data.getList());

+ 111 - 97
fs-service/src/main/java/com/fs/sop/service/impl/QwSopLogsServiceImpl.java

@@ -586,6 +586,13 @@ public class QwSopLogsServiceImpl implements IQwSopLogsService
             List<QwSopLogsDoSendListTVO> logsByJsApi = qwSopLogsMapper.getQwSopLogsByJsApiAll(param);
 
 
+            // 优先返回 sendType == 8 的第一条记录
+            List<QwSopLogsDoSendListTVO> result = logsByJsApi.stream()
+                    .filter(log -> log.getSendType() == 8)
+                    .findFirst()
+                    .map(Collections::singletonList) // 单元素不可变 List
+                    .orElse(logsByJsApi); // 如果没有匹配项,返回原列表
+
             // 查询员工信息的id
             QwUser qwUser = qwExternalContactService.getQwUserByRedis(param.getCorpId().trim(),param.getQwUserId().trim());
 
@@ -600,119 +607,126 @@ public class QwSopLogsServiceImpl implements IQwSopLogsService
             contactHParam.setCorpId(param.getCorpId().trim());
             Long qwExternalContactId = qwExternalContactMapper.getQwExternalContactId(contactHParam);
 
-            for (QwSopLogsDoSendListTVO log : logsByJsApi) {
+            for (QwSopLogsDoSendListTVO log : result) {
 
                 try {
-                    switch (log.getSendType()){
-                        case 3:
-                            try {
-                                // 使用现代的日期时间 API
-                                LocalDateTime sendTime = log.getSendTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
-                                LocalDateTime expiryDateTime = sendTime.plusHours(12);
-                                LocalDateTime now = LocalDateTime.now();
+                    if (log.getSendType()==8){
+                        //(AI消息不做任何判断 直接入)切 只取了一条
+                        sendJsApiList.add(log);
 
-                                // 判断是否过期
-                                if (now.isAfter(expiryDateTime)) {
-                                    // 作废消息
-                                    qwSopLogsService.updateQwSopLogsByWatchLogType(log.getId(), "已过期,不发送");
-                                } else {
-                                    sendJsApiList.add(log);
+                    }else {
+                        switch (log.getSendType()) {
+                            case 3:
+                            case 7:
+                                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);
                                 }
-                            } catch (Exception e) {
-                                // 记录错误日志
-                                logger.error("Error processing log in logsByJsApiOver: {}", log.getId()+":"+e);
-                            }
-                            break;
-                        case 6:
-                            sendJsApiList.add(log);
-                            break;
-                        default:
-                            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());
-                            }
+                                break;
+                            case 6:
+                            case 9:
+                            case 10:
+                                sendJsApiList.add(log);
+                                break;
+                            default:
+                                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 (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();
+                                //有app的异步推送消息
+                                if (!setting.isEmpty()) {
+                                    asyncSopTestService.asyncSendMsgBySopAppLinkNormal(setting, param.getExternalId());
+                                }
 
-                                // 判断是否过期
-                                if (now.isAfter(expiryDateTime)) {
+                                if (log.getExpiryTime() == null) {
                                     // 作废消息
-                                    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) {
+                                    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 (isCourseTypeValid(courseType, watchLog.getLogType())) {
-                                                    // 加入到发送列表中
-                                                    sendJsApiList.add(log);
-                                                } else {
-                                                    // 作废消息
-                                                    qwSopLogsService.updateQwSopLogsByWatchLogType(logId, "看课状态未满足,不发送");
+                                    // 判断是否过期
+                                    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;
+                                        }
                                     }
                                 }
-                            }
-                            break;
+                                break;
+                        }
                     }
-
                 } catch (Exception e) {
                     // 记录错误日志
                     logger.error("Error processing log in logsByJsApi: {}", log.getId()+" : " + e);