Skip to content

Qingche99/eeo-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

eeo-go

🇺🇸 English version →

Go Reference Go Version License

ClassIn(EEO)在线教育平台的API Go 语言 SDK,零依赖,覆盖用户管理、课程、课节、LMS、在线双师和云盘全量接口。


特性

  • 零依赖 — 仅使用 Go 标准库
  • 全量接口 — 覆盖 ClassIn 平台 70+ 个开放 API
  • 自动签名 — 内部自动处理 v1/v2 签名,无需手动计算
  • 文件上传 — 支持头像、课程封面、云盘文件上传(最大 500 MB)

安装

go get github.com/Qingche99/eeo-go

快速开始

package main

import (
    "fmt"
    "github.com/Qingche99/eeo-go/eeo"
)

func main() {
    // 使用机构 UID 和密钥初始化客户端
    client := eeo.NewClient(123456, "your_school_secret")

    // 注册用户(手机号或邮箱,自动识别)
    result, err := client.Register("13800138000", "password123", nil, nil, nil)
    if err != nil {
        panic(err)
    }
    fmt.Println(result)
}

Note

方法中的 extra map[string]interface{} 用于传递选填字段,不需要时传 nil; 指针类型参数(如 *string*int64)传 nil 表示不传该字段。


API 参考

用户管理

client.Register(account, password string, nickname, addToSchoolMember *int, filePath *string)
client.RegisterMultiple(userJson []map[string]interface{})
client.ModifyPassword(uid int64, oldMd5pass string, password, md5pass *string)

client.AddTeacher(teacherAccount, teacherName string, filePath *string)
client.EditTeacher(teacherUID int64, teacherName string, filePath *string)
client.StopUsingTeacher(teacherUID int64)
client.RestartUsingTeacher(teacherUID int64)

client.AddSchoolStudent(studentAccount, studentName string)
client.EditSchoolStudent(studentUID int64, studentName string)
client.ModifyCourseStudentNickName(studentUIDs []int64)         // v2
client.UpdateClassStudentComment(classID int64, commentJson []map[string]interface{})

课程管理

client.AddCourse(courseName string, filePath *string, extra map[string]interface{})
client.EditCourse(courseID int64, filePath *string, extra map[string]interface{})
client.EndCourse(courseID int64)

client.ModifyCourseTeacher(courseID, teacherUID int64)
client.RemoveCourseTeacher(courseID, teacherUID int64)
client.AddCourseTeacher(courseID int64, teacherUIDs []int64)    // v2,支持批量

client.AddCourseGroup(courseID int64, groupName string, groupList []map[string]interface{})
client.EditCourseGroup(courseID, groupID int64, groupName string, groupList []map[string]interface{})
client.DelCourseGroup(courseID, groupID int64)

client.AddCourseLabels(courseList []map[string]interface{})

课节管理

// 创建课节
client.AddCourseClass(courseID int64, className string, teacherUID, beginTime, endTime int64, extra map[string]interface{})
client.AddCourseClassMultiple(courseID int64, classJson []map[string]interface{})   // 最多 50 个

// 编辑 / 删除
client.EditCourseClass(courseID, classID int64, extra map[string]interface{})
client.DelCourseClass(courseID, classID int64)

// 学生(课程级别)
client.AddCourseStudent(courseID, studentUID int64, identity int, studentName *string)
client.AddCourseStudentMultiple(courseID int64, userList []map[string]interface{}, identity int)
client.DelCourseStudent(courseID, studentUID int64, identity int)
client.DelCourseStudentMultiple(courseID int64, userList []int64, identity int)

// 学生(课节级别)
client.AddClassStudentMultiple(courseID, classID int64, studentJson []map[string]interface{}, identity int)
client.DelClassStudentMultiple(courseID, classID int64, studentUIDs []int64, identity int)
client.AddCourseClassStudent(courseID, studentUID int64, classJson []int64)

