jinduguanli/API文档.md
huertian 5c632a724f feat: 添加批量导入功能
1. 添加用户、课程任务和部门的批量导入功能
2. 优化错误处理逻辑,提供更详细的错误信息
3. 更新API文档,添加批量导入接口说明
2025-01-04 15:07:14 +08:00

15 KiB
Raw Blame History

进度管理系统 API 文档

基础信息

  • 基础 URL: http://localhost:1218
  • 所有请求和响应均使用 JSON 格式
  • 所有需要认证的接口都需要在请求头中携带 Authorization: Bearer {token}

通用响应格式

{
  "code": 10000, // 响应码
  "message": "成功", // 响应消息
  "data": {} // 响应数据
}

响应码说明

响应码 说明 消息
10000 成功 成功
10001 参数错误 参数无效
10002 非教师用户 非教师用户
10003 用户不存在 用户不存在
10004 密码错误 密码错误
10005 邮箱已存在 邮箱已存在
10006 未授权 未授权
10007 令牌过期 令牌已过期
10008 令牌无效 无效的令牌
10009 系统错误 系统错误

字段说明

用户相关字段

  1. 角色 (roles)

    • 1: 教师
    • 2: 普通管理员
    • 3: 沟通联络人
    • 4: 系统管理员
  2. 岗位 (jobs)

    • 1: 课程制作教师
    • 2: 课程购买方项目负责人
    • 3: 课程制作方沟通联络人
    • 4: 系统制作方项目负责人
  3. 用户状态 (status)

    • 1: 正常
    • 0: 禁用
  4. Spring Security 相关字段

    • enabled: 账号是否启用true: 启用false: 禁用)
    • accountNonExpired: 账号是否未过期true: 未过期false: 已过期)
    • accountNonLocked: 账号是否未锁定true: 未锁定false: 已锁定)
    • credentialsNonExpired: 密码是否未过期true: 未过期false: 已过期)
    • authorities: 用户权限列表,包含用户被授予的所有权限(如 "ROLE_USER"

课程任务相关字段

  1. 进度状态 (progressStatus)
    • 0: 未开始
    • 1: 脚本制作
    • 2: 脚本审核
    • 3: 脚本确认
    • 4: 视频拍摄与制作
    • 5: 视频确认

用户接口

1. 用户注册

  • 接口POST /api/users
  • 描述:创建新用户
  • 认证:不需要
  • 请求体
    {
      "username": "testuser", // 用户名,不可为空
      "email": "test@example.com", // 邮箱,不可为空且唯一
      "password": "password123", // 密码,不可为空
      "departmentId": 1, // 部门ID不可为空关联departments表
      "roles": 1, // 角色1-教师2-普通管理员3-沟通联络人4-系统管理员
      "jobs": 1, // 岗位1-课程制作教师2-课程购买方项目负责人3-课程制作方沟通联络人4-系统制作方项目负责人
      "avatar": "http://example.com/avatar.jpg", // 头像URL可选
      "creatorId": 1 // 创建者ID不可为空
    }
    
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": null
    }
    
  • 错误响应
    {
      "code": 10005,
      "message": "邮箱已存在",
      "data": null
    }
    

2. 用户登录

  • 接口POST /api/users/login
  • 描述:用户登录获取 token
  • 认证:不需要
  • 请求体
    {
      "email": "test@example.com", // 邮箱
      "password": "password123", // 密码
      "remember": true // 是否记住登录(可选)
    }
    
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": {
        "token": "eyJhbGciOiJIUzM4NCJ9..." // JWT令牌
      }
    }
    

3. 用户登出

  • 接口POST /api/users/logout
  • 描述:用户登出,使当前 token 失效
  • 认证:需要
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": "登出成功"
    }
    

4. 获取当前用户信息

  • 接口GET /api/users/current
  • 描述:获取当前登录用户信息
  • 认证:需要
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": {
        "id": 12,
        "username": "testuser",
        "email": "test@example.com",
        "departmentId": 1,
        "roles": 1,
        "jobs": 1,
        "avatar": null,
        "creatorId": 1,
        "status": 1,
        "createdAt": 1734578081,
        "updatedAt": 1734578081,
        "enabled": true,
        "authorities": [
          {
            "authority": "ROLE_USER"
          }
        ]
      }
    }
    

5. 获取用户列表

  • 接口GET /api/users/list
  • 描述:分页获取用户列表
  • 认证:需要
  • 查询参数
    • page: 页码(从 1 开始)
    • limit: 每页数量(默认 10
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": {
        "list": [
          {
            "id": 1,
            "username": "admin",
            "email": "admin@example.com",
            "departmentId": 1,
            "roles": 4,
            "jobs": 4,
            "avatar": null,
            "creatorId": 1,
            "status": 1,
            "createdAt": 1734578081,
            "updatedAt": 1734578081
          }
        ],
        "total": 12,
        "currentPage": 1,
        "pageSize": 10
      }
    }
    

