BlogExam

package
v5.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 31, 2024 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	//OpenSub 启动订阅
	OpenSub = false
)

在线考试模块 * 1. 支持题库,可以设置题库、题目 2. 题目支持单选题、判断题、多选题、填空题、问答题 3. 除问答题外,其他题目可以设置标准答案,其中填空题如果不设置标准答案则不做判断处理 4. 可以抽取不同试卷题库的题目组成单独的考试 5. 考试可以设置开始和到期时间,用户开始问答后反馈数据集,问答结束后收集数据并反馈考试结果 6. 考试可以设置答案是否在前端直接判断,如果直接判断则同时会反馈正确答案方便前端处理;否则必须交给后台统一处理 7. 系统会记录考生每次考试的时间、统计次数、考试用时、得分,暂不记录具体答题细节

Functions

func AppendLog

func AppendLog(args *ArgsAppendLog) (logID int64, allScore int, errCode string, err error)

AppendLog 添加新的记录

func CreateProduct

func CreateProduct(args *ArgsCreateProduct) (err error)

CreateProduct 创建试卷

func CreateTopicGroup

func CreateTopicGroup(args *ArgsCreateTopicGroup) (err error)

CreateTopicGroup 创建题库

func CreateTopicGroupLog

func CreateTopicGroupLog(orgID, userID int64, runTime int)

CreateTopicGroupLog 添加学习记录

func DeleteProduct

func DeleteProduct(args *ArgsDeleteProduct) (err error)

DeleteProduct 删除试卷

func DeleteTopic

func DeleteTopic(args *ArgsDeleteTopic) (err error)

DeleteTopic 删除题目

func DeleteTopicGroup

func DeleteTopicGroup(args *ArgsDeleteTopicGroup) (err error)

DeleteTopicGroup 删除题库

func GetLogCountByOrgID

func GetLogCountByOrgID(orgID int64) (count int64)

GetLogCountByOrgID 获取组织考试次数

func GetLogCountByUserID

func GetLogCountByUserID(userID int64) (count int64)

GetLogCountByUserID 获取用户考试次数

func GetLogOrgCount

func GetLogOrgCount() (count int64)

GetLogOrgCount 获取多少个组织参与的考试次数

func GetProductCountByOrgID

func GetProductCountByOrgID(orgID int64, afterAt time.Time) (count int64)

GetProductCountByOrgID 获取试卷数量

func GetProductName

func GetProductName(id int64) string

GetProductName 获取试卷名称

func GetTopicGroupLogCount

func GetTopicGroupLogCount(userID int64) (count int64)

GetTopicGroupLogCount 获取用户学习天数

func GetTopicGroupLogRunTime

func GetTopicGroupLogRunTime(userID int64, afterAt time.Time) (runTime int)

GetTopicGroupLogRunTime 获取累计学习时间长度

func Init added in v5.1.24

func Init()

func UpdateTopic

func UpdateTopic(args *ArgsUpdateTopic) (err error)

UpdateTopic 修改题目

func UpdateTopicGroup

func UpdateTopicGroup(args *ArgsUpdateTopicGroup) (err error)

UpdateTopicGroup 修改题库

Types

type ArgsAppendLog

type ArgsAppendLog struct {
	//创建时间
	CreateAt string `db:"create_at" json:"createAt" check:"defaultTime"`
	//结束时间
	EndAt string `db:"end_at" json:"endAt" check:"defaultTime"`
	//组织ID
	// 留空则表明为平台的用户留下的内容
	OrgID int64 `json:"orgID" check:"id" empty:"true"`
	//用户ID
	UserID int64 `db:"user_id" json:"userID" check:"id"`
	//参加考试
	ProductID int64 `db:"product_id" json:"productID" check:"id" empty:"true"`
	//参加的题目列
	TopicIDs pq.Int64Array `db:"topic_ids" json:"topicIDs" check:"ids" empty:"true"`
	//答案序列
	Answer []ArgsAppendLogAnswer `json:"answer"`
}

ArgsAppendLog 添加新的记录参数

type ArgsAppendLogAnswer

type ArgsAppendLogAnswer struct {
	//题目ID
	TopicID int64 `json:"topicID" check:"id"`
	//答案
	Answer []string `json:"answer"`
}

