新增了题库2、3类型
This commit is contained in:
+25
-87
@@ -5,7 +5,6 @@ import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"knowledge/api/dao"
|
||||
"knowledge/api/dto"
|
||||
"knowledge/api/model"
|
||||
"knowledge/api/requests"
|
||||
"knowledge/api/responses"
|
||||
"knowledge/api/service"
|
||||
@@ -181,7 +180,6 @@ func (r *Share) GetQuestion(c *gin.Context) {
|
||||
}
|
||||
|
||||
questionQaDao := dao.QuestionQaDao{}
|
||||
questionQaItemDao := dao.QuestionQaItemDao{}
|
||||
|
||||
// 获取题库数据
|
||||
questionQa, err := questionQaDao.GetQuestionQaById(qaId)
|
||||
@@ -203,108 +201,48 @@ func (r *Share) GetQuestion(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
g := dto.ShareDto{
|
||||
Question: []*dto.QuestionDto{},
|
||||
BaseTokenItem: []*dto.BaseTokenItemDto{},
|
||||
}
|
||||
questionQaService := service.QuestionQaService{}
|
||||
|
||||
// 题目数据
|
||||
var questions []*model.QuestionQaItem
|
||||
|
||||
// 题目数据-必备选中
|
||||
maps := make(map[string]interface{})
|
||||
maps["qa_id"] = questionQa.QaId
|
||||
maps["is_must_select"] = 1
|
||||
questionQaItems, err := questionQaItemDao.GetQuestionQaItemPreloadList(maps)
|
||||
if err == nil && len(questionQaItems) > 0 {
|
||||
for _, item := range questionQaItems {
|
||||
questions = append(questions, item)
|
||||
}
|
||||
}
|
||||
|
||||
// 题目数据-剩余随机数量
|
||||
remainingQuantity := questionQa.QaQuantity - len(questionQaItems)
|
||||
if remainingQuantity > 0 {
|
||||
// 随机获取剩余题目
|
||||
maps = make(map[string]interface{})
|
||||
maps["qa_id"] = questionQa.QaId
|
||||
maps["is_must_select"] = 0
|
||||
questionQaItems, err = questionQaItemDao.GetQuestionQaItemWhereListRand(maps, remainingQuantity)
|
||||
if err == nil && len(questionQaItems) > 0 {
|
||||
for _, item := range questionQaItems {
|
||||
questions = append(questions, item)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for _, v := range questions {
|
||||
questionOptionDao := dao.QuestionOptionDao{}
|
||||
maps = make(map[string]interface{})
|
||||
maps["question_id"] = v.QuestionId
|
||||
questionOption, err := questionOptionDao.GetQuestionOptionList(maps)
|
||||
// 题库类型1-常规模式
|
||||
if questionQa.QaType == 1 {
|
||||
g, err := questionQaService.GetShareQuestionQaForTypeOne(questionQa)
|
||||
if err != nil {
|
||||
responses.FailWithMessage("内部错误", c)
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
// 处理返回值
|
||||
questionDto := dto.GetShareQuestionDto(v.Question)
|
||||
|
||||
// 加载选项
|
||||
questionDto.LoadQuestionOptionSimplify(questionOption)
|
||||
|
||||
// 加载图片
|
||||
questionDto.LoadQuestionImage(v.Question.QuestionImage)
|
||||
|
||||
// 加载答案
|
||||
questionDto.LoadQuestionAnswer(v.Question)
|
||||
|
||||
// 将转换后的结构体添加到新切片中
|
||||
g.Question = append(g.Question, questionDto)
|
||||
responses.OkWithData(g, c)
|
||||
return
|
||||
}
|
||||
|
||||
// 按照难度重新排序题目顺序
|
||||
//sort.SliceStable(g.Question, func(i, j int) bool {
|
||||
// return g.Question[i].Difficulty < g.Question[j].Difficulty
|
||||
//})
|
||||
|
||||
// 加载飞花令
|
||||
if questionQa.QaDisplayType == 2 {
|
||||
questionQaTokenDao := dao.QuestionQaTokenDao{}
|
||||
maps = make(map[string]interface{})
|
||||
maps["qa_id"] = questionQa.QaId
|
||||
questionQaToken, err := questionQaTokenDao.GetQuestionQaTokenList(maps)
|
||||
// 题库类型2-固定套题模式
|
||||
if questionQa.QaType == 2 {
|
||||
g, err := questionQaService.GetShareQuestionQaForTypeTwo(questionQa)
|
||||
if err != nil {
|
||||
responses.FailWithMessage("内部错误", c)
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
baseTokenItemDao := dao.BaseTokenItemDao{}
|
||||
for _, v := range questionQaToken {
|
||||
// 加载详细飞花令
|
||||
baseTokenItem, err := baseTokenItemDao.GetBaseTokenItemPreloadOrderByTokenId(v.TokenId)
|
||||
if err != nil {
|
||||
responses.FailWithMessage("内部错误", c)
|
||||
return
|
||||
}
|
||||
responses.OkWithData(g, c)
|
||||
return
|
||||
}
|
||||
|
||||
// 处理返回值
|
||||
for _, item := range baseTokenItem {
|
||||
if len(g.BaseTokenItem) < questionQa.QaQuantity {
|
||||
// 处理返回值
|
||||
baseTokenItemDto := dto.GetBaseTokenItemDto(item)
|
||||
|
||||
// 将转换后的结构体添加到新切片中
|
||||
g.BaseTokenItem = append(g.BaseTokenItem, baseTokenItemDto)
|
||||
}
|
||||
}
|
||||
// 题库类型3-多轮固定题型模式
|
||||
if questionQa.QaType == 3 {
|
||||
g, err := questionQaService.GetShareQuestionQaForTypeThree(questionQa)
|
||||
if err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
responses.OkWithData(g, c)
|
||||
return
|
||||
}
|
||||
|
||||
// 记录问答题库打开次数
|
||||
questionQaService := service.QuestionQaService{}
|
||||
_ = questionQaService.RecordQuestionQaOpenNum(global.Db, questionQa.QaId)
|
||||
|
||||
// 返回
|
||||
responses.OkWithData(g, c)
|
||||
responses.FailWithMessage("题库错误", c)
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user