You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Moodle 4.0 Web Services高效获取学生提交的作业列表?

高效获取Moodle 4.0用户作业提交状态的可行方案

完全可以通过1-2次高效调用实现,无需逐个作业检查,以下是具体实现方式:

方案一:两次独立接口调用

步骤1:获取用户已参与的课程列表

调用Web服务函数 core_enrol_get_users_courses,传入参数 userid(目标用户ID),返回该用户所有已选课的ID和基本信息。

步骤2:批量获取课程作业及用户提交状态

  1. 从步骤1的结果中提取所有课程ID,调用 mod_assign_get_assignments,传入参数 courseids(课程ID数组),得到这些课程下所有作业的ID列表。
  2. 收集所有作业ID,调用 mod_assign_get_user_submissions,传入参数 assignmentids(作业ID数组)和 userid(目标用户ID),一次性获取所有作业的提交状态(包括是否提交、提交时间、成绩、教师反馈等)。

注:这两步可以合并为一次批量Web服务调用(见方案二),进一步减少HTTP请求次数。

方案二:一次批量Web服务调用

利用Moodle支持的批量调用功能,在单个HTTP请求中执行多个函数调用,具体请求结构示例(JSON格式):

{
    "functions": [
        {
            "name": "core_enrol_get_users_courses",
            "parameters": {"userid": 123}
        },
        {
            "name": "mod_assign_get_assignments",
            "parameters": {"courseids": []}
        },
        {
            "name": "mod_assign_get_user_submissions",
            "parameters": {"assignmentids": [], "userid": 123}
        }
    ]
}

实际调用时,需要将第二个函数的courseids参数替换为第一个函数返回的课程ID数组,第三个函数的assignmentids替换为第二个函数返回的作业ID数组。部分Moodle版本支持在批量调用中传递前一个函数的结果作为后续函数的参数,可减少客户端的处理逻辑。

关键函数说明

  • core_enrol_get_users_courses:获取用户已选课列表,参数仅需目标用户ID。
  • mod_assign_get_assignments:批量获取指定课程下的所有作业,支持传入多个课程ID。
  • mod_assign_get_user_submissions:批量获取指定用户在多个作业中的提交信息,返回结果包含每个作业的提交状态、提交时间、成绩等核心数据。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 11:20:03