Przeglądaj źródła

Revert "修改删除催课任务 催课信息没有删除"

This reverts commit 0b0c1a07155f8377a68dfa99ad011cfe78d5ac03.
xgb 3 tygodni temu
rodzic
commit
fc3d8b05e0

+ 2 - 4
fs-admin/src/main/resources/application.yml

@@ -4,12 +4,10 @@ server:
 # Spring配置
 spring:
   profiles:
-    active: dev-test
-#    active: druid-bly-test
-#    active: druid-zkzh-test
+#    active: dev-test
 #    active: druid-hdt
 #    active: druid-yzt
-#    active: druid-sxjz-test
+    active: druid-zkzh-test
 #    active: druid-sft
 #    active: druid-fby
 #    active: dev

+ 1 - 7
fs-company/src/main/resources/application.yml

@@ -1,16 +1,10 @@
 server:
-#  port: 8006
-  port: 8888
+  port: 8006
 # Spring配置
 spring:
   profiles:
-#    active: druid-ylrz
 #    active: dev
     active: druid-zkzh-test
-#    active: druid-bly-test
-#    active: druid-heyantang-test
-#    active: druid-myhk-test
-#    active: druid-jnsyj-test
 #    active: druid-jnmy-test
 #    active: druid-jzzx-test
 #    active: druid-hdt

+ 0 - 1
fs-company/src/main/resources/logback.xml

@@ -89,7 +89,6 @@
     <!-- log4j2.xml -->
     <Logger name="com.fs.his.mapper" level="debug"/>
     <Logger name="com.fs.company.mapper" level="debug"/>
-    <Logger name="com.fs.course.mapper" level="debug"/>
     <Logger name="org.apache.ibatis" level="debug"/>
 
 	<!--系统用户操作日志-->

+ 49 - 18
fs-service/src/main/java/com/fs/im/service/impl/OpenIMServiceImpl.java

@@ -1173,6 +1173,7 @@ public class OpenIMServiceImpl implements OpenIMService {
         return openImResponseDTO;
     }
 
