Bug修复: - GetWorkList 使用了错误的 RecordType (RecordStudy→RecordWork) - AllRecord handler 返回错误的分页信息 (page硬编码1, pageSize用RecordsCount) - CourseParse creditNode nil panic (加nil检查) - WebSocket CheckOrigin 安全漏洞 (release模式限制为同源) - math/rand 可预测 (替换为 crypto/rand) - GetDiscussList 未实现 (补全实现, 移除重复路由) 其他: - 接入 CodeStable 工作流体系 (codestable/ 骨架 + AGENTS.md) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
155 lines
5.2 KiB
Go
155 lines
5.2 KiB
Go
package ckwk
|
|
|
|
// 获取验证码响应
|
|
type CodeResp struct {
|
|
Code int `json:"code"`
|
|
Message string `json:"message"`
|
|
Data string `json:"data"`
|
|
}
|
|
|
|
type LoginFormError struct {
|
|
Code string `json:"code"`
|
|
}
|
|
|
|
// 登录响应
|
|
type LoginResp struct {
|
|
RefreshCode int `json:"refresh_code"`
|
|
Status bool `json:"status"`
|
|
Msg string `json:"msg"`
|
|
Back string `json:"back"`
|
|
FormError LoginFormError `json:"formError"`
|
|
}
|
|
|
|
type StudyResp struct {
|
|
State int `json:"state"`
|
|
StudyID int `json:"studyId"`
|
|
Status bool `json:"status"`
|
|
Msg string `json:"msg"`
|
|
}
|
|
|
|
type AllRecordResp[T any] struct {
|
|
List []T `json:"list"`
|
|
PageInfo PageInfo `json:"pageInfo"`
|
|
Status bool `json:"status"`
|
|
Msg string `json:"msg"`
|
|
}
|
|
|
|
type PageInfo struct {
|
|
KeyName string `json:"keyName"`
|
|
Page int `json:"page"`
|
|
PageCount int `json:"pageCount"`
|
|
RecordsCount int `json:"recordsCount"`
|
|
OnlyCount int `json:"onlyCount"`
|
|
PageSize int `json:"pageSize"`
|
|
}
|
|
|
|
// 学习记录列表
|
|
type StudyList struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name"`
|
|
Type interface{} `json:"type"`
|
|
ChapterID string `json:"chapterId"`
|
|
CourseID string `json:"courseId"`
|
|
VideoFile string `json:"videoFile"`
|
|
VideoDuration string `json:"videoDuration"`
|
|
VotingPath interface{} `json:"votingPath"`
|
|
TabVideo string `json:"tabVideo"`
|
|
TabFile string `json:"tabFile"`
|
|
TabVote string `json:"tabVote"`
|
|
TabWork string `json:"tabWork"`
|
|
TabExam string `json:"tabExam"`
|
|
Sort string `json:"sort"`
|
|
VideoMode string `json:"videoMode"`
|
|
LocalFile string `json:"localFile"`
|
|
SchoolID string `json:"schoolId"`
|
|
Lock string `json:"lock"`
|
|
UnlockTime string `json:"unlockTime"`
|
|
Bid string `json:"bid"`
|
|
Duration string `json:"duration"`
|
|
Progress string `json:"progress"`
|
|
State string `json:"state"`
|
|
ViewCount string `json:"viewCount"`
|
|
FinalTime string `json:"finalTime"`
|
|
Error int `json:"error"`
|
|
ErrorMessage string `json:"errorMessage"`
|
|
BeginTime string `json:"beginTime"`
|
|
ViewedDuration string `json:"viewedDuration"`
|
|
URL string `json:"url"`
|
|
}
|
|
|
|
// 作业记录列表
|
|
type WorkList struct {
|
|
ID string `json:"id"`
|
|
UserID any `json:"userId"`
|
|
Title string `json:"title"`
|
|
TopicNumber string `json:"topicNumber"`
|
|
Score string `json:"score"`
|
|
Type string `json:"type"`
|
|
Remarks string `json:"remarks"`
|
|
AddTime string `json:"addTime"`
|
|
Sequence string `json:"sequence"`
|
|
NodeID string `json:"nodeId"`
|
|
CourseID string `json:"courseId"`
|
|
StartTime string `json:"startTime"`
|
|
EndTime string `json:"endTime"`
|
|
PaperID string `json:"paperId"`
|
|
CreateUserID string `json:"createUserId"`
|
|
IsPrivate string `json:"isPrivate"`
|
|
ClassList string `json:"classList"`
|
|
TeacherType string `json:"teacherType"`
|
|
Allow string `json:"allow"`
|
|
Frequency string `json:"frequency"`
|
|
ScoringRules string `json:"scoringRules"`
|
|
HasCollect string `json:"hasCollect"`
|
|
Lock any `json:"lock"`
|
|
SchoolID string `json:"schoolId"`
|
|
Parsing string `json:"parsing"`
|
|
AddDate string `json:"addDate"`
|
|
Name string `json:"name"`
|
|
ChapterID string `json:"chapterId"`
|
|
State string `json:"state"`
|
|
SubmitTime string `json:"submitTime"`
|
|
FinalScore string `json:"finalScore"`
|
|
TypeName string `json:"typeName"`
|
|
FinishTime string `json:"finishTime"`
|
|
URL string `json:"url"`
|
|
}
|
|
|
|
// 考试记录列表
|
|
type ExamList struct {
|
|
ID string `json:"id"`
|
|
UserID interface{} `json:"userId"`
|
|
Title string `json:"title"`
|
|
TopicNumber string `json:"topicNumber"`
|
|
Score string `json:"score"`
|
|
AddTime string `json:"addTime"`
|
|
NodeID string `json:"nodeId"`
|
|
CourseID string `json:"courseId"`
|
|
LimitedTime string `json:"limitedTime"`
|
|
Sequence string `json:"sequence"`
|
|
Remarks string `json:"remarks"`
|
|
PaperID string `json:"paperId"`
|
|
StartTime string `json:"startTime"`
|
|
EndTime string `json:"endTime"`
|
|
CreateUserID string `json:"createUserId"`
|
|
ClassList string `json:"classList"`
|
|
IsPrivate string `json:"isPrivate"`
|
|
TeacherType string `json:"teacherType"`
|
|
Allow string `json:"allow"`
|
|
Frequency string `json:"frequency"`
|
|
HasCollect string `json:"hasCollect"`
|
|
SchoolID string `json:"schoolId"`
|
|
Parsing string `json:"parsing"`
|
|
AddDate string `json:"addDate"`
|
|
Random string `json:"random"`
|
|
RandData interface{} `json:"randData"`
|
|
RandNumber string `json:"randNumber"`
|
|
Name string `json:"name"`
|
|
ChapterID string `json:"chapterId"`
|
|
State string `json:"state"`
|
|
SubmitTime string `json:"submitTime"`
|
|
FinalScore string `json:"finalScore"`
|
|
FinishTime string `json:"finishTime"`
|
|
URL string `json:"url"`
|
|
}
|