ArgsAppendLogAnswer 添加新的记录答题参数

type ArgsCreateProduct

type ArgsCreateProduct struct {
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID" check:"id" empty:"true"`
	//开始时间
	StartAt string `db:"start_at" json:"startAt" check:"defaultTime"`
	//结束时间
	EndAt string `db:"end_at" json:"endAt" check:"defaultTime"`
	//标题
	Title string `db:"title" json:"title" check:"des" min:"1" max:"600"`
	//题目列
	TopicIDs pq.Int64Array `db:"topic_ids" json:"topicIDs" check:"ids"`
	//是否直接反馈正确答案
	ReturnAnswerNow bool `db:"return_answer_now" json:"returnAnswerNow" check:"bool"`
	//扩展参数
	Params CoreSQLConfig.FieldsConfigsType `db:"params" json:"params"`
}

ArgsCreateProduct 创建试卷参数

type ArgsCreateTopic

type ArgsCreateTopic struct {
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID" check:"id" empty:"true"`
	//描述
	Des string `db:"des" json:"des" check:"des" min:"1" max:"6000"`
	//题目类型
	// 0 单选; 1 多选; 2 判断; 3 填空题; 4 问答题
	TopicType int `db:"topic_type" json:"topicType"`
	//正确得分
	Score int `db:"score" json:"score" check:"intThan0"`
	//选项
	// 单选、多选、判断
	Options FieldsTopicOptions `db:"options" json:"options"`
	//正确选项
	// 可能是多个,用于支持单选、多选、判断、填空
	// 注意填空题此处如果设置,则需des配合填写{marK}的字符,方便直到具体是哪个mark
	Answer pq.StringArray `db:"answer" json:"answer" check:"marks" empty:"true"`
	//解析
	AnswerAnalysis string `db:"answer_analysis" json:"answerAnalysis" check:"des" min:"1" max:"10000" empty:"true"`
	//扩展参数
	Params CoreSQLConfig.FieldsConfigsType `db:"params" json:"params"`
}

ArgsCreateTopic 创建新的题目参数

type ArgsCreateTopicGroup

type ArgsCreateTopicGroup struct {
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID" check:"id" empty:"true"`
	//题库名称
	Title string `db:"title" json:"title" check:"des" min:"1" max:"600"`
	//题目列
	TopicIDs pq.Int64Array `db:"topic_ids" json:"topicIDs" check:"ids"`
	//扩展参数
	Params CoreSQLConfig.FieldsConfigsType `db:"params" json:"params"`
}

ArgsCreateTopicGroup 创建题库参数

type ArgsCreateTopicMore

type ArgsCreateTopicMore struct {
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID" check:"id" empty:"true"`
	//题目列表
	DataList []ArgsCreateTopicMoreChild `json:"dataList"`
}

ArgsCreateTopicMore 批量创建考题参数

type ArgsCreateTopicMoreChild

type ArgsCreateTopicMoreChild struct {
	//描述
	Des string `db:"des" json:"des" check:"des" min:"1" max:"6000"`
	//题目类型
	// 0 单选; 1 多选; 2 判断; 3 填空题; 4 问答题
	TopicType int `db:"topic_type" json:"topicType"`
	//正确得分
	Score int `db:"score" json:"score" check:"intThan0"`
	//选项
	// 单选、多选、判断
	Options FieldsTopicOptions `db:"options" json:"options"`
	//正确选项
	// 可能是多个,用于支持单选、多选、判断、填空
	// 注意填空题此处如果设置,则需des配合填写{marK}的字符,方便直到具体是哪个mark
	Answer pq.StringArray `db:"answer" json:"answer" check:"marks" empty:"true"`
	//解析
	AnswerAnalysis string `db:"answer_analysis" json:"answerAnalysis" check:"des" min:"1" max:"10000" empty:"true"`
	//扩展参数
	Params CoreSQLConfig.FieldsConfigsType `db:"params" json:"params"`
}

func UploadExcelAndGetTopicArgs

func UploadExcelAndGetTopicArgs(c *gin.Context, args *BaseFileUpload.ArgsUploadToTemp) (dataList []ArgsCreateTopicMoreChild, errCode string, err error)

UploadExcelAndGetTopicArgs 上传和反馈excel数据结构,用于批量添加考题