// 直播 / 录播 / 视频
client.SetClassVideoMultiple(courseID int64, classJson []map[string]interface{})
client.DeleteClassVideo(classID int64, fileID *int64)
client.GetWebcastUrl(courseID int64, classID *int64)
client.UpdateClassLockStatus(classID int64, isLock int)

// 其他
client.ModifyClassSeatNum(courseID, classID int64, seatNum *int, extra map[string]interface{})
client.GetLoginLinked(uid, courseID, classID int64, extra map[string]interface{})
client.ModifyGroupMemberNickname(courseID int64)

// 课节标签
client.AddSchoolLabel(labelName string)
client.UpdateSchoolLabel(labelID int64, labelName string)
client.DeleteSchoolLabel(labelID int64)
client.AddClassLabels(courseID int64, classList []map[string]interface{})

LMS(v2 签名)

// 单元
client.CreateUnit(courseID int64, unitName string, publishFlag int, extra map[string]interface{})
client.UpdateUnit(courseID, unitID int64, extra map[string]interface{})
client.DeleteUnit(courseID, unitID int64)
client.MoveUnit(courseID, unitID, toUnitID int64)

// 活动(作业、测验、录播、资料、讨论等)
client.CreateActivityNoClass(courseID, unitID int64, activityType int, name string, teacherUID int64, extra map[string]interface{})
client.ReleaseActivity(courseID int64, activityIDs []int64)
client.DeleteActivity(courseID, activityID int64)
client.AddActivityStudent(courseID, activityID int64, studentUIDs []int64)
client.DeleteActivityStudent(courseID, activityID int64, studentUIDs []int64)

// LMS 课堂
client.CreateLmsLesson(courseID int64, lessonName string, teacherUID, startTime, endTime int64, extra map[string]interface{})
client.UpdateLmsLesson(courseID, activityID int64, extra map[string]interface{})

在线双师

// 一个主课节最多绑定 100 个子课节
client.AddDoubleTeacherLesson(mainCourseID, mainClassID int64, subClassJson []map[string]interface{})
client.EditDoubleTeacherLesson(courseID, classID int64, extra map[string]interface{})
client.DelDoubleTeacherLesson(courseID, classID int64)

云盘管理

// 文件夹
client.GetFolderList()
client.GetCloudList(folderID *int64)
client.GetTopFolderID()
client.CreateFolder(folderID int64, folderName string)
client.RenameFolder(folderID int64, folderName string)
client.DelFolder(folderID int64)

// 文件(最大 500 MB)
client.UploadFile(folderID int64, filePath string)
client.RenameFile(fileID int64, fileName string)
client.DelFile(fileID int64)

机构设置

// extra 可选:allowViewReplay、allowNewStudentViewReplay
client.ModifySchoolConf(extra map[string]interface{})             // v2

签名机制

SDK 内部自动处理签名,无需手动介入。

类型 适用场景 实现方式
v1 用户、课程、课节、云盘接口 POST form,含 SIDtimeStampsafeKey(MD5(secret+timestamp))
v2 LMS 接口及部分特殊路径 JSON body + 请求头 X-EEO-SIGN / X-EEO-UID / X-EEO-TS

使用 v2 签名的非 LMS 路径:/course/addCourseTeacher/schooluser/modifyCourseStudentNickName/school/modifySchoolConf


项目结构

eeo-go/
├── go.mod
└── eeo/
    ├── client.go       # Client struct + HTTP 请求封装
    ├── urls.go         # 所有 API 端点定义
    ├── utils.go        # 签名工具、请求辅助函数
    ├── api_user.go     # 用户管理接口
    ├── api_course.go   # 课程管理接口
    ├── api_class.go    # 课节 / 学生 / 标签接口
    ├── api_lms.go      # LMS + 在线双师 + 机构设置
    └── api_cloud.go    # 云盘接口

相关项目

本项目为 Python SDK eeo 的 Go 语言等价实现,接口行为与参数语义保持一致。

如有问题请联系官方支持:eeoapisupport@eeoa.com | 官方 API 文档

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages