天机学堂-day3(学习计划和进度)

目录



前言

本文章使用的是《天机学堂》开源的资料,并从创建虚拟机开始部署《天机学堂项目》,避免还要下载资料中的20GB虚拟机,只需要下载镜像以及其他基础资料即可,请大家放心食用
注意:若是还不可以启动项目的可以先看上一篇:天机学堂-自定义部署详细流程(部署篇:初始化项目、启动)
请添加图片描述
上一篇:《天机学堂——day2(我的课表)》


因为课程中基本上将代码讲了,这里就不放上来了,只做一些我在课堂上所遇到的TIP

一、课程讲解小TIP

1、为什么视频播放不了?

  1. 我们需要讲tj-exam服务因为这个服务便是播放视频的服务
    在这里插入图片描述
  2. 课程tj-course表中的过期日期也修改一下:
    在这里插入图片描述

2、为什么视频播放时,并没有下发请求?

这里我当时遇到这个BUG时重启一下服务就可以了,若是还不可以大家可以在评论区内讨论一下

3、为什么免费课程播放视频显示无权限?

在这里插入图片描述
这里大家可以找到免费的视频id
在这里插入图片描述
在这里插入图片描述

二、作业

编写一个SpringTask定时任务,定期检查learning_lesson表中的课程是否过期,如果过期则将课程状态修改为已过期。
创建task文件,用来存放task任务:

@Component
@Slf4j
@RequiredArgsConstructor
public class LearningLessonExpiredTask {
    private final LearningLessonMapper lessonMapper;
    @Scheduled(cron = "0 0 0 * * ?") // 每天00:00:00执行
    public void checkAndUpdateExpiredLesson(){
        //1.构造更新条件
        LambdaUpdateWrapper<LearningLesson> updateWrapper=new LambdaUpdateWrapper<>();
        LocalDateTime now = LocalDateTime.now();
        //2.已过期且状态为未过期,设置状态为过期
        updateWrapper
                .set(LearningLesson::getStatus, LessonStatus.EXPIRED)//设置状态为过期
                .le(LearningLesson::getExpireTime,now)//逻辑过期时间小于当前时间
                .ne(LearningLesson::getStatus, LessonStatus.EXPIRED);//状态为未过期
        int updateCount = lessonMapper.update(null, updateWrapper);//记录更新条数
        // 3. 记录日志
        log.info("课程过期定时任务执行完成:共更新{}个课程为“已过期”状态", updateCount);
    }
}
### 天机学堂 Day3 学习内容概述 天机学堂 Day3学习重点围绕 **学习计划进度管理** 展开,主要涉及如何处理用户的课程学习行为并同步更新相关数据[^1]。具体内容如下: #### 一、学习记录初始化与更新逻辑 如果用户正在观看视频类课程,则需先判断该课程是否为首次观看。此操作通过查询数据库中的学习记录实现: - 若无对应的学习记录,则判定为首次观看,并创建新的学习记录条目。 - 如果已有学习记录,则进一步更新当前观看到的具体时间点(以秒计)。这一步骤确保了系统的实时性准确性。 #### 二、学习完成状态校验 除了基本的播放记录维护外,还需验证本次学习是否满足“学完”的条件。具体而言: - 需要确认播放进度是否达到了预设的比例阈值(通常为95%以上)。 - 同时对比之前的学习状态——若之前的标记是非完成状态而此次确实完成了全部内容,则触发一系列额外的操作来反映这一变化。 #### 三、课表动态调整功能 一旦检测到某门课程由未完成变为已完成的状态转换时,系统将自动执行以下动作之一或多个组合措施: - 更新学员个人主页上的最新学习进展展示模块; - 调整整体教学安排视图内的相应部分,使其他关联项能够及时反映出最新的情况变动。 上述流程不仅限于单一资源类型的跟踪管理,在实际应用过程中可能还会涉及到更多维度的数据交互以及更复杂的业务场景支持需求。 ```python def update_learning_status(user_id, course_id, current_second): """模拟更新学习状态""" # 查询是否有历史记录 record = get_record_by_user_and_course(user_id=user_id, course_id=course_id) if not record: create_new_record(user_id=user_id, course_id=course_id, start_time=current_second) else: last_watched_seconds = record[&#39;last_watched&#39;] if is_completed(last_watched_seconds, total_duration_of(course_id)): mark_as_finished(user_id=user_id, course_id=course_id) adjust_curriculum_dashboard(user_id=user_id, finished=True) else: save_progress(record_id=record[&#39;id&#39;], new_position=current_second) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值