Procházet zdrojové kódy

fix(course):优化手动发课限制逻辑和日志记录

- 添加注释说明手动发课限制仅适用于send_type=1的情况
- 更新日志信息以更准确地反映手动发课限制场景
- 明确标注send_type=1表示手动发课(个微/后台)
xw před 1 týdnem
rodič
revize
6fd95b09f0

+ 6 - 3
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -2214,11 +2214,13 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         boolean isFreeMode = period != null && period.getFreeMode() != null && period.getFreeMode() == 1;
 
         // 项目看课数限制(自由模式下跳过此限制)
+        // 注意:此限制仅针对手动发课(send_type=1),企微自动发课(send_type=2)不受此限制
+        // 逻辑:如果用户今天已经看过其他手动发课的课程,则不能再看新的手动发课课程
         if(!isFreeMode && !EXCLUDE_PROJECTS.contains(signProjectName) && !CloudHostUtils.hasCloudHostName("弘德堂")) {
             Integer logCount = fsUserCourseMapper.selectTodayCourseWatchLogCountByUserIdAndProjectId(param.getUserId(), courseProject);
             if (Objects.isNull(watchCourseVideo) && logCount > 0) {
-                log.info("【自由模式检查】固定模式下超过项目看课数量限制,periodId={}, userId={}, logCount={}",
-                        param.getPeriodId(), param.getUserId(), logCount);
+                log.info("【手动发课限制】用户今日已观看{}门手动发课课程,超过限制,periodId={}, userId={}, videoId={}",
+                        logCount, param.getPeriodId(), param.getUserId(), param.getVideoId());
                 return ResponseResult.fail(504, "超过项目看课数量限制");
             }
         } else if(isFreeMode) {
@@ -2240,9 +2242,10 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
             updateLog.setUpdateTime(new Date());
             courseWatchLogMapper.updateFsCourseWatchLog(updateLog);
         } else {
+            // 创建新的看课记录(手动发课:send_type=1)
             FsCourseWatchLog fsCourseWatchLog = new FsCourseWatchLog();
             BeanUtils.copyProperties(param, fsCourseWatchLog);
-            fsCourseWatchLog.setSendType(1);
+            fsCourseWatchLog.setSendType(1);  // 1=手动发课(个微/后台)
             fsCourseWatchLog.setDuration(0L);
             fsCourseWatchLog.setCreateTime(new Date());
             fsCourseWatchLog.setLogType(1);