type ArgsDeleteProduct

type ArgsDeleteProduct struct {
	//ID
	ID int64 `db:"id" json:"id" check:"id"`
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID" check:"id" empty:"true"`
}

ArgsDeleteProduct 删除试卷参数

type ArgsDeleteTopic

type ArgsDeleteTopic struct {
	//ID
	ID int64 `db:"id" json:"id" check:"id"`
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID" check:"id" empty:"true"`
}

ArgsDeleteTopic 删除题目参数

type ArgsDeleteTopicGroup

type ArgsDeleteTopicGroup struct {
	//ID
	ID int64 `db:"id" json:"id" check:"id"`
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID" check:"id" empty:"true"`
}

ArgsDeleteTopicGroup 删除题库参数

type ArgsGetLogList

type ArgsGetLogList struct {
	//分页
	Pages CoreSQLPages.ArgsDataList `json:"pages"`
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID" check:"id" empty:"true"`
	//用户ID
	UserID int64 `db:"user_id" json:"userID" check:"id" empty:"true"`
	//参加考试
	ProductID int64 `db:"product_id" json:"productID" check:"id" empty:"true"`
}

ArgsGetLogList 获取日志列表参数

type ArgsGetProductList

type ArgsGetProductList struct {
	//分页
	Pages CoreSQLPages.ArgsDataList `json:"pages"`
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID" check:"id" empty:"true"`
	//是否删除
	IsRemove bool `db:"is_remove" json:"isRemove" check:"bool"`
	//搜索
	Search string `json:"search" check:"search" empty:"true"`
}

ArgsGetProductList 获取试卷列表参数

type ArgsGetTopicGroupList

type ArgsGetTopicGroupList struct {
	//分页
	Pages CoreSQLPages.ArgsDataList `json:"pages"`
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID" check:"id" empty:"true"`
	//是否删除
	IsRemove bool `db:"is_remove" json:"isRemove" check:"bool"`
	//搜索
	Search string `json:"search" check:"search" empty:"true"`
}

ArgsGetTopicGroupList 获取题库列表参数

type ArgsGetTopicList

type ArgsGetTopicList struct {
	//分页
	Pages CoreSQLPages.ArgsDataList `json:"pages"`
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID" check:"id" empty:"true"`
	//是否删除
	IsRemove bool `db:"is_remove" json:"isRemove" check:"bool"`
	//搜索
	Search string `json:"search" check:"search" empty:"true"`
}

ArgsGetTopicList 获取题目列表参数

type ArgsUpdateTopic

type ArgsUpdateTopic struct {
	//ID
	ID int64 `db:"id" json:"id" check:"id"`
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID" check:"id" empty:"true"`
	//描述
	Des string `db:"des" json:"des" check:"des" min:"1" max:"6000"`
	//正确得分
	Score int `db:"score" json:"score" check:"intThan0"`
	//选项
	// 单选、多选、判断
	Options FieldsTopicOptions `db:"options" json:"options"`
	//正确选项
	// 可能是多个,用于支持单选、多选、判断、填空
	// 注意填空题此处如果设置,则需des配合填写{marK}的字符,方便直到具体是哪个mark
	Answer pq.StringArray `db:"answer" json:"answer" check:"marks" empty:"true"`
	//解析
	AnswerAnalysis string `db:"answer_analysis" json:"answerAnalysis" check:"des" min:"1" max:"10000" empty:"true"`
	//扩展参数
	Params CoreSQLConfig.FieldsConfigsType `db:"params" json:"params"`
}

ArgsUpdateTopic 修改题目参数

type ArgsUpdateTopicGroup

type ArgsUpdateTopicGroup struct {
	//ID
	ID int64 `db:"id" json:"id" check:"id"`
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID" check:"id" empty:"true"`
	//题库名称
	Title string `db:"title" json:"title" check:"des" min:"1" max:"600"`
	//题目列
	TopicIDs pq.Int64Array `db:"topic_ids" json:"topicIDs" check:"ids"`
	//扩展参数
	Params CoreSQLConfig.FieldsConfigsType `db:"params" json:"params"`
}

ArgsUpdateTopicGroup 修改题库参数

type DataGetTopicList

