增加了题库不允许重复的业务逻辑
This commit is contained in:
parent
0cd5717368
commit
08341c8331
@ -253,13 +253,13 @@ func (r *QuestionDao) GetQuestionCountSearch(req requests.GetQuestionCount) (tot
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetQuestionNotInListRand 获取列表-随机-排除
|
// GetQuestionNotInListRand 获取列表-随机-排除
|
||||||
func (r *QuestionDao) GetQuestionNotInListRand(maps interface{}, notQuestionId []int64, limit int) (m []*model.Question, err error) {
|
func (r *QuestionDao) GetQuestionNotInListRand(maps interface{}, notQuestionIds []int64, limit int) (m []*model.Question, err error) {
|
||||||
query := global.Db.Model(&model.Question{})
|
query := global.Db.Model(&model.Question{})
|
||||||
query = query.Where(maps)
|
query = query.Where(maps)
|
||||||
|
|
||||||
// 排除选项
|
// 排除选项
|
||||||
if len(notQuestionId) > 0 {
|
if len(notQuestionIds) > 0 {
|
||||||
query = query.Where("question_id not in (?)", notQuestionId)
|
query = query.Where("question_id not in (?)", notQuestionIds)
|
||||||
}
|
}
|
||||||
|
|
||||||
query = query.Limit(limit).Order("rand()")
|
query = query.Limit(limit).Order("rand()")
|
||||||
|
|||||||
@ -347,3 +347,23 @@ func (r *QuestionQaItemDao) GetQuestionQaItemListByQuestionIdDistinctQaId(questi
|
|||||||
//query = query.Where("EXISTS (?)", subQuery)
|
//query = query.Where("EXISTS (?)", subQuery)
|
||||||
//
|
//
|
||||||
//query = query.Limit(limit).Order("rand()")
|
//query = query.Limit(limit).Order("rand()")
|
||||||
|
|
||||||
|
// GetAllNormalQuestionQaItemWhereList 获取正常题库的明细列表
|
||||||
|
func (r *QuestionQaItemDao) GetAllNormalQuestionQaItemWhereList(maps interface{}) (m []*model.QuestionQaItem, err error) {
|
||||||
|
query := global.Db.Model(&model.QuestionQaItem{})
|
||||||
|
query = query.Where(maps)
|
||||||
|
|
||||||
|
query = query.Preload("QuestionQa")
|
||||||
|
|
||||||
|
subQuery := global.Db.Model(&model.QuestionQa{}).
|
||||||
|
Where("qa_status = ?", 1).
|
||||||
|
Select("qa_id")
|
||||||
|
|
||||||
|
query = query.Where("qa_id IN (?)", subQuery)
|
||||||
|
|
||||||
|
err = query.Find(&m).Error
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|||||||
@ -46,9 +46,10 @@ type AddQuestionQa struct {
|
|||||||
QaPassword string `json:"qa_password" form:"qa_password" label:"分享密码" validate:"required"`
|
QaPassword string `json:"qa_password" form:"qa_password" label:"分享密码" validate:"required"`
|
||||||
Image string `json:"image" form:"image" label:"背景图" validate:"required"`
|
Image string `json:"image" form:"image" label:"背景图" validate:"required"`
|
||||||
QuestionQaItem []*QuestionQaItem `json:"question_qa_item" form:"question_qa_item" label:"题目明细" validate:"required"`
|
QuestionQaItem []*QuestionQaItem `json:"question_qa_item" form:"question_qa_item" label:"题目明细" validate:"required"`
|
||||||
BaseTokenItem []AddQuestionQaBaseTokenItem `json:"base_token_item" form:"base_token_item" label:"飞花令明细"` // 展示类型为飞花令时存在
|
BaseTokenItem []AddQuestionQaBaseTokenItem `json:"base_token_item" form:"base_token_item" label:"飞花令明细"` // 展示类型为飞花令时存在
|
||||||
TokenQuestionContent []TokenQuestionContent `json:"token_question_content" form:"token_question_content" label:"飞花令题目数量规则"` // -json(当题库类型为2、3时存在。2表示飞花令后固定题目数量,3表示飞花令后单个类型题目数量)
|
TokenQuestionContent []TokenQuestionContent `json:"token_question_content" form:"token_question_content" label:"飞花令题目数量规则"` // -json(当题库类型为2、3时存在。2表示飞花令后固定题目数量,3表示飞花令后单个类型题目数量)
|
||||||
QuestionQaTimer []QuestionQaTimer `json:"question_qa_timer" form:"question_qa_timer" label:"计时设置"` //
|
QuestionQaTimer []QuestionQaTimer `json:"question_qa_timer" form:"question_qa_timer" label:"计时设置"` //
|
||||||
|
IsRepeat int `json:"is_repeat" form:"is_repeat" label:"是否允许重复" validate:"omitempty,oneof=0 1"` // 是否允许重复(0:否 1:是)
|
||||||
}
|
}
|
||||||
|
|
||||||
// QuestionQaItem 新增问答题库-题目明细
|
// QuestionQaItem 新增问答题库-题目明细
|
||||||
@ -92,10 +93,11 @@ type PutQuestionQa struct {
|
|||||||
QaPassword string `json:"qa_password" form:"qa_password" label:"分享密码" validate:"required"`
|
QaPassword string `json:"qa_password" form:"qa_password" label:"分享密码" validate:"required"`
|
||||||
Image string `json:"image" form:"image" label:"背景图" validate:"required"`
|
Image string `json:"image" form:"image" label:"背景图" validate:"required"`
|
||||||
QuestionQaItem []*QuestionQaItem `json:"question_qa_item" form:"question_qa_item" label:"题目明细" validate:"required"`
|
QuestionQaItem []*QuestionQaItem `json:"question_qa_item" form:"question_qa_item" label:"题目明细" validate:"required"`
|
||||||
Action int `json:"action" form:"action" label:"动作" validate:"required,oneof=1 2"` // 1:正常修改 2:重新生成题库
|
Action int `json:"action" form:"action" label:"动作" validate:"required,oneof=1 2"` // 1:正常修改 2:重新生成题库
|
||||||
BaseTokenItem []PutQuestionQaBaseTokenItem `json:"base_token_item" form:"base_token_item" label:"飞花令明细"` // 展示类型为飞花令时存在
|
BaseTokenItem []PutQuestionQaBaseTokenItem `json:"base_token_item" form:"base_token_item" label:"飞花令明细"` // 展示类型为飞花令时存在
|
||||||
TokenQuestionContent []TokenQuestionContent `json:"token_question_content" form:"token_question_content" label:"飞花令题目数量规则"` // -json(当题库类型为2、3时存在。2表示飞花令后固定题目数量,3表示飞花令后单个类型题目数量)
|
TokenQuestionContent []TokenQuestionContent `json:"token_question_content" form:"token_question_content" label:"飞花令题目数量规则"` // -json(当题库类型为2、3时存在。2表示飞花令后固定题目数量,3表示飞花令后单个类型题目数量)
|
||||||
QuestionQaTimer []QuestionQaTimer `json:"question_qa_timer" form:"question_qa_timer" label:"计时设置"` //
|
QuestionQaTimer []QuestionQaTimer `json:"question_qa_timer" form:"question_qa_timer" label:"计时设置"` //
|
||||||
|
IsRepeat int `json:"is_repeat" form:"is_repeat" label:"是否允许重复" validate:"omitempty,oneof=0 1"` // 是否允许重复(0:否 1:是)
|
||||||
}
|
}
|
||||||
|
|
||||||
// PutQuestionQaBaseTokenItem 修改问答题库-飞花令明细
|
// PutQuestionQaBaseTokenItem 修改问答题库-飞花令明细
|
||||||
|
|||||||
@ -212,9 +212,22 @@ func (r *QuestionQaService) AddQuestionQa(req requests.AddQuestionQa) (bool, err
|
|||||||
return false, errors.New("新增失败")
|
return false, errors.New("新增失败")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新增问答题库题目列表
|
|
||||||
questionDao := dao.QuestionDao{}
|
questionDao := dao.QuestionDao{}
|
||||||
questionQaItemDao := dao.QuestionQaItemDao{}
|
questionQaItemDao := dao.QuestionQaItemDao{}
|
||||||
|
|
||||||
|
var notQuestionIds []int64 // 处理需排除的题目id
|
||||||
|
if req.IsRepeat == 1 {
|
||||||
|
// 获取正常题库的明细列表
|
||||||
|
maps := make(map[string]interface{})
|
||||||
|
questionQaItems, _ := questionQaItemDao.GetAllNormalQuestionQaItemWhereList(maps)
|
||||||
|
if len(questionQaItems) > 0 {
|
||||||
|
for _, item := range questionQaItems {
|
||||||
|
notQuestionIds = append(notQuestionIds, item.QuestionId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增问答题库题目列表
|
||||||
for _, item := range req.QuestionQaItem {
|
for _, item := range req.QuestionQaItem {
|
||||||
// 验证数量
|
// 验证数量
|
||||||
maps := make(map[string]interface{})
|
maps := make(map[string]interface{})
|
||||||
@ -231,7 +244,7 @@ func (r *QuestionQaService) AddQuestionQa(req requests.AddQuestionQa) (bool, err
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取随机明细题目
|
// 获取随机明细题目
|
||||||
questions, err := questionDao.GetQuestionListRand(maps, item.Quantity)
|
questions, err := questionDao.GetQuestionNotInListRand(maps, notQuestionIds, item.Quantity)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
return false, err
|
return false, err
|
||||||
@ -404,6 +417,18 @@ func (r *QuestionQaService) PutQuestionQa(qaId int64, req requests.PutQuestionQa
|
|||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var notQuestionIds []int64 // 处理需排除的题目id
|
||||||
|
if req.IsRepeat == 1 {
|
||||||
|
// 获取正常题库的明细列表
|
||||||
|
maps := make(map[string]interface{})
|
||||||
|
questionQaItems, _ := questionQaItemDao.GetAllNormalQuestionQaItemWhereList(maps)
|
||||||
|
if len(questionQaItems) > 0 {
|
||||||
|
for _, item := range questionQaItems {
|
||||||
|
notQuestionIds = append(notQuestionIds, item.QuestionId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for _, item := range req.QuestionQaItem {
|
for _, item := range req.QuestionQaItem {
|
||||||
// 验证数量
|
// 验证数量
|
||||||
maps := make(map[string]interface{})
|
maps := make(map[string]interface{})
|
||||||
@ -420,7 +445,8 @@ func (r *QuestionQaService) PutQuestionQa(qaId int64, req requests.PutQuestionQa
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取随机明细题目
|
// 获取随机明细题目
|
||||||
questions, err := questionDao.GetQuestionListRand(maps, item.Quantity)
|
//questions, err := questionDao.GetQuestionListRand(maps, item.Quantity)
|
||||||
|
questions, err := questionDao.GetQuestionNotInListRand(maps, notQuestionIds, item.Quantity)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
return false, err
|
return false, err
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user