6. 禁用用户

  • 接口POST /api/users/disable/{userId}
  • 描述:禁用指定用户
  • 认证:需要
  • 路径参数
    • userId: 用户 ID
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": "用户已禁用"
    }
    

7. 查询部门用户列表

  • 接口GET /api/users/department/{departmentId}
  • 描述:获取指定部门下的所有正常状态用户列表
  • 认证:需要
  • 路径参数
    • departmentId: 部门 ID
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": [
        {
          "id": 2,
          "username": "普通管理员账号2",
          "email": "user2@qq.com",
          "password": null,
          "departmentId": 1,
          "roles": 2,
          "jobs": 2,
          "avatar": null,
          "creatorId": 1,
          "status": 1,
          "createdAt": 1734504506,
          "updatedAt": 1734504506,
          "enabled": true,
          "authorities": [
            {
              "authority": "ROLE_USER"
            }
          ],
          "accountNonExpired": true,
          "accountNonLocked": true,
          "credentialsNonExpired": true
        }
      ]
    }
    
  • 错误响应
    {
      "code": 50000,
      "message": "获取部门用户列表失败",
      "data": null
    }
    

8. 搜索教师信息

  • 接口GET /api/users/teacher/search
  • 描述:通过邮箱搜索教师信息
  • 认证:需要
  • 查询参数
    • email: 教师邮箱
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": {
        "id": 1,
        "username": "张三",
        "email": "user1@qq.com",
        "password": null,
        "departmentId": 2,
        "roles": 1,
        "jobs": 1,
        "avatar": null,
        "creatorId": 1,
        "status": 1,
        "createdAt": 1734504506,
        "updatedAt": 1734504506,
        "enabled": true,
        "accountNonExpired": true,
        "accountNonLocked": true,
        "credentialsNonExpired": true,
        "authorities": [
          {
            "authority": "ROLE_USER"
          }
        ]
      }
    }
    
  • 错误响应
    {
      "code": 10009,
      "message": "系统错误",
      "data": null
    }
    

课程任务接口

1. 获取课程任务列表

  • 接口GET /api/lesson-tasks
  • 描述:分页获取课程任务列表,可按用户筛选
  • 认证:需要
  • 查询参数
    • page: 页码(从 1 开始)
    • size: 每页数量(默认 10
    • userId: 用户 ID可选
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": {
        "content": [
          {
            "id": 1,
            "courseName": "数学",
            "microLessonName": "数学1-1",
            "userId": 1,
            "progressStatus": 4,
            "scriptCreateTime": 1734940587,
            "scriptReviewTime": null,
            "scriptConfirmTime": 1734940825,
            "videoCreateTime": 1734940832,
            "videoConfirmTime": 1734940837,
            "finishTime": 1734940837,
            "advise": "",
            "createdAt": 1734674726,
            "updatedAt": 1734940837
          }
        ],
        "pageable": {
          "pageNumber": 0,
          "pageSize": 10,
          "sort": {
            "empty": true,
            "unsorted": true,
            "sorted": false
          }
        },
        "totalElements": 7,
        "totalPages": 1,
        "last": true,
        "first": true,
        "empty": false
      }
    }
    

2. 获取单个课程任务

  • 接口GET /api/lesson-tasks/{id}
  • 描述:根据 ID 获取课程任务详情
  • 认证:需要
  • 路径参数
    • id: 课程任务 ID
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": {
        "id": 1,
        "courseName": "数学",
        "microLessonName": "数学1-1",
        "userId": 1,
        "progressStatus": 4,
        "scriptCreateTime": 1734940587,
        "scriptReviewTime": null,
        "scriptConfirmTime": 1734940825,
        "videoCreateTime": 1734940832,
        "videoConfirmTime": 1734940837,
        "finishTime": 1734940837,
        "advise": "",
        "createdAt": 1734674726,
        "updatedAt": 1734940837
      }
    }
    

3. 创建课程任务

  • 接口POST /api/lesson-tasks
  • 描述:创建新的课程任务
  • 认证:需要
  • 请求体
    {
      "courseName": "测试课程",
      "microLessonName": "测试微课",
      "userId": 1,
      "advise": "任务说明"
    }
    
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": {
        "id": 11,
        "courseName": "测试课程",
        "microLessonName": "测试微课",
        "userId": 1,
        "progressStatus": 0,
        "scriptCreateTime": null,
        "scriptReviewTime": null,
        "scriptConfirmTime": null,
        "videoCreateTime": null,
        "videoConfirmTime": null,
        "finishTime": null,
        "advise": "任务说明",
        "createdAt": 1735003870,
        "updatedAt": 1735003870
      }
    }
    