+
     @Override
     public OpenImResponseDTO batchSendCourseLimit(BatchSendCourseDTO batchSendCourseDTO) {
         ObjectMapper objectMapper = new ObjectMapper();
@@ -1284,29 +1285,59 @@ public class OpenIMServiceImpl implements OpenIMService {
                     // 组装催课消息数据
                     OpenImBatchMsgDTO openImBatchUrgeCourse = makeOpenImBatchMsgDTO(batchSendCourseDTO, courseUrl, objectMapper, batchUserIds, planSendTimeStamp, "催课");
 
-                    // 催课使用与发课相同的批次(batchUserIds),不需要再次拆分
-                    List<FsImMsgSendDetail> imMsgSendDetailUrgeList = createImMsgSendLog("催课", batchSendCourseDTO, planSendTimeStamp, 1, batchUserIds, sendUnionId);
-
-                    // 定时催课 - 缓存到 Redis
-                    String redisKey = "openIm:batchSendMsg:urgeCourse";
-                    Map<String, Object> redisMap = redisCache.getCacheMap(redisKey);
-                    if (redisMap == null) {
-                        redisMap = new HashMap<>();
+                    //缓存定时催课消息
+                    int urgSendType;
+                    if(batchSendCourseDTO.getUrgeTime() != null && batchSendCourseDTO.getUrgeTime().compareTo(new Date()) > 0) {
+                        urgSendType = 1; //定时
+                    } else {
+                        urgSendType = 2; //实时
                     }
 
-                    BatchSendCourseAllDTO batchSendCourseAllDTO = new BatchSendCourseAllDTO();
-                    batchSendCourseAllDTO.setOpenImBatchMsgDTO(openImBatchUrgeCourse)
-                            .setImMsgSendDetailList(imMsgSendDetailUrgeList);
+                    // 催课也按批次拆分,使用与发课相同的 sendUnionId
+                    if (urgSendType == 1 && batchUserIds.size() > BATCH_SIZE) {
+                        log.info("定时催课消息接收人{}人,超过{}人,拆分缓存", batchUserIds.size(), BATCH_SIZE);
 
-                    // 使用唯一的 key:课程 ID+ 视频 ID+ 时间戳+logId
-                    String batchKey = batchSendCourseDTO.getCourseId() + ":" +
-                            batchSendCourseDTO.getVideoId() + ":" +
-                            batchSendCourseDTO.getUrgeTime().getTime() + ":" +
-                            imMsgSendDetailUrgeList.get(0).getLogId();
+                        // 进一步拆分催课批次(如果必要)
+                        for (int j = 0; j < batchUserIds.size(); j += BATCH_SIZE) {
+                            int urgeEnd = Math.min(j + BATCH_SIZE, batchUserIds.size());
+                            List<String> urgeBatchUserIds = batchUserIds.subList(j, urgeEnd);
 
-                    redisMap.put(batchKey, batchSendCourseAllDTO);
-                    redisCache.setCacheMap(redisKey, redisMap);
+                            OpenImBatchMsgDTO batchUrgeMsgDTO = makeOpenImBatchMsgDTO(batchSendCourseDTO, courseUrl, objectMapper, urgeBatchUserIds, planSendTimeStamp, "催课");
+                            List<FsImMsgSendDetail> imMsgSendDetailUrgeList = createImMsgSendLog("催课", batchSendCourseDTO, planSendTimeStamp, urgSendType, urgeBatchUserIds, sendUnionId);
+
+                            String redisKey = "openIm:batchSendMsg:urgeCourse";
+                            Map<String, Object> redisMap = redisCache.getCacheMap(redisKey);
+                            if (redisMap == null) {
+                                redisMap = new HashMap<>();
+                            }
+
+                            BatchSendCourseAllDTO batchSendCourseAllDTO = new BatchSendCourseAllDTO();
+                            batchSendCourseAllDTO.setOpenImBatchMsgDTO(batchUrgeMsgDTO)
+                                    .setImMsgSendDetailList(imMsgSendDetailUrgeList);
 
+                            // 使用唯一的 key
+                            String batchKey = batchSendCourseDTO.getCourseId() + ":" +
+                                    batchSendCourseDTO.getVideoId() + ":" +
+                                    batchSendCourseDTO.getUrgeTime().getTime() + ":" +
+                                    imMsgSendDetailUrgeList.get(0).getLogId();
+
+                            redisMap.put(batchKey, batchSendCourseAllDTO);
+                            redisCache.setCacheMap(redisKey, redisMap);
+                        }
+                    } else {
+                        // 不超过 100 人或实时发送,按原逻辑,使用与发课相同的 sendUnionId
+                        List<FsImMsgSendDetail> imMsgSendDetailUrgeList = createImMsgSendLog("催课", batchSendCourseDTO, planSendTimeStamp, urgSendType, batchUserIds, sendUnionId);
+                        String redisKey = "openIm:batchSendMsg:urgeCourse";
+                        Map<String, Object> redisMap = new HashMap<>();
+                        BatchSendCourseAllDTO batchSendCourseAllDTO = new BatchSendCourseAllDTO();
+                        batchSendCourseAllDTO.setOpenImBatchMsgDTO(openImBatchUrgeCourse)
+                                .setImMsgSendDetailList(imMsgSendDetailUrgeList);
+
+                        String batchKey = batchSendCourseDTO.getCourseId()+":"+batchSendCourseDTO.getVideoId()+":"+batchSendCourseDTO.getUrgeTime().getTime()+imMsgSendDetailUrgeList.get(0).getLogId();
+
+                        redisMap.put(batchKey, batchSendCourseAllDTO);
+                        redisCache.setCacheMap(redisKey, redisMap);
+                    }
                 }
 
             } catch (Exception e) {

+ 3 - 4
fs-user-app/src/main/resources/application.yml

@@ -7,13 +7,12 @@ server:
 # Spring配置
 spring:
   profiles:
+    active: druid-zkzh-test
 #    active: dev
-    active: dev-test
-#    active: druid-xzt-test
 #    active: druid-jzzx
 #    active: druid-yzt
 #    active: druid-hdt
 #    active: druid-sxjz
+#    active: druid-qdtst
 #    active: druid-yzt
-#    active: druid-fcky-test
-
+#    active: druid-bjzm-test