type DataGetTopicList struct {
	//ID
	ID int64 `db:"id" json:"id"`
	//创建时间
	CreateAt time.Time `db:"create_at" json:"createAt"`
	//更新时间
	UpdateAt time.Time `db:"update_at" json:"updateAt"`
	//删除时间
	DeleteAt time.Time `db:"delete_at" json:"deleteAt"`
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID"`
	//描述
	DesCut string `json:"desCut"`
	//题目类型
	// 0 单选; 1 多选; 2 判断; 3 填空题; 4 问答题
	TopicType int `db:"topic_type" json:"topicType"`
	//正确得分
	Score int `db:"score" json:"score"`
	//扩展参数
	Params CoreSQLConfig.FieldsConfigsType `db:"params" json:"params"`
}

func GetTopicList

func GetTopicList(args *ArgsGetTopicList) (dataList []DataGetTopicList, dataCount int64, err error)

GetTopicList 获取题目列表

type FieldsLog

type FieldsLog struct {
	//ID
	ID int64 `db:"id" json:"id"`
	//创建时间
	CreateAt time.Time `db:"create_at" json:"createAt"`
	//结束时间
	EndAt time.Time `db:"end_at" json:"endAt"`
	//耗时
	RunTime int `db:"run_time" json:"runTime"`
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID"`
	//用户ID
	UserID int64 `db:"user_id" json:"userID"`
	//参加考试
	ProductID int64 `db:"product_id" json:"productID"`
	//抽取的题目
	// 考试可以为空,此设计不能为空
	TopicIDs pq.Int64Array `db:"topic_ids" json:"topicIDs"`
	//最终得分
	// 得分根据正确得分分数递增得到
	// 全局配置中,如果BlogExamScore100=true,则按照百分比计算:(正确数量 / 试卷总分数) x 10000
	Score int `db:"score" json:"score"`
	//错误数量
	ErrCount int `db:"err_count" json:"errCount"`
	//正确数量
	CorrectCount int `db:"correct_count" json:"correctCount"`
}

FieldsLog 考试记录

func GetLogByID

func GetLogByID(id int64) (data FieldsLog)

GetLogByID 获取指定日志

func GetLogList

func GetLogList(args *ArgsGetLogList) (dataList []FieldsLog, dataCount int64, err error)

GetLogList 获取日志列表

type FieldsProduct

type FieldsProduct struct {
	//ID
	ID int64 `db:"id" json:"id"`
	//创建时间
	CreateAt time.Time `db:"create_at" json:"createAt"`
	//更新时间
	UpdateAt time.Time `db:"update_at" json:"updateAt"`
	//删除时间
	DeleteAt time.Time `db:"delete_at" json:"deleteAt"`
	//开始时间
	StartAt time.Time `db:"start_at" json:"startAt"`
	//结束时间
	EndAt time.Time `db:"end_at" json:"endAt"`
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID"`
	//标题
	Title string `db:"title" json:"title"`
	//题目列
	TopicIDs pq.Int64Array `db:"topic_ids" json:"topicIDs"`
	//是否直接反馈正确答案
	ReturnAnswerNow bool `db:"return_answer_now" json:"returnAnswerNow"`
	//扩展参数
	Params CoreSQLConfig.FieldsConfigsType `db:"params" json:"params"`
}

FieldsProduct 考试项目

func GetProduct

func GetProduct(id int64) (data FieldsProduct)

GetProduct 获取试卷详情

func GetProductList

func GetProductList(args *ArgsGetProductList) (dataList []FieldsProduct, dataCount int64, err error)

GetProductList 获取试卷列表

type FieldsTopic

type FieldsTopic struct {
	//ID
	ID int64 `db:"id" json:"id"`
	//创建时间
	CreateAt time.Time `db:"create_at" json:"createAt"`
	//更新时间
	UpdateAt time.Time `db:"update_at" json:"updateAt"`
	//删除时间
	DeleteAt time.Time `db:"delete_at" json:"deleteAt"`
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID"`
	//描述
	Des string `db:"des" json:"des"`
	//题目类型
	// 0 单选; 1 多选; 2 判断; 3 填空题; 4 问答题
	TopicType int `db:"topic_type" json:"topicType"`
	//正确得分
	Score int `db:"score" json:"score"`
	//选项
	// 单选、多选、判断
	Options FieldsTopicOptions `db:"options" json:"options"`
	//正确选项
	// 可能是多个,用于支持单选、多选、判断、填空
	// 注意填空题此处如果设置,则需des配合填写{marK}的字符,方便直到具体是哪个mark
	Answer pq.StringArray `db:"answer" json:"answer"`
	//解析
	AnswerAnalysis string `db:"answer_analysis" json:"answerAnalysis"`
	//扩展参数
	Params CoreSQLConfig.FieldsConfigsType `db:"params" json:"params"`
}