4. 更新课程任务

  • 接口PUT /api/lesson-tasks/{id}
  • 描述:更新课程任务信息
  • 认证:需要
  • 路径参数
    • id: 课程任务 ID
  • 请求体
    {
      "progressStatus": 1,
      "advise": "更新的任务说明"
    }
    
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": {
        "id": 11,
        "courseName": "测试课程",
        "microLessonName": "测试微课",
        "userId": 1,
        "progressStatus": 1,
        "scriptCreateTime": 1735003922,
        "scriptReviewTime": null,
        "scriptConfirmTime": null,
        "videoCreateTime": null,
        "videoConfirmTime": null,
        "finishTime": null,
        "advise": "更新的任务说明",
        "createdAt": 1735003870,
        "updatedAt": 1735003922
      }
    }
    

5. 获取部门课程任务

  • 接口GET /api/lesson-tasks/department/{departmentId}
  • 描述:获取指定部门的课程任务列表
  • 认证:需要
  • 路径参数
    • departmentId: 部门 ID
  • 查询参数
    • page: 页码(从 1 开始)
    • size: 每页数量(默认 10
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": {
        "content": [
          {
            "id": 1,
            "courseName": "数学",
            "microLessonName": "数学1-1",
            "userId": 1,
            "username": "教师账号1",
            "progressStatus": 4,
            "scriptCreateTime": 1734940587,
            "scriptReviewTime": null,
            "scriptConfirmTime": 1734940825,
            "videoCreateTime": 1734940832,
            "videoConfirmTime": 1734940837,
            "finishTime": 1734940837,
            "advise": "",
            "createdAt": 1734674726,
            "updatedAt": 1734940837
          }
        ],
        "pageable": {
          "pageNumber": 0,
          "pageSize": 10
        },
        "totalElements": 11,
        "totalPages": 2
      }
    }
    

6. 删除课程任务

  • 接口DELETE /api/lesson-tasks/{id}
  • 描述:删除指定的课程任务
  • 认证:需要
  • 路径参数
    • id: 课程任务 ID
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": null
    }
    

批量导入接口

1. 批量导入用户

  • 接口POST /api/import/users
  • 描述:通过 Excel 文件批量导入用户
  • 认证:需要
  • 请求体
    • Content-Type: multipart/form-data
    • file: Excel 文件(.xlsx
  • Excel 文件格式
    用户名 邮箱 密码 部门名称
    张三 zhangsan@example.com 123456 技术部
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": "成功导入2条数据"
    }
    
  • 错误响应
    {
      "code": 10012,
      "message": "成功导入0条数据。错误信息第2行邮箱已存在;第3行部门不存在;",
      "data": null
    }
    

2. 批量导入课程任务

  • 接口POST /api/import/lesson-tasks
  • 描述:通过 Excel 文件批量导入课程任务
  • 认证:需要
  • 请求体
    • Content-Type: multipart/form-data
    • file: Excel 文件(.xlsx
  • Excel 文件格式
    课程名称 微课名称 教师邮箱
    数学课程 第一章 teacher@example.com
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": "成功导入3条数据"
    }
    
  • 错误响应
    {
      "code": 10012,
      "message": "成功导入0条数据。错误信息第2行未找到教师用户teacher@example.com;",
      "data": null
    }
    

3. 批量导入部门

  • 接口POST /api/import/departments
  • 描述:通过 Excel 文件批量导入部门
  • 认证:需要
  • 请求体
    • Content-Type: multipart/form-data
    • file: Excel 文件(.xlsx
  • Excel 文件格式
    部门名称 部门描述
    技术部 负责技术研发
  • 成功响应
    {
      "code": 10000,
      "message": "成功",
      "data": "成功导入2条数据"
    }
    
  • 错误响应
    {
      "code": 10012,
      "message": "成功导入0条数据。错误信息第2行部门名称已存在;",
      "data": null
    }
    

注意事项

  1. 所有时间戳字段均使用秒级时间戳10 位)
  2. 课程任务状态变更时会自动记录相应的时间戳
  3. 部门课程任务列表会额外返回用户名信息
  4. 分页参数中的页码从 1 开始
  5. 批量导入时Excel 文件必须严格按照模板格式填写
  6. 批量导入时,如果某行数据导入失败,会在返回信息中说明具体原因
  7. 批量导入时如果全部数据导入失败会返回错误状态码10012