xgb 1 неделя назад
Родитель
Сommit
2b75d442c7

+ 50 - 32
fs-admin/src/main/java/com/fs/his/task/Task.java

@@ -1681,33 +1681,41 @@ public class Task {
             String key=entry.getKey();
             String key=entry.getKey();
             //执行发送消息任务
             //执行发送消息任务
             BatchSendCourseAllDTO batchSendCourseAllDTO = entry.getValue();
             BatchSendCourseAllDTO batchSendCourseAllDTO = entry.getValue();
+            if (batchSendCourseAllDTO == null) {
+                logger.error("batchSendCourseAllDTO 为 null,key: {}", entry.getKey());
+                redisTemplate.opsForHash().delete(redisKey, entry.getKey());
+                continue; // 跳过当前循环
+            }
             OpenImBatchMsgDTO openImBatchMsgDTO = batchSendCourseAllDTO.getOpenImBatchMsgDTO();
             OpenImBatchMsgDTO openImBatchMsgDTO = batchSendCourseAllDTO.getOpenImBatchMsgDTO();
             Integer nowCount=openImBatchMsgDTO.getCount();
             Integer nowCount=openImBatchMsgDTO.getCount();
+            if (nowCount == null) {
+                nowCount = 0;
+            }
             OpenImResponseDTO responseDTO=new OpenImResponseDTO();
             OpenImResponseDTO responseDTO=new OpenImResponseDTO();
             try {
             try {
                  responseDTO=  openIMService.batchSendCourseTask(batchSendCourseAllDTO.getBatchSendCourseDTO(), batchSendCourseAllDTO.getOpenImBatchMsgDTO(), batchSendCourseAllDTO.getProject(), batchSendCourseAllDTO.getImMsgSendDetailList());
                  responseDTO=  openIMService.batchSendCourseTask(batchSendCourseAllDTO.getBatchSendCourseDTO(), batchSendCourseAllDTO.getOpenImBatchMsgDTO(), batchSendCourseAllDTO.getProject(), batchSendCourseAllDTO.getImMsgSendDetailList());
             } catch (Exception e) {
             } catch (Exception e) {
+                responseDTO.setErrCode(500);
+                responseDTO.setErrMsg(e.getMessage());
                 e.printStackTrace();
                 e.printStackTrace();
-            }finally {
-
-                if(nowCount<3){ // 重试三次后放弃
-                    logger.error("重试三次后放弃,key{}", entry.getKey());
-                    redisTemplate.opsForHash().delete(redisKey, entry.getKey());
-                }
-
-                if(responseDTO!=null && responseDTO.getErrCode() == 0){
-                    // 执行结束,删除
-                    redisTemplate.opsForHash().delete(redisKey, entry.getKey());
-                }else {
-                    openImBatchMsgDTO.setCount(openImBatchMsgDTO.getCount() + 1);// 次数加一
-                    batchSendCourseAllDTO.setOpenImBatchMsgDTO(openImBatchMsgDTO);
-                    // 错误更新次数 重新放入redis中
-                    redisTemplate.opsForHash().put(redisKey, key, batchSendCourseAllDTO);
-                }
             }
             }
 
 
 
 
+            if(nowCount>3){ // 重试三次后放弃
+                logger.error("im会员定时发课重试三次后放弃,key{}", entry.getKey());
+                redisTemplate.opsForHash().delete(redisKey, entry.getKey());
+                continue;
+            }
 
 
+            if(responseDTO!=null && responseDTO.getErrCode() == 0){
+                // 执行结束,删除
+                redisTemplate.opsForHash().delete(redisKey, entry.getKey());
+            }else {
+                openImBatchMsgDTO.setCount(nowCount + 1);// 次数加一
+                batchSendCourseAllDTO.setOpenImBatchMsgDTO(openImBatchMsgDTO);
+                // 错误更新次数 重新放入redis中
+                redisTemplate.opsForHash().put(redisKey, key, batchSendCourseAllDTO);
+            }
         }
         }
 
 
     }
     }
@@ -1737,29 +1745,39 @@ public class Task {
             String key=entry.getKey();
             String key=entry.getKey();
             //执行发送消息任务
             //执行发送消息任务
             BatchSendCourseAllDTO batchSendCourseAllDTO = entry.getValue();
             BatchSendCourseAllDTO batchSendCourseAllDTO = entry.getValue();
+            if (batchSendCourseAllDTO == null) {
+                logger.error("batchSendCourseAllDTO 为 null,key: {}", entry.getKey());
+                redisTemplate.opsForHash().delete(redisKey, entry.getKey());
+                continue; // 跳过当前循环
+            }
             OpenImBatchMsgDTO openImBatchMsgDTO = batchSendCourseAllDTO.getOpenImBatchMsgDTO();
             OpenImBatchMsgDTO openImBatchMsgDTO = batchSendCourseAllDTO.getOpenImBatchMsgDTO();
-            Integer nowCount=openImBatchMsgDTO.getCount();
+            Integer nowCount = openImBatchMsgDTO.getCount();
+            if (nowCount == null) {
+                nowCount = 0;
+            }
             OpenImResponseDTO responseDTO=new OpenImResponseDTO();
             OpenImResponseDTO responseDTO=new OpenImResponseDTO();
             try {
             try {
-                openIMService.batchUrgeCourseTask(batchSendCourseAllDTO.getOpenImBatchMsgDTO(), batchSendCourseAllDTO.getImMsgSendDetailList());
+                responseDTO=openIMService.batchUrgeCourseTask(batchSendCourseAllDTO.getOpenImBatchMsgDTO(), batchSendCourseAllDTO.getImMsgSendDetailList());
             }catch (Exception e){
             }catch (Exception e){
+                responseDTO.setErrCode(500);
+                responseDTO.setErrMsg(e.getMessage());
                 e.printStackTrace();
                 e.printStackTrace();
-            }finally {
+            }
 
 
-                if(nowCount>3){ // 重试三次后放弃
-                    logger.error("重试三次后放弃,key{}", entry.getKey());
-                    redisTemplate.opsForHash().delete(redisKey, entry.getKey());
-                }
+            if(nowCount>3){ // 重试三次后放弃
+                logger.error("im 会员催课重试三次后放弃,key{}", entry.getKey());
+                redisTemplate.opsForHash().delete(redisKey, entry.getKey());
+                continue;
+            }
 
 
-                if(responseDTO!=null && responseDTO.getErrCode() == 0){
-                    // 执行结束,删除
-                    redisTemplate.opsForHash().delete(redisKey, entry.getKey());
-                }else {
-                    openImBatchMsgDTO.setCount(openImBatchMsgDTO.getCount() + 1);// 次数加一
-                    batchSendCourseAllDTO.setOpenImBatchMsgDTO(openImBatchMsgDTO);
-                    // 错误更新次数 重新放入redis中
-                    redisTemplate.opsForHash().put(redisKey, key, batchSendCourseAllDTO);
-                }
+            if(responseDTO!=null && responseDTO.getErrCode() == 0){
+                // 执行结束,删除
+                redisTemplate.opsForHash().delete(redisKey, entry.getKey());
+            }else {
+                openImBatchMsgDTO.setCount(nowCount + 1);// 次数加一
+                batchSendCourseAllDTO.setOpenImBatchMsgDTO(openImBatchMsgDTO);
+                // 错误更新次数 重新放入redis中
+                redisTemplate.opsForHash().put(redisKey, key, batchSendCourseAllDTO);
             }
             }
         }
         }
     }
     }

+ 1 - 1
fs-service/src/main/java/com/fs/im/domain/FsImMsgSendLog.java

@@ -72,7 +72,7 @@ public class FsImMsgSendLog extends BaseEntity{
     private Integer sendMode;
     private Integer sendMode;
 
 
     /** 发送状态,1-已发送;2-待发送 */
     /** 发送状态,1-已发送;2-待发送 */
-    @Excel(name = "发送状态,1-已发送;2-待发送")
+    @Excel(name = "发送状态,1-已发送;2-待发送 3-失败")
     private Integer sendStatus;
     private Integer sendStatus;
 
 
     /** 是否催课,1-是;0-否 */
     /** 是否催课,1-是;0-否 */

+ 15 - 12
fs-service/src/main/java/com/fs/im/service/impl/OpenIMServiceImpl.java

@@ -1442,7 +1442,14 @@ public class OpenIMServiceImpl implements OpenIMService {
             fsImMsgSendDetailServiceImpl.updateBatchById(updateList);
             fsImMsgSendDetailServiceImpl.updateBatchById(updateList);
 
 
             log.error("发送消息失败,结果:{}", openImResponseDTO);
             log.error("发送消息失败,结果:{}", openImResponseDTO);
-            throw new ServiceException("发送消息失败");
+            FsImMsgSendLog fsImMsgSendLog = new FsImMsgSendLog();
+            fsImMsgSendLog.setLogId(imMsgSendDetailList.get(0).getLogId());
+            if(openImBatchMsgDTO.getCount()>3){
+                fsImMsgSendLog.setSendStatus(3);
+            }
+            fsImMsgSendLog.setUpdateTime(new Date());
+            fsImMsgSendLog.setCount(openImBatchMsgDTO.getCount());
+            fsImMsgSendLogMapper.updateById(fsImMsgSendLog);
         } else {
         } else {
             OpenImBatchResponseDataDTO openImBatchResponseDataDTO = JSON.parseObject(JSON.toJSONString(openImResponseDTO.getData()), OpenImBatchResponseDataDTO.class);
             OpenImBatchResponseDataDTO openImBatchResponseDataDTO = JSON.parseObject(JSON.toJSONString(openImResponseDTO.getData()), OpenImBatchResponseDataDTO.class);
             if(openImBatchResponseDataDTO != null && openImBatchResponseDataDTO.getFailedUserIDs() != null) {
             if(openImBatchResponseDataDTO != null && openImBatchResponseDataDTO.getFailedUserIDs() != null) {
@@ -1476,18 +1483,14 @@ public class OpenIMServiceImpl implements OpenIMService {
                 updateList.addAll(successList);
                 updateList.addAll(successList);
             }
             }
             fsImMsgSendDetailServiceImpl.updateBatchById(updateList);
             fsImMsgSendDetailServiceImpl.updateBatchById(updateList);
-        }
 
 
-
-        // 更新记录主表
-//        if("发课".equals(logType)) {
-        FsImMsgSendLog fsImMsgSendLog = new FsImMsgSendLog();
-        fsImMsgSendLog.setLogId(imMsgSendDetailList.get(0).getLogId());
-        fsImMsgSendLog.setSendStatus(1);
-        fsImMsgSendLog.setUpdateTime(new Date());
-        fsImMsgSendLog.setCount(openImBatchMsgDTO.getCount());
-        fsImMsgSendLogMapper.updateById(fsImMsgSendLog);
-//        }
+            FsImMsgSendLog fsImMsgSendLog = new FsImMsgSendLog();
+            fsImMsgSendLog.setLogId(imMsgSendDetailList.get(0).getLogId());
+            fsImMsgSendLog.setSendStatus(1);
+            fsImMsgSendLog.setUpdateTime(new Date());
+            fsImMsgSendLog.setCount(openImBatchMsgDTO.getCount());
+            fsImMsgSendLogMapper.updateById(fsImMsgSendLog);
+        }
     }
     }
 
 
     /**
     /**