FieldsTopic 考试题目

func CreateTopic

func CreateTopic(args *ArgsCreateTopic) (data FieldsTopic, err error)

CreateTopic 创建新的题目

func CreateTopicMore

func CreateTopicMore(args *ArgsCreateTopicMore) (dataList []FieldsTopic, errCode string, err error)

CreateTopicMore 批量创建考题

func GetRandTopic

func GetRandTopic(orgID int64, limit int) (dataList []FieldsTopic)

GetRandTopic 随机抽取指定数量的题目

func GetTopic

func GetTopic(id int64) (data FieldsTopic)

GetTopic 获取题目信息

func GetTopicByIDs

func GetTopicByIDs(ids []int64, haveRemove bool) (dataList []FieldsTopic)

GetTopicByIDs 获取一组题目

type FieldsTopicGroup

type FieldsTopicGroup struct {
	//ID
	ID int64 `db:"id" json:"id"`
	//创建时间
	CreateAt time.Time `db:"create_at" json:"createAt"`
	//更新时间
	UpdateAt time.Time `db:"update_at" json:"updateAt"`
	//删除时间
	DeleteAt time.Time `db:"delete_at" json:"deleteAt"`
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID"`
	//访问量
	VisitCount int64 `db:"visit_count" json:"visitCount"`
	//题库名称
	Title string `db:"title" json:"title"`
	//题目列
	TopicIDs pq.Int64Array `db:"topic_ids" json:"topicIDs"`
	//扩展参数
	Params CoreSQLConfig.FieldsConfigsType `db:"params" json:"params"`
}

FieldsTopicGroup 题库设计

func GetTopicGroup

func GetTopicGroup(id int64) (data FieldsTopicGroup)

GetTopicGroup 获取题库详情

func GetTopicGroupHaveAddVisit

func GetTopicGroupHaveAddVisit(id int64) (data FieldsTopicGroup)

GetTopicGroupHaveAddVisit 获取题库详情并增加访问次数

func GetTopicGroupList

func GetTopicGroupList(args *ArgsGetTopicGroupList) (dataList []FieldsTopicGroup, dataCount int64, err error)

GetTopicGroupList 获取题库列表

type FieldsTopicGroupLog

type FieldsTopicGroupLog struct {
	//ID
	ID int64 `db:"id" json:"id"`
	//日期
	CreateDay time.Time `db:"create_day" json:"createDay"`
	//耗时
	// 秒
	RunTime int `db:"run_time" json:"runTime"`
	//组织ID
	OrgID int64 `db:"org_id" json:"orgID"`
	//用户ID
	UserID int64 `db:"user_id" json:"userID"`
}

FieldsTopicGroupLog 学习日志记录

func GetTopicGroupLogSign

func GetTopicGroupLogSign(userID int64, limit int64) (dataList []FieldsTopicGroupLog)

GetTopicGroupLogSign 获取用户最近签到情况

type FieldsTopicOption

type FieldsTopicOption struct {
	//选项
	Mark string `db:"mark" json:"mark" check:"mark"`
	//考题内容
	Des string `db:"des" json:"des" check:"des" min:"1" max:"600"`
}

func (*FieldsTopicOption) Scan

func (t *FieldsTopicOption) Scan(value interface{}) error

func (FieldsTopicOption) Value

func (t FieldsTopicOption) Value() (driver.Value, error)

Value sql底层处理器

type FieldsTopicOptions

type FieldsTopicOptions []FieldsTopicOption

func (*FieldsTopicOptions) Scan

func (t *FieldsTopicOptions) Scan(value interface{}) error

func (FieldsTopicOptions) Value

func (t FieldsTopicOptions) Value() (driver.Value, error)

Value sql底层处理器

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL